我接触物联网还是在一年多之前,刚开始搞的时候用的是乐鑫的ESP8266,好处在于除了SDK编程还支持LUA编程,当然由于lua解释器占用了很大的内存,导致内存不足。不过官方现在已经优化了30k左右。据爆料新版本年底可能会出更大内存,蓝牙+WIFI SOC共存。好了,回归正题,刚开始学习的时候,最好先了解下什么是http协议,还有一些网络部分的基础知识。后来在应用主流物联网云平台yeelink的时候,官方给的那些api都是通过curl来实现的,然而8266芯片必须通过tcp连接对应的80端口发送http内容才能上传指定的数据内容和GET相关的开关内容。一旦我们获取到所匹配的这些代码,只要在8266或者arduino中做好字符串拼接即可上传成功。接下来我将使用fiddler2来进行模拟http请求进行请求实现。
注意:yeelink和乐联在request内容上是有区别的。yeelink在post时需要如下的格式
POST /v1.0/device/<device_id>/sensor/<sensor_id>/datapoints
U-ApiKey:xxxxxxxxxxxxx
在请求头中要加入对应的apikey,主要是用来识别这个是你自己。POST需要知道你的设备id和传感器id,一个设备可以对应多个传感器
请求内容:json格式
-
{ "timestamp":"2012-03-15T16:13:14", "value":294.34 }
-
采用json格式,其中timestamp可以不用写,可以只写value,这样数据提交时间就是当前服务器日期。
-
根据官方api,还给出一次上传多个时间点数据 http://www.yeelink.net/developer/apidoc/11
-
[ {"timestamp": "2012-06-15T14:00:00", "value":315.01}, {"timestamp": "2012-06-15T14:00:10", "value":316.23}, {"timestamp": "2012-06-15T14:00:20", "value":317.26}, {"timestamp": "2012-06-15T14:00:30", "value":318}, {"timestamp": "2012-06-15T14:00:40", "value":317} ]
-
其他型的传感器可以参考官方api。
-
我们可以看到,yeelink主要是针对单一传感器进行多时间点的数据上传,接下来分析乐联,我们会发现,乐联是使用一个gateway,而json内容则可以是一个网关下任意的传感器。填写内容为:
-
POST http://www.lewei50.com/api/v1/gateway/updatesensors/{网关标识}
-
userkey: 225fa1b4e7db4abxxxxxxx
-
request content:
-
[ { "Name":"T1", "Value":"1" }, { "Name":"01H1", "Value":"96.2" }]
其中可以填写多个传感器,上传数据可以按照如上格式即可。乐联的方便之处在于,你可以一次给多个传感器添加数值。更多的可以参考官方api:http://www.lewei50.com/dev/content/api?sk=70 -
接下来我们将根据api的内容组合用fiddler2找到我们应该上传的内容。
-
首先下载安装fiddler2,运行
-
-
点击右侧的请求构造
-
-
选择yeelink,我们使用POST方式提交,具体填写如下图
-
-
json写在请求体中,apikey写在请求头中,点击execute,此时会在左侧出现一个post
-
选中左侧的这个,右侧按我上图选择嗅探-RAW,这时会出现
-
-
传感器数值的变化
-
-
这一堆http请求就是我们连接指定端口之后要发送的内容,其中content-length长度值是要计算请求体的数据长度,post具体的device id和sensor id 要换成自己的。接下来我用网络调试助手测试下。www.yeelink.net :42.96.164.52
-
-
点击连接,发送,会出现:
-
-
回到客户端看传感器数值(需要刷新)
-
-
证明是可行的。乐联请大家自行测试,我测试完成的头如下
-
POST /api/V1/gateway/UpdateSensors/01 HTTP/1.1 userkey: 225fa1b4e7db4abxxxxxxxxxxxxxxxx Host: www.lewei50.com Content-Length: 121 [ { "Name":"T1", "Value":"68" }, { "Name":"H1", "Value":"95" } ]
-
ESP8266 lua上传yeelink 例程,大家也可以参考。上传的数据可以自行修改。http://bbs.nodemcu.com/t/www-yeelink-net/108
-
其他的云平台,其模式都和此差不多,大家可以按照这种方法自行测试。本文适合初学者,老手勿喷。