更新时间:2024-06-20 02:26:00下载pdf
本文介绍了涂鸦智慧行业 BA 楼宇自控系统接入方案。
涂鸦为 BA 楼宇自控系统提供了边缘⽹关接⼊的⽅案,能够帮助 BA 品牌方快速接⼊涂鸦开发者平台,方案架构如下图:

三⽅ BA ⽹关⽤ MQTT 协议与涂鸦边缘⽹关进⾏通信,其中三⽅ BA ⽹关做客户端,涂鸦边缘⽹关做 broker。
在使用此文档进行对接时,需要开发者注册涂鸦开发者账号,并且创建产品以及产品功能点,请参考 创建产品。
如下为 BA 楼宇自控系统的各子系统具体设备属性信息,设备属性上报时作为参考:
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 上报A相电压_电流_功率 | phase_a | 只上报(ro) | raw | / | 
| 2 | 上报B相电压_电流_功率 | phase_b | 只上报(ro) | raw | / | 
| 3 | 上报C相电压_电流_功率 | phase_c | 只上报(ro) | raw | / | 
| 4 | A相温度 | phase_a_temp | 只上报(ro) | value | 
 | 
| 5 | B相温度 | phase_b_temp | 只上报(ro) | value | 
 | 
| 6 | C相温度 | phase_c_temp | 只上报(ro) | value | 
 | 
| 7 | 零线电流 | cur_neutral | 只上报(ro) | value | 
 | 
| 8 | Uab线电压 | uab_line_voltage | 只上报(ro) | value | 
 | 
| 9 | Ubc线电压 | ubc_line_voltage | 只上报(ro) | value | 
 | 
| 10 | Uca线电压 | uca_line_voltage | 只上报(ro) | value | 
 | 
| 11 | 视在功率 | power_apparent | 只上报(ro) | value | 
 | 
| 12 | 功率因数 | power_factor | 只上报(ro) | value | 
 | 
| 13 | 通讯状态 | comm_state | 只上报(ro) | enum | 枚举值: 在线/online, 掉线/offline | 
| 15 | 分合闸状态 | on_off_state | 可下发可上报(rw) | enum | 枚举值: 开合中/closed_opened, 关闭中/closing | 
| 16 | 开关 | switch | 可下发可上报(rw) | bool | 0,1 | 
| 17 | 当前功率 | power_current | 只上报(ro) | value | 
 | 
| 18 | 当前电压 | voltage_current | 只上报(ro) | value | 
 | 
| 19 | 最大电流 | current_max | 可下发可上报(rw) | value | 
 | 
| 20 | 当前电流 | cur_current | 可下发可上报(rw) | value | 
 | 
| 21 | 当前温度 | temp_current | 只上报(ro) | value | 
 | 
| 22 | 欠压值 | voltage_under | 可下发可上报(rw) | value | 
 | 
| 23 | 过压值 | voltage_over | 可下发可上报(rw) | value | 
 | 
| 24 | 漏电预警值 | leakage_warn_value | 可下发可上报(rw) | value | 
 | 
| 25 | 漏电故障值 | leakage_fault_value | 可下发可上报(rw) | value | 
 | 
| 26 | 漏电电流 | leakage_current | 可下发可上报(rw) | value | 
 | 
| 27 | 泄露保护 | leakage_protection | 只上报(ro) | enum | 枚举值: 没漏保不显示漏电值/no_leak_pro_without_value, 没漏保显示漏电值/no_leak_pro_with_value, 有漏保显示漏电值/leak_pro_with_value | 
| 28 | 使能开关 | switch_enabled | 可下发可上报(rw) | bool | 0,1 | 
| 29 | 过流持续时间 | over_current_duration | 可下发可上报(rw) | value | 
 | 
| 31 | 设备告警 | device_alarm | 只上报(ro) | string | / | 
| 39 | 漏电动作值 | leakage_action_value | 可下发可上报(rw) | value | 
 | 
| 40 | 过温值 | over_temp_value | 可下发可上报(rw) | value | 
 | 
| 41 | 过欠压动作保护时间 | over_vol_protect_time | 可下发可上报(rw) | value | 
 | 
| 42 | 过欠压保护恢复时间 | over_vol_recovery_time | 可下发可上报(rw) | value | 
 | 
| 43 | 日用电量数据 | daily_energy | 可下发可上报(rw) | raw | / | 
| 44 | 开关次数 | switch_times | 只上报(ro) | value | 
 | 
| 45 | 短路次数 | short_times | 只上报(ro) | value | 
 | 
| 46 | 总电量 | electric_total | 可下发可上报(rw) | value | 
 | 
| 47 | 日用电量 | electric_daily | 可下发可上报(rw) | value | 
 | 
| 48 | 月用电量 | electric_month | 可下发可上报(rw) | value | 
 | 
| 49 | 剩余电量 | residual_electricity | 可下发可上报(rw) | value | 
 | 
| 50 | 限定功率 | power_limit | 可下发可上报(rw) | value | 
 | 
| 51 | 电量预警值 | electric_warm_value | 可下发可上报(rw) | value | 
 | 
| 52 | 正向总有功电量 | forward_energy_total | 只上报(ro) | value | 
 | 
| 53 | 无功电量 | energy_reactive | 只上报(ro) | value | 
 | 
| 58 | 开关状态 | switch_state | 可下发可上报(rw) | bool | 0,1 | 
| 59 | 有功电量 | active_energy_total | 只上报(ro) | value | 
 | 
| 60 | 高低压母联状态 | bus_coupler_state | 只上报(ro) | raw | / | 
| 61 | 高低压进线状态 | incoming_line_state | 只上报(ro) | raw | / | 
| 62 | 有功功率 | power_effective | 只上报(ro) | value | 
 | 
| 63 | 无功功率 | power_reactive | 只上报(ro) | value | 
 | 
| 64 | 频率 | supply_frequency | 只上报(ro) | value | 
 | 
| 65 | 在线状态 | state | 可下发可上报(rw) | enum | 枚举值: 在线/online, 掉线/offline | 
| 66 | 电压 | battery_voltage | 只上报(ro) | value | 
 | 
| 67 | 管网压力 | pressure_value | 只上报(ro) | value | 
 | 
| 68 | 运行状态 | status | 可下发可上报(rw) | enum | 枚举值: 运行/run, 停止/stop | 
| 69 | 月用电量数据 | month_energy | 只上报(ro) | raw | / | 
| 70 | 油位高度 | oil_level | 只上报(ro) | value | 
 | 
| 71 | 模式 | mode | 可下发可上报(rw) | enum | 枚举值: 手动/manual, 自动/auto, 关闭/close | 
| 72 | 喷淋状态 | spray_state | 只上报(ro) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 73 | 消防开关状态 | fire_switch_state | 只上报(ro) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 74 | 电流不平衡度 | cur_unbalance | 只上报(ro) | value | 
 | 
| 75 | 线电压不平衡度 | l_vol_unbalance | 只上报(ro) | value | 
 | 
| 76 | 相电压不平衡度 | p_vol_unbalance | 只上报(ro) | value | 
 | 
| 77 | 漏电状态 | leakage_state | 只上报(ro) | enum | 枚举值: 正常/normal, 告警/alarm | 
| 78 | 剩余电流 | cur_residual | 可下发可上报(rw) | value | 
 | 
| 79 | N相温度 | phase_n_temp | 可下发可上报(rw) | value | 
 | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 状态 | status | 可下发可上报(rw) | enum | 枚举值: 运行/run, 停止/stop | 
| 2 | 模式 | mode | 可下发可上报(rw) | enum | 枚举值: 自动/auto, 手动/manual | 
| 3 | 总运行时间 | runtime_total | 只上报(ro) | value | 
 | 
| 4 | 压力值 | pressure_value | 只上报(ro) | value | 
 | 
| 5 | 水温 | water_temp | 只上报(ro) | value | 
 | 
| 6 | 水流量 | water_flow | 只上报(ro) | value | 
 | 
| 7 | 室外温度 | temp_outdoor | 只上报(ro) | value | 
 | 
| 8 | 室外湿度 | humidity_outdoor | 只上报(ro) | value | 
 | 
| 9 | 水流状态 | flow_state | 只上报(ro) | enum | 枚举值: 运行/run, 停止/stop | 
| 10 | 阀门状态 | valve_state | 可下发可上报(rw) | enum | 枚举值: 全开/fully_open, 非全开/partially_open | 
| 11 | 故障告警 | fault | 可下发可上报(rw) | bitmap | 故障值: 高温报警/high_temp, 低温报警/low_temp, 缺水/lack_water | 
| 12 | 水阀反馈 | water_valve_return | 只上报(ro) | value | 
 | 
| 13 | 阀门检测 | valve_check | 可下发可上报(rw) | bool | 0,1 | 
| 14 | 旁通阀 | bypass_valve_value | 可下发可上报(rw) | value | 
 | 
| 15 | 水阀 | water_valve_value | 可下发可上报(rw) | value | 
 | 
| 16 | 电动蝶阀开关 | butterfly_valve_switch | 可下发可上报(rw) | bool | 0,1 | 
| 17 | 压差 | pressure_dif | 可下发可上报(rw) | value | 
 | 
| 18 | 跳闸状态 | trip_state | 只上报(ro) | enum | 枚举值: 正常/normal, 设备报警/device_alarm | 
| 19 | 瞬时流量 | flow_rate_instant_value | 只上报(ro) | value | 
 | 
| 20 | 总流量 | flowrate_total | 只上报(ro) | value | 
 | 
| 21 | 通讯状态 | comm_state | 只上报(ro) | enum | 枚举值: 在线/online, 掉线/offline | 
| 22 | 流体速度 | flow_velocity | 只上报(ro) | value | 
 | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 通讯状态 | comm_state | 只上报(ro) | enum | 枚举值: 在线/online, 掉线/offline | 
| 2 | Li1状态 | li_state_1 | 可下发可上报(rw) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 3 | Li2状态 | li_state_2 | 可下发可上报(rw) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 4 | Li3状态 | li_state_3 | 可下发可上报(rw) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 5 | Li4状态 | li_state_4 | 可下发可上报(rw) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 6 | Li5状态 | li_state_5 | 可下发可上报(rw) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 7 | Li6状态 | li_state_6 | 可下发可上报(rw) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 8 | Li7状态 | li_state_7 | 可下发可上报(rw) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 9 | Li8状态 | li_state_8 | 可下发可上报(rw) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 10 | 室内温度 | temp_indoor | 只上报(ro) | value | 
 | 
| 11 | 传感器探头 | sensor_probe | 只上报(ro) | enum | 枚举值: 正常/normal, 设备报警/device_alarm | 
| 12 | 室内湿度 | humidity_indoor | 只上报(ro) | value | 
 | 
| 13 | 液位深度 | liquid_depth | 只上报(ro) | value | 
 | 
| 14 | 电池电压 | battery_voltage | 只上报(ro) | value | 
 | 
| 15 | 水浸检测状态 | watersensor_state | 只上报(ro) | enum | 枚举值: 告警/alarm, 正常/normal | 
| 16 | 压力值 | pressure_value | 只上报(ro) | value | 
 | 
| 17 | 供水温度 | inlet_temp_1 | 只上报(ro) | value | 
 | 
| 18 | 门磁开关状态 | doorcontact_state | 可下发可上报(rw) | bool | 0,1 | 
| 19 | 光照度 | illuminance_value | 只上报(ro) | value | 
 | 
| 20 | 故障告警 | fault | 只上报(ro) | bitmap | 枚举值:高液位报警/water_high, 故障/fault | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 开关状态 | switch_state | 可下发可上报(rw) | bool | 0,1 | 
| 2 | 通讯状态 | comm_state | 只上报(ro) | enum | 枚举值: 在线/online, 掉线/offline | 
| 3 | 当前电流 | cur_current | 只上报(ro) | value | 
 | 
| 4 | 当前温度 | temp_current | 只上报(ro) | value | 
 | 
| 5 | 目标温度 | target_temp | 只上报(ro) | value | 
 | 
| 6 | 风速档位 | fan_level | 可下发可上报(rw) | enum | 枚举值: 1档/level_1, 2档/level_2, 3档/level_3, 4档/level_4, 5档/level_5 | 
| 7 | 开关 | switch | 可下发可上报(rw) | bool | 0,1 | 
| 8 | 模式 | mode | 可下发可上报(rw) | enum | 枚举值: 自动/auto, 制冷/colding, 制热/hot, 空气/air, 除湿/dehumidify | 
| 9 | 上下摆风 | switch_vertical | 可下发可上报(rw) | bool | 0,1 | 
| 10 | 左右摆风 | switch_horizontal | 可下发可上报(rw) | bool | 0,1 | 
| 11 | 故障告警 | fault | 只上报(ro) | bitmap | 故障值: 故障/fault, 初级滤网报警/fan_filter_low, 滤网报警/filter_alarm, 中级滤网报警/fan_filter_med, 防冻开关报警/freeze_pro_alarm, 送风机故障/blower_alarm, 回风机故障/return_fan_alarm, 失效告警/ailure_alarm | 
| 12 | 送风温度 | supply_temp | 只上报(ro) | value | 
 | 
| 13 | 送风湿度 | humidity_supply | 只上报(ro) | value | 
 | 
| 14 | 水阀反馈 | water_valve_return | 只上报(ro) | value | 
 | 
| 15 | 状态 | state | 可下发可上报(rw) | enum | 枚举值: 自动/auto, 手动/manual | 
| 16 | 初效过滤网开关 | first_filter_switch | 可下发可上报(rw) | bool | 0,1 | 
| 17 | 风机滤网开关 | fan_filter_switch | 可下发可上报(rw) | bool | 0,1 | 
| 18 | 水阀 | water_valve_value | 可下发可上报(rw) | value | 
 | 
| 19 | 加湿阀 | hum_valve_value | 可下发可上报(rw) | value | 
 | 
| 20 | 新风阀开关 | freshair_valve_switch | 可下发可上报(rw) | bool | 0,1 | 
| 21 | 排风阀 | exhaust_valve_value | 可下发可上报(rw) | value | 
 | 
| 22 | 瞬时流量 | flow_rate_instant_value | 只上报(ro) | value | 
 | 
| 23 | 总流量 | flowrate_total | 只上报(ro) | value | 
 | 
| 24 | 流速 | flow_velocity | 只上报(ro) | value | 
 | 
| 25 | 室内温度 | temp_indoor | 只上报(ro) | value | 
 | 
| 26 | 室内湿度 | humidity_indoor | 只上报(ro) | value | 
 | 
| 27 | 供水温度 | inlet_temp_1 | 只上报(ro) | value | 
 | 
| 28 | 回水温度 | outlet_temp_1 | 只上报(ro) | value | 
 | 
| 29 | 进水温度 | inlet_temp_f | 只上报(ro) | value | 
 | 
| 30 | 出水温度 | effluent_temp | 只上报(ro) | value | 
 | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 开关状态 | switch_state | 只上报(ro) | bool | 0,1 | 
| 2 | 模式手自动状态 | mode | 可下发可上报(rw) | enum | 枚举值: 手动/manual, 自动/auto | 
| 3 | 故障告警 | fault | 只上报(ro) | bitmap | 故障值: fault, 初级滤网报警/fan_filter_low, 滤网报警/filter_alarm, 防冻开关报警/freeze_pro_alarm | 
| 4 | 开关 | switch | 可下发可上报(rw) | bool | 0,1 | 
| 5 | 电池电压 | battery_voltage | 只上报(ro) | value | 
 | 
| 6 | 温度设置 | temp_set | 可下发可上报(rw) | value | 
 | 
| 7 | CO2检测值设定 | eco2_set | 只上报(ro) | value | 
 | 
| 8 | 送风机变频频率 | frequency_conversion | 可下发可上报(rw) | value | 
 | 
| 9 | 送风机变频器频率反馈 | fre_conversion_return | 只上报(ro) | value | 
 | 
| 10 | 加湿阀 | hum_valve_value | 可下发可上报(rw) | value | 
 | 
| 11 | 加湿阀反馈 | hum_valve_return | 只上报(ro) | value | 
 | 
| 12 | 水阀 | water_valve_value | 可下发可上报(rw) | value | 
 | 
| 13 | 水阀反馈 | water_valve_return | 只上报(ro) | value | 
 | 
| 14 | 新风阀调节 | freshair_valve_value | 可下发可上报(rw) | value | 
 | 
| 15 | AI新风风阀反馈 | ai_freshair_valve_return | 只上报(ro) | value | 
 | 
| 16 | 新风温度 | temp_fresh | 可下发可上报(rw) | value | 
 | 
| 17 | 新风湿度 | humidity_fresh | 可下发可上报(rw) | value | 
 | 
| 18 | 防冻开关检测 | antifreeze | 可下发可上报(rw) | bool | 0,1 | 
| 19 | 初效过滤网开关 | first_filter_switch | 可下发可上报(rw) | bool | 0,1 | 
| 20 | 风机滤网开关 | fan_filter_switch | 可下发可上报(rw) | bool | 0,1 | 
| 21 | 送风温度 | supply_temp | 可下发可上报(rw) | value | 
 | 
| 22 | 送风湿度 | humidity_supply | 可下发可上报(rw) | value | 
 | 
| 23 | 室内二氧化碳 | ico2_ndoor_value | 可下发可上报(rw) | value | 
 | 
| 24 | 室内VOC | voc_indoor_value | 可下发可上报(rw) | value | 
 | 
| 25 | 油位高度 | oil_level | 只上报(ro) | value | 
 | 
| 26 | 剩余油量 | oil_remain | 只上报(ro) | value | 
 | 
| 27 | 油箱总容量 | capacity_total | 只上报(ro) | value | 
 | 
| 28 | 上报A相电压,电流及功率 | phase_a | 只上报(ro) | raw | / | 
| 29 | 上报B相电压,电流及功率 | phase_b | 只上报(ro) | raw | / | 
| 30 | 上报C相电压,电流及功率 | phase_c | 只上报(ro) | raw | / | 
| 31 | Uab线电压 | uab_line_voltage | 只上报(ro) | value | 
 | 
| 32 | Ubc线电压 | ubc_line_voltage | 只上报(ro) | value | 
 | 
| 33 | Uca线电压 | uca_line_voltage | 只上报(ro) | value | 
 | 
| 34 | 单相有功功率 | sigle_phase_power | 只上报(ro) | value | 
 | 
| 35 | 功率因数 | power_factor | 只上报(ro) | value | 
 | 
| 36 | 视在功率 | power_apparent | 只上报(ro) | value | 
 | 
| 37 | 有功电量 | active_energy_total | 只上报(ro) | value | 
 | 
| 38 | 电网供电频率 | supply_frequency | 只上报(ro) | value | 
 | 
| 39 | 当前温度 | temp_current | 只上报(ro) | value | 
 | 
| 40 | 月用电量 | electric_month | 只上报(ro) | value | 
 | 
| 41 | 压力值 | pressure_value | 只上报(ro) | value | 
 | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 通讯状态 | comm_state | 只上报(ro) | enum | 枚举值: 在线/online, 掉线/offline | 
| 2 | 水位设置 | water_set | 只上报(ro) | value | 
 | 
| 3 | 电池电压 | battery_voltage | 只上报(ro) | value | 
 | 
| 4 | 水浸检测状态 | watersensor_state | 只上报(ro) | enum | 枚举值: water_leak_sensor, 正常/normal | 
| 5 | 系统水压 | water_pressure | 只上报(ro) | value | 
 | 
| 6 | 变频反馈 | fre_conversion_return | 只上报(ro) | value | 
 | 
| 7 | 开关状态 | switch_state | 可下发可上报(rw) | bool | 0,1 | 
| 8 | 故障告警 | fault | 只上报(ro) | bitmap | 故障值: water_low, water_high, water_low_max, high_level | 
| 9 | 模式 | mode | 可下发可上报(rw) | enum | 枚举值: 手动/manual, 自动/auto | 
| 10 | 阀门检测 | valve_check | 可下发可上报(rw) | bool | 0,1 | 
| 11 | 变频 | frequency_conversion | 可下发可上报(rw) | value | 
 | 
| 12 | 开关 | switch | 可下发可上报(rw) | bool | 0,1 | 
| 13 | 电动蝶阀开关 | butterfly_valve_switch | 可下发可上报(rw) | bool | 0,1 | 
| 14 | 工作状态 | work_state | 只上报(ro) | enum | 枚举值: 运行/run, 停止/stop | 
| 15 | 总运行时间 | runtime_total | 可下发可上报(rw) | value | 
 | 
| 16 | 压力值 | pressure_value | 可下发可上报(rw) | value | 
 | 
| 17 | 水泵设备过载跳闸状态 | trip_state | 只上报(ro) | enum | 枚举值: 正常/normal, 设备报警/device_alarm | 
| 18 | 水容量 | water_capacity | 可下发可上报(rw) | value | 
 | 
| 19 | 供水温度 | inlet_temp_1 | 只上报(ro) | value | 
 | 
| 20 | 回水温度 | outlet_temp_1 | 只上报(ro) | value | 
 | 
| 21 | 水流量 | water_flow | 只上报(ro) | value | 
 | 
| 22 | 上报A相电压,电流及功率 | phase_a | 只上报(ro) | raw | voltage代表电压、current代表电流、power代表功率、electricity代表电力 { “voltage”:“”, //电压 “current”:“”, //电流 “power”:“” //功率 “electricity”:“”//电力 } | 
| 23 | 上报B相电压,电流及功率 | phase_b | 只上报(ro) | raw | voltage代表电压、current代表电流、power代表功率、electricity代表电力 { “voltage”:“”, //电压 “current”:“”, //电流 “power”:“” //功率 “electricity”:“”//电力 } | 
| 24 | 上报C相电压,电流及功率 | phase_c | 只上报(ro) | raw | voltage代表电压、current代表电流、power代表功率、electricity代表电力 { “voltage”:“”, //电压 “current”:“”, //电流 “power”:“” //功率 “electricity”:“”//电力 } | 
| 25 | A相温度 | phase_a_temp | 只上报(ro) | value | 
 | 
| 26 | B相温度 | phase_b_temp | 只上报(ro) | value | 
 | 
| 27 | C相温度 | phase_c_temp | 只上报(ro) | value | 
 | 
| 28 | 有效功率 | power_effective | 只上报(ro) | value | 
 | 
| 29 | 功率因数 | power_factor | 只上报(ro) | value | 
 | 
| 30 | 电网供电频率 | supply_frequency | 只上报(ro) | value | 
 | 
| 31 | 有功电量 | active_energy_total | 只上报(ro) | value | 
 | 
| 32 | 温度 | irac_temperature | 只上报(ro) | value | 
 | 
| 33 | 噪声 | noise_value | 只上报(ro) | value | 
 | 
| 34 | 日用电量数据 | daily_energy | 只上报(ro) | raw | / | 
| 35 | 月用电量数据 | month_energy | 只上报(ro) | raw | / | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 送风温度 | supply_temp | 只上报(ro) | value | 
 | 
| 2 | 送风湿度 | humidity_supply | 只上报(ro) | value | 
 | 
| 3 | 回风温度 | temp_return | 只上报(ro) | value | 
 | 
| 4 | 回风湿度 | humidity_return | 只上报(ro) | value | 
 | 
| 5 | 排风阀反馈 | exhaust_valve_return | 只上报(ro) | value | 
 | 
| 6 | 水阀反馈 | water_valve_return | 只上报(ro) | value | 
 | 
| 7 | 室内温度 | temp_indoor | 只上报(ro) | value | 
 | 
| 8 | 室内湿度 | humidity_indoor | 只上报(ro) | value | 
 | 
| 9 | 阵风风速 | windspeed_gust | 只上报(ro) | value | 
 | 
| 10 | 变频反馈 | fre_conversion_return | 只上报(ro) | value | 
 | 
| 11 | 开关状态 | switch_state | 可下发可上报(rw) | bool | 0,1 | 
| 12 | 故障告警 | fault | 可下发可上报(rw) | bitmap | 故障值: 故障/fault, 初级滤网报警/fan_filter_low, 中级滤网报警/fan_filter_med, 滤网报警/filter_alarm, 防冻开关报警/freeze_pro_alarm, 风机压差告警/fan_dif_pre | 
| 13 | 初效过滤网开关 | first_filter_switch | 可下发可上报(rw) | bool | 0,1 | 
| 14 | 风机滤网开关 | fan_filter_switch | 可下发可上报(rw) | bool | 0,1 | 
| 15 | 旁通阀 | bypass_valve_value | 可下发可上报(rw) | value | 
 | 
| 16 | 变频 | frequency_conversion | 可下发可上报(rw) | value | 
 | 
| 17 | 水阀 | water_valve_value | 可下发可上报(rw) | value | 
 | 
| 18 | 加湿阀 | hum_valve_value | 可下发可上报(rw) | value | 
 | 
| 19 | 回风阀调节 | returnair_valve_value | 可下发可上报(rw) | value | 
 | 
| 20 | 开关 | switch | 可下发可上报(rw) | bool | 0,1 | 
| 21 | 新风阀开关 | freshair_valve_switch | 可下发可上报(rw) | bool | 0,1 | 
| 22 | 排风阀 | exhaust_valve_value | 可下发可上报(rw) | value | 
 | 
| 23 | 加湿 | wet | 可下发可上报(rw) | bool | 0,1 | 
| 24 | 状态 | status | 只上报(ro) | enum | 枚举值: 正常/normal, 停止/stop, 设备故障/device_fault | 
| 25 | 模式 | mode | 可下发可上报(rw) | enum | 枚举值: 自动/auto, 手动/manual | 
| 26 | 总运行时间 | runtime_total | 只上报(ro) | value | 
 | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 2 | 风速 | windspeed_gust | 只上报(ro) | value | 
 | 
| 3 | 风力 | wind_power | 只上报(ro) | value | 
 | 
| 4 | 风向 | wind_direct | 可下发可上报(rw) | enum | 枚举值: 北/north, 北东北/north_north_east, 东北/north_east, 东东北/east_north_east, 东/east, 东东南/east_south_east, 东南/south_east, 南东南south_south_east, 南/south, 南西南/south_south_west, 西南/south_west, 西西南/west_south_west, 西/west, 西西北/west_north_west, 西北/north_west, 北西北north_north_west | 
| 5 | 风向度数 | wind_direct_value | 可下发可上报(rw) | value | 
 | 
| 6 | 土壤1温湿度_EC_PH值 | soil_data_1 | 只上报(ro) | raw | / | 
| 7 | 土壤2温湿度_EC_PH值 | soil_data_2 | 只上报(ro) | raw | / | 
| 8 | 土壤3温湿度_EC_PH值 | soil_data_3 | 只上报(ro) | raw | / | 
| 9 | 土壤4温湿度_EC_PH值 | soil_data_4 | 只上报(ro) | raw | / | 
| 10 | 室外湿度 | humidity_outdoor | 可下发可上报(rw) | value | 
 | 
| 11 | 室外温度 | temp_outdoor | 可下发可上报(rw) | value | 
 | 
| 12 | 噪声 | noise_value | 只上报(ro) | value | 
 | 
| 13 | 大气压强 | atmospheric_pressture | 只上报(ro) | value | 
 | 
| 14 | 光照强度 | light_intensity | 只上报(ro) | value | 
 | 
| 15 | 雨雪状态 | rain_snow_state | 只上报(ro) | enum | 枚举值: 下雪/snowy, 正常/normal | 
| 16 | 紫外线指数 | uv_index | 只上报(ro) | value | 
 | 
| 17 | 总辐射 | radiation_total | 只上报(ro) | value | 
 | 
| 18 | 光合有效辐射 | radiation_pho | 只上报(ro) | value | 
 | 
| 19 | 累计雨量 | rain_total | 只上报(ro) | value | 
 | 
| 20 | 当前雨量 | rain_current | 只上报(ro) | value | 
 | 
| 21 | 瞬时雨量 | rain_instant | 只上报(ro) | value | 
 | 
| 22 | 一小时降雨量 | rain_1h | 只上报(ro) | value | 
 | 
| 23 | O3检测值 | o3_value | 只上报(ro) | value | 
 | 
| 24 | CO检测值 | co_value | 只上报(ro) | value | 
 | 
| 25 | SO2检测值 | so2_value | 只上报(ro) | value | 
 | 
| 26 | O2检测值 | o2_value | 只上报(ro) | value | 
 | 
| 27 | H2S检测值 | h2s_value | 只上报(ro) | value | 
 | 
| 28 | 蒸发量 | evap_total | 只上报(ro) | value | 
 | 
| 29 | PM2.5检测值 | pm25_value | 只上报(ro) | value | 
 | 
| 30 | PM10 | pm10 | 只上报(ro) | value | 
 | 
| 31 | 氮 | nitrogen_value | 只上报(ro) | value | 
 | 
| 32 | 磷 | phosphorus_value | 只上报(ro) | value | 
 | 
| 33 | 钾 | potassium_value | 只上报(ro) | value | 
 | 
| 34 | 负氧离子 | air_anion_value | 只上报(ro) | value | 
 | 
| 35 | NH3检测值 | nh3_value | 只上报(ro) | value | 
 | 
| 36 | VOC检测值 | voc_value | 只上报(ro) | value | 
 | 
| 37 | 上电状态设置 | relay_status | 可下发可上报(rw) | enum | 枚举值: 开/on, 关/off | 
| 38 | 状态 | state | 可下发可上报(rw) | enum | 枚举值: 运行/run, 停止/stop | 
| 39 | 余氯检测值 | ppm_value | 可下发可上报(rw) | value | 
 | 
| 40 | PH值 | ph | 可下发可上报(rw) | value | 
 | 
| 41 | 水质 | water_quality | 只上报(ro) | enum | 枚举值: 正常/normal, 告警/alarm | 
| 42 | 浊度 | turbidity_value | 只上报(ro) | value | 
 | 
| 43 | 当前温度 | temp_current | 只上报(ro) | value | 
 | 
| 44 | 故障告警 | fault | 只上报(ro) | bitmap | 故障值: fault, sensor_fault, amb_temp_fault | 
| 45 | 温度 | irac_temperature | 可下发可上报(rw) | value | 
 | 
| 46 | 湿度 | humidity | 只上报(ro) | value | 
 | 
| 47 | 空气质量 | air_quality_value | 只上报(ro) | value | 
 | 
| 49 | 电池电量 | battery_percentage | 只上报(ro) | value | 
 | 
| 50 | NO2检测值 | no2_value | 只上报(ro) | value | 
 | 
| 51 | CO2检测值 | co2_value | 只上报(ro) | value | 
 | 
| 52 | 剩余高度 | height | 只上报(ro) | value | 
 | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 通讯状态 | comm_state | 只上报(ro) | enum | 枚举值: 在线/online, 掉线/offline | 
| 2 | 开关 | switch | 可下发可上报(rw) | bool | 0,1 | 
| 3 | 群组控制开关 | group_control_switch | 可下发可上报(rw) | string | / | 
| 4 | 群组控制调光 | group_control_light | 可下发可上报(rw) | string | / | 
| 5 | 群组 | group | 可下发可上报(rw) | value | 
 | 
| 6 | 监测状态上报 | monitor_state_report | 可下发可上报(rw) | string | / | 
| 7 | 灯带开关 | lamp_switch | 可下发可上报(rw) | bool | 0,1 | 
| 8 | 亮度值 | bright_value | 可下发可上报(rw) | value | 
 | 
| 9 | 当前电流 | cur_current | 只上报(ro) | value | 
 | 
| 10 | 当前电压 | voltage_current | 只上报(ro) | value | 
 | 
| 11 | 当前功率 | power_current | 只上报(ro) | value | 
 | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 门状态 | door_state | 只上报(ro) | enum | 枚举值: 打开中/openning, 关闭中/closing | 
| 2 | 上下行状态 | vertical_state | 只上报(ro) | enum | 枚举值: 上行/upstream, 下行/downstream, 停层/stop_layer | 
| 3 | 运行状态 | status | 只上报(ro) | enum | 枚举值: 运行/run, 停止/stop | 
| 4 | 当前楼层 | floor_current_data | 只上报(ro) | raw | / | 
| 5 | 有无人状态 | have_none_state | 只上报(ro) | enum | 枚举值: 有人/someone, 无人/unmanned | 
| 6 | 呼梯 | call_elevator | 可下发可上报(rw) | string | / | 
| 7 | 运行速度 | speed_realtime | 可下发可上报(rw) | value | 
 | 
| 8 | 顶部温度 | top_temp | 只上报(ro) | value | 
 | 
| 9 | 人体感应状态 | pir_state | 只上报(ro) | enum | 枚举值: pir | 
| 10 | 故障告警 | fault | 只上报(ro) | bitmap | 故障值: 反复开关门/door_re_alarm, 不开门故障/door_failure_alarm, 开门运行故障/door_run_alarm, 困人/trapped_alarm, 长时间不关门/door_too_long_alarm, 冲顶/summit_attempt, 蹲底/squatting, 超速/speeding, 掉电/power_down, 卡层故障/stuck_layer_fault, 电梯故障/elevator_fault, 长时间不开门/not_open_time, 供电故障/power_fault, 打火告警/fire_alarm, 电瓶车报警/battery_car_alarm | 
| 11 | 通讯状态 | comm_state | 只上报(ro) | enum | 枚举值: 在线/online, 掉线/offline | 
| 12 | 当前电流 | cur_current | 只上报(ro) | value | 
 | 
| 13 | 上报A相电压_电流_功率 | phase_a | 只上报(ro) | raw | / | 
| 14 | 上报B相电压_电流_功率 | phase_b | 只上报(ro) | raw | / | 
| 15 | 上报C相电压_电流_功率 | phase_c | 只上报(ro) | raw | / | 
| 16 | Uab线电压 | uab_line_voltage | 只上报(ro) | value | 
 | 
| 17 | Ubc线电压 | ubc_line_voltage | 只上报(ro) | value | 
 | 
| 18 | Uca线电压 | uca_line_voltage | 只上报(ro) | value | 
 | 
| 19 | 当前电压 | voltage_current | 只上报(ro) | value | 
 | 
| 20 | 有效功率 | power_effective | 只上报(ro) | value | 
 | 
| 21 | 无效功率 | power_reactive | 只上报(ro) | value | 
 | 
| 22 | 视在功率 | power_apparent | 只上报(ro) | value | 
 | 
| 23 | 正向总有功电量 | forward_energy_total | 只上报(ro) | value | 
 | 
| 24 | 水浸检测状态 | watersensor_state | 只上报(ro) | enum | 枚举值: 水浸/water_leak_sensor | 
| 25 | 室内温度 | temp_indoor | 可下发可上报(rw) | value | 
 | 
| 26 | 室内湿度 | humidity_indoor | 可下发可上报(rw) | value | 
 | 
| 27 | 开关门传感器 | sensor_probe | 只上报(ro) | enum | 枚举值: 打开中/openning, 关闭中/closing | 
| 28 | 激光测距距离 | target_dis_closest | 只上报(ro) | value | 
 | 
| 29 | 传感器模式 | sensor_choose | 可下发可上报(rw) | enum | 枚举值: 设备报警/device_alarm, 正常/normal | 
| 30 | 总次数 | times_total | 只上报(ro) | value | 
 | 
| 31 | 传感器状态 | sensor_state | 只上报(ro) | enum | 枚举值: 设备报警/device_alarm, 正常/normal | 
| 32 | 运行参考高度 | height | 可下发可上报(rw) | value | 
 | 
| 33 | 日用电量数据 | daily_energy | 只上报(ro) | raw | / | 
| 34 | 月用电量数据 | month_energy | 只上报(ro) | raw | / | 
| 35 | 电池电压 | battery_voltage | 只上报(ro) | value | 
 | 
| 36 | 总_距离 | distance_total | 只上报(ro) | value | 
 | 
| 37 | 当前载重 | load_current | 可下发可上报(rw) | value | 
 | 
| 38 | 超重状态 | overweight_state | 只上报(ro) | enum | 枚举值: 上限报警/upper_alarm, 正常/normal | 
| 39 | 平层状态 | parallel_state | 可下发可上报(rw) | enum | 枚举值: 正常/normal | 
| 40 | 机房温度 | com_room_temp | 可下发可上报(rw) | value | 
 | 
| 41 | 卡层数 | stuck_layer | 只上报(ro) | value | 
 | 
| 42 | 开启次数 | open_times | 只上报(ro) | value | 
 | 
| 43 | 检修状态 | maintenance_state | 只上报(ro) | enum | 枚举值: 检测中/detecting, 检查成功/check_success, 检查失败/check_failure | 
| 44 | 门闸锁状态 | gate_lock_state | 只上报(ro) | enum | 枚举值: 开启中/opening, 关闭中/closing | 
| 45 | 警铃状态 | alarm_bell_state | 只上报(ro) | enum | 枚举值: 告警/alarm, 正常/normal | 
| DP ID | 功能点名称 | 标识符 | 数据传输类型 | 数据类型 | 功能点属性 | 
|---|---|---|---|---|---|
| 1 | 供水温度 | inlet_temp_1 | 可下发可上报(rw) | value | 
 | 
| 2 | 回水温度 | outlet_temp_1 | 可下发可上报(rw) | value | 
 | 
| 3 | 水流量 | water_flow | 只上报(ro) | value | 
 | 
| 4 | 开关 | switch | 可下发可上报(rw) | bool | 0,1 | 
| 5 | 故障告警 | fault | 只上报(ro) | bitmap | 故障值: 水流故障/flow_fault, 用水异常告警/abnormal_water_alarm, 水表硬件故障告警/meter_body_alarm, 水泵卡死/pump_blocked, 水流量过低/flow_low | 
| 6 | 冷摊用量 | cold_stall_userdata | 只上报(ro) | value | 
 | 
| 7 | 冷摊方式 | cold_stall_type | 可下发可上报(rw) | enum | 枚举值: 平方面积/square_area, 忽略/ignore, 用量/consumption, 占比/proportion, 租赁/lease, 功率/power | 
| 8 | 热摊用量 | hot_stall_userdata | 只上报(ro) | value | 
 | 
| 9 | 热摊方式 | hot_stall_type | 可下发可上报(rw) | enum | 枚举值: 平方面积/square_area, 忽略/ignore, 用量/consumption, 占比/proportion, 租赁/lease, 功率/power | 
| 10 | 阀开启度 | valve_open_degree | 可下发可上报(rw) | value | 
 | 
| 11 | 阀门状态 | valve_state | 可下发可上报(rw) | enum | 枚举值: 已开启/opened, 已关闭/closed, 开启中/opening, 关闭中/closing | 
| 12 | 月总用水量 | monthly_water_total | 只上报(ro) | value | 
 | 
| 13 | 日总用水量 | daily_water_total | 只上报(ro) | value | 
 | 
| 14 | 日初始用水量 | d_begin_water_total | 只上报(ro) | value | 
 | 
| 15 | 日终用水量 | d_end_water_total | 只上报(ro) | value | 
 | 
| 16 | 日初始读取时间 | d_begin_time | 只上报(ro) | string | / | 
| 17 | 日终读取时间 | d_end_time | 只上报(ro) | string | / | 
| 18 | 月初用水量 | m_begin_water_total | 只上报(ro) | value | 
 | 
| 19 | 月终用水量 | m_end_water_total | 只上报(ro) | value | 
 | 
| 20 | 月初始读取时间 | m_begin_time | 可下发可上报(rw) | string | / | 
| 21 | 月终读取时间 | m_end_time | 可下发可上报(rw) | string | / | 
MQTT 消息由固定报头(Fixed header)、可变报头(Variable header)和有效载荷(Payload)三部分组成。
其中固定报头(Fixed header)和可变报头(Variable header)格式的填写请参考MQTT 标准规范,有效载荷(Payload)的格式由涂鸦定义,具体请产考下文。
MQTT 的语法和接口细节,请以 MQTT 标准规范 为准。
常见 MQTT 消息类型主要有 CONNECT、SUBSCRIBE、PUBLISH。
使用限制
设备接入涂鸦边缘网关,通过边缘网关进行通信。设备、涂鸦边缘网关和涂鸦开发者平台的通信流程示意图如下。

设备发送数据到涂鸦边缘网关
设备接入涂鸦边缘网关后,便可与涂鸦边缘网关进行通信。设备可通过以下方式发送数据到平台:
应用服务器下发指令给设备
设备接入涂鸦边缘网关后,涂鸦网关可通过以下方式发送指令到设备。
设备使用 MQTT 协议接入涂鸦边缘网关时,平台和设备通过 Topic 进行通信。平台预置的 topic 列表如下:
| Topic 分类 | Topic | Publisher | Subscriber | 用途 | 
|---|---|---|---|---|
| 设备同步相关 Topic | gateway_id/{gateway_id}/devices/sync | 设备 | 平台 | 设备激活 | 
| 设备同步相关 Topic | gateway_id/{gateway_id}/devices/sync/response | 平台 | 设备 | 平台返回激活响应 | 
| 设备命令相关 Topic | gateway_id/{gateway_id}/commands | 平台 | 设备 | 平台下发命令给设备 | 
| 设备命令相关 Topic | gateway_id/{gateway_id}/commands/response | 设备 | 平台 | 设备返回命令响应 | 
| 设备属性相关 Topic | gateway_id/{gateway_id}/properties/report | 设备 | 平台 | 设备属性上报 | 
| 设备属性相关 Topic | gateway_id/{gateway_id}/properties/report/response | 平台 | 设备 | 平台返回上报属性响应 | 
| 设备上下线 Topic | gateway_id/{gateway_id}/devices/status | 设备 | 平台 | 设备上下线上报 | 
{gateway_id}用于标识 Topic 路由的目标设备,设备侧订阅该 topic 或往 topic 推送消息时,该值需要替换为设备与平台建立 MQTT 连接时使用的网关 ID 参数值。
MQTT 协议中规定了消息服务质量(Quality of Service),它保证了在不同的网络环境下消息传递的可靠性,MQTT 设计了 3 个 QoS 等级。
QoS 级别越高,流程越复杂,系统资源消耗越大。应用程序可以根据自己的网络场景和业务需求,选择合适的 QoS 级别。
建议设备对接方在消息的推送和订阅上将 QoS 设置为 1。
开发者平台设备侧支持 MQTT 协议的 connect 消息接口,鉴权通过后建立设备与平台间的 MQTT 连接。
| 参数 | 必选/可选 | 类型 | 参数描述 | 
|---|---|---|---|
| broker | 必选 | String | 边缘⽹关 ip 地址,对接时由涂鸦提供。 | 
| port | 必选 | String | TCP 固定为 58090,SSL/TLS 固定为 21883。 | 
| clientId | 必选 | String | 第三方的网关 id,此参数要保证唯一。 | 
| username | 必选 | String | 第三⽅⼚商标识,对接时由涂鸦提供。 | 
| password | 必选 | String | Password 的值为使用“md5”加密算法生成,具体请参考密码生成规则。 | 
SSL/TLS 为单向认证模式。
拼接 clientId 和 username 变量,然后用 md5 加密算法对拼接后的变量加密。
下面用 Go 语言生成连接密码例子,供参考。
func generatePassword() string {
	var (
		clientId string
		username string
		password string
	)
	// clientId username 请先赋值
	password = md5V(clientId + username)
	return password
}
// md5 加密算法函数
func md5V(str string) string {
	h := md5.New()
	h.Write([]byte(str))
	return hex.EncodeToString(h.Sum(nil))
}
原生 MQTT 协议设备和平台建链时,常见返回码如下:
| 返回码 | 标示 | 返回码描述 | 原因 | 
|---|---|---|---|
| 0x00 | connection accepted | 连接成功 | 连接成功 | 
| 0x01 | unacceptable protocol version | 请求拒绝,协议版本错误 | 服务器不支持客户端请求 MQTT 协议版本 | 
| 0x02 | identifier rejected | 请求拒绝,无效的客户端标识符 | clientId 不符合格式要求或者心跳时间间隔不满足平台要求 | 
| 0x03 | server Unavailable | 请求拒绝,服务器不可用 | 平台服务不可用 | 
| 0x04 | bad user name or password | 请求拒绝,用户名或密码错误 | 用户名或密码错误 | 
| 0x05 | not Authorized | 请求拒绝,没有授权 | 客户端没有权限连接 | 
用于设备同步,在设备网关连接上涂鸦边缘网关的 MQTT 服务器后,要发送设备同步指令。涂鸦边缘网关会对上报的设备进行新增或更新。
必须先同步子设备才可进行后续操作,否则会出现找不到设备的错误。
Topic
上行:gateway_id/{gateway_id}/devices/sync
下行:gateway_id/{gateway_id}/devices/sync/response
| 字段名 | 必选/可选 | 类型 | 参数描述 | 
|---|---|---|---|
| t | 必选 | Integer | Unix 时间戳(Unix timestamp) | 
| request_id | 必选 | String | 请求标示,建议用 UUID 算法生成。 | 
| param | 必选 | Object | 对象 | 
| param.cid | 必选 | String | 第三方设备 ID,由设备侧定义。建议采⽤设备端可读取的唯⼀标识作为 cid,例如设备的 SN 号、IMEI 号等。 | 
| param.product_id | 必选 | String | 产品对应的 product_id | 
| param.vendor_code | 可选 | String | 厂商 Code | 
| param.comm_type | 可选 | String | 设备和网关通讯方式,请填写“MQTT” | 
| param.device_ip | 可选 | String | 设备 IP 地址 | 
| param.mac_address | 可选 | String | 设备 MAC 地址 | 
| param.device_desc | 可选 | String | 设备描述 | 
| param.install_location | 可选 | String | 设备安装位置 | 
| param.device_server_id | 可选 | String | 设备服务 ID | 
| param.product_sub_type | 可选 | String | 子产品类型 | 
| 字段名 | 必选/可选 | 类型 | 参数描述 | 
|---|---|---|---|
| t | 必选 | Integer | Unix 时间戳(Unix timestamp) | 
| request_id | 必选 | String | 请求唯一标示。 | 
| param | 必选 | Object | 对象 | 
| param.cid | 必选 | String | 设备 cid | 
| param.msg | 必选 | String | 含义请参考全局错误码。 | 
| param.code | 必选 | Integer | 标识命令的执行结果,0 表示成功,其他表示失败。 | 
Topic: gateway_id/{gateway_id}/devices/sync
数据格式:
{
    "t":1627280679,
    "request_id":"cd0fd3c3-bd15-42f6-8bf9-d2***",
    "param":{
        "cid":"92dda538fc***",
        "product_id":"sie4***",//请填写产品对应的 pid
        "vendor_code":"",//设备厂商标识
        "comm_type":"",
        "device_ip":"",
        "mac_address":"",
        "device_name":"",
        "device_desc":"",
        "install_location":"",
        "device_server_id":"",
        "product_sub_type":""
    }
}
Topic: gateway_id/{gateway_id}/devices/sync/response
数据格式:
{
    "t":1627280***,
    "request_id":"cd0fd3c3-bd15-42f6-8bf9-d23***",
    "param":{
        "cid":"92dda538fc***",
        "msg":"success",
        "code":0
    }
}
用于平台向设备下发设备控制命令。平台下发命令后,需要设备及时将命令的执行结果返回给平台,如果设备没回响应,平台会认为命令执行超时。
Topic
下行: gateway_id/{gateway_id}/commands
上行:gateway_id/{gateway_id}/commands/response
| 字段名 | 必选/可选 | 类型 | 参数描述 | 
|---|---|---|---|
| t | 必选 | Integer | Unix 时间戳(Unix timestamp) | 
| cid | 必选 | String | 第三方设备 ID,由设备侧定义。建议采⽤设备端可读取的唯⼀标识作为 cid,例如设备的 SN 号、IMEI 号等。 | 
| request_id | 必选 | String | 请求标示,建议用 UUID 算法生成。 | 
| param | 必选 | Object | 对象 | 
| param.id | 必选 | String | 设备功能点 ID。 | 
| param.value | 必选 | 类型不固定 | 设备命令的执行参数。 | 
命令应答的 JSON 格式。
| 字段名 | 必选/可选 | 类型 | 参数描述 | 
|---|---|---|---|
| t | 必选 | Integer | Unix 时间戳(Unix timestamp) | 
| cid | 必选 | String | 第三方设备 ID,由设备侧定义。建议采⽤设备端可读取的唯⼀标识作为 cid,例如设备的 SN 号、IMEI 号等。 | 
| request_id | 必选 | String | 请求唯一标示,建议用 UUID 算法生成。 | 
| param | 必选 | Object | 对象 | 
| param.msg | 必选 | String | 执行结果,如果成功,请填写 success。 | 
| param.code | 必选 | Integer | 标识命令的执行结果,0 表示成功,其他表示失败。 | 
Topic: gateway_id/{gateway_id}/commands
数据格式:  
{
  "t":1627280***,
  "cid": "92dda538fc2e636fd4b0***",
  "request_id":"cd0fd3c3-bd15-42f6-8bf9-d23***",
  "param": {
    "id":"1",
    "value": "1"
  }
}
Topic:gateway_id/{gateway_id}/commands/response
数据格式:  
{
  "t":1627280***,
  "cid": "92dda538fc2e636fd4***",
  "request_id":"cd0fd3c3-bd15-42f6-8bf9-d23***",
  "param": {
    "msg": "success",
    "code":0
  }
}
用于设备按产品模型中定义的格式将属性数据上报给平台。平台在接到上报消息后,会将执行结果返回给设备。
Topic
上行:gateway_id/{gateway_id}/properties/report
下行:gateway_id/{gateway_id}/properties/report/response
| 字段 | 必选/可选 | 类型 | 参数描述 | 
|---|---|---|---|
| t | 必选 | Integer | 时间戳:为设备连接平台时的 UTC 时间。 | 
| request_id | 必选 | String | 请求唯一标示,建议用 UUID 算法生成。 | 
| param | 必选 | Object | 对象 | 
| param.cid | 必选 | String | 第三方设备 ID,由设备侧定义。建议采⽤设备端可读取的唯⼀标识作为 cid,例如设备的 SN 号、IMEI 号等。 | 
| param.product_id | 必选 | String | 产品的 product_id,请参考自己产品的 ID 进行填写。 | 
| param.id | 必选 | String | 产品下面某一个功能点 ID。 | 
| param.value | 必选 | 参考功能点类型 | 设备的属性值 | 
| 字段名 | 必选/可选 | 类型 | 参数描述 | 
|---|---|---|---|
| t | 必选 | Integer | Unix 时间戳(Unix timestamp) | 
| request_id | 必选 | String | 请求唯一标示。 | 
| param | 必选 | Object | 对象 | 
| param.cid | 必选 | String | 第三方设备 ID,由设备侧定义。建议采⽤设备端可读取的唯⼀标识作为 cid,例如设备的 SN 号、IMEI 号等。 | 
| param.msg | 必选 | String | 含义请参考全局错误码。 | 
| param.code | 必选 | Integer | 标识命令的执行结果,0 表示成功,其他表示失败。 | 
gateway_id/{gateway_id}/properties/report
{
    "t":1627280***,
    "request_id":"cd0fd3c3-bd15-42f6-8bf9-d23***",
    "param":{
        "cid":"ee1880aca***",
        "product_id":"r2fz6uv6a***",
        "id":"1",
        "value":"run"
    }
}
Topic:gateway_id/{gateway_id}/properties/report/response
数据格式:  
{
    "t":1627280***,
    "request_id":"cd0fd3c3-bd15-42f6-8bf9-d23***",
    "param":{
        "cid":"92dda538***",
        "msg":"success",
        "code":0
    }
}
设备网关需要定时把设备的上线下线状态同步给涂鸦边缘网关,建议至少每隔一分钟上报一次子设备状态。
Topic
上行:gateway_id/{gateway_id}/devices/status
| 字段 | 必选/可选 | 类型 | 参数描述 | 
|---|---|---|---|
| t | 必选 | Integer | 时间戳:为设备连接平台时的 UTC 时间。 | 
| request_id | 必选 | String | 请求唯一标示,建议用 UUID 算法生成。 | 
| param | 必选 | Object | 对象数组 | 
| param.cid | 必选 | String | 第三方设备 ID,由设备侧定义。建议采⽤设备端可读取的唯⼀标识作为 cid,例如设备的 SN 号、IMEI 号等。 | 
| param.status | 必选 | Bool | 设备状态。true 代表上线、false 代表离线。 | 
Topic:gateway_id/{gateway_id}/devices/status
数据格式:  
{
  "t":1627280***,
  "request_id":"cd0fd3c3-bd15-42f6-8bf9-d23***",
  "param": [{
    "cid": "92dda538fc2e6***",
    "status":true
  },
  {
    "cid": "da538fc2eb***",
    "status":false
  }         
 ]
}
为了帮助开发者调用开放接口,我们提供了JAVA、PHP、GO三种语言版本的开发例子,演示了服务连接、验证、敏感信息加/解密、推送订阅等基础功能(更多语言版本的开发库将在近期陆续提供)
将下面显示的依赖性定义添加到 maven pom 文件中。
<dependencies>
    <dependency>
        <groupId>org.eclipse.paho</groupId>
        <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
        <version>1.2.0</version>
    </dependency>
</dependencies>
//消息发布
public class Publish {
    public static void main(String[] args) {
        String clientId = "";                     // 即 gatewayID, 第三⽅⼚商⽹关 ID
        String topic = ""; 												// 主题
        String content = "";                      // 内容
        int qos = 1;                              // 服务质量
        String broker = "";                       // 服务器 IP 地址
        String userName = "";                     // 用户名,由涂鸦提供
        String password = "";                     // 密码,请参考密码生成规则
        // 内存存储
        MemoryPersistence persistence = new MemoryPersistence();
        try {
            // 创建客户端
            MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
            // 创建链接参数
            MqttConnectOptions connOpts = new MqttConnectOptions();
            // 在重新启动和重新连接时记住状态
            connOpts.setCleanSession(false);
            // 设置连接的用户名
            connOpts.setUserName(userName);
            connOpts.setPassword(password.toCharArray());
            // 建立连接
            sampleClient.connect(connOpts);
            // 创建消息
            MqttMessage message = new MqttMessage(content.getBytes());
            // 设置消息的服务质量
            message.setQos(qos);
            // 发布消息
            sampleClient.publish(topic, message);
            // 断开连接
            sampleClient.disconnect();
            // 关闭客户端
            sampleClient.close();
        } catch (MqttException me) {
            System.out.println("reason " + me.getReasonCode());
            System.out.println("msg " + me.getMessage());
            System.out.println("loc " + me.getLocalizedMessage());
            System.out.println("cause " + me.getCause());
            System.out.println("excep " + me);
            me.printStackTrace();
        }
    }
}
//消息订阅
public class Subscribe {
    public static void main(String[] args) throws MqttException {  
        String clientId = "";                     // 即 gatewayID, 第三⽅⼚商⽹关 ID 
        String host = "";                         // 服务器 IP 地址
        String topic = "gateway/in/" + clientId;  // 主题
        int qos = 1;                              // 服务质量
        String userName = "";                     // 用户名,由涂鸦提供
        String password = "";                     // 密码,请参考密码生成规则
        try {
            //MemoryPersistence 设置 clientid 的保存形式,默认为以内存保存
            MqttClient client = new MqttClient(host, clientid, new MemoryPersistence());
            // MQTT 的连接设置
            MqttConnectOptions options = new MqttConnectOptions();
            // 设置是否清空 session,这里如果设置为 false 表示服务器会保留客户端的连接记录,这里设置为 true 表示每次连接到服务器都以新的身份连接
            options.setCleanSession(true);
            // 设置连接的用户名
            options.setUserName(userName);
            // 设置连接的密码
            options.setPassword(passWord.toCharArray());
            // 设置超时时间 单位为秒
            options.setConnectionTimeout(10);
            // 设置会话心跳时间 单位为秒 
            options.setKeepAliveInterval(20);
            // 设置回调函数
            client.setCallback(new MqttCallback() {
                public void connectionLost(Throwable cause) {
    
                }
                public void messageArrived(String topic, MqttMessage message) throws Exception {
                  	// 消息处理部分
                    System.out.println("message content:"+new String(message.getPayload()));
                    
                }
                public void deliveryComplete(IMqttDeliveryToken token) {
                   
                }
            });
            client.connect(options);
            //订阅消息
            client.subscribe(topic, qos);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
package main
import (
	"fmt"
	mqtt "github.com/eclipse/paho.mqtt.golang"
	"log"
	"os"
	"time"
)
const broker = ""               // 服务器 IP 地址,请联系涂鸦管理员获取
const username = ""             // 用户名,由涂鸦提供
const password = ""             // 密码,请参考密码生成规则
const clientID = ""             // 即 gatewayID, 第三⽅⼚商⽹关 ID
const topic = ""      					// 主题
const port = "21883"            // 服务端口号
// 订阅消息 topic = "gateway/in/" + clientID
// 发布消息 topic = "gateway/out/" + clientID
var f mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) {
	fmt.Printf("TOPIC: %s\n", msg.Topic())
	fmt.Printf("MSG: %s\n", msg.Payload())
}
func main() {
	mqtt.DEBUG = log.New(os.Stdout, "", 0)
	mqtt.ERROR = log.New(os.Stdout, "", 0)
	opts := mqtt.NewClientOptions().AddBroker(fmt.Sprintf("tcp://%s:%s", broker, port)).SetClientID(clientID).
		SetUsername(username).SetPassword(password)
	
	opts.SetKeepAlive(60 * time.Second)
	// 设置消息回调处理函数
	opts.SetDefaultPublishHandler(f)
	opts.SetPingTimeout(1 * time.Second)
	
	c := mqtt.NewClient(opts)
	if token := c.Connect(); token.Wait() && token.Error() != nil {
		panic(token.Error())
	}
	
	// 订阅主题
	if token := c.Subscribe(topic, 0, nil); token.Wait() && token.Error() != nil {
		fmt.Println(token.Error())
		os.Exit(1)
	}
	
	// 发布消息
	token := c.Publish(topic, 0, false, "Hello World")
	token.Wait()
	
	time.Sleep(6 * time.Second)
	
	// 取消订阅
	if token := c.Unsubscribe(topic); token.Wait() && token.Error() != nil {
		fmt.Println(token.Error())
		os.Exit(1)
	}
	
	// 断开连接
	c.Disconnect(250)
	time.Sleep(1 * time.Second)
}
消息推送:
<?php
require("");                                // 引入 mqtt 类文件
$server    = '';                            // 服务器 IP 地址,请联系涂鸦管理员获取 
$port      = 21883;                         // 服务器端口
$username  = '';                            // 用户名,由涂鸦提供
$password  = '';                            // 密码,请参考密码生成规则
$client_id = ''                             // 即 gatewayID, 第三⽅⼚商⽹关 ID
$mqtt = new Bluerhinos\phpMQTT($server, $port, $client_id); // 实例化 MQTT 类
if ($mqtt->connect(true, NULL, $username, $password))       // 建立连接
{
    $topic = 'gateway/out/'.$client_id;		  // 主题
    $key = 	''                              // 加密密钥 请填写连接认证时⽤的 password
    $msg = '';															// 推送消息,请参考上方消息格式
    // qos = 0:仅发一次,不管是否能收到
    // qos = 1:没返回一直发,可能有重复接收
    // qos = 2:保证必须收到,并且不重复
    $mqtt->publish($topic, $msg, 0);//发送数据
    $mqtt->close();							            //关闭连接
}
else
{
    echo "Time out!\n";
}
消息订阅:
<?php
require("");                                // 引入 mqtt 类文件
$server    = '';                            // 服务器 IP 地址,请联系涂鸦管理员获取 
$port      = 21883;                         // 服务器端口
$username  = '';                            // 用户名,由涂鸦提供
$password  = '';                            // 密码,请参考秘密生成规则
$client_id = ''                             // 即 gatewayID, 第三⽅⼚商⽹关 ID
$mqtt = new Bluerhinos\phpMQTT($server, $port, $client_id);
$mqtt->debug = true;
if(!$mqtt->connect(true, NULL, $username, $password))
{
    echo "连接失败!\n";
    exit(1);
}
$topic = 'gateway/in/'.$client_id;          // 主题
																						// 订阅列表
$topics = [
    $topic => ['qos' => 0, 'function' => 'procmsg'],
];
$mqtt->subscribe($topics, 0);
while ($mqtt->proc()){}
$mqtt->close();
                                            
function procmsg($topic, $msg)							// 消息处理函数
{
    $key =  ''                              
  	echo $msg;	
}
当调用接口发生错误时,会返回自定义错误信息。本文介绍全局错误码的含义。
| 错误码 code | 错误信息 msg | 说明 | 
|---|---|---|
| 400 | tedge error: 上游具体错误信息 | 上游错误,具体信息由上游定义 | 
| 500 | system error,please contact the admin | 系统错误,请联系管理员。 | 
| 1001 | request time is invalid | 无效的请求时间。 | 
| 1100 | params is empty | 参数为空。 | 
| 1101 | params range invalid | 无效的参数范围。 | 
| 1102 | params is null | 参数为 Null。 | 
| 1103 | params type is incorrect | 参数类型错误。 | 
| 1104 | request pid is invalid | 无效的 pid | 
| 1105 | id does not exist in pid | 此 pid 内无此功能点 ID | 
| 2001 | device is offline | 设备已离线。 | 
| 2002 | command or value not support | 不支持的指令或值。 | 
| 2003 | device not exist | 设备不存在。 | 
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈