Skip to content

MQTT 网关 API 参考

Introduction

网关是 蟹立方物联网平台 中的一种特殊类型的设备,能够充当连接到不同系统的外部设备和 蟹立方物联网平台 之间的桥梁。Gateway API 提供了使用单个 MQTT 连接在多个设备和平台之间交换数据的能力。该网关还充当 蟹立方物联网平台 设备,可以利用现有的 MQTT 设备 API 来报告统计数据、接收配置更新等等。

下面列出的 API 由 蟹立方物联网平台 开源 IoT Gateway 使用。

基本 MQTT API

请参阅通用 MQTT 设备 API 以获取有关数据格式、身份验证选项等的信息。

设备连接 API

为了通知 蟹立方物联网平台 设备已连接到 Gateway,需要发布以下消息:

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

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

收到后,蟹立方物联网平台 将查找或创建具有指定名称的设备。此外,蟹立方物联网平台 会将有关特定设备的新属性更新和 RPC 命令的消息发布到此网关。

设备断开连接 API

为了通知 蟹立方物联网平台 设备已与 Gateway 断开连接,需要发布以下消息:

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

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

收到后,蟹立方物联网平台 将不再将此特定设备的更新发布到此网关。

Attributes API

蟹立方物联网平台 属性 API 允许设备

  • 将客户端设备属性上传到服务器。
  • 从服务器请求客户端和共享设备属性。
  • 从服务器订阅共享设备属性。

Publish attribute update to the server

为了将客户端设备属性发布到 蟹立方物联网平台 服务器节点,请向以下主题发送 PUBLISH 消息:

Topic: v1/gateway/attributes
Message: {"Device A":{"attribute1":"value1", "attribute2": 42}, "Device B":{"attribute1":"value1", "attribute2": 42}}

其中,设备 A 和设备 B 是设备名称,属性 1 和属性 2 是属性键

从服务器请求 attribute 值

为了向 蟹立方物联网平台 服务器节点请求客户端或共享设备属性,请向以下主题发送 PUBLISH 消息:

Topic: v1/gateway/attributes/request
Message: {"id": $request_id, "device": "Device A", "client": true, "key": "attribute1"}

其中$request_id是整数请求标识符,设备 A 是设备名称,client 标识客户端或共享属性范围,key 是属性键。

在发送 PUBLISH 消息之前,客户端需要订阅

Topic: v1/gateway/attributes/response

和 expect 消息,其 result 格式如下:

Message: {"id": $request_id, "device": "Device A", "value": "value1"}

订阅来自服务器的属性更新

要订阅共享设备属性更改,请向以下主题发送 SUBSCRIBE 消息:

v1/gateway/attributes

和 expect 消息,其 result 格式如下:

Message: {"device": "Device A", "data": {"attribute1": "value1", "attribute2": 42}}

遥测上传 API

为了将设备遥测数据发布到 蟹立方物联网平台 服务器节点,请将 PUBLISH 消息发送到以下主题:

Topic: v1/gateway/telemetry

Message:

{
  "Device A": [
    {
      "ts": 1483228800000,
      "values": {
        "temperature": 42,
        "humidity": 80
      }
    },
    {
      "ts": 1483228801000,
      "values": {
        "temperature": 43,
        "humidity": 82
      }
    }
  ],
  "Device B": [
    {
      "ts": 1483228800000,
      "values": {
        "temperature": 42,
        "humidity": 80
      }
    }
  ]
}

where Device A and Device B are your device names, temperature and humidity are telemetry keys and ts is unix timestamp in milliseconds.

RPC API

Server-side RPC

要订阅来自服务器的 RPC 命令,请将 SUBSCRIBE 消息发送到以下主题:

v1/gateway/rpc

并期望包含以下格式的单个命令的消息:

{"device": "Device A", "data": {"id": $request_id, "method": "toggle_gpio", "params": {"pin":1}}}

设备处理完命令后,网关可以使用以下格式发回命令:

{"device": "Device A", "id": $request_id, "data": {"success": true}}

其中 $request_id 是整数请求标识符,设备 A 是设备名称,method 是 RPC 方法名称。

认领设备 API

请参阅相应的文章以获取有关 Claiming devices 功能的更多信息。

要启动认领设备,请向以下主题发送 PUBLISH 消息:

Topic: v1/gateway/claim

Message:

{
  "Device A": {
    "secretKey": "value_A",
    "durationMs": 60000
  },
  "Device B": {
    "secretKey": "value_B",
    "durationMs": 60000
  }
}

其中 Device A 和 Device B 是您的设备名称,secretKey 和 durationMs 是可选键。如果未指定 secretKey,则使用空字符串作为默认值。如果未指定 durationMs,则使用系统参数 device.claim.duration(在文件 /etc/蟹立方物联网平台/conf/蟹立方物联网平台.yml 中)。

协议定制

MQTT 传输可以通过更改相应的模块来针对特定用例进行完全自定义。

下一步

入门指南 - 快速学习蟹立方物联网平台相关功能。

安装指南 - 学习如何在各种操作系统上安装蟹立方物联网平台。

可 视 化 - 学习如何配置复杂的蟹立方物联网平台仪表板说明。

数据处理 - 学习如何使用蟹立方物联网平台规则引擎。

数据分析 - 学习如何使用规则引擎执行基本的分析任务。

硬件样品 - 学习如何将各种硬件平台连接到蟹立方物联网平台。

高级功能 - 学习高级蟹立方物联网平台功能。

开发指南 - 学习蟹立方物联网平台中的贡献和开发。