Acrel IoT Docs Help

操作指令

Topic

  • 上行: indicate/dev/{productKey}/{sn}

  • 下行: indicate/server/{productKey}/{sn}

  • QoS: 1

method

说明

operate

操作指令

alarm_reset / alarm_reset_all

平台向设备发送报警复位命令

operate->dido

多路DIDO控制

operate->ptct

PT、CT设置

operate_raw

简化透传指令,除了时控、复费率等复杂场景,简单的透传命令可以通过此命令下发

transport

透传指令

read

主动抄表指令

multi

批量操作指令

下发操作指令operate

应用向设备发送操作指令,并且需要得到设备实时响应时,可以通过调用中台API下发操作指令。

indicate_operate

1.中台使用Topic indicate/server/{productKey}/{sn}推送OTA信息, methodoperate ,消息格式如下:

{ "msgid": 628131887239491584, "method": "operate", "sn": "1234567890123", "timestamp": 1638869990, "payload ": { "addr": "3_1", "portid": 1, "meteraddr": 1, "groupid": 1, "loop": 1, "method": "REFRESH" } }

参数

说明

payload

表示需要下发给设备的指令内容,portid、meteraddr、loop、groupid是设备在拓扑topology报文中上报的子设备属性,平台下发命令时会带上,方便设备定位子设备使用。如果用不上,可以在topology中不上报。

payload.addr

子设备的识别编号。

payload.portid

端口号。

payload.meteraddr

表地址。

payload.groupid

组(回路)号。

payload.loop

最大组(回路)数量。

payload.其他

其他都属于业务层的协议。

2.设备端收到消息后,对指令进行执行。

3.指令执行完成后,设备使用Topic indicate/dev/{productKey}/{sn}反馈执行结果, methodoperate

  • 执行成功,消息格式如下:

{ "msgid": 628131887239491584, "method": "operate", "sn": "1234567890123", "res": 1, "timestamp": 1638869995 }
  • 执行失败,消息格式如下:

{ "msgid": 628131887239491584, "method": "operate", "sn": "1234567890123", "res": 0, "errcode": "503", "timestamp": 1638869995 }

设备报警复位命令

平台向设备发送复位命令,对设备报警状态进行复位,当设备上报了多个报警编码后,可以对其中单个报警进行复位,也可以一次对全部报警进行复位。

这属于operate的一个子命令,消息格式如下:

  • 复位单个报警状态

{ "msgid": "123", "timestamp": 1638869890, "method": "operate", "sn": "12012081369914", "payload": { "method": "ALARM_RESET", "addr": "3_1", "code": "UaHIGH2", "portid": "1", "meteraddr": "1", "loop": "1", "groupid": "1" } }
  • 复位所有报警状态

{ "msgid": "123", "timestamp": 1638869890, "method": "operate", "sn": "12012081369914", "payload": { "method": "ALARM_RESET_ALL", "addr": "3_1", "code": "", "portid": "1", "meteraddr": "1", "loop": "1", "groupid": "1" } }

一级属性

二级属性

说明

payload

对象,参数

method

字符串,固定为ALARM_RESET / ALARM_RESET_ALL

addr

字符串,子设备识别ID

code

字符串,需要复位的单个报警编码,例如:UHIGH2,如果是ALARM_RESET_ALL,则code为空

其他

portid、meteraddr、loop、groupid是设备在拓扑topology报文中上报的子设备属性,平台下发命令时会带上,方便设备定位子设备使用。 如果用不上,可以在topology中不上报。

多路DIDO控制

平台可以向设备发送命令,同时控制多个DI/DO,这属于operate的一个子命令,消息格式如下:

{ "msgid": "123", "timestamp": 1638869890, "method": "operate", "sn": "12012081369914", "payload": { "method": "SET_DIDO", "addr": "3_1", "portid": "1", "meteraddr": "1", "loop": "1", "groupid": "1", "actions": { "DO1": 1, "DO2": 0 } } }

一级属性

二级属性

说明

payload

对象,参数

method

字符串,固定为SET_DIDO

addr

字符串,子设备识别ID

action

对象,里面的key为字符串,表示DI/DO名,值为DI/DO的设置值,可以是字符串/数值/对象等

其他

portid、meteraddr、loop、groupid是设备在拓扑topology报文中上报的子设备属性,平台下发命令时会带上,方便设备定位子设备使用。 如果用不上,可以在topology中不上报。

PT、CT设置

平台可以向设备发送命令,设置PT、CT,消息格式如下:

{ "msgid": "123", "timestamp": 1638869890, "method": "operate", "sn": "12012081369914", "payload": { "method": "SET_PTCT", "addr": "3_1", "portid": "1", "meteraddr": "1", "loop": "1", "groupid": "1", "PT": 20, "CT": 1 } }

一级属性

二级属性

说明

payload

对象,参数

method

字符串,固定为SET_DIDO

addr

字符串,子设备识别ID

PT

数值,PT

CT

数值,CT

其他

portid、meteraddr、loop、groupid是设备在拓扑topology报文中上报的子设备属性,平台下发命令时会带上,方便设备定位子设备使用。 如果用不上,可以在topology中不上报。

简化透传指令operate_raw

应用向设备发送透传指令,并且需要得到设备实时响应。

1.中台使用Topic indicate/server/{productKey}/{sn}methodoperate_raw ,消息格式如下:

{ "msgid": 628131887239491584, "method": "operate_raw", "sn": "1234567890123", "timestamp": 1638869990, "payload ": { "addr": "1_1", "portid": 1, "meteraddr": 1, "groupid": 1, "loop": 1, "functionid": "Switch", "value": 1 } }

参数

说明

payload

表示需要下发给设备的指令内容,portid、meteraddr、loop、groupid是设备在拓扑topology报文中上报的子设备属性,平台下发命令时会带上,方便设备定位子设备使用。如果用不上,可以在topology中不上报。

payload.addr

子设备的识别编号。

payload.portid

端口号。

payload.meteraddr

表地址。

payload.groupid

组(回路)号。

payload.loop

最大组(回路)数量。

payload.其他

其他都属于业务层的协议。

2.设备端收到消息后,对指令进行执行。

3.指令执行完成后,设备使用Topic indicate/dev/{productKey}/{sn}反馈执行结果, methodoperate_raw

  • 设备正常回复,消息格式如下:

{ "msgid": 628131887239491584, "method": "operate_raw", "sn": "1234567890123", "timestamp": 1638869995, "res": 1, "payload": { "addr": "1_1", "functionid": "Switch", "value": 1 } }
  • 执行失败,消息格式如下:

{ "msgid": 628131887239491584, "method": "operate_raw", "sn": "1234567890123", "timestamp": 1638869995, "res": 0, "errcode": "", "payload": { "addr": "1_1", "functionid": "Switch", "value": 1 } }

属性

说明

payload

如果有数据需要返回,可以将其添加到payload属性中,例如刷新命令回复的设备实时状态

透传指令transport

应用向设备发送透传指令,并且需要得到设备实时响应。

1.中台使用Topic indicate/server/{productKey}/{sn}methodtransport ,消息格式如下:

{ "msgid": 628131887239491584, "method": "transport", "sn": "1234567890123", "timestamp": 1638869990, "payload ": { "addr": "00000000000001_1", "portid": 1, "meteraddr": 1, "groupid": 1, "loop": 1, "data": "01200300004c9801070100000b3901013a0b010000010000010000010000010000010000010000013a0b0100000100000100000100000100000100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004F2B" } }

参数

说明

payload

表示需要下发给设备的指令内容,portid、meteraddr、loop、groupid是设备在拓扑topology报文中上报的子设备属性,平台下发命令时会带上,方便设备定位子设备使用。如果用不上,可以在topology中不上报。

payload.addr

子设备的识别编号。

payload.portid

端口号。

payload.meteraddr

表地址。

payload.groupid

组(回路)号。

payload.loop

最大组(回路)数量。

payload.data

透传命令。

2.设备端收到消息后,对指令进行执行。

3.指令执行完成后,设备使用Topic indicate/dev/{productKey}/{sn}反馈执行结果, methodtransport

  • 设备正常回复,消息格式如下:

{ "msgid": 628131887239491584, "method": "transport", "sn": "1234567890123", "res": 1, "timestamp": 1638869995, "payload": { "addr": "00000000000001_1", "data": "012038FFFE2567000001CA001D1D08" } }
  • 执行失败,消息格式如下:

{ "msgid": 628131887239491584, "method": "transport", "sn": "1234567890123", "res": 0, "errcode": "5003", "timestamp": 1638869995, "payload": { "addr": "00000000000001_1", "data": "012038FFFE2567000001CA001D1D08" } }

属性

说明

payload.data

回复的透传命令

主动抄表指令read

主动抄表指令通常用于需要平台主动获取实时数据的场景,例如:设备不会主动上报数据,或者需要触发设备上报一次数据的场景。

1.中台使用Topic indicate/server/{productKey}/{sn}methodread ,消息格式如下:

{ "msgid": 628131887239491584, "method": "read", "sn": "1234567890123", "timestamp": 1638869990, "payload ": { "addr": "1_1", "portid": 1, "meteraddr": 1, "groupid": 1, "loop": 1 } }

2.设备端收到消息后,首先进行回复:

{ "msgid": 628131887239491584, "method": "read", "sn": "1234567890123", "res": 1, "timestamp": 1638869995 }

3.然后通过 设备投影 中的 reportupdate 正常上报数据。

批量操作指令multi

批量下发包括2种情况,一种是多网关的批量下发,这个由平台负责多线程并行发送,另一种是对单个网关下多个仪表的批量下发,这个由平台发送给网关,然后网关负责对下属各仪表进行依次下发,并将结果反馈给平台。此协议是针对单个网关下多个仪表的批量下发进行设计。

image-20230109153857867

当前,中台协议中的指令下发包括3种,分别是operate操作指令,transport透传指令,read主动抄表,三种指令的报文非常相似,差别只在于method以及payload中的属性不同。

1.平台下发

  • operate_multi

应用平台下发的中台协议指令,从应用平台的接口设计来看,不会存在一次下发多个命令的情况,所以此处只支持单条命令,当然,在中台转为设备协议的报文时,有可能会对应多条报文,例如需要分包进行下发时。

{ "msgid": 628131887239491584, "method": "operate_multi", "sn": "1234567890123", "timestamp": 1638869990, "payload ": { "request": [ {"addr": "1_1", "method": "FORCESWITCH", "ForceSwitch": 1}, {"addr": "1_2", "method": "FORCESWITCH", "ForceSwitch": 1}, {"addr": "2_1", "method": "FORCESWITCH", "ForceSwitch": 1} ] } }
  • transport_multi

下发透传时,单个仪表有可能存在多条透传报文,报文用半角逗号 “,” 隔开。

{ "msgid": 628131887239491584, "method": "transport_multi", "sn": "1234567890123", "timestamp": 1638869990, "payload ": { "request": [ {"addr": "1_1", "data": "0C039D080008EB7F,0C039D080008EB7"}, {"addr": "1_2", "data": "0C039D080008EB7F,0C039D080008EB7"}, {"addr": "2_1", "data": "0C039D080008EB7F,0C039D080008EB7"} ] } }
  • read_multi

批量抄表

{ "msgid": 628131887239491584, "method": "read_multi", "sn": "1234567890123", "res": 0, "errcode": "5003", "timestamp": 1638869995, "payload": { "request": [ {"addr": "1_1"}, {"addr": "1_2"}, {"addr": "2_1"} ] } }

2.网关确认

  • 网关收到消息后,先回复以确认收到,中台接口需要返回成功,并附带msgid,以确保应用平台能获取到消息标识ID;

  • 如果网关无响应,中台需要向应用平台返回失败,原因是网关无响应/网关离线等。

{ // msgid和指令报文相同 "msgid": 628131887239491584, // operate_multi / transport_multi / read_multi "method": "operate_multi", "sn": "1234567890123", "res": 1, "timestamp": 1638869995 }

3.网关上报结果

网关在命令执行完成后,上报执行结果。中台如果下发了多条透传报文,最终也会根据设备返回的多个透传报文,转换为一个最终成功或失败的结果。

{ // msgid和指令报文相同 "msgid": 628131887239491584, // operate_multi / transport_multi / read_multi "method": "operate_multi", "sn": "1234567890123", "timestamp": 1638869995, "payload": { "response": [ { "addr": "1_1", "res": 0, "errcode": "503", "payload": { ... } }, { "addr": "1_2", "res": 1, "payload": { ... } } ] } }

4.中台确认结果

{ // msgid和指令报文相同 "msgid": 628131887239491584, "method": "operate_multi", "sn": "1234567890123", "res": 1, "timestamp": 1638869995 }

5.中台推送执行结果

在中台定义一个转发结果,将结果报文推送给应用平台。

Last modified: 18 四月 2025