00.topic-definition

Topic 总览

为了方便设备云平台区分不同属性的处理策略,将设备上报物模型属性分为 osd 和 state 两类,分别用不同的 topic 上报。

  • osd:设备定频上报的属性,对应 pushmode = 0。

  • state:设备事件性上报的物模型属性,对应 pushmode=1。

说明: 下表中的 {gateway_sn} 表示网关设备的 SN,{device_sn} 表示该物模型属性的所属设备的 SN 。

Topic Name
发送者 -> 订阅者
Message
说明

thing/product/{device_sn}/osd

设备 > 云平台

设备端定频向云平台推送的设备属性(properties), 具体内容范围参见物模型内容

thing/product/{device_sn}/state

设备 > 云平台

设备端按需上报向云平台推送的设备属性(properties), 具体内容范围参见物模型内容

thing/product/{gateway_sn}/services

云平台 -> 设备

云平台向设备发送的服务(具体service identifier 见物模型内容)。

thing/product/{gateway_sn}/services_reply

设备 > 云平台

设备对 service 的回复、处理结果

thing/product/{gateway_sn}/events

设备 > 云平台

设备端向云平台发送的,需要关注和处理的事件。 比如SD满了,飞机解禁禁飞区等信息(事件范围参见物模型内容)

thing/product/{gateway_sn}/events_reply

云平台 -> 设备

云平台对设备事件的回复、处理结果

thing/product/{gateway_sn}/requests

设备 > 云平台

设备端向云平台发送请求,为了获取一些信息,比如上传的临时凭证

thing/product/{gateway_sn}/requests_reply

云平台 -> 设备

云平台对设备请求的回复

sys/product/{gateway_sn}/status

设备 > 云平台

设备上下线、更新拓扑

sys/product/{gateway_sn}/status_reply

云平台 -> 设备

平台响应

thing/product/{gateway_sn}/property/set

云平台 -> 设备

设备属性设置。设备属性是否可以被修改,在设备属性章节通过“accessMode”标识符号判断,accessMode = rw 表示可被读写。

thing/product/{gateway_sn}/property/set_reply

设备 > 云平台

设备属性设置的响应

thing/product/{gateway_sn}/drc/up

设备 > 云平台

DRC 协议上行

thing/product/{gateway_sn}/drc/down

云平台 > 设备

DRC 协议下行

公共字段解释

Column
Name
Type
Description

tid

事务uuid

text

事务(Transaction)的 UUID:表征一次简单的消息通信,如:增/删/改/查,云台控制等,可以是: 1. 数据上报请求+数据上报响应 2. 握手认证请求+响应+ack 3.报警事件单向通知等,解决事务多并发和消息匹配的问题

bid

业务uuid

text

业务(Business)的 UUID:有些功能不是一次通信就能完成的,包含持续一段时间内的所有交互。 业务通常由多个原子事务组成,且持续时间较长; 例如点播/下载/回放;解决业务多并发和重复请求的问题,便于所有模块的状态机管理。

timestamp

毫秒时间戳

int

消息的发送时间

gateway

网关设备的序列号

text

发送该消息的网关设备的序列号

data

消息内容

object

消息内容

osd 结构示例

topic: thing/product/{device_sn}/osd

{
    "tid": "65717bf1-aee7-4abb-8ea3-9b1908548d74",
    "bid": "cf5ad2e6-2f32-4b59-980e-d5c9ee412805",
    "timestamp": 1667220873846,
    "data": {
        "job_number": 492,
        "acc_time": 1859010,
        "activation_time": 0,
        "maintain_status": {
            "maintain_status_array": [
                {
                    "state": 0,
                    "last_maintain_type": 17,
                    "last_maintain_time": 0,
                    "last_maintain_work_sorties": 0
                }
            ]
        },
        "electric_supply_voltage": 231,
        "working_voltage": 25440,
        "working_current": 1120,
        "backup_battery": {
            "voltage": 26631,
            "temperature": 27.9,
            "switch": 1
        },
        "drone_battery_maintenance_info": {
            "maintenance_state": 0,
            "maintenance_time_left": 0
        }
    },
    "gateway": "dock_sn"
} 
{
    "bid": "d6cfcea4-c6ca-439b-948f-b17d88fc308f",
    "data": {
        "flighttask_step_code": 255,
        "media_file_detail": {
            "remain_upload": 0
        },
        "wireless_link": {
            "4g_freq_band": 2.4,
            "4g_gnd_quality": 0,
            "4g_link_state": 0,
            "4g_quality": 0,
            "4g_uav_quality": 0,
            "dongle_number": 0,
            "link_workmode": 0,
            "sdr_freq_band": 2.4,
            "sdr_link_state": 0,
            "sdr_quality": 0
        }
    },
    "tid": "e4c15182-776b-4c13-9973-3fc76848ca15",
    "timestamp": 1667220881576,
    "gateway": "dock_sn"
}
{
    "tid": "43d2e632-1558-4c4e-83d2-eeb51b7a377a",
    "bid": "7578f2ac-1f12-4d47-9ab6-5de146ed7b8a",
    "timestamp": 1667220916697,
    "data": {
        "network_state": {
            "type": 2,
            "quality": 0,
            "rate": 5.0970001220703125
        },
        "drone_charge_state": {
            "state": 0,
            "capacity_percent": 100
        },
        "drone_in_dock": 1,
        "rainfall": 0,
        "wind_speed": 0,
        "environment_temperature": 24,
        "temperature": 24.9,
        "humidity": 62,
        "latitude": 22.907809968,
        "longitude": 113.703482143,
        "height": 34.174125671386719,
        "alternate_land_point": {
            "latitude": 22.907898319908661,
            "longitude": 113.70347329676635,
            "safe_land_height": 0,
            "is_configured": 1
        },
        "first_power_on": 1631945855969,
        "position_state": {
            "is_calibration": 1,
            "is_fixed": 2,
            "quality": 5,
            "gps_number": 6,
            "rtk_number": 25
        },
        "storage": {
            "total": 82045336,
            "used": 51772
        },
        "mode_code": 1,
        "cover_state": 0,
        "supplement_light_state": 0,
        "emergency_stop_state": 0,
        "air_conditioner_mode": 0,
        "battery_store_mode": 1,
        "alarm_state": 0,
        "putter_state": 0,
        "sub_device": {
            "device_sn": "1581F5BKD225D00BP891",
            "device_model_key": "0-67-0",
            "device_online_status": 0,
            "device_paired": 1
        }
    },
    "gateway": "dock_sn"
}

state 结构示例

topic: thing/product/{device_sn}/state

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "gateway":"sn",
    "data":{}
}

services 结构示例

topic: thing/product/{gateway_sn}/services

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "gateway":"sn",
    "method": "some_method",
    "data": {}
}

services_reply 结构示例

data中必填字段解释

Column
Name
Type
constraint
Description

result

设备响应的结果码

int

非 0 代表错误

output

设备消息内容

struct

设备响应服务端命令的消息内容

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "gateway":"sn",
    "method": "some_method",
    "data": {
        "result": 0, 
    	"output": {}
    }  
}

events 结构示例

topic: thing/product/{gateway_sn}/events

Column
Name
Type
constraint
Description

need_reply

服务端是否需要答复

int

服务端收到设备的events事件上报消息后,跟进need_reply来判断是否给予收到答复;0代表不需要,1代表需要

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "need_reply": 0,
    "gateway":"sn",
    "method": "some_method",
    "data": {}
}

events_reply 结构示例

topic: thing/product/{gateway_sn}/events_reply

data中必填字段解释

Column
Name
Type
constraint
Description

result

服务端响应的结果码

int

非 0 代表错误

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "gateway":"sn",
    "method": "some_method",
    "data": {
        "result": 0
    }
}

requests 结构示例

topic: thing/product/{gateway_sn}/requests

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "gateway":"sn",
    "method": "some_method",
    "data": {}
}

requests_reply 结构示例

topic: thing/product/{gateway_sn}/requests_reply

data中必填字段解释

Column
Name
Type
constraint
Description

result

服务端响应的结果码

int

非 0 代表错误

output

服务消息内容

struct

服务端响应设备的消息内容

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "gateway":"sn",
    "method": "some_method",
    "data": {
        "result": 0,
        "output":{}
    }
}

status 结构示例

topic: sys/product/{gateway_sn}/status

## 网关设备+子设备上线
{
	"tid": "tid001",
	"bid": "bid001",
	"method": "update_topo",
	"timestamp": 1234567890123,
	"data": {
		"type": 98,
		"sub_type": 0,
		"device_secret": "secret",
		"nonce": "nonce",
		"version": 1,
		"sub_devices": [
			{
				"sn": "drone001",
				"type": 116,
				"sub_type": 0,
				"index": "A",
				"device_secret": "secret",
				"nonce": "nonce",
				"version": 1
			}
		]
	}
}

## 子设备下线
{
    "tid": "tid001",
    "bid": "bid001",
    "method": "update_topo",
    "timestamp": 1234567890123,
    "data": {
        "type": 98,
        "sub_type": 0,
        "device_secret":"secret",
        "nonce":"nonce",
        "version": 1,
        "sub_devices":[]
    }
}

status_reply 结构示例

topic: sys/product/{gateway_sn}/status_reply

data中必填字段解释

Column
Name
Type
constraint
Description

result

结果码

int

非0代表错误

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "method": "update_topo",
    "data": {
        "result": 0 
    }
}

property set 结构示例

topic: thing/product/{gateway_sn}/property/set

Column
Name
Type
constraint
Description

some_property

需要修改的属性key

string

参考设备管理-设备属性设置 设备属性是否可以被修改,在设备属性章节通过“accessMode”标识符号判断,accessMode = rw 表示可被读写。

some_value

需要修改的属性value

string/int/float

参考对应的设备属性

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "data": {
      "some_property": some_value
    }
}

property set_reply 结构示例

topic: thing/product/{gateway_sn}/property/set_reply

data中必填字段解释

Column
Name
Type
constraint
Description

some_property

需要修改的属性key

string

参考设备管理-设备属性设置 设备属性是否可以被修改,在设备属性章节通过“accessMode”标识符号判断,accessMode = rw 表示可被读写。

result

对应属性的设置结果

int

0: 成功,1:失败,2:超时,其他参考错误码解释

{
    "tid":"6a7bfe89-c386-4043-b600-b518e10096cc",
    "bid":"42a19f36-5117-4520-bd13-fd61d818d52e",
    "timestamp": 1598411295123,
    "data": {
        "some_property": {
           "result": 0  // 0: 成功,1:失败,2:超时,其他参考错误码解释
        }
    }
}

drc up 结构示例

topic: thing/product/{gateway_sn}/drc/up

data中必填字段解释

Column
Name
Type
constraint
Description

result

服务端响应的结果码

int

非 0 代表错误

output

服务消息内容

struct

服务端响应设备的消息内容

{
	"method": "drone_control",
	"data": {
		"result": 0,
		"output": {
			"seq": 1
		}
	}
}

drc down 结构示例

topic: thing/product/{gateway_sn}/drc/down

{
	"method": "drone_control",
	"data": {
		"seq": 1,
		"x": 2.34,
		"y": -2.45,
		"h": 2.76,
		"w": 2.86
	}
}

Last updated