设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3555|回复: 6

三、ESP8366连接Yeelink物联平台 http GET/POST获取、改变云端数据,实现远程控制

[复制链接]

签到天数: 510 天

[LV.9]以坛为家II

发表于 2016-3-18 08:03:37 | 显示全部楼层 |阅读模式
本帖最后由 AllBlue 于 2016-3-19 14:44 编辑

ESP8366连接Yeelink物联平台 http GET/POST获取、改变云端数据,实现远程控制
模块:ESP-01   固件版本:00200.9.5(b1)
想要实现远程控制,还有必不可少的部分:设备软硬件、云端服务器和手机APP,手机APP或网页。有了ESP wifi 模块,还需要云端服务器,这个想要自己搞一套出来确实不容易,需要了解的知识也很多!所以国内出现了免费云平台:Yeelink乐联网等,方便了开发者开发个性的智能产品!当然还有许多其他平台也在做这块,其中 IoTgo:一个完全开源的物联网平台,通过部署IoTgo建立自己的云端服务器,并且它将所有源代码都开源给用户,喜欢折腾的有福了;如果能力有限还是使用现成的平台比较好。
--------------------------------------------------------------------------------------------------------------------------
步骤一:yeelink平台注册自己的传感器设备
避免篇幅过长,Yeelink平台用户注册就不在这里详述了,查看下面网址:http://www.yeelink.net/developer/doc/11注册用户后,进入用户中心:
点击头像,进入用户中心.png

添加自己的新设备:
添加新设备.png

进入管理设备界面,点击增加传感器:
管理设备.png

增加自己的传感器设备(我们以简单的BUTTON为例):
添加传感器.png

完成后,在管理设备界面,可以看到已添加的传感器设备Smart Button:
传感器.png
添加的每个传感器都会有个ID号码,有了它,你就可以通过网络获取它的云端状态了!
在我的账户设置中,找到你的 API KEY!
API KEY.png

记下 设备编号传感器编号及你的 API KEY,在下面的配置中会用到的!
云端准备完成,下面来配置模块吧!
--------------------------------------------------------------------------------------------------------------------------
步骤二:模块配置及获取、改变云端按钮状态
首先模块通过USB串口模块连接至电脑,打开电脑端串口软件,进行配置。

######## 获取GET网页数据(按钮状态):
网页请求数据GET.png
AT+CWMODE=1                                                                  模块配置到 STA 模式
AT+CIPMUX=0                                                                     模块配置为单路连接状态
上面两条指令不用重复配置,重启不会改变。
AT+CWJAP="YFROBOT","XXX"                                            连接到路由器(YFROBOT为SSID,XXX为密码)
AT+CIPSTART="TCP","www.yeelink.net",80                         建立TCP连接
AT+CIPMODE=1                                                                  设置透传模式
AT+CIPSEND                                                                       发送请求
回显:">",发送网页代码(再次请求或改变数据时,无需以上AT指令配置,直接发送网页代码即可
GET /v1.0/device/你的设备ID/sensor/你的传感器ID/datapoints HTTP/1.1
Host: www.yeelink.net
Accept: */*
U-ApiKey: 你的API KEY
Content-Length: 0
Connection: close
//此处需要发送空行即“\r\n”
完成以上请求代码后,返回一串数据,其中包含 Smart Button 的状态值 "value":0。
网页 改变按钮状态.png
发送网页代码(再次请求或改变数据时,无需以上AT指令配置,直接发送网页代码即可
GET /v1.0/device/你的设备ID/sensor/你的传感器ID/datapoints HTTP/1.1
Host: www.yeelink.net
Accept: */*
U-ApiKey: 你的API KEY
Content-Length: 0
Connection: close
//此处需要发送空行即“\r\n”
网页请求数据GET_2.png
完成以上请求代码后,返回一串数据,其中包含 Smart Button 的状态值 "value":1。


######## 上传POST网页数据(按钮状态):
如果你未完成了GET数据过程,则先对模块进行配置:
AT+CWMODE=1                                                                  模块配置到 STA 模式
AT+CIPMUX=0                                                                     模块配置为单路连接状态
上面两条指令不用重复配置,重启不会改变。
AT+CWJAP="YFROBOT","XXX"                                            连接到路由器(YFROBOT为SSID,XXX为密码)
AT+CIPSTART="TCP","www.yeelink.net",80                         建立TCP连接
AT+CIPMODE=1                                                                  设置透传模式
AT+CIPSEND                                                                       发送请求
如果已经配置完成,则直接发送POST代码即可:
改变按钮状态为:1
POST /v1.0/device/你的设备ID/sensor/你的传感器ID/datapoints HTTP/1.1
Host: api.yeelink.net
Accept: */*
U-ApiKey: 你的API KEY
Content-Length: 11                    发送数据长度
Content-Type: application/x-www-form-urlencoded
Connection: close
//必须发送空行
{"value":1}                                 数据长度为11
发送完代码后,刷新网页即可看到按钮状态已经改变。

改变按钮状态为:0
POST /v1.0/device/你的设备ID/sensor/你的传感器ID/datapoints HTTP/1.1
Host: api.yeelink.net
Accept: */*
U-ApiKey: 你的API KEY
Content-Length: 11                    发送数据长度
Content-Type: application/x-www-form-urlencoded
Connection: close
//必须发送空行
{"value":0}                                 数据长度为11
发送完代码后,刷新网页即可看到按钮状态已经改变。
串口及网页显示如下图:
网页 POST数据.png
-----------------------------------------------------------end-----------------------------------------------------------

网页可以改变按钮状态,同样的手机端APP也可以,下载APP软件:
Yeelink手机APP 下载地址:http://www.yeelink.net/developer/tools
安装完成后,打开软件(保持手机连网状态):

手机远程控制.png
依照上面步骤会发现,手机上的Smart Button状态和网页、模块都是同步的!




签到天数: 15 天

[LV.4]偶尔看看III

发表于 2016-11-12 23:34:17 | 显示全部楼层
good nice data!!!!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-5-31 17:07:55 | 显示全部楼层
麻烦问下楼主,我按照要求连接了,发送http请求应该也没有问题的,把楼主的http请求的每一行都发过去了,最后发送\r\n没有反应,连续点了很多次后显示400 bad request,但是请求的代码和题主应该是一样的。

顺便问下楼主那个建立云端连接时那个80端口是固定的,还是随机的?

下面附一下出现错误的图,谢谢楼主大大了,再过一周就要验收了,就差这个yeelink连接问题了。
http传输失败.PNG
代码.PNG
回复 支持 反对

使用道具 举报

签到天数: 510 天

[LV.9]以坛为家II

 楼主| 发表于 2017-6-2 08:37:43 | 显示全部楼层
PeterAngelo 发表于 2017-5-31 17:07
麻烦问下楼主,我按照要求连接了,发送http请求应该也没有问题的,把楼主的http请求的每一行都发过去了,最 ...

我看图片中你应该网址输错误了吧, yeelink 不是yeeliok。其他问题没看出来!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-6-2 20:33:24 | 显示全部楼层
我输入的是www.yeelink.net,但是ss42com显示的字符一般每行好像都有错误,那个网址我感觉应该输入api.yeelink.net。
回复 支持 反对

使用道具 举报

签到天数: 510 天

[LV.9]以坛为家II

 楼主| 发表于 2017-6-3 17:14:50 | 显示全部楼层
PeterAngelo 发表于 2017-6-2 20:33
我输入的是www.yeelink.net,但是ss42com显示的字符一般每行好像都有错误,那个网址我感觉应该输入api.yeel ...

软件不应该会乱码的!你可以试试api.yeelink.net !
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-6-5 22:34:27 | 显示全部楼层
试了也是不行,感觉可能是json格式的问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2017-11-22 11:37 , Processed in 0.298574 second(s), 28 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表