ESP8266接入Yeelink平台

      很早就了解了物联网云平台Yeelink,一直没有实践一把。最近有个项目用到了安信可科技的ESP8266模组,强大的ESP8266片上搭载ESP32,内置TCP/IP协议。不仅可以实现局域网内数据的无线传输,还可以通过简单配置接入互联网。
     下面我就分享一下我用ESP8266接入Yeelink平台的一个简单的演示。

0.准备工作

  • ESP8266模块一个,我用的是ESP8266-12F(不同系列的都行 ESP8266-01S也可以)
  • USB-TTL转换器一个 (常用的转换器的驱动有CH340G/PL2303等)
  • PC端串口调试助手
  • Yeelink平台 提前注册,添加一个设备,并在设备上添加上数值型传感器
    温馨提示:当前环境要有能接入互联网的路由设备
    这里写图片描述
    这里写图片描述
    这里写图片描述

做好了准备工作,让你一分钟接入Yeelink

1.配置 ESP8266WiFi模块的工作模式

ESP8266作为一个串口转WiFi模块,通过串口的AT指令可以把WiFi设定为P/STA/AP+STA三种模式。
现在我们要同Yeelink平台建立连接,所以要借助路由才能连接到Internet。
因此我们要把ESP8266设置为STA模式–>连接路由—>
ESP8266设备作为TCP Client—>Yeelink作为TCP Server
具体配置如下

//首先设置为STA模式
//连接到当前环境下可以联网的路由
//连接到 与Yeelink建立TCP连接
//开启透传模式

AT+CWMODE=1
AT+CWJAP="412","cxjlb412"  //这个改为当前环境WiFi的名称和密码
AT+CIPMUX=0
AT+CIPMODE=1
AT+CIPSTART="TCP","api.yeelink.net",80
AT+SAVETRANSLINK=1,"api.yeelink.net",80,"TCP"  //下次自动连接
AP+CIPSEND

这里写图片描述
发送这些命令的时候注意发送新行

安信可科技的ESP8266内置TCP/IP协议,所以在我们按照上一步与Yeelink建立了TCP连接之后,按POST方式发送HTTP请求就行。
POST的格式参考了Yeelink官方的API V1.0文档
具体格式如下

POST /v1.0/device/16927/sensor/29314/datapoints HTTP/1.1
Host: api.yeelink.net
Accept: */*
U-ApiKey: ad7d2938************8e0250fc9d44
Content-Length: 12
Content-Type: application/json;charset=utf-8
Connection: close

{"value":25}

注意数据长度就是最后一行JSON的字节长度,最后要发送新行
这里写图片描述
Response 回复200 OK才算正确

两次POST请求的间隔要>10s 不能太频繁地请求
这里写图片描述

//正常的Response
>HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Fri, 21 Apr 2017 13:00:45 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
X-Powered-By: PHP/5.3.10-1ubuntu3.6
Set-Cookie: CAKEPHP=locq2gbchea0eo9huqn43g7i43; expires=Sat, 29-Apr-2017 21:00:45 GMT; path=/
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

0

3.实现远程对本地开关的控制

       Yeelink平台定义的传感器类型中有开关型,那么如何才能实现通过Yeelink网页或者手机APP实现对硬件设备的远程开关控制呢。
     Yeelink平台在与ESP8266建立连接后,只能实现ESP8266(TCP Client端)向Yeelink端(TCP Server端)发送请求,Yeelink才会对ESP8266做出响应。也就是说,无论你在Yeelink网页端和客户端如何拨动开关,Yeelink不会主动给你发数据。拨动开关只能改变开关在服务器中的状态。根本影响不了本地状态。
这里写图片描述
     所以要实现远程对本地开关的控制,还是要通过我们频繁地向Yeelink发送请求,参考官方API文档,要实现这个功能,我们要通过向Yeelink平台发送GET型的HTTP请求。 请求后Yeelink端的响应中的JSON数据中包含了当前服务器中开关的状态,这样我们就能根据服务器更新本地开关的状态。具体的GET指令如下:

GET /v1.0/device/16927/sensor/377650/datapoints HTTP/1.1
Host: api.yeelink.net
Accept: */*
U-ApiKey: ad7d2938************8e0250fc9d44
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Connection: close
                        //!!!!!注意最后一行空行必须要有,不然会错的

这里写图片描述
这里写图片描述
这个就是因为最后一行没有加空行,一直出错,找了半天。后来想可能是因为我们POST的时候,最后有一个JSON数据{},前面空了一行。 GET虽然没发JSON,Content-Length=0,所以最后跟一个空行

//正确的GET响应
//Response
HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Wed, 19 Apr 2017 08:47:08 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
X-Powered-By: PHP/5.3.10-1ubuntu3.6
Set-Cookie: CAKEPHP=5npfd3i5hr299gc3p6v3ffnul6; expires=Thu, 27-Apr-2017 16:47:08 GMT; path=/
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

2d
{"timestamp":"2017-04-19T16:46:04","value":0}
0

value:0 说明当前服务器上开关状态为0 根据这个值更新本地让 KEY=0
下次服务器上开关翻转,再通过GET请求,再更新本地,那么本地也就可以更新了
GET请求的频率也不能太快,基本上1次/s 还可以,虽然这样看着开关会有点延时。

说明:POST上传数据是我用串口调试助手模拟的
GET请求是我把ESP8266挂载在STM32微控制器上,实现对板子上的LED控制的

参考文档:
Http协议及Json格式简介(给yeelink使用者的)

回答: 要将esp8266接入华为云平台,可以按照以下步骤进行操作。首先,创建产品并注册设备。然后,添加属性以便进行数据上报。接下来,可以使用MQTT.fx进行测试。最后,在Arduino IDE中编程esp8266以实现设备接入华为云物联网平台。\[1\]esp8266是一款功能强大且价格便宜的嵌入式无线网络控制模块,适用于智能家居、远程控制和物联网应用等。在接入华为云平台时,需要通过2G、4G、NB-IOT、WIFI等方式将嵌入式设备连接到公网,并将华为云平台生成的设备密钥写入设备中。然后,在云平台上创建数据节点和控制节点。最后,将云平台的SDK程序移植到嵌入式设备中。\[2\]\[3\]通过这些步骤,可以实现esp8266与华为云平台接入。 #### 引用[.reference_title] - *1* [8266接入华为hilink Demo之网站创建(一)](https://blog.csdn.net/mhj258258/article/details/103799213)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [教你如何使用esp8266接入华为云物联网平台(IOTDA)(Arduino IDE开发)](https://blog.csdn.net/weixin_43351158/article/details/122789453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【物联网esp8266+云服务器搭建物联网通道](https://blog.csdn.net/spiremoon/article/details/109781196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一銤阳光

希望分享的内容对你有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值