This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

安防设备在入网时一直不发送IAS ZONE ENROLL?

Other Parts Discussed in Thread: CC2530

1、安防设备是别家公司的,协调器时自己的;

2、安防设备在入网时,Announce和描述符获取都没问题,读出来的Zone Type也是对的,但是入网后的设备,报警触发后,都不能发出报警信息,在抓包时智能看见设备在发送几个“Data Request”;

3、与设备厂家联系,说是设备没有ENROLL,但是测试了好几遍也没有看到设备在入网后发出“ENROLL Request”;

4、后来又联系了设备厂家,说需要协调器先给设备发送“WriteIAS_CIE_Address”,我们协议栈用的ZHA1.2.2a中的例程“SampleCIE”修改的,例程中有一个执行它的函数:         

if( keys & HAL_KEY_SW_3 )
{
// send write CIE IEEE attribute request to IAS Zone Server (e.g. fire detector) in network
zclSampleCIE_WriteIAS_CIE_Address(&afDstAddr);
}

但是需要进行按键,我们的协调器程序是把按键和LCD显示的部分都屏蔽了的。所以我在设备入网后我在协调器程序里获取到设备的Zone Type后,人为添加了zclSampleCIE_WriteIAS_CIE_Address(&afDstAddr);这个函数,在抓包数据中也能看到命令执行下去了:

5、但是为什么安防设备还是没有“Enroll Request”?

  • 你应该去询问你这个厂家,他为什么没有。

    TI的Fire_Alarm_System可以参考如下:

    processors.wiki.ti.com/.../Fire_Alarm_System

  • 應該是协调器要先给设备发送“WriteIAS_CIE_Address”,设备才會发出“ENROLL Request”;
  • 您好,请问下协调器给设备发送“WriteIAS_CIE_Address”是应该加在协调器程序的什么地方呢?看着我抓包数据里这个动作也执行了,但是没有效果
  • 对方厂家询问了,就是说没有“WriteIAS_CIE_Address”,但是我添加了这个操作也还是没有用,但是我看了他们自己网关添加设备的抓包数据,确实能正常Enroll。是不是我添加的地方不对?应该加哪块呢?用的ZHA1.2.2a中的例程“SampleCIE”做的模板
  • 在你的成功入网之后加入

    SW3: Write CIE IEEE Address Attribute on last commissioned IAS Zone device
  • 您好,请问下设备成功入网后是根据什么来判断的呢?是在协调器收到设备入网的“device announce”的消息吗?在应运程序中相关的消息处理吗?
    例程中是按按键SW3来发送Write CIE IEEE Address的,怎么能够自动发送呢?
    在uint16 zclSampleCIE_event_loop( uint8 task_id, uint16 events )这个轮询里边,有什么事件可以表明有设备新入网了,而且是个IAS ZONE设备?
  • 先注册 ZDO_RegisterForZDOMsg(task_id, Device_annce);" 在初始化.

    在xxxx_ProcessZDOMsgs中处理
    ZDO_DeviceAnnce_t devAnnce;

    if ( pMsg->clusterID == Device_annce )
    ZDO_ParseDeviceAnnce( pMsg, &devAnnce );
    //用unicast
    zclSampleCIE_WriteIAS_CIE_Address(&afDstAddr);
  • 在应运程序中初始化Device_annce的ZDO消息后,不会影响协议栈系统本身对这条消息的处理吗?应运中注册了这个ZDO消息,在协调器收到设备的入网Device_annce后,是只有应运的轮询触发,还是系统本身的轮询和应运的轮询都触发之歌事件?
    我看协议栈中本身有对这个消息的处理:
    CONST zdpMsgProcItem_t zdpMsgProcs[] =
    {
    #if ( RFD_RCVC_ALWAYS_ON==TRUE ) || ( ZG_BUILD_RTR_TYPE )
    // These aren't processed by sleeping end devices.
    { NWK_addr_req, zdpProcessAddrReq },
    { Device_annce, ZDO_ProcessDeviceAnnce },
    #endif
    #if ( ZG_BUILD_RTR_TYPE )
    // These aren't processed by end devices.
    { Parent_annce, ZDO_ProcessParentAnnce },
    { Parent_annce_rsp, ZDO_ProcessParentAnnceRsp },
    #endif
  • 你可以参考我的做法,我在匹配成功后进行zclSampleCIE_WriteIAS_CIE_Address(&afDstAddr);

    抓包如下:

    这是我刚做好的,你去参考一下。

  • 你可以參考一下 git.ti.com/.../CIE-FD-WD-ZHA1.2.2a 裡面的範例
  • 多谢,解决了,原因就是它不光需要写CIE地址,还需要给它先发个match。看你抓包数据里有个match,我也加上,就好了。
  • 我这边用CC2530 CIE也遇到了一样的情况,

    我发了Write Attributes , 终端设备也回复了 Write Attributes Response,

    但终端设备还不会发 Zone Enroll Request,请问下是什么原因?

x 出现错误。请重试或与管理员联系。