数据同步开发指南
更新时间:2025-05-30 17:59:37
前提条件
开发者控制台数据同步设置已经打开启用状态开关,针对单个设备型号,可以单独开关数据同步和测试通道配置。
查看网关地址及消费凭证
认证身份信息需要使用 MQ_URL、GATEWAY_URL、appKey和appSecret用于鉴权。见:sdk集成及接收消息示例
- 其中,MQ_URL 是连接节点,具体取值如下表所示:
区域 | MQ_URL |
---|---|
中国大陆 | pulsar+ssl://mqp.iotrtc.cn:6651 |
美国 | pulsar+ssl://mqp.iotrtcus.com:6651 |
德国 | 即将上线 |
新加坡 | 即将上线 |
- GATEWAY_URL,参见 API网关协议与地址
- 身份认证需要使用appKey和appSecret,该信息可以从控制台 数据同步 中获取。
注意
1,一个消息只能被一个消费端消费,如果启动了多个消费端,则一个消息会被多个消费端中的一个随机消费。
2,为了满足开发调试和正式生产消息隔离。针对测试环境可以配置测试设备白名单。具体见测试和生产环境说明。
消息格式
物的属性变更消息
topic:/${productKey}/${deviceName}/thing/event/property/post
消息字段说明如下。
参数 | 类型 | 含义 |
---|---|---|
deviceType | String | 设备所属品类 |
gmtCreate | Long | 数据流转消息产生时间,自1970-1-1起流逝的毫秒值 |
iotId | String | 设备的唯一ID |
productKey | String | 设备所属品类 |
deviceName | String | 设备所属品类 |
items | JSON | 变更的数据集 |
${attribute} | String | 发生变更的属性,具体取值由具体情况确定 |
value | 具体数据类型由具体情况确定 | 变更值 |
time | Long | 设备属性发生变化的时间,自1970-1-1起流逝的毫秒值 |
消息示例如下。
{
"deviceType": "常电摄像机",
"iotId": "OfEiaUv**********fXQzu",
"productKey": "OfEiaUv******fP",
"gmtCreate": 1737083508000,
"deviceName": "TSV**********fXQzu",
"items": {
"StorageTotalCapacity": {
"value": 0,
"time": 1737083507980
}
}
}
物的事件变更消息
topic:/${productKey}/${deviceName}/thing/event/{tsl.event.identifier}/post
消息字段说明如下。
参数 | 类型 | 含义 |
---|---|---|
deviceType | String | 设备所属品类 |
iotId | String | 设备的唯一ID |
productKey | String | 设备所属产品的唯一标识符 |
deviceName | String | 设备名称 |
identifier | String | 事件标识符,对应事件的identifier |
name | String | 事件名称 |
type | String | 事件类型 |
time | Long | 设备上报value对应的时间,自1970-1-1起流逝的毫秒值 |
value | JSON | 变更的事件属性列表:key-value键值对 |
key | String | 属性key |
value | 具体数据类型由具体情况确定 | 属性取值 |
消息示例如下:
{
"deviceType": "常电摄像机",
"identifier": "Open****",
"iotId": "OfEiaUv**********fXQzu",
"name": "开****通知",
"time": 1737083508000,
"type": "info",
"productKey": "OfEiaUv******fP",
"deviceName": "TSV**********fXQzu",
"value": {
"KeyID": "x8******DY",
"Method": "fin******t"
}
}
物的状态变更消息
topic:/as/mqtt/status/{productKey}/{deviceName}
消息字段说明如下:
参数 | 类型 | 含义 |
---|---|---|
status | String | 设备状态。online:上线。offline:离线。 |
iotId | String | 设备的唯一ID |
offlineReasonCode | Integer | 设备下线时,返回的错误码。 1911:设备跟云端之间TCP连接断开,导致设备离线。 |
productKey | String | 设备所属产品的唯一标识符 |
deviceName | String | 设备名称 |
time | Long | 设备上、下线的时间,自1970-1-1起流逝的毫秒值 |
clientIp | String | 设备公网出口IP。 |
消息示例如下:
{
"status": "offline",
"iotId": "OfEiaUv**********fXQzu",
"offlineReasonCode": 1911,
"productKey": "OfEiaUv******fP",
"deviceName": "TSV**********fXQzu",
"time": 1737083508000,
"clientIp": "192.0.2.1"
}
用户绑定变更消息
用户绑定/解绑设备产生的回流消息,用于同步用户与设备的绑定、解绑。
topic:/${productKey}/${deviceName}/thing/awss/enrollee/user
消息字段说明如下:
参数 | 类型 | 含义 |
---|---|---|
bind | bool | true-绑定;false-解绑 |
productKey | String | 设备所属产品的唯一标识符 |
deviceName | String | 设备名称 |
iotId | String | 设备的唯一ID |
messageCreateTime | Long | 消息创建时间 |
identityInfos | list | 用户信息列表 |
identityId | String | 用户身份ID |
owned | Integer | 拥有标记 0:分享者 1:拥有者 |
params | Map | 扩展参数 |
消息示例如下:
{
"bind": true,
"productKey": "OfEiaUv******fP",
"deviceName": "TSV**********fXQzu",
"iotId": "OfEiaUv**********fXQzu",
"messageCreateTime": 1737083508000,
"identityInfos": [
{
"identityId": "1121***8",
"owned": 1
}
],
"params": {
}
}