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.

[参考译文] CC2531EMK:Danfoss 恒温器正在加入、但收到了奇怪的消息

Guru**** 2510095 points
Other Parts Discussed in Thread: CC2531EMK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1061880/cc2531emk-danfoss-thermostat-joining-but-received-strange-messages

器件型号:CC2531EMK

您好!

我设法将 Danfoss 恒温器连接到 CC2531EMK (我关注此博客文章: Sun May Sky:使用 ZTool + Z-Stack 3.0 ZNP 设置基本 Zigbee 3.0网络)

我嗅探了连接到软件狗的串行端口、并将恒温器置于配对模式;我至少从该端口收到了这些奇怪的帧。 (最后、我设法让器件通告 ind 帧)

当我移动恒温器的旋钮时、我不会收到任何有关温度变化的传入 MSG、这很奇怪

固件:ZStack 3.0.X

恒温器:Danfoss 014G2461

我查看了 ZStack 监控和测试 API、但似乎不存在任何 Cmd0 = 0xCC、似乎无法真正理解这些帧背后的概念。

很遗憾、我无法设置任何监听器。

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

    我为您随意解释数据包。  请记住、数据包格式为 SOF 字节(0xFE)、数据字节长度、两个命令字节、数据字节和 FCS 字节。

    FE 01 65 36 00 52 (ZDO_Mgmt_permit_join_Req SRSP)
    FE 03 45 B6 00 00 F0 (ZDO_Mgmt_permit_join_RSP)
    FE 0C 45 CA 3E CB 41 56 39 FE FF CC CC 00 95 (5次)(ZDO_TC_DEV_IND)
    FE 0D 45 C1 3E CB 3E CB 41 56 39 FE FF CC CC 80 EA (ZDO_END_DEVICE_ANNCE_IND)

    此致、
    Ryan

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

    如果您要获取 LocalTemperature 属性报告、我假设您必须先向 Danfoss 恒温器发送绑定请求。

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

    非常感谢 Ryan!

    我累了,我猜没看到,哈哈。

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

    是的、我希望每次移动旋钮时都能得到 AF_INVING_MSG。

    我是否必须绑定恒温器、甚至发送 AF_DATA_REQUEST 以更改属性?

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

    我不确定当您移动 Danfoss 恒温器上的旋钮时会更改哪个或哪些群集/属性。 但是、您肯定需要绑定到 Danfoss 恒温器。 绑定是告诉 Danfoss 恒温器在何处报告其属性的过程。

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

    好的、  

    我已经运行了一个 ZDO_BIND_REQ  

    <TX>09:48:35.23 COM4 ZDO_BIND_REQ (0x2521)
        DstAddr: 0x0000
        SrcAddress: 0xCCCCCCFFFE395641
        SrcEndpoint: 0x01
        ClusterID: 0x0201
        BindAddrMode: 0x0F (BROADCAST) (0xF)
        BindAddr: ........ (0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
        BindEndpoint: 0x01

    因此、我得到:

    <RX>09:48:35.23 COM4 ZDO_BIND_REQ_SRSP (0x6521)
        Status: afStatus_SUCCESS (0x0)
    
    <RX>09:48:35.23 COM4 ZDO_BIND_RSP (0x45A1)
        SrcAddr: 0x0000
        Status: ZDP_NOT_SUPPORTED (0x84)

    查看 ZCL、恒温器的仪表组 ID 为0x201、两者的终点应为0x1。

    是否有任何方法可以获取有关恒温器的信息(支持仪表组、端点等)?

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

    我还运行了 AF_DATA_REQUEST

    <TX>01:21:32.68 COM4 AF_DATA_REQUEST (0x2401)
        DstAddr: 0x3448
        DestEndpoint: 0x00
        SrcEndpoint: 0x00
        ClusterID: 0x0201
        TransID: 0x1E
        Options: 0x00
        Radius: 0x1E
        Len: 0x05
        Data: ..... (0x10, 0x03, 0x00, 0x12, 0x00) ZCL PACKET 00 = READ COMMAND and 
                                                   0x0012 is the attribute id
    
    <RX>01:21:32.68 COM4 AF_DATA_REQUEST_SRSP (0x6401)
        Status: afStatus_SUCCESS (0x0)
    
    *** WARNING ***
        Unsupported or unformatted message received.  Raw data: 
        03 45 81 48 34 84   <----- CMD=0x4581 is ZDO_IEEE_ADDR_RSP so i'm confused
    

    如何获取设备的端点? 此外、所有端点还实现了所有 ZigBee 集群?

    我是否需要注册一些端点或 BDB 管理所有内容?

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

    不用担心:我已经向 AF_REGTER 注册了端点、现在一切都正常了。

    但是、当我移动旋钮时、我不会接收任何传入的_MSG (属性位于0x201中、它更改的属性位于该群集内)

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

    尝试参考 https://sunmaysky.blogspot.com/2016/08/how-to-handle-end-node-announcement.html?m=1 、但您需要使用 ZTool/MT 命令激活端点请求和简单描述符请求。

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

    我不理解、请您解释一下吗?  

    终端设备加入网络后、我需要做什么? (MT 命令)

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

    在设备通知中使用短地址发送端点请求。

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

    我已经使用 AF_REGISTER 注册了一个端点。 (移动旋钮时没有 AF_INVING_MSG)

    您能否解释一下"发送端点请求"是什么意思?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="506660" URL"~/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum 1061880/CC2531EMK-Danfos-Thermostore-Joining-by-receive-horme-messages/3929526#3929526")如何获取设备的端点? 此外、所有端点还实现了所有 ZigBee 集群?[/报价]

    您不知道如何执行此操作吗? 我刚才回答了您的问题。

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

    将此主题标记为已解决之前的最后一个问题:

    终端设备加入网络后、如果我理解正确:

    1) AF_REGISTER 您向您需要的群集(在本例中为0x0201)注册协调器中的端点、CLUSTERIN 和 ClusterOut 是什么意思?

    2) 2)您在终端设备中获得活动端点

    3) 3)您发送所有必要的数据

    但是、当我移动旋钮时、我不会从恒温器中获得任何 AF_INVING_MSG

    如果我在终端设备加入后遗漏了一个步骤、请更正我的错误

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

     在启动网络之前、应使用 AF_REGISTER 来注册端点。 要从恒温器接收属性报告,您应该执行绑定,但我看不到您在步骤中执行绑定。

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

    你是对的。

    SO (更新)步骤:

    • AF_FEGISTER (端点= 0x01、APP PROFID = 0x104、AppDeviceId = 0x0 (找不到协调器的器件 ID)、AppDevVer = 0x00、群集1 = 1 -> 0x0201、ClusterOut = 1->0x201)
    • 使用"网络构建"进行 BDB_START_TUSING  
    • BDB_START_TUSING、带"网络转向"、让我的恒温器加入。 (如果已经是网络的一部分,它是否必须再次加入,或者我不需要网络引导?
    • ZDO_BIND_REQ (DstAddr = 0x3448 (恒温器的短地址)、SrcAddress =恒温器的64位地址、SrcEndPoint = 0x01、ClusterId = 0x201、BindAddrMode = 0x03、BindAddr = 64位协调器软件狗、BindEndpoint = 0x01 (与 af_register 一起注册的端点))

    移动旋钮后、无法显示任何属性报告

    如有任何错误、请告知我

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

    在恒温器上运行 simple_desc 会得到以下结果:

    <TX>03:48:29.15 COM4 ZDO_SIMPLE_DESC_REQ (0x2504)
        DstAddr: 0x3448
        NWKAddrOfInterest: 0x3448
        Endpoint: 0x01
    
    <RX>03:48:29.16 COM4 ZDO_SIMPLE_DESC_REQ_SRSP (0x6504)
        Status: afStatus_SUCCESS (0x0)
    
    <RX>03:48:31.33 COM4 ZDO_SIMPLE_DESC_RSP (0x4584)
        SrcAddr: 0x3448
        Status: ZDP_SUCCESS (0x0)
        NwkAddr: 0x3448
        Len: 0x1C
        Endpoint: 0x01
        ProfileID: 0x0104
        DeviceID: 0x0301
        DeviceVersion: 1 (0x1)
        NumInClusters: 0x08
        InClusterList: 0x0000, 0x0001, 0x0003, 0x000A, 0x0020, 0x0201, 0x0204, 0x0B05
        NumOutClusters: 0x02
        OutClusterList: 0x0000, 0x0019

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

    还尝试了没有结果的 blogpost。

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

    我不确定 是否需要绑定、具体取决于恒温器属性。  是否报告了属性或 发出了命令(例如 COMMAND_THERMOSTATE_SETPOST_RAGE_OR_LOWER)?  我们是否知道要寻找哪个特定属性、读/写该值是否更简单?  在没有监听器日志的情况下、人们很少知道这款 Danfoss 恒温器。

    此致、
    Ryan

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

    我认为您需要检查用户手册、以了解 当您移动 Danfoss 恒温器上的旋钮时会更改哪些属性、您应该检查属性是否可在 ZCL 规范中报告、以了解它是否会发送报告。

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

    感谢 Yikai 和 Ryan。

    当移动旋钮时、属性"USADD_FLOAD_SETPOST"正在更改、我通过 AF_DATA_REQUEST 测试了读取值、结果成功。

    假设客户移动旋钮、最终应用程序应更新值。 我可以通过池化或其他方式来实现这一点,但我已经看到,通过 ZigBee2MQTT,当我移动旋钮时,我会得到 AF_INVING_MSG (请查看下面的内容)

        fe 
    	20 
    	44 81 
    	00 
    	00 
    	01 02 
    	2b 2d 
    	01 
    	01 
    	00 
    	a5 
    	00 
    	8e 54 13 00 
    	00 
    	0c 
    	08 51 0a 12 00 29 dc 05 30 00 30 00 2b 2d 1d 
    	2a        

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

    根据 ZCL 规范、USALOAD_HUGET_SETPOINT 不是可报告属性。 我不确定 Zigbee2MQTT 如何使其可报告(或者可能是 Danfoss 将其作为可报告属性)。 如果您尝试将端点1上的群集 ID 0x0201绑定到 Danfoss 恒温器、您是否可以在移动旋钮时看到它报告"USALOADD_STATUSE_SETPOST"?

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

    按如下方式向我的协调员注册了端点。

    <TX>12:21:06.26 COM4 AF_REGISTER (0x2400)
        EndPoint: 0x01
        AppProfID: 0x0104
        AppDeviceId: 0x0000
        AppDevVer: 0x00
        LatencyReq: NO_LATENCY_REQS (0x0)
        AppNumInClusters: 0x01
        AppInClusterList: 0x0201
        AppNumOutClusters: 0x01
        AppOutClusterList: 0x0201
    
    <RX>12:21:06.26 COM4 AF_REGISTER_SRSP (0x6400)
        Status: afStatus_SUCCESS (0x0)

    运行绑定

    <TX>12:23:06.67 COM4 ZDO_BIND_REQ (0x2521)
        DstAddr: 0x3448   <--- NWK address of the danfoss thermostat
        SrcAddress: 0xCCCCCCFFFE395641 <--- ieee address of the danfoss thermostat.
        SrcEndpoint: 0x01
        ClusterID: 0x0201
        BindAddrMode: 0x03 (ADDRESS_64_BIT) (0x3)
        BindAddr: ..K..... (0x00, 0x12, 0x4B, 0x00, 0x1C, 0xD4, 0xAA, 0x81)
        BindEndpoint: 0x01
    
    <RX>12:23:06.67 COM4 ZDO_BIND_REQ_SRSP (0x6521)
        Status: afStatus_SUCCESS (0x0)

    但移动旋钮时没有结果

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

    Danfoss 恒温器的 IEEE 地址对我来说有点奇怪。 您确定是正确的吗? ZDO_BIND_REQ_SRSP 中的 afStatus_Success 意味着 ZTOOL/ZNP 接收绑定请求。 如果绑定成功、您应该会看到 ZDO_BIND_RSP 与 ZDP_SUCCESS、您可以参阅 sunmaysky.blogspot.com/.../how-to-do-device-binding-from-ti-ztool.html 中的示例

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

    这是正确的 IEEE 地址。 起初我也觉得很奇怪。

    我收到状态为 ZDP_SUCCE_RSP 的 ZDO_BIDE_RSP。

    我想绑定是正确的。

    移动旋钮后、Danfoss 恒温器仍然没有 Incoming_MSG。

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

    如果您确定绑定成功、我认为您需要联系制造商以获得帮助

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

    也许使用 AF_DATA_REQUEST 并在数据中运行 Comman Reporting Command 可能是一种很好的方法?

    感谢 Ryan 和 Yikai 的帮助和耐心等待。

    我将联系制造商。 (可能需要此主题中的任何后续更新?)

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

    报告命令通常从设备发送。