物联网中想控制设备,上传传感器数据,不可避免地需要协议,
目前物联网中有很多种协议,比如MQTT,CoAP,TCP,蓝牙BLE等等。
但是本文想讲的并非这部分协议,而是如何在物联网设备和服务器之间自定义协议,来传输你的数据或者状态等。
目录
- 举例
- 1.字符型协议
- 2.json型协议
- 3.HJ212协议
- 总结
举例
以MQTT为例,你有一个温度传感器,想将温度数据上传到服务器。
可以分为以下几类
1.字符型协议
直接通过MQTT协议传输字符,如“23.5”,然后服务器开发人员和嵌入式开发人员沟通,表明这是一个温度的数值。
但是这种是最简单的方法,只适合你作为一个初学者、爱好者使用。
2.json型协议
json格式是一个键值对,你可以使用cjson来将你的数据转化为json格式,然后通过MQTT发送,关于cjson的使用,可以查看我的另一篇博客stm32实现json格式传输。
{
"temp": 23.5
}
如果你有多个数值,使用json也是更方便的传递方法,因为json格式便于拓展。
{
"temp": 23.5,
"status": "good"
}
3.HJ212协议
问题在于,第一种字符型太简陋,第二种json格式便于拓展,但是没有对数据完整性的校验,
因此这里出现了第三种方式,
HJ 212-2017,国家环保行业制定的数据传输标准协议,
早期有一个HJ 212-2005,最新的为HJ 212-2017
从业务的角度来说,这是最重要的一种方式,因为采用这种协议方式,你可以快速对接一些环保的监管平台,从而有利于项目开发。
从官网搜索HJ 212即可搜到HJ 212标准的文件
协议的结构如下图所示。
通信包的构成
数据段的构成
更详细的流程可以查看官网。
这个协议包含CRC校验,因此更完善,但是相对来说实现更难,更复杂。