如何设计物联网通信协议?

物联网中想控制设备,上传传感器数据,不可避免地需要协议,
目前物联网中有很多种协议,比如MQTT,CoAP,TCP,蓝牙BLE等等。
但是本文想讲的并非这部分协议,而是如何在物联网设备和服务器之间自定义协议,来传输你的数据或者状态等。

举例

以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校验,因此更完善,但是相对来说实现更难,更复杂。

总结

这是目前我了解的协议方式,如果你们有更好的自定义协议方式,
欢迎留言讨论,我也会更新在这篇文章里。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值