所谓“幽灵簇”,就是用zigbee的网络协议发现不了,又真实存在于zigbee设备中。
通常一个簇代表一个能实现的功能,很多时候zigbee设备定义了私有协议,比如红外码,键盘这些不在ZCL规范的。按照正常的做法是用一个manufacturer code来标注这个簇的功能,防止与其它设备的功能出现冲突。
而幽灵簇,就是使用ZDP Simple Discover的方式发现不了的簇,而设备通过这个簇来发送Report指令,或者以Notify的方式发送Specific指令。既然要发Report指令,那就说明这个簇是存在于该设备中。而且Report指令必须带上实体的Attribute,只是说这个Attribute可能很特殊,不支持Read和Write,但是支持Report(也有可能支持Read)。
绿米的一些早期的产品,比如门磁,人体检测,无线按钮就大量应用了幽灵簇。某鸦和某舟的zigbee产品,也是用了幽灵簇。
幽灵簇能不能过zigbee认证?据说某些zigbee产品为了过认证,故意把一些manufacturer cluster隐藏起来,使用ZDP Simple Discover找不到,但是通过Report的方式让网关知道自己就行了。甚至有可能在Device ID上面做伪装,比如ZCL协议中没有红外遥控转发器,那么就用 其它设备的Device ID来代替骗过第三方的网关,而自家的网关因为收到自家设备的簇,判断出来是红外遥控相关簇,就让APP执行相关的控制。