diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 217a003c4..6cdc245ba 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -1302,6 +1302,7 @@ void ZCLFrame::parseReadConfigAttributes(Z_attribute_list& attr_list) { } // find the attribute name + int8_t multiplier = 1; for (uint32_t i = 0; i < ARRAY_SIZE(Z_PostProcess); i++) { const Z_AttributeConverter *converter = &Z_PostProcess[i]; uint16_t conv_cluster = CxToCluster(pgm_read_byte(&converter->cluster_short)); @@ -1310,6 +1311,7 @@ void ZCLFrame::parseReadConfigAttributes(Z_attribute_list& attr_list) { if ((conv_cluster == _cluster_id) && (conv_attribute == attrid)) { const char * attr_name = Z_strings + pgm_read_word(&converter->name_offset); attr_2.addAttribute(attr_name, true).setBool(true); + multiplier = pgm_read_byte(&converter->multiplier); break; } } @@ -1337,6 +1339,12 @@ void ZCLFrame::parseReadConfigAttributes(Z_attribute_list& attr_list) { // decode Reportable Change Z_attribute &attr_change = attr_2.addAttribute(F("ReportableChange")); i += parseSingleAttribute(attr_change, _payload, i, attr_type); + if ((1 != multiplier) && (0 != multiplier)) { + float fval = attr_change.getFloat(); + if (multiplier > 0) { fval = fval * multiplier; } + else { fval = fval / (-multiplier); } + attr_change.setFloat(fval); + } } } } diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 2ce98cd01..68dfa4212 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -562,7 +562,7 @@ int32_t Z_ReceiveActiveEp(int32_t res, const class SBuffer &buf) { // list of clusters that need bindings const uint8_t Z_bindings[] PROGMEM = { - Cx0001, Cx0006, Cx0008, Cx0300, + Cx0001, Cx0006, Cx0008, Cx0201, Cx0300, Cx0400, Cx0402, Cx0403, Cx0405, Cx0406, Cx0500, }; @@ -1216,6 +1216,9 @@ const Z_autoAttributeReporting_t Z_autoAttributeReporting[] PROGMEM = { { 0x0001, 0x0020, 15*60, 15*60, 0.1 }, // BatteryVoltage { 0x0001, 0x0021, 15*60, 15*60, 1 }, // BatteryPercentage { 0x0006, 0x0000, 1, 60*60, 0 }, // Power + { 0x0201, 0x0000, 60, 60*10, 0.5 }, // LocalTemperature + { 0x0201, 0x0008, 60, 60*10, 10 }, // PIHeatingDemand + { 0x0201, 0x0012, 60, 60*10, 0.5 }, // OccupiedHeatingSetpoint { 0x0008, 0x0000, 1, 60*60, 5 }, // Dimmer { 0x0300, 0x0000, 1, 60*60, 5 }, // Hue { 0x0300, 0x0001, 1, 60*60, 5 }, // Sat