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.

[参考译文] LAUNCHXL-CC26X2R1:使用 ZigBee 和蓝牙打开和关闭 OSRAM 灯泡

Guru**** 2595805 points
Other Parts Discussed in Thread: SYSCONFIG, CC2652R, CC2652P

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1072165/launchxl-cc26x2r1-switch-on-and-off-an-osram-bulb-with-zigbee-and-bluetooth

部件号:LAUNHHXL-CC26X2R1
“线程:sysconfigCC2652RCC2652P”中讨论的其它部件

大家好,

首先,我尝试将2台启动板与 Zigbee 连接,结果很成功。 下一步是使用蓝牙进行连接,也很有效。

现在,我推出了 OSRAM Smart+灯泡。 我用一台启动板作为 Zigbee 网络的协调器,让灯泡加入网络。 我正在附上 Ubiqua 文件,以表明它已加入网络。 我的下一步是从协调员处打开和关闭 OSRAM 灯泡。 我认为资源文件中的 zc_switch 已经准备好执行此操作,但我不知道如何执行此操作。 在资源文件中,有一个示例说明如何修改光协调器,我是否必须与开关协调器执行类似操作?  

一旦我实现了这一目标,我的目标将是建立一个网络,其中一个启动板 CC26X2R1作为协调员,另一个 CC26X2R1作为终端设备,灯泡作为路由器。 我还想创建一个 DMM 项目,以便使用蓝牙和 ZigBee 切换光源。 有可能吗?

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    基本上,您可以向交换机设备发送绑定请求,以分配目标地址和光源端点来控制它

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,达尼,

    由于嗅探器日志中未显示 TCLK 更新过程,因此此 OSRAM 灯泡似乎不支持 Zigbee 3.0。  这可能意味着也不支持 BDB 查找和绑定,在这种情况下,如所述,需要手动绑定。  从最初的问题中,您可以通过  Zigbee 基本项目开发 SLA 了解有关正确的手动绑定过程的更多信息。  nwkAddr 将为0x0000,因为 ZC 交换机是绑定的目标,bindInfo 应由源(ZC 交换机)和目标(ZR Light)的 IEEE 地址和相关端点组成。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我听从了你们两位提出的建议,我刚刚完成了 Zigbee 基础项目开发 SLA 中的任务1,以创建手动绑定,它是有效的。 我是说,我打开了灯泡,在 TI 示例开关的 GUI 的应用菜单中,我可以切换灯泡。 但问题是灯泡需要打开,如果我从协调员处关闭灯泡,没有问题,但如果我用自己的开关关闭灯泡,我无法从 GUI 再次打开灯泡。 有没有解决方案?

    此外,我担心灯泡不支持 Zigbee 3.0。 我是否可以使用 DMM_zc_switch_display 来同时使用 ZigBee 和蓝牙?

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否可以附加嗅探器日志?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉,这是我第一次这样做,有点混乱。

    40时:开始调试,但灯泡已关闭。

    72:开始调试,但灯泡启动成功。

    285:我手动装订了,以便以后可以打开/关闭。

    其他出现的数据包只是我再次尝试。

    e2e.ti.com/.../ubiq.zip

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨,达尼,

    数据包296中 ZR 的简单描述符响应表明,应用程序配置文件 ID 是 Zigbee Light Link 或/0xC05E/ZLL_PROFILE ID。  因此,这是您应该尝试与之通信的群集,而不是 ZCL_HA_PROFILE 标识/0x0104。  这是对开/关属性报告的默认响应为0x01/ZCL_STATUS_FAILURE 的原因之一。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我已经准备好尝试了,但现在当我启动 Ubiqua 时,我所得到的只是“无法解密数据”和“无法解密命令”。 在数据包中,网络密钥始终为00:00:00...00:00。 我已将应用程序或信任中心链接密钥添加到 Ubiqua,如指南所述。 我昨天做了所有事情,但今天做的不好。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../unable.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ubiqua 应该在上一个会话期间将 Nwk 密钥保存到密钥链中,您可以尝试从上一个会话中手动添加 Nwk 密钥(记录为 49:4E:EC:26:44:5B:C4:5D:EC:C2:C8:49:78:FD:D2:26)到工具->首选项->安全并尝试再次解密数据包, 或者,您可能需要通过工厂重置设备,重新调试或向现有网络添加新设备来重新捕获加入流程和网络密钥传输。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我应该手动将他的网络密钥添加到协调员的 sysconfig 文件中吗?

    仅仅将 Nwk 密钥添加到 Ubiqua 是行不通的。

    如何在出厂时重置设备?

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nwk 密钥由协调人发送。 如果您嗅探整个设备连接过程,嗅探器应自动捕获网络密钥。要在出厂时重置第三方设备,您需要查看其用户指南。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    但当我只使用 CC26X2R1作为协调者时,它无法解密数据包。 这不是关于新设备或其他设备。 我无法在 Ubiqua 和 Wireshark 中执行此操作。 我的意思是,只使用一台设备就会出现同样的问题。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我建议您在出厂时重置协调器和设备,以便从头开始形成和加入设备。 这样,在启用嗅探器的情况下,您应该能够捕获 Nwk 密钥来解密所有软件包。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    仅使用一个 ZC 设备无法捕获连接进程和网络密钥,至少需要在嗅探器设备处于活动状态时捕获一个 ZR 或 Zed 连接。  您可以在出厂时重置 TI Zigbee 示例,方法是:在设备重置期间按住 BTN-2,使用 CUI 命令,或者删除同一项目并将其重新编程到设备上。  此外,  即使灯泡不支持 Zigbee 3.0,您也应该能够使用 DMM_zc_switch_display

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,我将重置两个设备。 但另一个问题:两台设备是否应该有相同的目标 PAN? 灯泡具有另一天的目标 PAN 0xDD9D,协调员具有新的 PAN ID (0x9ce1)。 我在重置之前尝试修改 sysconfig 以将协调员 PAN ID 更改为0xdd9d,但它没有改变任何内容。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您应该对灯泡执行出厂重置,并启用“允许协调人加入”以允许灯泡从头开始加入。 将相同的 PANID 设置为协调员是没有用的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最后,灯泡被重置,我能够让它加入网络。 我使用 Wireshark 和另一个启动板来嗅探数据包,我看到了信标请求,关联响应等,但在那一刻(数据包44)之后,我无法理解发生了什么。 我修改了 zc_switch 示例以进行手动绑定,但这次我无法获得简单描述符请求并从协调员切换指示灯。

    谢谢你。

    e2e.ti.com/.../RESET.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ZR 加入并发送活动端点响应后,ZC 没有显示“链路状态”消息,因此假定 ZC 硬件已断电或软件已崩溃。  进一步调试 ZC 模块以了解问题的根本原因。  

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不知道,我正像几天前一样执行同样的步骤,但它现在已经不起作用了。 此时,我认为灯泡能够成功地加入网络。 我还认为绑定是手动成功创建的,如 putty 中所示。 之后,我不知道问题在哪里。 我还修改了代码,以便使用 ZLL 而不是 Zha。 我会附上这些文件,以防您看到我丢失的东西,而我看不到这些文件。

    在 Wireshark 日志中,第31行和第33行是对协调员终端按下“切换指示灯”的响应。

    谢谢你。

    e2e.ti.com/.../bind.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    活动端点响应显示灯泡上唯一的活动端点为0x03,但您的开/关切换命令的目标端点为0xa4。  如果没有简单描述符响应,则此终结点的用途未知。  如果 未在 zcl_SendCommandEx 中设置 DisableDefaultRsp,则我希望返回错误消息,因为目标端点不受支持。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    但0xa4是从哪里来的? 如果它是默认值,我找不到它。  

    在 zcl_SendCommandEx 的 zcl.c 中,我们有以下内容:

     //设置“禁用默认响应”字段
     如果(disableDefaultRsp)
     {
       hdr.fc.disableDefaultRsp = 1;
     }
     否则
     {
       hdr.fc.disableDefaultRsp = 0;
     }

    如何将其更改为发现的值?

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    鉴于 传入的 pMsg 被处理为 zstackmsg_zdoSimpleDescRspInd_t 而不是 zstackmsg_zdoActiveEndpointsRspInd_t,因此您的 zstackmsg_Cmmds_active_RSP 逻辑没有意义  您可以将 zclGeneral 中的第三个参数 SendOnOff_CmdToggle 更改为 false,以更改 disableDefaultRsp 值。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想你们在这两种情况下都写了“zstackmsg_zdoSimpleDescRspInd_t”,但我仍然看不清。

    我尝试了将第三个参数更改为 FLASE 的建议,但没有任何变化,开/关切换目标端点仍为0xa4。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我修改了先前对“zstackmsg_zdoActiveEndpointSspInd_t”的响应。  更改 disableDefaultRsp 不会改变行为,只让灯泡通过无线方式返回有关其是否正确接收和处理“开/关切换”命令的信息

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    让我看看我是否清楚地理解过程:

    顺序是:设备退回-->zstackmsg_CmdIDs_ZDO_DEVICE_ANNOUNCE-->Zstackapi_ZdoActiveEndpointReq-->-->zstackmsg_CmdIDs_ZDO_ACTIVE_EP_RSP-->-->Zstackapi_ZdoSimpleDescReq -->--> zstackmsg_CmdIDs_ZDO_SIMPLE_DESC_RSP?

    因此,如果简单描述符响应成功,并且具有我们想要的终结点(0x03)和我们想要的一个群集(开/关),那么我猜直到此时一切都是正确的?

     在 Zigbee 基础项目中,下一步是:“由于我们已经从设备通告中接收到目标地址,并从活动端点请求中接收到源地址,因此唯一剩余的参数是端点。 通过Zstackapi_sysNwkInfoReadReq API 读取本地设备信息可以获得此信息。 Zstackapi_ZdoBindReq现在可以调用 API 来创建绑定。” 我猜这是我的应用程序失败的地方。 不是吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您对设备公告,端点请求和简单描述符请求的理解是正确的。 我无法解密您 的 bind.zip。 您能否提供网络密钥?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为这是网络密钥:

    50:1A:BD:49:EF:FF:C5:B4:B2:8E:0C:7B:5E:FC:03:A5

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 bind.zip中看不到绑定请求。 您是否可以再次执行整个过程并提供嗅探器日志,以便我可以检查到底发生了什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于应用程序处理 zstackmsg_Cmdids_ZDO_active_EP_RSP 的方式与 处理 zstackmsg_Cmdids_ZDO_Simple_Desc_RSP 的方式相同,因此跳过 Zstapi_ZdoSimpleDescReq  ,在没有  正确信息的情况下填充 Zstackapi_ZdoBindReq。  您可以在 SLA 对 zclSampleLight_processZStackMsg 的更改中看到 ,zstackmsg_Cmmdids_ZDO_active_EP_RSP 与应用程序使用的不同之处。  这是 SLA 任务中提供的内容 (开发人员也应以此为例根据需要进行修改):

          case zstackmsg_CmdIDs_ZDO_ACTIVE_EP_RSP:
          {
              zstackmsg_zdoActiveEndpointsRspInd_t *pInd;
              pInd = (zstackmsg_zdoActiveEndpointsRspInd_t*)pMsg;
    
              zstack_zdoSimpleDescReq_t pReq;
              pReq.dstAddr = pInd->rsp.srcAddr;
              pReq.nwkAddrOfInterest = pInd->rsp.nwkAddrOfInterest;
              for (uint8_t i = 0; i < pInd->rsp.n_activeEPList; i++)
              {
                  pReq.endpoint = pInd->rsp.pActiveEPList[i];
                  if (pReq.endpoint != 0xF2)
                      Zstackapi_ZdoSimpleDescReq(appServiceTaskId, &pReq);
    
              }
          }
          break;

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 Wireshark 中,我仍然无法解密 Zigbee 数据包,因此现在我正在使用 Ubiqua,我可以正确看到它。

    我认为我上传了错误的 zcl_samesw.c,因为我在项目中复制了 SLA 代码,所以我对误解感到抱歉。 现在我希望我上传的代码是我使用的正确代码。

    所以,当我再次完成整个过程后,我刚刚发现开/关切换命令具有所需的端点(0x03)。 但它仍然不会打开或关闭光源。  

    谢谢你。

    在此文件中,我上传了日志和使用的代码。 谢谢你。

    e2e.ti.com/.../modified.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您发送更新。  开/关切换命令现在看起来正常,未知灯泡路由器设备为什么不响应或不根据此命令操作。  TI 方面对该器件的操作知之甚少,您可能需要联系制造商或单独的论坛空间,以了解灯泡规格的更多信息。  您是否有能够正确更改灯泡状态的控制器?  我建议您嗅探此设置和过程,以便您可以使用 CC2652R ZC 最佳地模拟它。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有其他控制器。 我只拥有2个 CC26X2R1和这个灯泡。 我会联系制造商,看看他们是否也能提供帮助。

    我想尝试 DMM_zc_switch_remote_display,看看是否可以从蓝牙切换指示灯。 我需要在该项目中做同样的更改,对吗? 还是我必须做些别的事情?

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为您不能使用  DMM_zc_switch_remote_display 直接使用 BLE 协议控制灯泡。 您可能需要与制造商核实他们支持哪些 BLE GATT 服务来控制灯泡。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是由于灯泡造成的。 您是否有任何关于第三部分灯泡的建议,或者您已经证明这些建议仅适用于 CC26X2R1协调员? 为了不买另一个灯泡,也有同样的问题。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已成功将飞利浦顺化灯泡和宜家灯泡加入 CC2652P 协调员。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    现在我已经看到了一些东西。 灯泡是 Zigbee Light Link,所以我修改了 zcl_samesw_data.c 中的代码以使用 zll 而不是 zha,我认为这是可以的:

    SimpleDescriptionFormat_t zclSampleSw_SimpleDesc =
    {
      SAMPLESW_ENDPOINT,                  //  int Endpoint;
      //ZLL_PROFILE_ID,                  //  uint16_t AppProfId[2];
      ZCL_HA_PROFILE_ID,                  //  uint16_t AppProfId[2];
      ZCL_DEVICEID_ON_OFF_LIGHT_SWITCH,//  uint16_t AppDeviceId[2];
      SAMPLESW_DEVICE_VERSION,            //  int   AppDevVer:4;
      SAMPLESW_FLAGS,                     //  int   AppFlags:4;
      ZCLSAMPLESW_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
      (cId_t *)zclSampleSw_InClusterList, //  byte *pAppInClusterList;
      ZCLSAMPLESW_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
      (cId_t *)zclSampleSw_OutClusterList //  byte *pAppInClusterList;
    };

    但是,当我对 ZL_PROFILE 标识进行注释并取消注释 ZCL_HA_PROFILE 标识时,我可以从协调员处切换指示灯。 但当我取消注释 ZL_PROFILE 标识时,我没有注释。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我知道,大多数 Zigbee 灯泡都支持使用  ZCL_HA_PROFILE 的 Zigbee HA 配置文件。