很早就了解了物联网云平台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


发送这些命令的时候注意发送新行

2.上传数据至Yeelink

安信可科技的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接入Yeelink平台相关推荐

  1. ESP8266学习笔记5:ESP8266接入yeelink

    我整理了从2015年至今关于ESP8266的学习笔记,梳理出来了开发环境.基础功能.进阶学习三大部分,方便自己和他人.可点此查看,欢迎交流. 搞定了SmartConfig,前头也用cURL玩过了yee ...

  2. ESP8266 接入阿里物联网平台实现远程控制LED

    上一篇我们介绍了阿里物联网平台的使用,并使用MQTT.fx软件来模拟实际的硬件设备.这一篇来实际操作如何使用esp8266接入到阿里物联网平台中,并控制一个LED灯.阿里物联网平台实际上是一个一站式的 ...

  3. 基于uCOS-II系统使用STM32和Esp8266对接Yeelink物联网平台的Demo

    首先祝大家新年快乐 这是本人第一次写博客,希望大家多多支持,以后会尽量写出更好的文章分享给大家,谢谢 下面向大家介绍下如何在STM32平台上基于uCOS-II系统使用乐鑫的Esp8266 wifi模块 ...

  4. WIFI无线传输模块使用 ESP8266芯片方案接入云平台的方法

    1.产品简介 ESP8266 的模块芯片是基于无线通信协议的 UART-WiFi透传模块芯片,支持 802.11b/g/n 的无线标准,并带有三种可选择的工作模式.ESP8266 模块的控制是通过 A ...

  5. 使用ESP8266通过Blinker平台接入天猫精灵控制电视/空调

    目录 `演示视频` 1.准备工作 1.1 `原理` 1.2 `使用的硬件以及硬件连接图` 1.3 `开发环境准备` 2.解码空调红外键值 2.1 `把ESP8266红外接收的实例,上传到NodeMCU ...

  6. 【物联网 · 嵌入式】使用 ESP8266 接入 Blinker 物联网平台

    一.介绍 Blinker 是一个简单易用的物联网平台,只需要几行代码,就可以开发出物联网应用. 这里我们使用 NodeMCU(一种基于esp8266的开发板)接入Blinker平台. NodeMCU ...

  7. STM32F103+ESP8266接入阿里云平台(曲折的上云之路)

    STM32接入阿里云 文章目录 STM32接入阿里云 前言 一.所需环境 二.配置步骤 1.烧录固件 2.stm32的配置 总结 前言 在这之前学习了ESP8266接入阿里云,平台是arduino,虽 ...

  8. 教你如何使用esp8266接入华为云物联网平台(IOTDA)(Arduino IDE开发)

    教你如何使用esp8266接入华为云物联网平台(IOTDA)(Arduino IDE开发) 一.简介         esp8266系列作为低功耗高性价比的嵌入式无线网络控制模块,深受对嵌入式感兴趣的 ...

  9. 使用网络调试助手 MQTT接入阿里云物联网平台,逐字节讲解,适用单片机/ESP8266接入阿里云

    目录 1. CONNECT 连接服务器 2. CONNACK 确认连接 3. DISCONNECT 断开连接 4. PINGREQ 心跳请求 5. PINGRESP 心跳响应 6. SUBSCRIBE ...

最新文章

  1. 【camera-radar】基于ROS的多传感器融合感知系统实现(雷达+相机)(2)
  2. 购物车清除的php,php-如何清除废弃的woocommerce购物车
  3. 基于区块链的健康链系统设计与实现(6)结束语
  4. JavaScript实现跳跃游戏的动态编程自上而下的方法算法(附完整源码)
  5. 在java中 接口修饰符,Java接口中的修饰符
  6. 怎么把整个网站的代码中的一个词去掉_【杭州南牛网络】网站优化的最新优化方法...
  7. pytorch梯度的计算过程
  8. 警惕!不要让页面响应时间成为应用性能指标上的杠精
  9. 处理Linux中大量ESTABLISHED进程
  10. 排序算法之 归并排序
  11. 用data.table语句批量处理变量
  12. My.Ioc 代码示例——如何使用默认构造参数,以及如何覆盖默认构造参数
  13. js扁平数组对象转成树结构
  14. iOS UI控件(2) UITextView
  15. java聊天软件_java实现简单聊天软件
  16. 利用mk802(rk3066处理器)架设linux网站
  17. Preact 在TSX中优雅使用className
  18. 微信内分享网页自定义标题,图片,描述
  19. 海报设计师必做3件事
  20. GMSL部分问题解答/含官方FAE解答

热门文章

  1. C循环链表拉丁方阵问题
  2. 166.人工智能眼睛特效
  3. (全程图解)Axure RP8 安装及使用教程
  4. 三十七、The authenticity of host ‘slave1 (192.168.231.106)‘ can‘t be established.
  5. 如何御载oracle 10g
  6. 几大搜索引擎收录入口
  7. V神合著的《Decentralized Society: Finding Web3’s Soul》论文中有哪些有价值的信息需要我们注意的
  8. noswap标签html,请教一下,docker info提示WARNING: No swap limit support,的意思?
  9. Android中的跨进程回调
  10. fatal: remote error: The unauthenticated git protocol on port 9418 is no longer support问题解决