# 设备组
针对某些需要对设备进行批量操作的场景,可以通过设备组完成。
# 1. 设备组的限制
- 一个设备组最多添加 50 个设备,一个设备只能属于一个设备组。
- 同一个设备组内的设备必须属于同一设备类型(model_type),例如「校园电话」,但不一定是相同设备型号(model_id)。
- 设备组必须通过后台 API 创建,创建后不允许修改设备组的名称。用户授权和接听通话时看到的都是设备组的名称,而不能针对用户自定义。
# 2. 管理设备组
开发者可以通过下列后台接口完成对设备组的增删改查操作。
开发者需要维护创建的所有设备组的 group_id,已便后续查询和授权时使用。微信只做校验,不维护小程序下创建的所有 group_id 列表。
注意:
除了设备组创建时添加设备外,一般添加或删除设备只应发生在添购设备、设备损坏更换、设备裁撤等场景。请开发者保持设备组内设备的相对稳定,避免过于频繁的修改设备组的组成。
微信会对设备组操作进行监测,并在必要时要求小程序管理员进行手动确认。这种情况下,设备组操作会在管理员确认后生效。
# 3. 适用场景
目前可用于设备批量授权的场景。
# 4. 问题排查指引
# 4.1 为什么设备之前添加过设备组了,但是设备组里查不到?
- 可能由其他逻辑调用了
removeIotGroupDevice
从设备组中将设备删除; - 可能由其他地方使用
addIotGroupDevice
(force_add=true) 强制将设备转移到了其他设备组,也会导致设备从之前的组里移除。
# 4.2 用户授权设备组后,仍提示未授权设备(errCode = 9)如何排查?
使用设备组的设备,如果提示未授权,可能有以下几种可能
- 用户未授权设备组,或曾经授权后用户清空或取消授权
- 可以使用授权状态查询 接口,判断用户和设备/设备组直接是否存在授权关系
- 用户授权了设备组,但是设备组内无此设备。
- 可以使用 getIotGroupInfo 查询设备组中的设备列表。
# 4.3 A、B 两名用户都授权了设备组 X,但是 A 能打通设备组内的设备 X1,B 却不行?
一般是由于用户 A 和设备之间其实已存在直接授权(未通过设备组)。假设设备 X1 存在于设备组 X 中。
- 用户 A 同时授权设备组 X 和直接授权设备 X1。此时即使设备 X1 被移除出设备组 X,用户 A 仍能拨打给设备。
- 用户 B 仅授权设备组 X。此时设备 X1 被移除设备组 X 后,用户 B 无法打给设备。