子设备群组

更新时间:2024-05-14 08:00:15下载pdf

在很多场景下,需要同时控制很多数量的同类型设备,因此有了群组的设计。

在这种场景下,网关可以将相同类型的的子设备加入到一个群组。当发送群组控制命令时,意味着所有该群组内的子设备都需要执行同样的操作。群组减少了数据的交互量,从而减少了出错的风险。

比如,本来要控制 50 台相同的设备需要发送 50 条命令,如果设置为一个群组,那么只需要下发一条命令。从而大大减少了数据的交互流程。

概念解释

群组 ID:群组创建后的唯一标识。
cid:子设备标识即 subid。

加入群组

将子设备加入群组。

模组下发

55 AA 00 0E 00 1F 7B 22 67 69 64 22 3A 22 31 30 30 32 30 22 2C 22 63 69 64 73 22 3A 5B 22 31 32 33 34 22 5D 7D 20

数据内容为

{"gid":"10020","cids":["1234"]}

模组要求MCU将子设备标识(cids)为 1234 的设备加入到群组,群组的标识(gid)为10020

MCU回复

55 AA 00 0E 00 2A 7B 22 72 65 74 73 22 3A 5B 30 5D 2C 22 67 69 64 22 3A 22 31 30 30 32 30 22 2C 22 63 69 64 73 22 3A 5B 22 31 32 33 34 22 5D 7D 7B

数据内容为

{"rets":[0],"gid":"10020","cids":["1234"]}

rets 对应的值为返回的结果,0 代表添加成功,此回复代表 MCU 已经成功将子设备标识为1234的设备加入到群组,群组的标识为 10020。如果添加失败,MCU可根据自身原因,根据协议回复具体的值。

从群组中移除

将子设备从群组中移除。

模组下发

55 AA 00 0F 00 1F 7B 22 67 69 64 22 3A 22 31 30 30 32 30 22 2C 22 63 69 64 73 22 3A 5B 22 31 32 33 34 22 5D 7D 21

数据内容为

{"gid":"10020","cids":["1234"]}

模组要求MCU将子设备标识 cids1234 的设备从群组中删除,群组的标识 gid10020

MCU回复

55 AA 00 0F 00 2A 7B 22 72 65 74 73 22 3A 5B 30 5D 2C 22 67 69 64 22 3A 22 31 30 30 32 30 22 2C 22 63 69 64 73 22 3A 5B 22 31 32 33 34 22 5D 7D 7C

数据内容为

{"rets":[0],"gid":"10020","cids":["1234"]}

rets 对应的值为返回的结果,0 代表添加成功,此回复代表MCU已经成功将子设备标识 cid1234 的设备从群组标识 gid10020 的群组中移除。如果移除失败,MCU 可根据自身原因,根据协议回复具体的值。

群组命令下发

当 App 通过群组来控制下发控制命令时,模组会通过该命令传递给 MCU。

模组下发

55 AA 00 14 00 0B 05 31 30 30 32 30 01 01 00 01 01 1A

字段 内容
帧头 55 AA
命令字 00 14
长度 00 0B
数据
  • id_len:0x05(群组id长度为4)
  • grp_id:0x31 0x30 0x30 0x32 0x30(群组ID为10020)
  • 状态数据单元
    • dpid:0x01(DP序号为1)
    • type:0x01(DP类型为布尔型)
    • len:0x00 0x01(数据长度为1)
    • value:0x01 (数据值为1)
校验和 0xE8

此条命令指要求将所有群组 ID 为 10020 的设备都执行 DP 序号 1,值为 1 的动作。

MCU回复

55 AA 00 14 00 00 13

接收群组动作后并执行动作后,子设备需要主动上报改变后的状态(0x0D命令)。
如果没有及时上报,模组会在五秒后主动来查询群组内所有设备的对应DP的状态(0x29命令)来确保 App 上显示的子设备的状态与真实的相符。

本地改变上报群组

当 MCU 在本地执行了群组动作后(不是来自APP),如果MCU针对群组并没有让子设备逐个主动上报的逻辑,会导致本地的状态和App上显示的状态不一致。可以通过该命令通知模组。模组收到该指令后,会对群组下的子设备对应的DP逐个查询(0x29命令),从而确保App上显示状态和实际的设备状态一致。

MCU上报

55 AA 00 2F 00 18 7B 22 67 69 64 22 3A 22 31 30 30 34 30 22 2C 22 64 70 69 64 22 3A 31 7D A5

数据内容为

{"gid":"10040","dpid":1}

此命令为通知模组,群组标识 gid 为 10040 的群组本地状态发生了改变,改变的 DP 序号 dpid 为 1。

模组回复

55 AA 00 2F 00 01 00 2F

表示模组已经收到信息。

如果 gid 和 dpid 没有问题,那么模组会调用 0x29 命令来查询该群组下的所有子设备。