协调器协议栈版本:ZHA1.2.2a
有几个外协的LED灯模块,用的ZLL的协议栈,加到我们现在的协调器网络中。
1、开始没问题,入网之后在描述符中读出来的profile ID=0xC05E,DEVICEID=0x0100;
2、后来网关有个改动,入网后在读取简单描述符之前,先读取了一下厂商名称,用的read attributes命令,读取后再获取的描述符中就变成了:
profile ID=0x0104,DEVICEID=0x0100;
3、这样造成了一个问题:同样的DEVICEID(0x0100),在不同的profile ID下表示的设备类型是不同的,
ZLL中:#define ZLL_DEVICEID_DIMMABLE_LIGHT 0x0100
ZHA中:#define ZCL_HA_DEVICEID_ON_OFF_LIGHT 0x0100
4、这样在网关端生成的设备类型就不一样了,在APP的控制上就发生错误了。
请问下:为什么一个读取的操作,会影响设备本身的简单描述符中的信息?而且测试了号几家的LED模块,都是同样的现象,所以应该是ZLL设备加入到ZHA网络的统一现象。
下边两个抓包文件,一个是没有进行读取操作,一个是进行了读取操作的。可以看到,不读厂商名profile ID=0xC05E,读了之后profile ID=0x0104.
下边这个这个是profile ID没有变得:
外协调光灯profileC05E.rar
下边这个这个是profile ID变成0x0104得:
外协调光灯profile0104.rar
YiKai Chen:
建議你可以用設備支持的ZCL cluster來區分,應該就可以處理掉這個問題
user5020974:
回复 YiKai Chen:
这个做的话,就得在网关程序中做更改了,网关程序还是另外部门得人做的,他那边就只认DEVICEID……
Aries Lord:
回复 user5020974:
你们的设备端的端口是否有重复注册?