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.

[参考译文] LP-CC2652RB:如何配置 ZStack 以使可报告变量由协调器正确解码?

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1291681/lp-cc2652rb-how-to-configure-zstack-such-that-reportable-variables-are-correctly-decoded-by-coordinators

器件型号:LP-CC2652RB

大家好。 我正在使用电池供电的温度+湿度设备、在第一次委员会正确解码可报告变量时遇到问题。  

有问题的行为:在 Home Assistant 中向 Zigbee2Mqtt 首次调试器件时、在我拥有的三个可报告变量(温度测量值、湿度测量值和剩余电池百分比)中、仅正确解码温度和电池百分比、而湿度始终显示为 NULL。 但是,如果我手动设置 Home Assistant 中每个变量的报告时间,所有这些变量都将被正确解码。

我尝试了两种可能的解决方案、但都不起作用。

1) 1)使用  Zstackapi_BdbRepAddAttrCfgRecordDefaultToListReq 对于全部三个变量(只有两个变量有效、我无法再向湿度发送报告命令-我收到错误消息):

    Req.attrID = ATTRID_TEMPERATURE_MEASUREMENT_MEASURED_VALUE;
    Req.cluster = ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT;
    Req.endpoint = SAMPLETEMPERATURESENSOR_ENDPOINT;
    Req.maxReportInt = 10;
    Req.minReportInt = 3;
    OsalPort_memcpy(Req.reportableChange, reportableChange,
    BDBREPORTING_MAX_ANALOG_ATTR_SIZE);

    Zstackapi_bdbRepAddAttrCfgRecordDefaultToListReq(appServiceTaskId, &Req);

    Req.endpoint = NTCTEMP_ENDPOINT;
    Zstackapi_bdbRepAddAttrCfgRecordDefaultToListReq(appServiceTaskId, &Req);

//    Task_sleep(1000);

    Req.attrID = ATTRID_RELATIVITY_HUMIDITY_MAX_MEASURED_VALUE;
    Req.cluster = ZCL_CLUSTER_ID_MS_RELATIVE_HUMIDITY;
    Req.endpoint = SAMPLETEMPERATURESENSOR_ENDPOINT;
    Req.maxReportInt = 10;
    Req.minReportInt = 3;
    OsalPort_memcpy(Req.reportableChange, reportableChange,
    BDBREPORTING_MAX_ANALOG_ATTR_SIZE);
    Zstackapi_bdbRepAddAttrCfgRecordDefaultToListReq(appServiceTaskId, &Req);

//    Task_sleep(1000);

    Req.attrID = ATTRID_POWER_CONFIGURATION_BATTERY_PERCENTAGE_REMAINING;
    Req.cluster = ZCL_CLUSTER_ID_GENERAL_POWER_CFG;
    Req.endpoint = SAMPLETEMPERATURESENSOR_ENDPOINT;
    Req.maxReportInt = 10;
    Req.minReportInt = 3;
    OsalPort_memcpy(Req.reportableChange, reportableChange,
    BDBREPORTING_MAX_ANALOG_ATTR_SIZE);
    Zstackapi_bdbRepAddAttrCfgRecordDefaultToListReq(appServiceTaskId, &Req);

2)然后我尝试删除这些呼叫 Zstackapi_BdbRepAddAttrCfgRecordDefaultToListReq  ,但在手动进行报告配置(现在这对所有三个变量都有效)之前,不会显示任何值。  

查看器件的配置时、我可以看到 Z2M 知道我有 Temp、Hum 和 powercfg 集群、公开页面需要这些指标、但它们都显示为 NULL、直到我发送报告 cfg 命令。

有什么想法、为什么会发生这种情况?

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

    您好、V:

    您要使用哪个 SimpleLink SDK 版本来评估您的解决方案?

    只有温度和电池百分比被正确解码、而湿度始终显示为 NULL。 但是,如果我在 Home Assistant 中手动设置每个变量的报告时间,所有变量都将被正确解码。

    根据这项声明、问题可能出在 Zigbee2MQTT 应用中。  您是否能够提供监听器日志、其中显示是否通过无线方式报告湿度?  可以获得 Zstackapi_BdbRepAddAttrCfgRecordDefaultToListReq 的返回值、因此如果进行调试、您可以确定 processBdbRepAddAttrCfgRecordDefaultToListReq 是成功还是返回错误。  您是否确定 ZNP/ZC 应用程序希望使用 ATTRID_Relativity HUMID_MAX_measured_value 属性、而不是 ATTRID_Relativity HUMID_measured_value?  否则,我假设应用程序设置正确,因为您可以从 ZNP 进一步配置后获得报告。  如果您有监听器、请检查 从 Zigbee2MQTT 应用程序发送的报告配置包的内容。  然后,我建议你联系他们的 论坛 和 不和渠道 ,以获得更多的支持在这方面。

    此致、
    瑞安