ThingsKit物联网平台网关MQTT接入

入门介绍

在物联网中,网关的作用是将那些本身不能直接连接平台的设备,通过网关的中转,让设备接入平台。网关起到的作用是数据转发和协议转换。

网关和平台的通信主要分为:

  • 网关设备自身和平台的通信,例如:上报网关自身的设备状态和属性,接收平台对网关的控制指令等。
  • 网关子设备和平台的通信,例如:网关连接的Zigbee温湿度传感器向平台上报温湿度,以及网关连接的RS485/Modbus继电器数据或传感器数据,接收平台下发的实时指令。这些子设备的通信都需要经过网关的转发。

这一节,我们主要介绍的是利用网关如何实现子设备和平台的通信,ThingsKit提供了一套网关专用的MQTT协议,包括独立的主题和消息格式。

为网关添加子设备

在使用网关MQTT协议时,需要先在ThingsKit平台上为网关和子设备绑定关系。

对于MQTT网关子设备而言,上报上来的遥测数据,系统会自动创建。

设备类型

首先,网关和子设备都是设备,它们的区别仅仅在于所属的设备类型不同:

  • 网关设备必须归属于网关设备设备类型。
  • 网关子设备必须归属于网关子设备设备类型。

网关子设备

使用者,只需要单击编辑,重新绑定一下网关设备,来辨别两者之间的关系。如下图:

ThingsKit物联网平台网关MQTT接入

网关子设备,如下图:

ThingsKit物联网平台网关MQTT接入

关联关系如下图:

ThingsKit物联网平台网关MQTT接入

设备连接API

为了通知ThingsKit设备已连接到网关,需要发布以下消息:

v1/gateway/connect
{"device":"Device A"}

其中Device A是您的设备名称。

一旦收到,ThingsKit将查找或创建具有指定名称的设备。此外,ThingsKit将向此网关发布有关特定设备的新属性更新和RPC命令的消息。

设备断开API

为了通知ThingsKit设备与网关断开连接,需要发布以下消息:

v1/gateway/disconnect
 {"device":"Device A"}

遥测上传接口

为了将设备遥测发布到ThingsKit服务器节点,请将PUBLISH消息发送到以下主题:

v1/gateway/telemetry

💡提示

下方的Device_A_Sub是网关子设备名称。

数据上报格式如下:ts是以毫秒为单位的unix时间戳。

{
  "Device_A_Sub": [
    {
      "ts": 1483228800000,
      "values": {
        "temperature": 42,
        "humidity": 80
      }
    }
  ]
}

或者

{
  "Device_A_Sub": [
    {
      "temperature": 42,
      "humidity": 80
    }
  ]
}

调用控制接口

服务器端RPC

为了从服务器订阅RPC命令,发送SUBSCRIBE消息到以下主题:

v1/devices/me/rpc/request/+

附:模拟网关+子设备接入案例

此处为语雀内容卡片,点击链接查看:https://yunteng.yuque.com/avshoi/armgk7/wywaogo4w7l541t1