# 设备上报消息和下发指令
# 1. 设备上报消息
使用 MQTT 协议连接至 FogCloud IOT 的设备可以通过以下 MQTT 主题上报消息:
MQTT 主题 | 说明 |
| 用于设备属性上报 |
| 用于设备事件上报 |
| 用于设备设备上报透传格式数据 |
| 用于网关设备上报子设备属性或事件 |
| 用于网关设备上报子设备透传格式数据 |
设备和云端的通信数据格式可以分为 JSON 和透传格式,您可以在创建产品时选择合适的数据格式。MQTT 主题中的product_key
和device_name
为设备的身份信息,您可以通过 FogCloud 管理后台或云端 API 来获取。
# 1.1 JSON 格式
数据流转:
# 1.1.1 JSON 格式数据公共参数
字段 | 类型 | 说明 |
id | uint32 | 消息 id,用于标识消息 |
version | string | 协议版本,默认为"1.0" |
timestamp | int32 | 时间戳,单位秒 |
method | string | 用于标识消息类型 |
# 1.1.2 设备属性上报
使用的 MQTT 主题:fogcloud/${product_key}/${device_name}/thing/up/property/post
消息格式:
{ "id": 1, "version": "1.0", "timestamp": 1631585734, "method": "property.post", "params": { "attr1": "value1", "attr2": "value2" } }
params
字段里面填写该设备的属性值,设备一次可以上传多个属性值。例如,您的灯设备定义了属性:brightness, color, switch;设备上报数据示例:
{ "id": 1, "version": "1.0", "timestamp": 1631585734, "method": "property.post", "params": { "brightness": 500, "color": {"h": 1, "s": 2, "v": 3}, "switch": "on" } }
# 1.1.3 设备事件上报
使用的 MQTT 主题:fogcloud/${product_key}/${device_name}/thing/up/event/${event_id}/post
消息格式:
{ "id": 1, "version": "1.0", "timestamp": 1631585734, "method": "event.${event_id}.post", "params": { "param1": "value", "param2": "value" } }
event_id
为该设备所属产品->功能定义里面定义的事件 ID;params
字段的值为该事件的参数;例如,你的设备定义了事件 error;设备上报数据示例:
{ "id": 1, "version": "1.0", "timestamp": 1631585734, "method": "event.error.post", "params": { "param1": true, } }
# 1.2 透传格式
数据流转:
使用的 MQTT 主题:fogcloud/${product_key}/${device_name}/thing/up/through
数据解析脚本支持 JavaScript V8 引擎,脚本包含rawDataToJson
和jsonToRawData
这两个函数;rawDataToJson
入参为 byte 数组,出参为 JSON 对象,透传格式设备上报数据时会被调用;jsonToRawData
入参为 JSON 对象,出参为 byte 数组,向透传格式设备下发控制指令时会被调用。
# 2. 设置设备属性和调用设备服务(异步)
数据流转:
FogCloud 提供云端设备控制接口:设置设备属性 (opens new window),调用设备服务 (opens new window);您可以参照详细的接口文档 (opens new window)进行调用。