# 设备上报消息和下发指令

# 1. 设备上报消息

使用 MQTT 协议连接至 FogCloud IOT 的设备可以通过以下 MQTT 主题上报消息:

MQTT 主题

说明

fogcloud/${product_key}/${device_name}/thing/up/property/post

用于设备属性上报

fogcloud/${product_key}/${device_name}/thing/up/event/${event_id}/post

用于设备事件上报

fogcloud/${product_key}/${device_name}/thing/up/through

用于设备设备上报透传格式数据

fogcloud/${product_key}/${device_name}/thing/up/sub

用于网关设备上报子设备属性或事件

fogcloud/${product_key}/${device_name}/thing/up/sub/through

用于网关设备上报子设备透传格式数据

设备和云端的通信数据格式可以分为 JSON 和透传格式,您可以在创建产品时选择合适的数据格式。MQTT 主题中的product_keydevice_name为设备的身份信息,您可以通过 FogCloud 管理后台或云端 API 来获取。

# 1.1 JSON 格式

数据流转:

uml diagram

# 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 透传格式

数据流转:

uml diagram

使用的 MQTT 主题:fogcloud/${product_key}/${device_name}/thing/up/through

数据解析脚本支持 JavaScript V8 引擎,脚本包含rawDataToJsonjsonToRawData这两个函数;rawDataToJson入参为 byte 数组,出参为 JSON 对象,透传格式设备上报数据时会被调用;jsonToRawData入参为 JSON 对象,出参为 byte 数组,向透传格式设备下发控制指令时会被调用。

# 2. 设置设备属性和调用设备服务(异步)

数据流转:

uml diagram

FogCloud 提供云端设备控制接口:设置设备属性 (opens new window)调用设备服务 (opens new window);您可以参照详细的接口文档 (opens new window)进行调用。

更新时间: 2023/7/21 11:41:17