# 设备上报消息和下发指令
# 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)进行调用。