目錄
六、使用我們的提供的 p2p_client 客戶端測試程序。
一、演示效果:
演示效果可以觀看這個視頻:
物聯網雲平臺演示
https://www.bilibili.com/video/av78434035
代碼下載路徑: http://106.13.62.194/download/qdy/01demo/
視頻會講的比較細緻,也可以看接下來的圖文,內容是差不多的。
可以加WX交流:13510979604
整體的系統框架如下:
我們會準備四個測試程序:
- 智能網關程序(也就是嵌入式設備)
- 手機APP測試程序
- 雲平臺服務器
- 網頁數據庫管理設備、用戶等。
可以實現類似機智雲的功能。手機APP直接和嵌入式設備通信,可以在這個基礎上實現物聯網、智能家居。
升級版本可以支持如下功能:
1、微信小程序控制開發板
2、支持P2P通信,在大量設備連接的情況,P2P通信技術可以減少服務器的壓力,增加系統中設備的連接數量,可以達到百萬級別的設備連接
3、支持實時流傳輸。
整體系統框架如下:
二、手機APP 和 智能網關通信過程:
- 安裝完手機APP 後,
- 大家用串口連接到開發板,運行測試程序:p2p_client
- 開發板輸入 send 對方設備名 要發送的內容
- 可以看到手機APP 可以收到開發板發過來的數據 。
對於開發板來說,也可以收到手機APP的數據,至此通信完成
三、設備管理:
上面的tom 、lancy 等設備,我們可以通過網頁進行管理、添加、刪除。
打開這個網頁(需要賬號密碼,個人測試網站,暫時不公佈賬號密碼)
http://106.13.62.194/phpmyadmin/index.php
可以看到如下效果:
可以通過插入添加新設備。上面也會顯示當前設備的信息。由於測試版本,所以就顯得比較簡單。大家可以在基礎上定製自己想要的功能。
接下來我們來看下測試程序怎麼使用。
四、使用旗點雲平臺
- 需要有三個測試程序:
我們一步一步來看吧。
五、手機應用程序安裝:
首先最簡單的是安裝手機應用程序 app-release.apk
這裏我們暫時不用填寫服務器IP 和端口號。我們只需要填寫設備名即可。推薦使用 tom ,因爲這個設備有在數據庫中註冊
接下來就進入到這個頁面了:
然後我們就可以發送數據給對應的設備了。
六、使用我們的提供的 p2p_client 客戶端測試程序。
這裏我們需要準備一個 linux 平臺,推薦大家使用ubuntu吧。
我們要先安裝好運行環境,輸入如下命令:
apt-get install openssl
apt-get install libssl-dev
apt-get install libjosn0-dev
apt-get install libasound2-dev
如果順利的話,應該就可以直接運行 p2p_client
可以看到如下打印信息:
有看到 connet is ok! 表示登錄到服務器成功了。
同時可以在當前路徑下看到生成了這個 sys_info.json 配置文件
我們cat 看下這個配置文件:
這個配置文件中有我們的設備名,還有一些密碼、服務器ip 端口號等配置信息可以修改。主要第一次運行的話,設備名是隨機的,記得修改一下。
可以輸入send 對方設備名 發送的內容
即可發送數據給對方
七、雲平臺服務器部署 p2p_server
這個部署起來比較麻煩,如果只是想測試效果,建議直接使用我的百度雲服務器測試,不需要自己安裝部署 p2p_server 。
當然,如果自己想部署到自己的服務器上也可以按下面操作,有遇到問題可以溝通。
安裝步驟:
apt-get install openssl
apt-get install libssl-dev
apt-get install libjosn0-dev
apt-get install libasound2-dev
apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
接下來是要進入mysql數據庫創建數據。
需要創建 數據庫:p2p_user_list 表:device
數據格式:
CREATE TABLE device(
name VARCHAR(50),
passwd VARCHAR(50),
ip VARCHAR(50),
port VARCHAR(50),
login_cnt VARCHAR(50),
is_online VARCHAR(50)
);
然後往device 表中添加自己要註冊的設備名即可。MySQL的數據庫操作自行百度一下哈。
操作完上面之後,應該可以直接運行 p2p_server
可以看到如下信息:
表示服務器運行成功。
八、如何編寫自己的嵌入式設備通信程序
演示完上面的操作後,接下來我們來看下我們的嵌入式設備如果自己編寫代碼。同樣我們需要如下代碼文件:
其中,client_demo.c 是我寫的一個可以在linux平臺運行的程序。大家可以根據自己的實際平臺進行修改即可。
我們來關注下我們程序要如何寫:
1、設置好我們的設備名:
void set_name(char *name, int len)
把你的設備名,長度傳進去。
2、設置好我們的發送函數
void set_net_send(int (*send)(char *buf, int len))
我們可以這樣寫:
set_net_send(my_send);
對於linux平臺來說, my_send 的原型是這樣的:
這樣的話,對於你們如果使用其他的平臺,比如有些人使用的 串口發送函數,我們只需要使用修改 my_send 即可了,可移植性比較好。
3、登錄函數
void login(struct sockaddr_in *addr)
登錄函數我寫了一個demo版本,大家可以參考照着修改即可。只需要把裏面的 sendto
Recvfrom 修改成你們對應的平臺即可。
4、接收數據函數
收到數據後,可以把數據傳輸給 qdy_recv_data
void qdy_recv_data(char *recvbuf, int len)
這樣的話就會對數據進行解析。最後客戶端發過來的數據就會到這個函數進行處理:
void qdy_resolve_recv_data(char *buf, int len)
這樣的話,我們只需要在qdy_resolve_recv_data函數裏面對數據處理即可,我們看下demo例子:
recv_proto->src_name :誰發送過來的數據
recv_data: 發送了什麼數據
5、發送數據給設備
同樣發送數據給設備的話可以直接使用這個函數:
int qdy_send_data(char *name, char *data, int len)
只需要寫入設備名、數據內容、數據長度即可。
九、其它功能
1、P2P功能
上面只是給出來了演示例子。當然這個雲平臺還有很重要的功能就是支持P2P通信,下一節會將如何P2P通信,同時也會釋放Android手機APP 的代碼例子,教大家如何定製自己的手機APP 程序
2、微信小程序和嵌入式設備通信
第三節是教大家如何使用微信小程序直接和開發板通信
可以加WX交流:13510979604