大家好。 我正在使用电池供电的温度+湿度设备、在第一次委员会正确解码可报告变量时遇到问题。
有问题的行为:在 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 命令。
有什么想法、为什么会发生这种情况?