华为IoTDA平台设备间通信实现详解

目录

引言

华为IoTDA的M2M机制

数据转发规则的设置

测试结果

结语


引言

在一般的MQTT场景下,如果多个设备都订阅同一个topic,只要有一个设备发布这个topic的数据,其他已经订阅的设备都会收到消息,以前在Eclipse Mosquitto、EMQX、巴法云中都可以这样使用。但是在华为IoTDA平台中,如果仅仅两个设备都订阅同一个topic,并不能实现通过这个topic之间的通信,topic更多的是用于设备和平台之间的通信。本文介绍一下华为IoTDA平台下如何借助MQTT实现设备之间的通信。

华为IoTDA的M2M机制

华为云的物联网平台支持基于MQTT协议实现设备间的消息通信,它称之为M2M(Machine-to-Machine)。设备的连接和通信请求都交由平台承担,客户只需要关注自己的业务实现。可以实现设备间1到1、1到N、N到N的使用。其架构图如下所示。

M2M的使用流程如下所示:

其基本操作步骤如下: 

  1. 创建流转规则,设置转发Topic:在控制台界面创建M2M流转规则并设置转发Topic。
  2. 策略配置:在控制台界面进行策略配置。通过策略配置允许发送、接收数据的设备进行发布及订阅。
  3. 设备A、B鉴权:设备发起连接鉴权(MQTT设备),鉴权参数填写请参考:设备连接鉴权。
  4. 设备B订阅Topic:设备对云服务端进行主题订阅。设备B订阅的Topic为创建流转规则中设置的Topic。若订阅成功,平台返回订阅成功ACK。
  5. 设备A数据上报:设备对云服务端进行主题发布。若发布成功,平台返回发布成功ACK。
  6. 设备B收到数据:若转发成功,设备B将收到设备A发送的数据。

数据转发规则的设置

在“管理控制台”进入IoTDA实例,在左侧导航栏“规则”中单击“数据转发”,可到数据转发界面。单击“创建规则”按照业务具体填写需要转发的数据参数,填写完成后单击“创建规则”。数据来源必须是“设备消息”,转发目标才能选择设备,即实现设备间通信,而如果选择“设备属性上报”,则转发设备不能是设备。

在创建数据转发规则的第二步,可以添加转发到的目标,包括设置转发后的Topic、缓存时间等。

在创建数据转发规则的第三步,单击页面中央的“启动规则”,完成规则设置。 

测试结果

设置之后,我对数据转发进行了测试,测试的topic可以是用户自定义的,也可以是系统定义的,如$oc/devices/<deviceid>/sys/messages/up,系统都会以test_topic发布给订阅设备。

如果转发Topic设置为:“$topic()”,则转发后Topic不变。 

如果有多条转发规则满足条件,则这些转发规则都会被执行。

结语

华为云IoTDA的M2M通信应该是很多商业平台的共同做法,比如阿里云叫“云产品流转”,虽然对于熟悉开源MQTT平台的同学来说有点麻烦,但是功能还是很强大的。包括它可以设置不同的转发条件,后面会写博文专门说明。

作者:神一样的老师

物联沃分享整理
物联沃-IOTWORD物联网 » 华为IoTDA平台设备间通信实现详解

发表回复