国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品
電子工程網
標題:
一步步教你使用云端服務器yeelink遠程監控
[打印本頁]
作者:
375791964
時間:
2016-12-30 10:22
標題:
一步步教你使用云端服務器yeelink遠程監控
隨著物聯網逐漸進入我們的生活,我們需要隨時隨地查看遠端的設備運行狀態及對設備進行控制,Yeelink為我們提供了一
個很好的云端服務器平臺,設備通過網絡連接到Yeelink服務器,上傳本地檢測數據,電腦或手機通過手機訪問即可看到設備數據,
網上也有很多朋友使用Yeelink來做遠程監控的示例,下面我們來介紹如何使用Yeelink做遠程檢測與控制,如有錯誤還請大家指正。
下面是Yeelink遠程監控的一個大致框圖
1、首先進入Yeelink主頁注冊一個自己的帳號,下面是主頁為我們開發者提供的一個簡單的開發流程
2、按照上面的流程點擊添加設備,輸入設備信息,在下面的地圖中選擇設備所在地
3、進入到設備管理界面,設置設備圖片,添加傳感器
4、添加傳感器,這里我們添加一個數值型傳感器和一個開關型傳感器,通過下面選擇設置傳感器信息
5、傳感器添加完成之后寶馬1768設備下面出現兩個傳感器:AD轉換值和LED1,AD轉換值屬于數值型傳感器,顯示AD轉換電壓,
LED1屬于開關型傳感器,用于控制寶馬開發板LED燈亮滅,注意下面標記出來的地方藍色框框第一個是設備ID即寶馬1768的ID,第
二個為傳感器ID即對應AD轉換值和LED1各自的ID,由于兩個傳感器同屬于寶馬1768設備下面的兩個傳感器所以設備ID相同,而傳感
器ID不同,這幾個ID會在后面編程中使用到
6、進入我的賬戶找到API KEY,當要進行傳輸數據時需要使用到該密碼
7、上面Yeelink的設置基本完成了,就要開始進行程序編寫了,這里我們直接使用寶馬開發板搭建好的TCP客戶端例程進行添加修改,
在系統配置完成之后初始化ADC和LED
ADC_Init(); // ADC初始化
LPC_GPIO2->FIODIR = 0x000000ff; // LED配置
LPC_GPIO0->FIODIR = 0x00200000;
LPC_GPIO0->FIOPIN |= 0x00200000;
while(1)
{
tcpclient("42.96.164.52",80 ,1); //AD轉換值上傳
tcpclient("42.96.164.52",80 ,2); //獲取LED狀態并改變開發板LED狀態
rt_thread_delay(RT_TICK_PER_SECOND * 4); //延時4s
}
//TCP客戶端實驗
int tcpclient(const char* url, int port,int num)
{
char *recv_data;
struct hostent *host;
int sock, bytes_received;
struct sockaddr_in server_addr;
int Buf = 0;
/* 通過函數入口參數url獲得host地址(如果是域名,會做域名解析) */
host = gethostbyname(url);
/* 分配用于存放接收數據的緩沖 */
recv_data = rt_malloc(BUFSZ);
if (recv_data == RT_NULL)
{
rt_kprintf("No memory\n");
return;
}
/* 創建一個socket,類型是SOCKET_STREAM,TCP類型 */
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
/* 創建socket失敗 */
rt_kprintf("Socket error\n");
/* 釋放接收緩沖 */
rt_free(recv_data);
return 1;
}
if(num == 1) /
{
Buf = ADC_Get();
Buf = (Buf * 3300)/4096;
INT_CHAR(Buf);
send_data1[234] = dis[0]; //更改上傳數據內容即AD值
send_data1[234+1] = '.';
send_data1[234+2] = dis[0+1];
send_data1[234+3] = dis[0+2];
}
/* 初始化預連接的服務端地址 */
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr = *((struct in_addr *)host->h_addr);
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
/* 連接到服務端 */
while (connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)
{
/* 連接失敗 */
rt_kprintf("Connect fail!\n");
lwip_close(sock);
/*釋放接收緩沖 */
rt_free(recv_data);
return 1;
}
rt_kprintf("Connect OK!\n");
if(num == 1)
{
/* 發送數據到sock連接 */
if(send(sock,send_data1,strlen(send_data1), 0) < 0)
{
/* 發送失敗,關閉這個連接 */
rt_kprintf("\nSend error ");
lwip_close(sock);
/* 釋放接收緩沖 */
rt_free(recv_data);
}
else
{
rt_kprintf("\nSend OK ");
bytes_received = recv(sock, recv_data, BUFSZ - 1, 0);
lwip_close(sock);
/* 釋放接收緩沖 */
rt_free(recv_data);
}
}
else if(num == 2)
{
/* 發送數據到sock連接 */
if(send(sock,send_data2,strlen(send_data2), 0) < 0)
{
/* 發送失敗,關閉這個連接 */
rt_kprintf("\nSend error ");
lwip_close(sock);
/* 釋放接收緩沖 */
rt_free(recv_data);
}
else
{
rt_kprintf("\nSend OK ");
/* 從sock連接中接收最大BUFSZ - 1字節數據 */
bytes_received = recv(sock, recv_data, BUFSZ - 1, 0);
Buf = Search_str(recv_data,"\"value\":");
if(recv_data[Buf] == '0')
LPC_GPIO2->FIOPIN &= ~0xff; //關閉LED
else
LPC_GPIO2->FIOPIN |= 0xff; //打開LED
rt_kprintf("\n%s ",recv_data+Buf);
lwip_close(sock);
/* 釋放接收緩沖 */
rt_free(recv_data);
}
}
return 1;
}
復制代碼
8、我們可以看到程序中通過判斷num值來發送兩個不同的字符串,這里num就是用來區別是用來上傳AD轉換值還是LED狀態獲取的
下面看看兩個字符串數據,我們可以看到下面兩個字符串中第一行都出現了我們設備的ID和傳感器ID,send_data1對應是AD轉換值
上傳,所以ID為20165,而send_data2為LED控制,ID對應為20166,U-ApiKey后面緊跟著就是我們上面在賬戶設置里面的密碼,
Yeelink的API格式比較固定,至于其他一些參數可以參考Yeelink API文檔
char send_data1[300] = "POST /v1.0/device/12402/sensor/20165/datapoints HTTP/1.1\r\n\
Host: api.yeelink.net\r\n\
Accept: */*\r\n\
U-ApiKey: 615e52feacb3a8b18ab424703c00bfbf\r\n\
Content-Length: 14\r\n\
Content-Type: application/json;charset=utf-8\r\n\
Connection: close\r\n\
\r\n\
{\"value\":96 }\r\n"; /* 發送用到的數據 */
這里有一點需要注意的是Content-Length的長度必須為”value”后面跟著字符串的長度值加10,上面設置為14即”value”后面的值為4位,
這里初始化是”96 “
char send_data2[300] = "GET /v1.0/device/12402/sensor/20166/datapoints HTTP/1.1\r\n\
Host: api.yeelink.net\r\n\
Accept: */*\r\n\
U-ApiKey: 615e52feacb3a8b18ab424703c00bfbf\r\n\
Content-Length: 0\r\n\
Connection: close\r\n\
\r\n\
print get done.\r\n"; /* 發送用到的數據 */
復制代碼
另外還有一點需要注意的是,當我們查詢LED狀態時需要接收Yeelink服務器數據,那么數據的哪部分才是對我們有用的呢,我們可以使用
網絡調試助手,將調試助手連接到Yeelink服務器,發送字符串send_data2的內容,即可獲取服務器返回消息,其中”value”后面的0是我們
需要的數據,表明現在開關是關著的,若開關打開則返回為1
9、上面Yeelink設置和程序都介紹完了,下面就開始測試了下面是電腦顯示波形
手機可以查看設備地址
下面在看一下LED控制
作者:
旺寶科技測試丘
時間:
2016-12-30 11:29
跟智能更進一步,有app。
作者:
375791964
時間:
2017-1-3 11:13
旺寶科技測試丘 發表于 2016-12-30 11:29
跟智能更進一步,有app。
有的,這些都會更新起來的。
作者:
375791964
時間:
2017-1-3 11:14
來,來,來,搶個沙發來坐坐。。
歡迎光臨 電子工程網 (http://www.qingdxww.cn/)
Powered by Discuz! X3.4
主站蜘蛛池模板:
成年人免费在线视频
|
欧美成人精品在线
|
成人a视频片在线观看免费 成人a视频
|
欧美日韩乱妇高清免费
|
亚洲欧美综合乱码精品成人网
|
国产国语一级a毛片高清视频
|
四虎精品国产一区二区三区
|
日产精品卡2卡三卡乱码网址
|
两个人日本免费完整版在线观看1
|
aaaa大片
|
日本在线高清不卡
|
一级女人18片毛片免费视频
|
精品一区二区三区 不卡高清
|
国产一级a毛片高清
|
狠狠色丁香婷婷综合尤物
|
七月婷婷在线视频综合
|
中国美女大战黑人国产
|
亚洲天堂自拍
|
h日本动漫无删减在线观看免
|
久久久久久久久久毛片精品美女
|
一区二区三区四区在线观看视频
|
久久99热不卡精品免费观看
|
三级亚洲
|
日韩一区二区三区免费视频
|
国产精品久久久久久久久久一区
|
日本亚洲高清乱码中文在线观看
|
香蕉成人
|
亚洲图片偷拍区
|
国产精品毛片久久久久久久
|
91新网站
|
日本亚洲一区二区三区
|
黄页网站在线
|
日韩欧美亚洲国产精品字幕久久久
|
日韩免费网址
|
成年人网站在线
|
亚洲欧美一级夜夜爽w
|
亚洲精品视频在线
|
五月婷婷久久综合
|
亚洲天堂日韩在线
|
久久久久久久99精品免费
|
久久精品视频免费观看
|