Appearance
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 传输可以通过更改相应的模块来针对特定用例进行完全自定义。
下一步
入门指南 - 快速学习蟹立方物联网平台相关功能。
安装指南 - 学习如何在各种操作系统上安装蟹立方物联网平台。
可 视 化 - 学习如何配置复杂的蟹立方物联网平台仪表板说明。
数据处理 - 学习如何使用蟹立方物联网平台规则引擎。
数据分析 - 学习如何使用规则引擎执行基本的分析任务。
硬件样品 - 学习如何将各种硬件平台连接到蟹立方物联网平台。
高级功能 - 学习高级蟹立方物联网平台功能。
开发指南 - 学习蟹立方物联网平台中的贡献和开发。