第四回 初入联网(接入了贝壳物联)
本来计划先把所有的硬件介绍完,再介绍如何介入贝壳物联的。但是那样就比较枯燥,还是先尝试接入贝壳物联,来增加ESP8266模块的可玩性。
需要了解贝壳物联平台通信协议 ,如果不想了解,可以跳过通讯协议这小节,不影响后面学习,等到后面有疑问再来这小节里面寻找。
忘记说了,可以先去贝壳物联官网熟悉熟悉,最好自己注册账号,在后续试验中使用自己的设备;
通信协议
这里使用TCP(websocket)长连接协议,先主要介绍通讯地址,通讯数据格式和命令列表。
通讯地址
通讯方式:TCP或websocket
TCP端口:8181,还有其他的8282,8585
Websocket端口:8383,8484
若选用8181端口则,服务器不主动发送心跳包,靠客户端主动发送心跳包保持在线,心跳间隔以40~50s为佳;
说人话,就是设备需要间隔40~50s向服务器发过去一个指令,用于通知服务器端,自己还活着,因为时间间隔非常有规律,所以拟称为心跳包。
其他情况,自行了解;
通讯数据格式
Json字符串 + 换行符,比如:
{"M":"beat"}\n
这种形式也叫做Json New Line。
命令列表
常用的命令有10种,分别是:设备登录(加密);
发送实时数据;
用户和设备上线通知数据;
用户或设备下线通知数据;
用户与设备、设备与设备、用户与用户间沟通指令数据;
查询设备或用户是否在线;
查询当前设备状态;
发送报警信息;
查询服务器时间;
强制目标设备下线;
命令,都是一句Json New Line的数据格式(有点类似于Python的字典),以包的形式,向服务器发出。
详细介绍设备登录和发送实时数据,熟悉了这两个就可以完成基本的想服务器发送指令的操作了。
设备登录(加密)
格式:
{"M":"checkin","ID":"xx1","K":"xx2"}\n
说明: M —— 固定(Method) checkin —— 固定,登录指令 ID —— 固定 xx1 —— 可变,设备ID,在会员中心查看 K —— 固定(apiKey) xx2 —— 可变,设备apikey,在会员中心查看 设备登录后,如果在1分钟内无数据传送,连接将被自动关闭。 若保持设备长期在线,可每隔50秒向服务器发送一次信息,任何信息均可。
返回结果(登录信息正确时返回,错误无任何返回,如果设备已登录,也将无任何返回信息,且不会登录成功):
{"M":"checkinok","ID":"xx1","NAME":"xx2","T":"xx3"}\n
说明: M —— 固定(Method) checkinok —— 固定,设备登录成功指令 ID —— 固定 xx1 —— 可变,设备登录成功后,用于通讯的唯一ID,其组成为字符“D"+设备ID,如D24
NAME —— 固定 xx2 —— 可变,该设备的名称 T —— 固定(time) xx3 —— 可变,服务器发送信息时的时间戳,自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。发送实时数据
发送实时数据
格式:
{"