一步步教你使用云端服务器yeelink远程监控

一步步教你使用云端服务器yeelink远程监控本文转自 http home eeworld com cn my space uid 487728 blogid 236541 html 随着物联网逐渐进入我们的生活 我们需要随时随地查看远端的设备运行状态及对设备

大家好,欢迎来到IT知识分享网。

随着物联网逐渐进入我们的生活,我们需要随时随地查看远端的设备运行状态及对设备进行控制,
Yeelink
为我们提供了一个很好的云端服务器平台,设备通过网络连接到
Yeelink
服务器,上传本地检测数据,电脑或手机通过手机访问即可看到设备数据,网上也有很多朋友使用
Yeelink
来做远程监控的示例,下面我们来介绍如何使用
Yeelink
做远程检测与控制,如有错误还请大家指正。
下面是
Yeelink
远程监控的一个大致框图
一步步教你使用云端服务器yeelink远程监控

1、首先进入
Yeelink
主页“
http://www.yeelink.net/
”注册一个自己的帐号,下面是主页为我们开发者提供的一个简单的开发流程
一步步教你使用云端服务器yeelink远程监控

2、按照上面的流程点击添加设备,输入设备信息,在下面的地图中选择设备所在地
一步步教你使用云端服务器yeelink远程监控

3、进入到设备管理界面,设置设备图片,添加传感器
一步步教你使用云端服务器yeelink远程监控

4、添加传感器,这里我们添加一个数值型传感器和一个开关型传感器,通过下面选择设置传感器信息
一步步教你使用云端服务器yeelink远程监控


传感器添加完成之后宝马
1768
设备下面出现两个传感器:
AD
转换值和
LED1

AD
转换值属于数值型传感器,显示
AD
转换电压,
LED1
属于开关型传感器,用于控制宝马开发板
LED
灯亮灭,注意下面标记出来的地方蓝色框框第一个是设备
ID
即宝马
1768

ID
,第二个为传感器
ID
即对应
AD
转换值和
LED1
各自的
ID
,由于两个传感器同属于宝马
1768
设备下面的两个传感器所以设备
ID
相同,而传感器
ID
不同,这几个
ID
会在后面编程中使用到
一步步教你使用云端服务器yeelink远程监控


6、进入我的账户找到
API KEY
,当要进行传输数据时需要使用到该密码

一步步教你使用云端服务器yeelink远程监控

7
、上面
Yeelink
的设置基本完成了,就要开始进行程序编写了,这里我们直接使用宝马开发板搭建好的
TCP
客户端例程进行添加修改,在系统配置完成之后初始化
ADC

LED
ADC_Init(); // ADC初始化 LPC_GPIO2->FIODIR = 0x000000ff; // LED配置 LPC_GPIO0->FIODIR = 0x00; LPC_GPIO0->FIOPIN |= 0x00; 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: 615e52feacb3a8b18abc00bfbf\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: 615e52feacb3a8b18abc00bfbf\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
一步步教你使用云端服务器yeelink远程监控

9、上面
Yeelink
设置和程序都介绍完了,下面就开始测试了下面是电脑显示波形
一步步教你使用云端服务器yeelink远程监控

手机可以查看设备地址
一步步教你使用云端服务器yeelink远程监控
一步步教你使用云端服务器yeelink远程监控

下面在看一下
LED
控制,手机拍照效果不好
一步步教你使用云端服务器yeelink远程监控
一步步教你使用云端服务器yeelink远程监控


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/150633.html

(0)
上一篇 2025-03-17 21:05
下一篇 2025-03-17 21:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信