大白话聊物联网通信过程,看不懂算我输!~
admin
2023-08-15 01:40:47
0

文章下方附学习资源,自助领取。

击上方“嵌入式从0到1”,选择“星标公众号

干货福利,第一时间送达!




大家好,我是程序员小哈,十一假期结束了,我们继续分享嵌入式相关知识,喜欢的小伙伴,文末点赞,让我看到哈。

上一篇网文 与OneNET服务器连接初体验 我们介绍了使用 MQTT.fx 软件连接上OneNET服务器。

今天我们来看一下,MQTT客户端如何与OneNET服务器进行数据通信,发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)他们三者之间是什么样的关系。

OneNET平台的主题

MQTT的服务器端管理着很多主题(topic),发布者是指对某个主题发布消息,订阅者是指订阅不同的主题。

发布者和订阅者都属于客户端,一个客户端既可以是发布者,也可以是订阅者。

发布者针对某个主题发布了一条消息至服务器,服务器会分发给所有订阅了该主题的订阅者。

因此定阅与发布必须要有主题,主题相当于对发送给服务器端的消息进行了分类,只有客户端定阅了某个主题后,才能收到相应主题的payload,才能进行通信。

一个客户端可以向服务器订阅多个主题。

比如我们分享过的的综合实例:基于ZigBee的智能家居

这里阿里云物联网平台就是MQTT的服务器(Broker),手机上的云智能APP和我们做的控制板就属于客户端。

手机控制电灯开关,就是对设备属性进行设置,手机APP端发布了一个控制灯动作的消息,控制板订阅了这个消息,控制板就能收到服务器转发来的这个消息,进而就能实现手机对控制板的控制。

控制板通过温湿度传感器获取室内的温湿度信息,控制板通过发布带有温湿度信息的消息至服务器,手机端因为订阅了此主题的消息,手机端也就可以收到此消息了,对此消息进行解析,进而显示到手机APP中,也就实现了控制板上的温湿度数据的上传,这就是对设备属性的上报。

参考官方的文档,我们得知OneNET平台的主题格式如下:

主题类型请求topic响应topic设备属性上报上行:$sys/{pid}/{device-name}/thing/property/post$sys/{pid}/{device-name}/thing/property/post/reply设备属性设置下行:$sys/{pid}/{device-name}/thing/property/set$sys/{pid}/{device-name}/thing/property/set_reply设备属性获取下行:$sys/{pid}/{device-name}/thing/property/get$sys/{pid}/{device-name}/thing/property/get_reply设备事件上报上行:$sys/{pid}/{device-name}/thing/event/post$sys/{pid}/{device-name}/thing/event/post/reply

相关内容