diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1z_libs.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1z_libs.ino index 4cf5fae4e..0e76c79f1 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1z_libs.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1z_libs.ino @@ -113,6 +113,7 @@ public: uint8_t key_suffix; // append a suffix to key (default is 1, explicitly output if >1) uint8_t attr_type; // [opt] type of the attribute, default to Zunk (0xFF) uint8_t attr_multiplier; // [opt] multiplier for attribute, defaults to 0x01 (no change) + uint16_t manuf; // manufacturer id (0 if none) // Constructor with all defaults Z_attribute(): @@ -124,7 +125,8 @@ public: val_str_raw(false), key_suffix(1), attr_type(0xFF), - attr_multiplier(1) + attr_multiplier(1), + manuf(0) {}; Z_attribute(const Z_attribute & rhs) { diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_0_constants.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_0_constants.ino index cb395097f..9e476650c 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_0_constants.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_0_constants.ino @@ -89,12 +89,44 @@ const char Z_strings[] PROGMEM = "03xx0A00" "\x00" "03xxxx000000000000" "\x00" "03xxxx0A0000000000" "\x00" + "ACActivePowerOverload" "\x00" + "ACAlarmsMask" "\x00" + "ACCurrentDivisor" "\x00" + "ACCurrentMultiplier" "\x00" + "ACCurrentOverload" "\x00" + "ACFrequency" "\x00" + "ACFrequencyDivisor" "\x00" + "ACFrequencyMax" "\x00" + "ACFrequencyMin" "\x00" + "ACFrequencyMultiplier" "\x00" + "ACPowerDivisor" "\x00" + "ACPowerMultiplier" "\x00" + "ACReactivePowerOverload" "\x00" + "ACVoltageDivisor" "\x00" + "ACVoltageMultiplier" "\x00" + "ACVoltageOverload" "\x00" + "AbsMaxCoolSetpointLimit" "\x00" + "AbsMaxHeatSetpointLimit" "\x00" + "AbsMinCoolSetpointLimit" "\x00" + "AbsMinHeatSetpointLimit" "\x00" "AccelerationTimeLift" "\x00" + "ActiveCurrent" "\x00" + "ActiveCurrentPhB" "\x00" + "ActiveCurrentPhC" "\x00" "ActivePower" "\x00" + "ActivePowerMax" "\x00" + "ActivePowerMaxPhB" "\x00" + "ActivePowerMaxPhC" "\x00" + "ActivePowerMin" "\x00" + "ActivePowerMinPhB" "\x00" + "ActivePowerMinPhC" "\x00" + "ActivePowerPhB" "\x00" + "ActivePowerPhC" "\x00" "ActuatorEnabled" "\x00" "AddGroup" "\x00" "AddScene" "\x00" "AlarmCount" "\x00" + "AlarmMask" "\x00" "AnalogApplicationType" "\x00" "AnalogDescription" "\x00" "AnalogEngineeringUnits" "\x00" @@ -126,6 +158,8 @@ const char Z_strings[] PROGMEM = "AnalogValue" "\x00" "AppVersion" "\x00" "ApparentPower" "\x00" + "ApparentPowerPhB" "\x00" + "ApparentPowerPhC" "\x00" "AqaraAccelerometer" "\x00" "AqaraRotate" "\x00" "AqaraVibration505" "\x00" @@ -135,9 +169,45 @@ const char Z_strings[] PROGMEM = "ArrowClick" "\x00" "ArrowHold" "\x00" "ArrowRelease" "\x00" + "AutoRelockTime" "\x00" "AvailablePower" "\x00" + "AverageRMSOverVoltage" "\x00" + "AverageRMSOverVoltageCounter" "\x00" + "AverageRMSOverVoltageCounterPhB" "\x00" + "AverageRMSOverVoltageCounterPhC" "\x00" + "AverageRMSUnderVoltage" "\x00" + "AverageRMSUnderVoltageCounter" "\x00" + "AverageRMSUnderVoltageCounterPhB" "\x00" + "AverageRMSUnderVoltageCounterPhC" "\x00" + "AverageRMSVoltageMeasurementPeriod" "\x00" + "AverageRMSVoltageMeasurementPeriodPhB" "\x00" + "AverageRMSVoltageMeasurementPeriodPhC" "\x00" + "BallastFactorAdjustment" "\x00" + "BallastLampQuantity" "\x00" + "BallastMaxLevel" "\x00" + "BallastMinLevel" "\x00" + "BallastPhysicalMaxLevel" "\x00" + "BallastPhysicalMinLevel" "\x00" + "BallastPowerOnFadeTime" "\x00" + "BallastPowerOnLevel" "\x00" + "BallastStatus" "\x00" + "BatteryAHrRating" "\x00" + "BatteryAlarmMask" "\x00" + "BatteryAlarmState" "\x00" + "BatteryManufacturer" "\x00" "BatteryPercentage" "\x00" + "BatteryPercentageMinThreshold" "\x00" + "BatteryPercentageThreshold1" "\x00" + "BatteryPercentageThreshold2" "\x00" + "BatteryPercentageThreshold3" "\x00" + "BatteryQuantity" "\x00" + "BatteryRatedVoltage" "\x00" + "BatterySize" "\x00" "BatteryVoltage" "\x00" + "BatteryVoltageMinThreshold" "\x00" + "BatteryVoltageThreshold1" "\x00" + "BatteryVoltageThreshold2" "\x00" + "BatteryVoltageThreshold3" "\x00" "BinaryActiveText" "\x00" "BinaryApplicationType" "\x00" "BinaryDescription" "\x00" @@ -173,10 +243,17 @@ const char Z_strings[] PROGMEM = "CIE" "\x00" "CO" "\x00" "CT" "\x00" + "CalculationPeriod" "\x00" "CheckinInterval" "\x00" "CheckinIntervalMin" "\x00" "ClosedLimit" "\x00" "Color" "\x00" + "ColorCapabilities" "\x00" + "ColorLoopActive" "\x00" + "ColorLoopDirection" "\x00" + "ColorLoopStartEnhancedHue" "\x00" + "ColorLoopStoredEnhancedHue" "\x00" + "ColorLoopTime" "\x00" "ColorMode" "\x00" "ColorMove" "\x00" "ColorPointBIntensity" "\x00" @@ -193,6 +270,8 @@ const char Z_strings[] PROGMEM = "ColorTempMoveDown" "\x00" "ColorTempMoveStop" "\x00" "ColorTempMoveUp" "\x00" + "ColorTempPhysicalMaxMireds" "\x00" + "ColorTempPhysicalMinMireds" "\x00" "ColorTempStep" "\x00" "ColorTempStepDown" "\x00" "ColorTempStepUp" "\x00" @@ -201,6 +280,9 @@ const char Z_strings[] PROGMEM = "ConfigStatus" "\x00" "Contact" "\x00" "ControlSequenceOfOperation" "\x00" + "Coordinate1" "\x00" + "Coordinate2" "\x00" + "Coordinate3" "\x00" "CurrentGroup" "\x00" "CurrentPositionLift" "\x00" "CurrentPositionLiftPercentage" "\x00" @@ -209,10 +291,36 @@ const char Z_strings[] PROGMEM = "CurrentScene" "\x00" "CurrentTemperature" "\x00" "CurrentTemperatureSetPoint" "\x00" + "CurrentZoneSensitivityLevel" "\x00" "CustomerName" "\x00" + "DCCurrent" "\x00" + "DCCurrentDivisor" "\x00" + "DCCurrentMax" "\x00" + "DCCurrentMin" "\x00" + "DCCurrentMultiplier" "\x00" + "DCCurrentOverload" "\x00" + "DCOverloadAlarmsMask" "\x00" + "DCPower" "\x00" + "DCPowerDivisor" "\x00" + "DCPowerMax" "\x00" + "DCPowerMin" "\x00" + "DCPowerMultiplier" "\x00" + "DCVoltage" "\x00" + "DCVoltageDivisor" "\x00" + "DCVoltageMax" "\x00" + "DCVoltageMin" "\x00" + "DCVoltageMultiplier" "\x00" + "DCVoltageOverload" "\x00" "DataQualityID" "\x00" "DateCode" "\x00" "DecelerationTimeLift" "\x00" + "DefaultMoveRate" "\x00" + "DehumidificationCooling" "\x00" + "DehumidificationHysteresis" "\x00" + "DehumidificationLockout" "\x00" + "DehumidificationMaxCool" "\x00" + "DeviceEnabled" "\x00" + "DeviceTempAlarmMask" "\x00" "Dimmer" "\x00" "DimmerDown" "\x00" "DimmerMove" "\x00" @@ -223,6 +331,7 @@ const char Z_strings[] PROGMEM = "DimmerStepUp" "\x00" "DimmerStop" "\x00" "DimmerUp" "\x00" + "DisableLocalConfig" "\x00" "DoorClosedEvents" "\x00" "DoorOpenEvents" "\x00" "DoorState" "\x00" @@ -230,11 +339,16 @@ const char Z_strings[] PROGMEM = "DstEnd" "\x00" "DstShift" "\x00" "DstStart" "\x00" + "ElectricalMeasurementType" "\x00" "EnergyFormatting" "\x00" "EnergyRemote" "\x00" "EnergyTotal" "\x00" + "EnhancedColorMode" "\x00" + "EnhancedCurrentHue" "\x00" "EurotronicErrors" "\x00" "EurotronicHostFlags" "\x00" + "FanMode" "\x00" + "FanModeSequence" "\x00" "FastPollTimeout" "\x00" "FastPollTimeoutMax" "\x00" "Fire" "\x00" @@ -249,7 +363,11 @@ const char Z_strings[] PROGMEM = "GetSceneMembership" "\x00" "GlassBreak" "\x00" "GroupNameSupport" "\x00" + "HVACSystemTypeConfiguration" "\x00" "HWVersion" "\x00" + "HarmonicCurrentMultiplier" "\x00" + "HighTempDwellTripPoint" "\x00" + "HighTempThreshold" "\x00" "Hue" "\x00" "HueMove" "\x00" "HueSat" "\x00" @@ -260,6 +378,7 @@ const char Z_strings[] PROGMEM = "HumidityMaxMeasuredValue" "\x00" "HumidityMinMeasuredValue" "\x00" "HumidityTolerance" "\x00" + "IASCIEAddress" "\x00" "Identify" "\x00" "IdentifyQuery" "\x00" "IdentifyTime" "\x00" @@ -276,6 +395,14 @@ const char Z_strings[] PROGMEM = "InstalledOpenLimitTilt" "\x00" "IntermediateSetpointsLift" "\x00" "IntermediateSetpointsTilt" "\x00" + "IntrinsicBallastFactor" "\x00" + "LampAlarmMode" "\x00" + "LampBurnHours" "\x00" + "LampBurnHoursTripPoint" "\x00" + "LampManufacturer" "\x00" + "LampRatedHours" "\x00" + "LampType" "\x00" + "LastConfiguredBy" "\x00" "LastMessageLQI" "\x00" "LastMessageRSSI" "\x00" "LastSetTime" "\x00" @@ -285,21 +412,72 @@ const char Z_strings[] PROGMEM = "LegrandOpt2" "\x00" "LegrandOpt3" "\x00" "LidlPower" "\x00" + "LineCurrent" "\x00" + "LineCurrentPhB" "\x00" + "LineCurrentPhC" "\x00" "LocalTemperature" "\x00" "LocalTemperatureCalibration" "\x00" "LocalTime" "\x00" "LocationAge" "\x00" + "LocationDescription" "\x00" "LocationMethod" "\x00" + "LocationPower" "\x00" "LocationType" "\x00" + "LockAlarmMask" "\x00" + "LockDefaultConfigurationRegister" "\x00" + "LockEnableInsideStatusLED" "\x00" + "LockEnableLocalProgramming" "\x00" + "LockEnableLogging" "\x00" + "LockEnableOneTouchLocking" "\x00" + "LockEnablePrivacyModeButton" "\x00" + "LockKeypadOperationEventMask" "\x00" + "LockKeypadProgrammingEventMask" "\x00" + "LockLEDSettings" "\x00" + "LockLanguage" "\x00" + "LockManualOperationEventMask" "\x00" + "LockOperatingMode" "\x00" + "LockRFIDOperationEventMask" "\x00" + "LockRFIDProgrammingEventMask" "\x00" + "LockRFOperationEventMask" "\x00" + "LockRFProgrammingEventMask" "\x00" + "LockSoundVolume" "\x00" "LockState" "\x00" + "LockSupportedOperatingModes" "\x00" "LockType" "\x00" "LongPollInterval" "\x00" "LongPollIntervalMin" "\x00" + "LowTempDwellTripPoint" "\x00" + "LowTempThreshold" "\x00" + "MainsAlarmMask" "\x00" "MainsFrequency" "\x00" "MainsVoltage" "\x00" + "MainsVoltageDwellTripPoint" "\x00" + "MainsVoltageMaxThreshold" "\x00" + "MainsVoltageMinThreshold" "\x00" "Manufacturer" "\x00" + "MaxCoolSetpointLimit" "\x00" + "MaxHeatSetpointLimit" "\x00" + "MaxPINCodeLength" "\x00" + "MaxRFIDCodeLength" "\x00" "MaxTempExperienced" "\x00" + "Measured11thHarmonicCurrent" "\x00" + "Measured1stHarmonicCurrent" "\x00" + "Measured3rdHarmonicCurrent" "\x00" + "Measured5thHarmonicCurrent" "\x00" + "Measured7thHarmonicCurrent" "\x00" + "Measured9thHarmonicCurrent" "\x00" + "MeasuredPhase11thHarmonicCurrent" "\x00" + "MeasuredPhase1stHarmonicCurrent" "\x00" + "MeasuredPhase3rdHarmonicCurrent" "\x00" + "MeasuredPhase5thHarmonicCurrent" "\x00" + "MeasuredPhase7thHarmonicCurrent" "\x00" + "MeasuredPhase9thHarmonicCurrent" "\x00" "MeterTypeID" "\x00" + "MinCoolSetpointLimit" "\x00" + "MinHeatSetpointLimit" "\x00" + "MinPINCodeLength" "\x00" + "MinRFIDCodeLength" "\x00" + "MinSetpointDeadBand" "\x00" "MinTempExperienced" "\x00" "Mode" "\x00" "Model" "\x00" @@ -331,31 +509,58 @@ const char Z_strings[] PROGMEM = "MultiStatusFlags" "\x00" "MultiValue" "\x00" "MultipleScheduling" "\x00" + "NeutralCurrent" "\x00" "NumberOfDevices" "\x00" + "NumberOfHolidaySchedulesSupported" "\x00" + "NumberOfLogRecordsSupported" "\x00" + "NumberOfPINUsersSupported" "\x00" "NumberOfPrimaries" "\x00" + "NumberOfRFIDUsersSupported" "\x00" "NumberOfResets" "\x00" + "NumberOfTotalUsersSupported" "\x00" + "NumberOfWeekDaySchedulesSupportedPerUser" "\x00" + "NumberOfYearDaySchedulesSupportedPerUser" "\x00" + "NumberOfZoneSensitivityLevelsSupported" "\x00" + "NumberRSSIMeasurements" "\x00" "NumberofActuationsLift" "\x00" "NumberofActuationsTilt" "\x00" "Occupancy" "\x00" "OccupancySensorType" "\x00" "OccupiedCoolingSetpoint" "\x00" "OccupiedHeatingSetpoint" "\x00" + "OffTransitionTime" "\x00" + "OffWaitTime" "\x00" + "OnLevel" "\x00" + "OnOff" "\x00" "OnOffTransitionTime" "\x00" + "OnTime" "\x00" + "OnTransitionTime" "\x00" "OpenPeriod" "\x00" "OppleMode" "\x00" "OutdoorTemperature" "\x00" "OverTempTotalDwell" "\x00" "PICoolingDemand" "\x00" "PIHeatingDemand" "\x00" + "PIROccupiedToUnoccupiedDelay" "\x00" + "PIRUnoccupiedToOccupiedDelay" "\x00" + "PIRUnoccupiedToOccupiedThreshold" "\x00" "POD" "\x00" "Panic" "\x00" "PartNumber" "\x00" + "PathLossExponent" "\x00" "PersistentMemoryWrites" "\x00" "PersonalAlarm" "\x00" + "PhaseHarmonicCurrentMultiplier" "\x00" "PhysicalClosedLimit" "\x00" "PhysicalClosedLimitLift" "\x00" "PhysicalClosedLimitTilt" "\x00" + "PhysicalEnvironment" "\x00" "Power" "\x00" + "PowerDivisor" "\x00" + "PowerFactor" "\x00" + "PowerFactorPhB" "\x00" + "PowerFactorPhC" "\x00" + "PowerMultiplier" "\x00" "PowerOffEffect" "\x00" "PowerOnRecall" "\x00" "PowerOnTimer" "\x00" @@ -379,21 +584,72 @@ const char Z_strings[] PROGMEM = "Primary3Intensity" "\x00" "Primary3X" "\x00" "Primary3Y" "\x00" + "Primary4Intensity" "\x00" + "Primary4X" "\x00" + "Primary4Y" "\x00" + "Primary5Intensity" "\x00" + "Primary5X" "\x00" + "Primary5Y" "\x00" + "Primary6Intensity" "\x00" + "Primary6X" "\x00" + "Primary6Y" "\x00" "ProductCode" "\x00" "ProductRevision" "\x00" "ProductURL" "\x00" "QualityMeasure" "\x00" "RGB" "\x00" + "RHDehumidificationSetpoint" "\x00" "RMSCurrent" "\x00" + "RMSCurrentMax" "\x00" + "RMSCurrentMaxPhB" "\x00" + "RMSCurrentMaxPhC" "\x00" + "RMSCurrentMin" "\x00" + "RMSCurrentMinPhB" "\x00" + "RMSCurrentMinPhC" "\x00" + "RMSCurrentPhB" "\x00" + "RMSCurrentPhC" "\x00" + "RMSExtremeOverVoltage" "\x00" + "RMSExtremeOverVoltagePeriod" "\x00" + "RMSExtremeOverVoltagePeriodPhB" "\x00" + "RMSExtremeOverVoltagePeriodPhC" "\x00" + "RMSExtremeUnderVoltage" "\x00" + "RMSExtremeUnderVoltagePeriod" "\x00" + "RMSExtremeUnderVoltagePeriodPhB" "\x00" + "RMSExtremeUnderVoltagePeriodPhC" "\x00" "RMSVoltage" "\x00" + "RMSVoltageMax" "\x00" + "RMSVoltageMaxPhB" "\x00" + "RMSVoltageMaxPhC" "\x00" + "RMSVoltageMin" "\x00" + "RMSVoltageMinPhB" "\x00" + "RMSVoltageMinPhC" "\x00" + "RMSVoltagePhB" "\x00" + "RMSVoltagePhC" "\x00" + "RMSVoltageSag" "\x00" + "RMSVoltageSagPeriod" "\x00" + "RMSVoltageSagPeriodPhB" "\x00" + "RMSVoltageSagPeriodPhC" "\x00" + "RMSVoltageSwell" "\x00" + "RMSVoltageSwellPeriod" "\x00" + "RMSVoltageSwellPeriodPhB" "\x00" + "RMSVoltageSwellPeriodPhC" "\x00" + "ReactiveCurrent" "\x00" + "ReactiveCurrentPhB" "\x00" + "ReactiveCurrentPhC" "\x00" "ReactivePower" "\x00" + "ReactivePowerPhB" "\x00" + "ReactivePowerPhC" "\x00" "RecallScene" "\x00" + "RelativeHumidity" "\x00" + "RelativeHumidityDisplay" "\x00" + "RelativeHumidityMode" "\x00" "RemainingTime" "\x00" "RemoteSensing" "\x00" "RemoveAllGroups" "\x00" "RemoveAllScenes" "\x00" "RemoveGroup" "\x00" "RemoveScene" "\x00" + "ReportingPeriod" "\x00" "ResetAlarm" "\x00" "ResetAllAlarms" "\x00" "SWBuildID" "\x00" @@ -401,6 +657,7 @@ const char Z_strings[] PROGMEM = "SatMove" "\x00" "SatStep" "\x00" "SceneCount" "\x00" + "SceneNameSupport" "\x00" "SceneValid" "\x00" "ScheduleMode" "\x00" "SeaPressure" "\x00" @@ -417,6 +674,7 @@ const char Z_strings[] PROGMEM = "StartUpOnOff" "\x00" "Status" "\x00" "StoreScene" "\x00" + "SwitchActions" "\x00" "SwitchType" "\x00" "SystemMode" "\x00" "TRVBoost" "\x00" @@ -426,17 +684,26 @@ const char Z_strings[] PROGMEM = "TRVWindowOpen" "\x00" "TempTarget" "\x00" "Temperature" "\x00" + "TemperatureDisplayMode" "\x00" "TemperatureMaxMeasuredValue" "\x00" "TemperatureMinMeasuredValue" "\x00" "TemperatureTolerance" "\x00" "TerncyDuration" "\x00" "TerncyRotate" "\x00" "ThSetpoint" "\x00" + "ThermostatAlarmMask" "\x00" + "ThermostatKeypadLockout" "\x00" + "ThermostatOccupancy" "\x00" + "ThermostatRunningMode" "\x00" + "ThermostatScheduleProgrammingVisibility" "\x00" "Time" "\x00" "TimeEpoch" "\x00" "TimeStatus" "\x00" "TimeZone" "\x00" + "TotalActivePower" "\x00" + "TotalApparentPower" "\x00" "TotalProfileNum" "\x00" + "TotalReactivePower" "\x00" "TuyaCalibration" "\x00" "TuyaCalibrationTime" "\x00" "TuyaMCUVersion" "\x00" @@ -458,6 +725,7 @@ const char Z_strings[] PROGMEM = "X" "\x00" "Y" "\x00" "ZCLVersion" "\x00" + "ZoneID" "\x00" "ZoneState" "\x00" "ZoneStatus" "\x00" "ZoneStatusChange" "\x00" @@ -502,402 +770,670 @@ enum Z_offsets { Zo_03xx0A00 = 112, Zo_03xxxx000000000000 = 121, Zo_03xxxx0A0000000000 = 140, - Zo_AccelerationTimeLift = 159, - Zo_ActivePower = 180, - Zo_ActuatorEnabled = 192, - Zo_AddGroup = 208, - Zo_AddScene = 217, - Zo_AlarmCount = 226, - Zo_AnalogApplicationType = 237, - Zo_AnalogDescription = 259, - Zo_AnalogEngineeringUnits = 277, - Zo_AnalogInApplicationType = 300, - Zo_AnalogInDescription = 324, - Zo_AnalogInEngineeringUnits = 344, - Zo_AnalogInMaxValue = 369, - Zo_AnalogInMinValue = 386, - Zo_AnalogInOutOfService = 403, - Zo_AnalogInReliability = 424, - Zo_AnalogInResolution = 444, - Zo_AnalogInStatusFlags = 463, - Zo_AnalogOutApplicationType = 483, - Zo_AnalogOutDescription = 508, - Zo_AnalogOutEngineeringUnits = 529, - Zo_AnalogOutMaxValue = 555, - Zo_AnalogOutMinValue = 573, - Zo_AnalogOutOfService = 591, - Zo_AnalogOutOutOfService = 610, - Zo_AnalogOutReliability = 632, - Zo_AnalogOutRelinquishDefault = 653, - Zo_AnalogOutResolution = 680, - Zo_AnalogOutStatusFlags = 700, - Zo_AnalogOutValue = 721, - Zo_AnalogPriorityArray = 736, - Zo_AnalogReliability = 756, - Zo_AnalogRelinquishDefault = 774, - Zo_AnalogStatusFlags = 798, - Zo_AnalogValue = 816, - Zo_AppVersion = 828, - Zo_ApparentPower = 839, - Zo_AqaraAccelerometer = 853, - Zo_AqaraRotate = 872, - Zo_AqaraVibration505 = 884, - Zo_AqaraVibrationMode = 902, - Zo_AqaraVibrationsOrAngle = 921, - Zo_Aqara_FF05 = 944, - Zo_ArrowClick = 955, - Zo_ArrowHold = 966, - Zo_ArrowRelease = 976, - Zo_AvailablePower = 989, - Zo_BatteryPercentage = 1004, - Zo_BatteryVoltage = 1022, - Zo_BinaryActiveText = 1037, - Zo_BinaryApplicationType = 1054, - Zo_BinaryDescription = 1076, - Zo_BinaryInActiveText = 1094, - Zo_BinaryInApplicationType = 1113, - Zo_BinaryInDescription = 1137, - Zo_BinaryInInactiveText = 1157, - Zo_BinaryInOutOfService = 1178, - Zo_BinaryInPolarity = 1199, - Zo_BinaryInReliability = 1216, - Zo_BinaryInStatusFlags = 1236, - Zo_BinaryInValue = 1256, - Zo_BinaryInactiveText = 1270, - Zo_BinaryMinimumOffTime = 1289, - Zo_BinaryMinimumOnTime = 1310, - Zo_BinaryOutActiveText = 1330, - Zo_BinaryOutApplicationType = 1350, - Zo_BinaryOutDescription = 1375, - Zo_BinaryOutInactiveText = 1396, - Zo_BinaryOutMinimumOffTime = 1418, - Zo_BinaryOutMinimumOnTime = 1442, - Zo_BinaryOutOfService = 1465, - Zo_BinaryOutOutOfService = 1484, - Zo_BinaryOutPolarity = 1506, - Zo_BinaryOutReliability = 1524, - Zo_BinaryOutRelinquishDefault = 1545, - Zo_BinaryOutStatusFlags = 1572, - Zo_BinaryOutValue = 1593, - Zo_BinaryReliability = 1608, - Zo_BinaryRelinquishDefault = 1626, - Zo_BinaryStatusFlags = 1650, - Zo_BinaryValue = 1668, - Zo_CIE = 1680, - Zo_CO = 1684, - Zo_CT = 1687, - Zo_CheckinInterval = 1690, - Zo_CheckinIntervalMin = 1706, - Zo_ClosedLimit = 1725, - Zo_Color = 1737, - Zo_ColorMode = 1743, - Zo_ColorMove = 1753, - Zo_ColorPointBIntensity = 1763, - Zo_ColorPointBX = 1784, - Zo_ColorPointBY = 1797, - Zo_ColorPointGIntensity = 1810, - Zo_ColorPointGX = 1831, - Zo_ColorPointGY = 1844, - Zo_ColorPointRIntensity = 1857, - Zo_ColorPointRX = 1878, - Zo_ColorPointRY = 1891, - Zo_ColorStep = 1904, - Zo_ColorTempMove = 1914, - Zo_ColorTempMoveDown = 1928, - Zo_ColorTempMoveStop = 1946, - Zo_ColorTempMoveUp = 1964, - Zo_ColorTempStep = 1980, - Zo_ColorTempStepDown = 1994, - Zo_ColorTempStepUp = 2012, - Zo_CompanyName = 2028, - Zo_CompensationText = 2040, - Zo_ConfigStatus = 2057, - Zo_Contact = 2070, - Zo_ControlSequenceOfOperation = 2078, - Zo_CurrentGroup = 2105, - Zo_CurrentPositionLift = 2118, - Zo_CurrentPositionLiftPercentage = 2138, - Zo_CurrentPositionTilt = 2168, - Zo_CurrentPositionTiltPercentage = 2188, - Zo_CurrentScene = 2218, - Zo_CurrentTemperature = 2231, - Zo_CurrentTemperatureSetPoint = 2250, - Zo_CustomerName = 2277, - Zo_DataQualityID = 2290, - Zo_DateCode = 2304, - Zo_DecelerationTimeLift = 2313, - Zo_Dimmer = 2334, - Zo_DimmerDown = 2341, - Zo_DimmerMove = 2352, - Zo_DimmerOptions = 2363, - Zo_DimmerRemainingTime = 2377, - Zo_DimmerStep = 2397, - Zo_DimmerStepDown = 2408, - Zo_DimmerStepUp = 2423, - Zo_DimmerStop = 2436, - Zo_DimmerUp = 2447, - Zo_DoorClosedEvents = 2456, - Zo_DoorOpenEvents = 2473, - Zo_DoorState = 2488, - Zo_DriftCompensation = 2498, - Zo_DstEnd = 2516, - Zo_DstShift = 2523, - Zo_DstStart = 2532, - Zo_EnergyFormatting = 2541, - Zo_EnergyRemote = 2558, - Zo_EnergyTotal = 2571, - Zo_EurotronicErrors = 2583, - Zo_EurotronicHostFlags = 2600, - Zo_FastPollTimeout = 2620, - Zo_FastPollTimeoutMax = 2636, - Zo_Fire = 2655, - Zo_FlowMaxMeasuredValue = 2660, - Zo_FlowMinMeasuredValue = 2681, - Zo_FlowRate = 2702, - Zo_FlowTolerance = 2711, - Zo_GenericDeviceClass = 2725, - Zo_GenericDeviceType = 2744, - Zo_GetAllGroups = 2762, - Zo_GetGroup = 2775, - Zo_GetSceneMembership = 2784, - Zo_GlassBreak = 2803, - Zo_GroupNameSupport = 2814, - Zo_HWVersion = 2831, - Zo_Hue = 2841, - Zo_HueMove = 2845, - Zo_HueSat = 2853, - Zo_HueStep = 2860, - Zo_HueStepDown = 2868, - Zo_HueStepUp = 2880, - Zo_Humidity = 2890, - Zo_HumidityMaxMeasuredValue = 2899, - Zo_HumidityMinMeasuredValue = 2924, - Zo_HumidityTolerance = 2949, - Zo_Identify = 2967, - Zo_IdentifyQuery = 2976, - Zo_IdentifyTime = 2990, - Zo_Illuminance = 3003, - Zo_IlluminanceLevelStatus = 3015, - Zo_IlluminanceLightSensorType = 3038, - Zo_IlluminanceMaxMeasuredValue = 3065, - Zo_IlluminanceMinMeasuredValue = 3093, - Zo_IlluminanceTargetLevel = 3121, - Zo_IlluminanceTolerance = 3144, - Zo_InstalledClosedLimitLift = 3165, - Zo_InstalledClosedLimitTilt = 3190, - Zo_InstalledOpenLimitLift = 3215, - Zo_InstalledOpenLimitTilt = 3238, - Zo_IntermediateSetpointsLift = 3261, - Zo_IntermediateSetpointsTilt = 3287, - Zo_LastMessageLQI = 3313, - Zo_LastMessageRSSI = 3328, - Zo_LastSetTime = 3344, - Zo_LegrandHeatingMode = 3356, - Zo_LegrandMode = 3375, - Zo_LegrandOpt1 = 3387, - Zo_LegrandOpt2 = 3399, - Zo_LegrandOpt3 = 3411, - Zo_LidlPower = 3423, - Zo_LocalTemperature = 3433, - Zo_LocalTemperatureCalibration = 3450, - Zo_LocalTime = 3478, - Zo_LocationAge = 3488, - Zo_LocationMethod = 3500, - Zo_LocationType = 3515, - Zo_LockState = 3528, - Zo_LockType = 3538, - Zo_LongPollInterval = 3547, - Zo_LongPollIntervalMin = 3564, - Zo_MainsFrequency = 3584, - Zo_MainsVoltage = 3599, - Zo_Manufacturer = 3612, - Zo_MaxTempExperienced = 3625, - Zo_MeterTypeID = 3644, - Zo_MinTempExperienced = 3656, - Zo_Mode = 3675, - Zo_Model = 3680, - Zo_ModelId = 3686, - Zo_MotorStepSize = 3694, - Zo_Movement = 3708, - Zo_MullerLightMode = 3717, - Zo_MultiApplicationType = 3733, - Zo_MultiDescription = 3754, - Zo_MultiInApplicationType = 3771, - Zo_MultiInDescription = 3794, - Zo_MultiInNumberOfStates = 3813, - Zo_MultiInOutOfService = 3835, - Zo_MultiInReliability = 3855, - Zo_MultiInStatusFlags = 3874, - Zo_MultiInValue = 3893, - Zo_MultiNumberOfStates = 3906, - Zo_MultiOutApplicationType = 3926, - Zo_MultiOutDescription = 3950, - Zo_MultiOutNumberOfStates = 3970, - Zo_MultiOutOfService = 3993, - Zo_MultiOutOutOfService = 4011, - Zo_MultiOutReliability = 4032, - Zo_MultiOutRelinquishDefault = 4052, - Zo_MultiOutStatusFlags = 4078, - Zo_MultiOutValue = 4098, - Zo_MultiReliability = 4112, - Zo_MultiRelinquishDefault = 4129, - Zo_MultiStatusFlags = 4152, - Zo_MultiValue = 4169, - Zo_MultipleScheduling = 4180, - Zo_NumberOfDevices = 4199, - Zo_NumberOfPrimaries = 4215, - Zo_NumberOfResets = 4233, - Zo_NumberofActuationsLift = 4248, - Zo_NumberofActuationsTilt = 4271, - Zo_Occupancy = 4294, - Zo_OccupancySensorType = 4304, - Zo_OccupiedCoolingSetpoint = 4324, - Zo_OccupiedHeatingSetpoint = 4348, - Zo_OnOffTransitionTime = 4372, - Zo_OpenPeriod = 4392, - Zo_OppleMode = 4403, - Zo_OutdoorTemperature = 4413, - Zo_OverTempTotalDwell = 4432, - Zo_PICoolingDemand = 4451, - Zo_PIHeatingDemand = 4467, - Zo_POD = 4483, - Zo_Panic = 4487, - Zo_PartNumber = 4493, - Zo_PersistentMemoryWrites = 4504, - Zo_PersonalAlarm = 4527, - Zo_PhysicalClosedLimit = 4541, - Zo_PhysicalClosedLimitLift = 4561, - Zo_PhysicalClosedLimitTilt = 4585, - Zo_Power = 4609, - Zo_PowerOffEffect = 4615, - Zo_PowerOnRecall = 4630, - Zo_PowerOnTimer = 4644, - Zo_PowerSource = 4657, - Zo_PowerThreshold = 4669, - Zo_Pressure = 4684, - Zo_PressureMaxMeasuredValue = 4693, - Zo_PressureMaxScaledValue = 4718, - Zo_PressureMinMeasuredValue = 4741, - Zo_PressureMinScaledValue = 4766, - Zo_PressureScale = 4789, - Zo_PressureScaledTolerance = 4803, - Zo_PressureScaledValue = 4827, - Zo_PressureTolerance = 4847, - Zo_Primary1Intensity = 4865, - Zo_Primary1X = 4883, - Zo_Primary1Y = 4893, - Zo_Primary2Intensity = 4903, - Zo_Primary2X = 4921, - Zo_Primary2Y = 4931, - Zo_Primary3Intensity = 4941, - Zo_Primary3X = 4959, - Zo_Primary3Y = 4969, - Zo_ProductCode = 4979, - Zo_ProductRevision = 4991, - Zo_ProductURL = 5007, - Zo_QualityMeasure = 5018, - Zo_RGB = 5033, - Zo_RMSCurrent = 5037, - Zo_RMSVoltage = 5048, - Zo_ReactivePower = 5059, - Zo_RecallScene = 5073, - Zo_RemainingTime = 5085, - Zo_RemoteSensing = 5099, - Zo_RemoveAllGroups = 5113, - Zo_RemoveAllScenes = 5129, - Zo_RemoveGroup = 5145, - Zo_RemoveScene = 5157, - Zo_ResetAlarm = 5169, - Zo_ResetAllAlarms = 5180, - Zo_SWBuildID = 5195, - Zo_Sat = 5205, - Zo_SatMove = 5209, - Zo_SatStep = 5217, - Zo_SceneCount = 5225, - Zo_SceneValid = 5236, - Zo_ScheduleMode = 5247, - Zo_SeaPressure = 5260, - Zo_ShortPollInterval = 5272, - Zo_Shutter = 5290, - Zo_ShutterClose = 5298, - Zo_ShutterLift = 5311, - Zo_ShutterOpen = 5323, - Zo_ShutterStop = 5335, - Zo_ShutterTilt = 5347, - Zo_SoftwareRevision = 5359, - Zo_StackVersion = 5376, - Zo_StandardTime = 5389, - Zo_StartUpOnOff = 5402, - Zo_Status = 5415, - Zo_StoreScene = 5422, - Zo_SwitchType = 5433, - Zo_SystemMode = 5444, - Zo_TRVBoost = 5455, - Zo_TRVChildProtection = 5464, - Zo_TRVMirrorDisplay = 5483, - Zo_TRVMode = 5500, - Zo_TRVWindowOpen = 5508, - Zo_TempTarget = 5522, - Zo_Temperature = 5533, - Zo_TemperatureMaxMeasuredValue = 5545, - Zo_TemperatureMinMeasuredValue = 5573, - Zo_TemperatureTolerance = 5601, - Zo_TerncyDuration = 5622, - Zo_TerncyRotate = 5637, - Zo_ThSetpoint = 5650, - Zo_Time = 5661, - Zo_TimeEpoch = 5666, - Zo_TimeStatus = 5676, - Zo_TimeZone = 5687, - Zo_TotalProfileNum = 5696, - Zo_TuyaCalibration = 5712, - Zo_TuyaCalibrationTime = 5728, - Zo_TuyaMCUVersion = 5748, - Zo_TuyaMotorReversal = 5763, - Zo_TuyaMovingState = 5781, - Zo_TuyaQuery = 5797, - Zo_UnoccupiedCoolingSetpoint = 5807, - Zo_UnoccupiedHeatingSetpoint = 5833, - Zo_UtilityName = 5859, - Zo_ValidUntilTime = 5871, - Zo_ValvePosition = 5886, - Zo_VelocityLift = 5900, - Zo_ViewGroup = 5913, - Zo_ViewScene = 5923, - Zo_Water = 5933, - Zo_WhitePointX = 5939, - Zo_WhitePointY = 5951, - Zo_WindowCoveringType = 5963, - Zo_X = 5982, - Zo_Y = 5984, - Zo_ZCLVersion = 5986, - Zo_ZoneState = 5997, - Zo_ZoneStatus = 6007, - Zo_ZoneStatusChange = 6018, - Zo_ZoneType = 6035, - Zo__ = 6044, - Zo_xx = 6046, - Zo_xx000A00 = 6049, - Zo_xx0A = 6058, - Zo_xx0A00 = 6063, - Zo_xx19 = 6070, - Zo_xx190A = 6075, - Zo_xx190A00 = 6082, - Zo_xxxx = 6091, - Zo_xxxx00 = 6096, - Zo_xxxx0A00 = 6103, - Zo_xxxxyy = 6112, - Zo_xxxxyyyy = 6119, - Zo_xxxxyyyy0A00 = 6128, - Zo_xxxxyyzz = 6141, - Zo_xxyy = 6150, - Zo_xxyy0A00 = 6155, - Zo_xxyyyy = 6164, - Zo_xxyyyy000000000000 = 6171, - Zo_xxyyyy0A0000000000 = 6190, - Zo_xxyyyyzz = 6209, - Zo_xxyyyyzzzz = 6218, - Zo_xxyyzzzz = 6229, + Zo_ACActivePowerOverload = 159, + Zo_ACAlarmsMask = 181, + Zo_ACCurrentDivisor = 194, + Zo_ACCurrentMultiplier = 211, + Zo_ACCurrentOverload = 231, + Zo_ACFrequency = 249, + Zo_ACFrequencyDivisor = 261, + Zo_ACFrequencyMax = 280, + Zo_ACFrequencyMin = 295, + Zo_ACFrequencyMultiplier = 310, + Zo_ACPowerDivisor = 332, + Zo_ACPowerMultiplier = 347, + Zo_ACReactivePowerOverload = 365, + Zo_ACVoltageDivisor = 389, + Zo_ACVoltageMultiplier = 406, + Zo_ACVoltageOverload = 426, + Zo_AbsMaxCoolSetpointLimit = 444, + Zo_AbsMaxHeatSetpointLimit = 468, + Zo_AbsMinCoolSetpointLimit = 492, + Zo_AbsMinHeatSetpointLimit = 516, + Zo_AccelerationTimeLift = 540, + Zo_ActiveCurrent = 561, + Zo_ActiveCurrentPhB = 575, + Zo_ActiveCurrentPhC = 592, + Zo_ActivePower = 609, + Zo_ActivePowerMax = 621, + Zo_ActivePowerMaxPhB = 636, + Zo_ActivePowerMaxPhC = 654, + Zo_ActivePowerMin = 672, + Zo_ActivePowerMinPhB = 687, + Zo_ActivePowerMinPhC = 705, + Zo_ActivePowerPhB = 723, + Zo_ActivePowerPhC = 738, + Zo_ActuatorEnabled = 753, + Zo_AddGroup = 769, + Zo_AddScene = 778, + Zo_AlarmCount = 787, + Zo_AlarmMask = 798, + Zo_AnalogApplicationType = 808, + Zo_AnalogDescription = 830, + Zo_AnalogEngineeringUnits = 848, + Zo_AnalogInApplicationType = 871, + Zo_AnalogInDescription = 895, + Zo_AnalogInEngineeringUnits = 915, + Zo_AnalogInMaxValue = 940, + Zo_AnalogInMinValue = 957, + Zo_AnalogInOutOfService = 974, + Zo_AnalogInReliability = 995, + Zo_AnalogInResolution = 1015, + Zo_AnalogInStatusFlags = 1034, + Zo_AnalogOutApplicationType = 1054, + Zo_AnalogOutDescription = 1079, + Zo_AnalogOutEngineeringUnits = 1100, + Zo_AnalogOutMaxValue = 1126, + Zo_AnalogOutMinValue = 1144, + Zo_AnalogOutOfService = 1162, + Zo_AnalogOutOutOfService = 1181, + Zo_AnalogOutReliability = 1203, + Zo_AnalogOutRelinquishDefault = 1224, + Zo_AnalogOutResolution = 1251, + Zo_AnalogOutStatusFlags = 1271, + Zo_AnalogOutValue = 1292, + Zo_AnalogPriorityArray = 1307, + Zo_AnalogReliability = 1327, + Zo_AnalogRelinquishDefault = 1345, + Zo_AnalogStatusFlags = 1369, + Zo_AnalogValue = 1387, + Zo_AppVersion = 1399, + Zo_ApparentPower = 1410, + Zo_ApparentPowerPhB = 1424, + Zo_ApparentPowerPhC = 1441, + Zo_AqaraAccelerometer = 1458, + Zo_AqaraRotate = 1477, + Zo_AqaraVibration505 = 1489, + Zo_AqaraVibrationMode = 1507, + Zo_AqaraVibrationsOrAngle = 1526, + Zo_Aqara_FF05 = 1549, + Zo_ArrowClick = 1560, + Zo_ArrowHold = 1571, + Zo_ArrowRelease = 1581, + Zo_AutoRelockTime = 1594, + Zo_AvailablePower = 1609, + Zo_AverageRMSOverVoltage = 1624, + Zo_AverageRMSOverVoltageCounter = 1646, + Zo_AverageRMSOverVoltageCounterPhB = 1675, + Zo_AverageRMSOverVoltageCounterPhC = 1707, + Zo_AverageRMSUnderVoltage = 1739, + Zo_AverageRMSUnderVoltageCounter = 1762, + Zo_AverageRMSUnderVoltageCounterPhB = 1792, + Zo_AverageRMSUnderVoltageCounterPhC = 1825, + Zo_AverageRMSVoltageMeasurementPeriod = 1858, + Zo_AverageRMSVoltageMeasurementPeriodPhB = 1893, + Zo_AverageRMSVoltageMeasurementPeriodPhC = 1931, + Zo_BallastFactorAdjustment = 1969, + Zo_BallastLampQuantity = 1993, + Zo_BallastMaxLevel = 2013, + Zo_BallastMinLevel = 2029, + Zo_BallastPhysicalMaxLevel = 2045, + Zo_BallastPhysicalMinLevel = 2069, + Zo_BallastPowerOnFadeTime = 2093, + Zo_BallastPowerOnLevel = 2116, + Zo_BallastStatus = 2136, + Zo_BatteryAHrRating = 2150, + Zo_BatteryAlarmMask = 2167, + Zo_BatteryAlarmState = 2184, + Zo_BatteryManufacturer = 2202, + Zo_BatteryPercentage = 2222, + Zo_BatteryPercentageMinThreshold = 2240, + Zo_BatteryPercentageThreshold1 = 2270, + Zo_BatteryPercentageThreshold2 = 2298, + Zo_BatteryPercentageThreshold3 = 2326, + Zo_BatteryQuantity = 2354, + Zo_BatteryRatedVoltage = 2370, + Zo_BatterySize = 2390, + Zo_BatteryVoltage = 2402, + Zo_BatteryVoltageMinThreshold = 2417, + Zo_BatteryVoltageThreshold1 = 2444, + Zo_BatteryVoltageThreshold2 = 2469, + Zo_BatteryVoltageThreshold3 = 2494, + Zo_BinaryActiveText = 2519, + Zo_BinaryApplicationType = 2536, + Zo_BinaryDescription = 2558, + Zo_BinaryInActiveText = 2576, + Zo_BinaryInApplicationType = 2595, + Zo_BinaryInDescription = 2619, + Zo_BinaryInInactiveText = 2639, + Zo_BinaryInOutOfService = 2660, + Zo_BinaryInPolarity = 2681, + Zo_BinaryInReliability = 2698, + Zo_BinaryInStatusFlags = 2718, + Zo_BinaryInValue = 2738, + Zo_BinaryInactiveText = 2752, + Zo_BinaryMinimumOffTime = 2771, + Zo_BinaryMinimumOnTime = 2792, + Zo_BinaryOutActiveText = 2812, + Zo_BinaryOutApplicationType = 2832, + Zo_BinaryOutDescription = 2857, + Zo_BinaryOutInactiveText = 2878, + Zo_BinaryOutMinimumOffTime = 2900, + Zo_BinaryOutMinimumOnTime = 2924, + Zo_BinaryOutOfService = 2947, + Zo_BinaryOutOutOfService = 2966, + Zo_BinaryOutPolarity = 2988, + Zo_BinaryOutReliability = 3006, + Zo_BinaryOutRelinquishDefault = 3027, + Zo_BinaryOutStatusFlags = 3054, + Zo_BinaryOutValue = 3075, + Zo_BinaryReliability = 3090, + Zo_BinaryRelinquishDefault = 3108, + Zo_BinaryStatusFlags = 3132, + Zo_BinaryValue = 3150, + Zo_CIE = 3162, + Zo_CO = 3166, + Zo_CT = 3169, + Zo_CalculationPeriod = 3172, + Zo_CheckinInterval = 3190, + Zo_CheckinIntervalMin = 3206, + Zo_ClosedLimit = 3225, + Zo_Color = 3237, + Zo_ColorCapabilities = 3243, + Zo_ColorLoopActive = 3261, + Zo_ColorLoopDirection = 3277, + Zo_ColorLoopStartEnhancedHue = 3296, + Zo_ColorLoopStoredEnhancedHue = 3322, + Zo_ColorLoopTime = 3349, + Zo_ColorMode = 3363, + Zo_ColorMove = 3373, + Zo_ColorPointBIntensity = 3383, + Zo_ColorPointBX = 3404, + Zo_ColorPointBY = 3417, + Zo_ColorPointGIntensity = 3430, + Zo_ColorPointGX = 3451, + Zo_ColorPointGY = 3464, + Zo_ColorPointRIntensity = 3477, + Zo_ColorPointRX = 3498, + Zo_ColorPointRY = 3511, + Zo_ColorStep = 3524, + Zo_ColorTempMove = 3534, + Zo_ColorTempMoveDown = 3548, + Zo_ColorTempMoveStop = 3566, + Zo_ColorTempMoveUp = 3584, + Zo_ColorTempPhysicalMaxMireds = 3600, + Zo_ColorTempPhysicalMinMireds = 3627, + Zo_ColorTempStep = 3654, + Zo_ColorTempStepDown = 3668, + Zo_ColorTempStepUp = 3686, + Zo_CompanyName = 3702, + Zo_CompensationText = 3714, + Zo_ConfigStatus = 3731, + Zo_Contact = 3744, + Zo_ControlSequenceOfOperation = 3752, + Zo_Coordinate1 = 3779, + Zo_Coordinate2 = 3791, + Zo_Coordinate3 = 3803, + Zo_CurrentGroup = 3815, + Zo_CurrentPositionLift = 3828, + Zo_CurrentPositionLiftPercentage = 3848, + Zo_CurrentPositionTilt = 3878, + Zo_CurrentPositionTiltPercentage = 3898, + Zo_CurrentScene = 3928, + Zo_CurrentTemperature = 3941, + Zo_CurrentTemperatureSetPoint = 3960, + Zo_CurrentZoneSensitivityLevel = 3987, + Zo_CustomerName = 4015, + Zo_DCCurrent = 4028, + Zo_DCCurrentDivisor = 4038, + Zo_DCCurrentMax = 4055, + Zo_DCCurrentMin = 4068, + Zo_DCCurrentMultiplier = 4081, + Zo_DCCurrentOverload = 4101, + Zo_DCOverloadAlarmsMask = 4119, + Zo_DCPower = 4140, + Zo_DCPowerDivisor = 4148, + Zo_DCPowerMax = 4163, + Zo_DCPowerMin = 4174, + Zo_DCPowerMultiplier = 4185, + Zo_DCVoltage = 4203, + Zo_DCVoltageDivisor = 4213, + Zo_DCVoltageMax = 4230, + Zo_DCVoltageMin = 4243, + Zo_DCVoltageMultiplier = 4256, + Zo_DCVoltageOverload = 4276, + Zo_DataQualityID = 4294, + Zo_DateCode = 4308, + Zo_DecelerationTimeLift = 4317, + Zo_DefaultMoveRate = 4338, + Zo_DehumidificationCooling = 4354, + Zo_DehumidificationHysteresis = 4378, + Zo_DehumidificationLockout = 4405, + Zo_DehumidificationMaxCool = 4429, + Zo_DeviceEnabled = 4453, + Zo_DeviceTempAlarmMask = 4467, + Zo_Dimmer = 4487, + Zo_DimmerDown = 4494, + Zo_DimmerMove = 4505, + Zo_DimmerOptions = 4516, + Zo_DimmerRemainingTime = 4530, + Zo_DimmerStep = 4550, + Zo_DimmerStepDown = 4561, + Zo_DimmerStepUp = 4576, + Zo_DimmerStop = 4589, + Zo_DimmerUp = 4600, + Zo_DisableLocalConfig = 4609, + Zo_DoorClosedEvents = 4628, + Zo_DoorOpenEvents = 4645, + Zo_DoorState = 4660, + Zo_DriftCompensation = 4670, + Zo_DstEnd = 4688, + Zo_DstShift = 4695, + Zo_DstStart = 4704, + Zo_ElectricalMeasurementType = 4713, + Zo_EnergyFormatting = 4739, + Zo_EnergyRemote = 4756, + Zo_EnergyTotal = 4769, + Zo_EnhancedColorMode = 4781, + Zo_EnhancedCurrentHue = 4799, + Zo_EurotronicErrors = 4818, + Zo_EurotronicHostFlags = 4835, + Zo_FanMode = 4855, + Zo_FanModeSequence = 4863, + Zo_FastPollTimeout = 4879, + Zo_FastPollTimeoutMax = 4895, + Zo_Fire = 4914, + Zo_FlowMaxMeasuredValue = 4919, + Zo_FlowMinMeasuredValue = 4940, + Zo_FlowRate = 4961, + Zo_FlowTolerance = 4970, + Zo_GenericDeviceClass = 4984, + Zo_GenericDeviceType = 5003, + Zo_GetAllGroups = 5021, + Zo_GetGroup = 5034, + Zo_GetSceneMembership = 5043, + Zo_GlassBreak = 5062, + Zo_GroupNameSupport = 5073, + Zo_HVACSystemTypeConfiguration = 5090, + Zo_HWVersion = 5118, + Zo_HarmonicCurrentMultiplier = 5128, + Zo_HighTempDwellTripPoint = 5154, + Zo_HighTempThreshold = 5177, + Zo_Hue = 5195, + Zo_HueMove = 5199, + Zo_HueSat = 5207, + Zo_HueStep = 5214, + Zo_HueStepDown = 5222, + Zo_HueStepUp = 5234, + Zo_Humidity = 5244, + Zo_HumidityMaxMeasuredValue = 5253, + Zo_HumidityMinMeasuredValue = 5278, + Zo_HumidityTolerance = 5303, + Zo_IASCIEAddress = 5321, + Zo_Identify = 5335, + Zo_IdentifyQuery = 5344, + Zo_IdentifyTime = 5358, + Zo_Illuminance = 5371, + Zo_IlluminanceLevelStatus = 5383, + Zo_IlluminanceLightSensorType = 5406, + Zo_IlluminanceMaxMeasuredValue = 5433, + Zo_IlluminanceMinMeasuredValue = 5461, + Zo_IlluminanceTargetLevel = 5489, + Zo_IlluminanceTolerance = 5512, + Zo_InstalledClosedLimitLift = 5533, + Zo_InstalledClosedLimitTilt = 5558, + Zo_InstalledOpenLimitLift = 5583, + Zo_InstalledOpenLimitTilt = 5606, + Zo_IntermediateSetpointsLift = 5629, + Zo_IntermediateSetpointsTilt = 5655, + Zo_IntrinsicBallastFactor = 5681, + Zo_LampAlarmMode = 5704, + Zo_LampBurnHours = 5718, + Zo_LampBurnHoursTripPoint = 5732, + Zo_LampManufacturer = 5755, + Zo_LampRatedHours = 5772, + Zo_LampType = 5787, + Zo_LastConfiguredBy = 5796, + Zo_LastMessageLQI = 5813, + Zo_LastMessageRSSI = 5828, + Zo_LastSetTime = 5844, + Zo_LegrandHeatingMode = 5856, + Zo_LegrandMode = 5875, + Zo_LegrandOpt1 = 5887, + Zo_LegrandOpt2 = 5899, + Zo_LegrandOpt3 = 5911, + Zo_LidlPower = 5923, + Zo_LineCurrent = 5933, + Zo_LineCurrentPhB = 5945, + Zo_LineCurrentPhC = 5960, + Zo_LocalTemperature = 5975, + Zo_LocalTemperatureCalibration = 5992, + Zo_LocalTime = 6020, + Zo_LocationAge = 6030, + Zo_LocationDescription = 6042, + Zo_LocationMethod = 6062, + Zo_LocationPower = 6077, + Zo_LocationType = 6091, + Zo_LockAlarmMask = 6104, + Zo_LockDefaultConfigurationRegister = 6118, + Zo_LockEnableInsideStatusLED = 6151, + Zo_LockEnableLocalProgramming = 6177, + Zo_LockEnableLogging = 6204, + Zo_LockEnableOneTouchLocking = 6222, + Zo_LockEnablePrivacyModeButton = 6248, + Zo_LockKeypadOperationEventMask = 6276, + Zo_LockKeypadProgrammingEventMask = 6305, + Zo_LockLEDSettings = 6336, + Zo_LockLanguage = 6352, + Zo_LockManualOperationEventMask = 6365, + Zo_LockOperatingMode = 6394, + Zo_LockRFIDOperationEventMask = 6412, + Zo_LockRFIDProgrammingEventMask = 6439, + Zo_LockRFOperationEventMask = 6468, + Zo_LockRFProgrammingEventMask = 6493, + Zo_LockSoundVolume = 6520, + Zo_LockState = 6536, + Zo_LockSupportedOperatingModes = 6546, + Zo_LockType = 6574, + Zo_LongPollInterval = 6583, + Zo_LongPollIntervalMin = 6600, + Zo_LowTempDwellTripPoint = 6620, + Zo_LowTempThreshold = 6642, + Zo_MainsAlarmMask = 6659, + Zo_MainsFrequency = 6674, + Zo_MainsVoltage = 6689, + Zo_MainsVoltageDwellTripPoint = 6702, + Zo_MainsVoltageMaxThreshold = 6729, + Zo_MainsVoltageMinThreshold = 6754, + Zo_Manufacturer = 6779, + Zo_MaxCoolSetpointLimit = 6792, + Zo_MaxHeatSetpointLimit = 6813, + Zo_MaxPINCodeLength = 6834, + Zo_MaxRFIDCodeLength = 6851, + Zo_MaxTempExperienced = 6869, + Zo_Measured11thHarmonicCurrent = 6888, + Zo_Measured1stHarmonicCurrent = 6916, + Zo_Measured3rdHarmonicCurrent = 6943, + Zo_Measured5thHarmonicCurrent = 6970, + Zo_Measured7thHarmonicCurrent = 6997, + Zo_Measured9thHarmonicCurrent = 7024, + Zo_MeasuredPhase11thHarmonicCurrent = 7051, + Zo_MeasuredPhase1stHarmonicCurrent = 7084, + Zo_MeasuredPhase3rdHarmonicCurrent = 7116, + Zo_MeasuredPhase5thHarmonicCurrent = 7148, + Zo_MeasuredPhase7thHarmonicCurrent = 7180, + Zo_MeasuredPhase9thHarmonicCurrent = 7212, + Zo_MeterTypeID = 7244, + Zo_MinCoolSetpointLimit = 7256, + Zo_MinHeatSetpointLimit = 7277, + Zo_MinPINCodeLength = 7298, + Zo_MinRFIDCodeLength = 7315, + Zo_MinSetpointDeadBand = 7333, + Zo_MinTempExperienced = 7353, + Zo_Mode = 7372, + Zo_Model = 7377, + Zo_ModelId = 7383, + Zo_MotorStepSize = 7391, + Zo_Movement = 7405, + Zo_MullerLightMode = 7414, + Zo_MultiApplicationType = 7430, + Zo_MultiDescription = 7451, + Zo_MultiInApplicationType = 7468, + Zo_MultiInDescription = 7491, + Zo_MultiInNumberOfStates = 7510, + Zo_MultiInOutOfService = 7532, + Zo_MultiInReliability = 7552, + Zo_MultiInStatusFlags = 7571, + Zo_MultiInValue = 7590, + Zo_MultiNumberOfStates = 7603, + Zo_MultiOutApplicationType = 7623, + Zo_MultiOutDescription = 7647, + Zo_MultiOutNumberOfStates = 7667, + Zo_MultiOutOfService = 7690, + Zo_MultiOutOutOfService = 7708, + Zo_MultiOutReliability = 7729, + Zo_MultiOutRelinquishDefault = 7749, + Zo_MultiOutStatusFlags = 7775, + Zo_MultiOutValue = 7795, + Zo_MultiReliability = 7809, + Zo_MultiRelinquishDefault = 7826, + Zo_MultiStatusFlags = 7849, + Zo_MultiValue = 7866, + Zo_MultipleScheduling = 7877, + Zo_NeutralCurrent = 7896, + Zo_NumberOfDevices = 7911, + Zo_NumberOfHolidaySchedulesSupported = 7927, + Zo_NumberOfLogRecordsSupported = 7961, + Zo_NumberOfPINUsersSupported = 7989, + Zo_NumberOfPrimaries = 8015, + Zo_NumberOfRFIDUsersSupported = 8033, + Zo_NumberOfResets = 8060, + Zo_NumberOfTotalUsersSupported = 8075, + Zo_NumberOfWeekDaySchedulesSupportedPerUser = 8103, + Zo_NumberOfYearDaySchedulesSupportedPerUser = 8144, + Zo_NumberOfZoneSensitivityLevelsSupported = 8185, + Zo_NumberRSSIMeasurements = 8224, + Zo_NumberofActuationsLift = 8247, + Zo_NumberofActuationsTilt = 8270, + Zo_Occupancy = 8293, + Zo_OccupancySensorType = 8303, + Zo_OccupiedCoolingSetpoint = 8323, + Zo_OccupiedHeatingSetpoint = 8347, + Zo_OffTransitionTime = 8371, + Zo_OffWaitTime = 8389, + Zo_OnLevel = 8401, + Zo_OnOff = 8409, + Zo_OnOffTransitionTime = 8415, + Zo_OnTime = 8435, + Zo_OnTransitionTime = 8442, + Zo_OpenPeriod = 8459, + Zo_OppleMode = 8470, + Zo_OutdoorTemperature = 8480, + Zo_OverTempTotalDwell = 8499, + Zo_PICoolingDemand = 8518, + Zo_PIHeatingDemand = 8534, + Zo_PIROccupiedToUnoccupiedDelay = 8550, + Zo_PIRUnoccupiedToOccupiedDelay = 8579, + Zo_PIRUnoccupiedToOccupiedThreshold = 8608, + Zo_POD = 8641, + Zo_Panic = 8645, + Zo_PartNumber = 8651, + Zo_PathLossExponent = 8662, + Zo_PersistentMemoryWrites = 8679, + Zo_PersonalAlarm = 8702, + Zo_PhaseHarmonicCurrentMultiplier = 8716, + Zo_PhysicalClosedLimit = 8747, + Zo_PhysicalClosedLimitLift = 8767, + Zo_PhysicalClosedLimitTilt = 8791, + Zo_PhysicalEnvironment = 8815, + Zo_Power = 8835, + Zo_PowerDivisor = 8841, + Zo_PowerFactor = 8854, + Zo_PowerFactorPhB = 8866, + Zo_PowerFactorPhC = 8881, + Zo_PowerMultiplier = 8896, + Zo_PowerOffEffect = 8912, + Zo_PowerOnRecall = 8927, + Zo_PowerOnTimer = 8941, + Zo_PowerSource = 8954, + Zo_PowerThreshold = 8966, + Zo_Pressure = 8981, + Zo_PressureMaxMeasuredValue = 8990, + Zo_PressureMaxScaledValue = 9015, + Zo_PressureMinMeasuredValue = 9038, + Zo_PressureMinScaledValue = 9063, + Zo_PressureScale = 9086, + Zo_PressureScaledTolerance = 9100, + Zo_PressureScaledValue = 9124, + Zo_PressureTolerance = 9144, + Zo_Primary1Intensity = 9162, + Zo_Primary1X = 9180, + Zo_Primary1Y = 9190, + Zo_Primary2Intensity = 9200, + Zo_Primary2X = 9218, + Zo_Primary2Y = 9228, + Zo_Primary3Intensity = 9238, + Zo_Primary3X = 9256, + Zo_Primary3Y = 9266, + Zo_Primary4Intensity = 9276, + Zo_Primary4X = 9294, + Zo_Primary4Y = 9304, + Zo_Primary5Intensity = 9314, + Zo_Primary5X = 9332, + Zo_Primary5Y = 9342, + Zo_Primary6Intensity = 9352, + Zo_Primary6X = 9370, + Zo_Primary6Y = 9380, + Zo_ProductCode = 9390, + Zo_ProductRevision = 9402, + Zo_ProductURL = 9418, + Zo_QualityMeasure = 9429, + Zo_RGB = 9444, + Zo_RHDehumidificationSetpoint = 9448, + Zo_RMSCurrent = 9475, + Zo_RMSCurrentMax = 9486, + Zo_RMSCurrentMaxPhB = 9500, + Zo_RMSCurrentMaxPhC = 9517, + Zo_RMSCurrentMin = 9534, + Zo_RMSCurrentMinPhB = 9548, + Zo_RMSCurrentMinPhC = 9565, + Zo_RMSCurrentPhB = 9582, + Zo_RMSCurrentPhC = 9596, + Zo_RMSExtremeOverVoltage = 9610, + Zo_RMSExtremeOverVoltagePeriod = 9632, + Zo_RMSExtremeOverVoltagePeriodPhB = 9660, + Zo_RMSExtremeOverVoltagePeriodPhC = 9691, + Zo_RMSExtremeUnderVoltage = 9722, + Zo_RMSExtremeUnderVoltagePeriod = 9745, + Zo_RMSExtremeUnderVoltagePeriodPhB = 9774, + Zo_RMSExtremeUnderVoltagePeriodPhC = 9806, + Zo_RMSVoltage = 9838, + Zo_RMSVoltageMax = 9849, + Zo_RMSVoltageMaxPhB = 9863, + Zo_RMSVoltageMaxPhC = 9880, + Zo_RMSVoltageMin = 9897, + Zo_RMSVoltageMinPhB = 9911, + Zo_RMSVoltageMinPhC = 9928, + Zo_RMSVoltagePhB = 9945, + Zo_RMSVoltagePhC = 9959, + Zo_RMSVoltageSag = 9973, + Zo_RMSVoltageSagPeriod = 9987, + Zo_RMSVoltageSagPeriodPhB = 10007, + Zo_RMSVoltageSagPeriodPhC = 10030, + Zo_RMSVoltageSwell = 10053, + Zo_RMSVoltageSwellPeriod = 10069, + Zo_RMSVoltageSwellPeriodPhB = 10091, + Zo_RMSVoltageSwellPeriodPhC = 10116, + Zo_ReactiveCurrent = 10141, + Zo_ReactiveCurrentPhB = 10157, + Zo_ReactiveCurrentPhC = 10176, + Zo_ReactivePower = 10195, + Zo_ReactivePowerPhB = 10209, + Zo_ReactivePowerPhC = 10226, + Zo_RecallScene = 10243, + Zo_RelativeHumidity = 10255, + Zo_RelativeHumidityDisplay = 10272, + Zo_RelativeHumidityMode = 10296, + Zo_RemainingTime = 10317, + Zo_RemoteSensing = 10331, + Zo_RemoveAllGroups = 10345, + Zo_RemoveAllScenes = 10361, + Zo_RemoveGroup = 10377, + Zo_RemoveScene = 10389, + Zo_ReportingPeriod = 10401, + Zo_ResetAlarm = 10417, + Zo_ResetAllAlarms = 10428, + Zo_SWBuildID = 10443, + Zo_Sat = 10453, + Zo_SatMove = 10457, + Zo_SatStep = 10465, + Zo_SceneCount = 10473, + Zo_SceneNameSupport = 10484, + Zo_SceneValid = 10501, + Zo_ScheduleMode = 10512, + Zo_SeaPressure = 10525, + Zo_ShortPollInterval = 10537, + Zo_Shutter = 10555, + Zo_ShutterClose = 10563, + Zo_ShutterLift = 10576, + Zo_ShutterOpen = 10588, + Zo_ShutterStop = 10600, + Zo_ShutterTilt = 10612, + Zo_SoftwareRevision = 10624, + Zo_StackVersion = 10641, + Zo_StandardTime = 10654, + Zo_StartUpOnOff = 10667, + Zo_Status = 10680, + Zo_StoreScene = 10687, + Zo_SwitchActions = 10698, + Zo_SwitchType = 10712, + Zo_SystemMode = 10723, + Zo_TRVBoost = 10734, + Zo_TRVChildProtection = 10743, + Zo_TRVMirrorDisplay = 10762, + Zo_TRVMode = 10779, + Zo_TRVWindowOpen = 10787, + Zo_TempTarget = 10801, + Zo_Temperature = 10812, + Zo_TemperatureDisplayMode = 10824, + Zo_TemperatureMaxMeasuredValue = 10847, + Zo_TemperatureMinMeasuredValue = 10875, + Zo_TemperatureTolerance = 10903, + Zo_TerncyDuration = 10924, + Zo_TerncyRotate = 10939, + Zo_ThSetpoint = 10952, + Zo_ThermostatAlarmMask = 10963, + Zo_ThermostatKeypadLockout = 10983, + Zo_ThermostatOccupancy = 11007, + Zo_ThermostatRunningMode = 11027, + Zo_ThermostatScheduleProgrammingVisibility = 11049, + Zo_Time = 11089, + Zo_TimeEpoch = 11094, + Zo_TimeStatus = 11104, + Zo_TimeZone = 11115, + Zo_TotalActivePower = 11124, + Zo_TotalApparentPower = 11141, + Zo_TotalProfileNum = 11160, + Zo_TotalReactivePower = 11176, + Zo_TuyaCalibration = 11195, + Zo_TuyaCalibrationTime = 11211, + Zo_TuyaMCUVersion = 11231, + Zo_TuyaMotorReversal = 11246, + Zo_TuyaMovingState = 11264, + Zo_TuyaQuery = 11280, + Zo_UnoccupiedCoolingSetpoint = 11290, + Zo_UnoccupiedHeatingSetpoint = 11316, + Zo_UtilityName = 11342, + Zo_ValidUntilTime = 11354, + Zo_ValvePosition = 11369, + Zo_VelocityLift = 11383, + Zo_ViewGroup = 11396, + Zo_ViewScene = 11406, + Zo_Water = 11416, + Zo_WhitePointX = 11422, + Zo_WhitePointY = 11434, + Zo_WindowCoveringType = 11446, + Zo_X = 11465, + Zo_Y = 11467, + Zo_ZCLVersion = 11469, + Zo_ZoneID = 11480, + Zo_ZoneState = 11487, + Zo_ZoneStatus = 11497, + Zo_ZoneStatusChange = 11508, + Zo_ZoneType = 11525, + Zo__ = 11534, + Zo_xx = 11536, + Zo_xx000A00 = 11539, + Zo_xx0A = 11548, + Zo_xx0A00 = 11553, + Zo_xx19 = 11560, + Zo_xx190A = 11565, + Zo_xx190A00 = 11572, + Zo_xxxx = 11581, + Zo_xxxx00 = 11586, + Zo_xxxx0A00 = 11593, + Zo_xxxxyy = 11602, + Zo_xxxxyyyy = 11609, + Zo_xxxxyyyy0A00 = 11618, + Zo_xxxxyyzz = 11631, + Zo_xxyy = 11640, + Zo_xxyy0A00 = 11645, + Zo_xxyyyy = 11654, + Zo_xxyyyy000000000000 = 11661, + Zo_xxyyyy0A0000000000 = 11680, + Zo_xxyyyyzz = 11699, + Zo_xxyyyyzzzz = 11708, + Zo_xxyyzzzz = 11719, }; diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_1_attributes.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_1_attributes.ino index 7f091f243..a0a9bb6a8 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_1_attributes.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_1_attributes.ino @@ -188,7 +188,8 @@ enum Cx_cluster_short { Cx0000, Cx0001, Cx0002, Cx0003, Cx0004, Cx0005, Cx0006, Cx0007, Cx0008, Cx0009, Cx000A, Cx000B, Cx000C, Cx000D, Cx000E, Cx000F, Cx0010, Cx0011, Cx0012, Cx0013, Cx0014, Cx001A, Cx0020, Cx0100, - Cx0101, Cx0102, Cx0201, Cx0300, Cx0400, Cx0401, Cx0402, Cx0403, + Cx0101, Cx0102, Cx0201, Cx0202, Cx0203, Cx0204, + Cx0300, Cx0301, Cx0400, Cx0401, Cx0402, Cx0403, Cx0404, Cx0405, Cx0406, Cx0500, Cx0702, Cx0B01, Cx0B04, Cx0B05, CxEF00, CxFC01, CxFC40, CxFCC0, CxFCCC, }; @@ -197,7 +198,8 @@ const uint16_t Cx_cluster[] PROGMEM = { 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x001A, 0x0020, 0x0100, - 0x0101, 0x0102, 0x0201, 0x0300, 0x0400, 0x0401, 0x0402, 0x0403, + 0x0101, 0x0102, 0x0201, 0x0202, 0x0203, 0x0204, + 0x0300, 0x0301, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0500, 0x0702, 0x0B01, 0x0B04, 0x0B05, 0xEF00, 0xFC01, 0xFC40, 0xFCC0, 0xFCCC, }; @@ -271,7 +273,7 @@ class Z_plugin_attribute { public: Z_plugin_attribute(void) : - type(Zunk), multiplier(1), cluster(0xFFFF), attribute(0xFFFF) + type(Zunk), multiplier(1), cluster(0xFFFF), attribute(0xFFFF), manuf(0) {}; void set(uint16_t cluster, uint16_t attribute, const char *name, uint8_t type = Zunk) { @@ -285,6 +287,7 @@ public: int8_t multiplier; // multiplier, values 0, 1, 2, 5, 10, 100, -2, -5, -10, -100, uint16_t cluster; // cluster number uint16_t attribute; // attribute number + uint16_t manuf; // manufacturer code, 0 if none String name; // name of attribute once converted }; @@ -456,6 +459,7 @@ public: int8_t multiplier = 1; uint8_t map_offset = 0; Z_Data_Type map_type = Z_Data_Type::Z_Unknown; + uint16_t manuf = 0x0000; // manuf code (if any) }; Z_attribute_match Z_plugin_matchAttributeById(const char *model, const char *manufacturer, uint16_t cluster, uint16_t attribute); @@ -472,14 +476,17 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zuint8, Cx0000, 0x0003, Z_(HWVersion), Cm1, 0 }, { Zstring, Cx0000, 0x0004, Z_(Manufacturer), Cm1, 0 }, // record Manufacturer { Zstring, Cx0000, 0x0005, Z_(ModelId), Cm1, 0 }, // record Model - // { Zstring, Cx0000, 0x0004, Z_(Manufacturer), Cm1, Z_ManufKeep, 0 }, // record Manufacturer - // { Zstring, Cx0000, 0x0005, Z_(ModelId), Cm1, Z_ModelKeep, 0 }, // record Model { Zstring, Cx0000, 0x0006, Z_(DateCode), Cm1, 0 }, { Zenum8, Cx0000, 0x0007, Z_(PowerSource), Cm1, 0 }, { Zenum8, Cx0000, 0x0008, Z_(GenericDeviceClass), Cm1, 0 }, { Zenum8, Cx0000, 0x0009, Z_(GenericDeviceType), Cm1, 0 }, { Zoctstr, Cx0000, 0x000A, Z_(ProductCode), Cm1, 0 }, { Zstring, Cx0000, 0x000B, Z_(ProductURL), Cm1, 0 }, + { Zstring, Cx0000, 0x0010, Z_(LocationDescription), Cm1, 0 }, + { Zenum8, Cx0000, 0x0011, Z_(PhysicalEnvironment), Cm1, 0 }, + { Zbool, Cx0000, 0x0012, Z_(DeviceEnabled), Cm1, 0 }, + { Zmap8, Cx0000, 0x0013, Z_(AlarmMask), Cm1, 0 }, + { Zmap8, Cx0000, 0x0014, Z_(DisableLocalConfig), Cm1, 0 }, { Zstring, Cx0000, 0x4000, Z_(SWBuildID), Cm1, 0 }, { Zuint8, Cx0000, 0x4005, Z_(MullerLightMode), Cm1, 0 }, // Cmd 0x0A - Cluster 0x0000, attribute 0xFF01 - proprietary @@ -491,16 +498,40 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { // Power Configuration cluster { Zuint16, Cx0001, 0x0000, Z_(MainsVoltage), Cm1, 0 }, { Zuint8, Cx0001, 0x0001, Z_(MainsFrequency), Cm1, 0 }, + { Zmap8, Cx0001, 0x0010, Z_(MainsAlarmMask), Cm1, 0 }, + { Zuint16, Cx0001, 0x0011, Z_(MainsVoltageMinThreshold),Cm1, 0 }, + { Zuint16, Cx0001, 0x0012, Z_(MainsVoltageMaxThreshold),Cm1, 0 }, + { Zuint16, Cx0001, 0x0013, Z_(MainsVoltageDwellTripPoint),Cm1, 0 }, { Zuint8, Cx0001, 0x0020, Z_(BatteryVoltage), Cm_10, 0 }, // divide by 10 { Zuint8, Cx0001, 0x0021, Z_(BatteryPercentage), Cm_2, 0 }, // divide by 2 - // { Zuint8, Cx0001, 0x0021, Z_(BatteryPercentage), Cm_2, Z_BatteryPercentage, 0 }, // divide by 2 + { Zstring, Cx0001, 0x0030, Z_(BatteryManufacturer), Cm1, 0 }, + { Zenum8, Cx0001, 0x0031, Z_(BatterySize), Cm1, 0 }, + { Zuint16, Cx0001, 0x0032, Z_(BatteryAHrRating), Cm1, 0 }, + { Zuint8, Cx0001, 0x0033, Z_(BatteryQuantity), Cm1, 0 }, + { Zuint8, Cx0001, 0x0034, Z_(BatteryRatedVoltage), Cm1, 0 }, + { Zmap8, Cx0001, 0x0035, Z_(BatteryAlarmMask), Cm1, 0 }, + { Zuint8, Cx0001, 0x0036, Z_(BatteryVoltageMinThreshold), Cm1, 0 }, + { Zuint8, Cx0001, 0x0037, Z_(BatteryVoltageThreshold1), Cm1, 0 }, + { Zuint8, Cx0001, 0x0038, Z_(BatteryVoltageThreshold2), Cm1, 0 }, + { Zuint8, Cx0001, 0x0039, Z_(BatteryVoltageThreshold3), Cm1, 0 }, + { Zuint8, Cx0001, 0x003A, Z_(BatteryPercentageMinThreshold), Cm1, 0 }, + { Zuint8, Cx0001, 0x003B, Z_(BatteryPercentageThreshold1), Cm1, 0 }, + { Zuint8, Cx0001, 0x003C, Z_(BatteryPercentageThreshold2), Cm1, 0 }, + { Zuint8, Cx0001, 0x003D, Z_(BatteryPercentageThreshold3), Cm1, 0 }, + { Zmap32, Cx0001, 0x003E, Z_(BatteryAlarmState), Cm1, 0 }, + // { Zuint8, Cx0001, 0x0021, Z_(BatteryPercentage), Cm_2, Z_BatteryPercentage, 0 }, // divide by 2 // Device Temperature Configuration cluster { Zint16, Cx0002, 0x0000, Z_(CurrentTemperature), Cm1, 0 }, { Zint16, Cx0002, 0x0001, Z_(MinTempExperienced), Cm1, 0 }, { Zint16, Cx0002, 0x0002, Z_(MaxTempExperienced), Cm1, 0 }, { Zuint16, Cx0002, 0x0003, Z_(OverTempTotalDwell), Cm1, 0 }, - + { Zmap8, Cx0002, 0x0010, Z_(DeviceTempAlarmMask), Cm1, 0 }, + { Zint16, Cx0002, 0x0011, Z_(LowTempThreshold), Cm1, 0 }, + { Zint16, Cx0002, 0x0012, Z_(HighTempThreshold), Cm1, 0 }, + { Zuint24, Cx0002, 0x0013, Z_(LowTempDwellTripPoint), Cm1, 0 }, + { Zuint24, Cx0002, 0x0014, Z_(HighTempDwellTripPoint), Cm1, 0 }, + // Identify cluster { Zuint16, Cx0003, 0x0000, Z_(IdentifyTime), Cm1, 0 }, @@ -512,25 +543,31 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zuint8, Cx0005, 0x0001, Z_(CurrentScene), Cm1, 0 }, { Zuint16, Cx0005, 0x0002, Z_(CurrentGroup), Cm1, 0 }, { Zbool, Cx0005, 0x0003, Z_(SceneValid), Cm1, 0 }, + { Zmap8, Cx0005, 0x0004, Z_(SceneNameSupport), Cm1, 0 }, + { ZEUI64, Cx0005, 0x0005, Z_(LastConfiguredBy), Cm1, 0 }, //{ Zmap8, Cx0005, 0x0004, (NameSupport), Cm1, 0 }, // On/off cluster - { Zbool, Cx0006, 0x0000, Z_(Power), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_OnOff, power) }, - { Zenum8, Cx0006, 0x4003, Z_(StartUpOnOff), Cm1, 0 }, - { Zbool, Cx0006, 0x8000, Z_(Power), Cm1, 0 }, // See 7280 + { Zbool, Cx0006, 0x0000, Z_(Power), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_OnOff, power) }, + { Zenum8, Cx0006, 0x4003, Z_(StartUpOnOff), Cm1, 0 }, + { Zbool, Cx0006, 0x8000, Z_(Power), Cm1, 0 }, // See 7280 + { Zbool, Cx0006, 0x4000, Z_(OnOff), Cm1, 0 }, + { Zuint16, Cx0006, 0x4001, Z_(OnTime), Cm1, 0 }, + { Zuint16, Cx0006, 0x4002, Z_(OffWaitTime), Cm1, 0 }, // On/Off Switch Configuration cluster { Zenum8, Cx0007, 0x0000, Z_(SwitchType), Cm1, 0 }, + { Zenum8, Cx0007, 0x0010, Z_(SwitchActions), Cm1, 0 }, // Level Control cluster { Zuint8, Cx0008, 0x0000, Z_(Dimmer), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Light, dimmer) }, - { Zmap8, Cx0008, 0x000F, Z_(DimmerOptions), Cm1, 0 }, { Zuint16, Cx0008, 0x0001, Z_(DimmerRemainingTime), Cm1, 0 }, + { Zmap8, Cx0008, 0x000F, Z_(DimmerOptions), Cm1, 0 }, { Zuint16, Cx0008, 0x0010, Z_(OnOffTransitionTime), Cm1, 0 }, - // { Zuint8, Cx0008, 0x0011, (OnLevel), Cm1, 0 }, - // { Zuint16, Cx0008, 0x0012, (OnTransitionTime), Cm1, 0 }, - // { Zuint16, Cx0008, 0x0013, (OffTransitionTime), Cm1, 0 }, - // { Zuint16, Cx0008, 0x0014, (DefaultMoveRate), Cm1, 0 }, + { Zuint8, Cx0008, 0x0011, Z_(OnLevel), Cm1, 0 }, + { Zuint16, Cx0008, 0x0012, Z_(OnTransitionTime), Cm1, 0 }, + { Zuint16, Cx0008, 0x0013, Z_(OffTransitionTime), Cm1, 0 }, + { Zuint16, Cx0008, 0x0014, Z_(DefaultMoveRate), Cm1, 0 }, // Alarms cluster { Zuint16, Cx0009, 0x0000, Z_(AlarmCount), Cm1, 0 }, @@ -554,6 +591,14 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zuint16, Cx000B, 0x0002, Z_(LocationAge), Cm1, 0 }, { Zuint8, Cx000B, 0x0003, Z_(QualityMeasure), Cm1, 0 }, { Zuint8, Cx000B, 0x0004, Z_(NumberOfDevices), Cm1, 0 }, + { Zint16, Cx000B, 0x0010, Z_(Coordinate1), Cm1, 0 }, + { Zint16, Cx000B, 0x0011, Z_(Coordinate2), Cm1, 0 }, + { Zint16, Cx000B, 0x0012, Z_(Coordinate3), Cm1, 0 }, + { Zint16, Cx000B, 0x0013, Z_(LocationPower), Cm1, 0 }, + { Zuint16, Cx000B, 0x0014, Z_(PathLossExponent), Cm1, 0 }, + { Zuint16, Cx000B, 0x0015, Z_(ReportingPeriod), Cm1, 0 }, + { Zuint16, Cx000B, 0x0016, Z_(CalculationPeriod), Cm1, 0 }, + { Zuint8, Cx000B, 0x0016, Z_(NumberRSSIMeasurements), Cm1, 0 }, // Analog Input cluster // { 0xFF, Cx000C, 0x0004, (AnalogInActiveText), Cm1, 0 }, @@ -706,6 +751,38 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zuint32, Cx0101, 0x0005, Z_(DoorClosedEvents), Cm1, 0 }, { Zuint16, Cx0101, 0x0006, Z_(OpenPeriod), Cm1, 0 }, + // Door locks + { Zuint16, Cx0101, 0x0010, Z_(NumberOfLogRecordsSupported), Cm1, 0 }, + { Zuint16, Cx0101, 0x0011, Z_(NumberOfTotalUsersSupported), Cm1, 0 }, + { Zuint16, Cx0101, 0x0012, Z_(NumberOfPINUsersSupported), Cm1, 0 }, + { Zuint16, Cx0101, 0x0013, Z_(NumberOfRFIDUsersSupported), Cm1, 0 }, + { Zuint8, Cx0101, 0x0014, Z_(NumberOfWeekDaySchedulesSupportedPerUser), Cm1, 0 }, + { Zuint8, Cx0101, 0x0015, Z_(NumberOfYearDaySchedulesSupportedPerUser), Cm1, 0 }, + { Zuint8, Cx0101, 0x0016, Z_(NumberOfHolidaySchedulesSupported), Cm1, 0 }, + { Zuint8, Cx0101, 0x0017, Z_(MaxPINCodeLength), Cm1, 0 }, + { Zuint8, Cx0101, 0x0018, Z_(MinPINCodeLength), Cm1, 0 }, + { Zuint8, Cx0101, 0x0019, Z_(MaxRFIDCodeLength), Cm1, 0 }, + { Zuint8, Cx0101, 0x0011, Z_(MinRFIDCodeLength), Cm1, 0 }, + { Zbool, Cx0101, 0x0020, Z_(LockEnableLogging), Cm1, 0 }, + { Zstring, Cx0101, 0x0021, Z_(LockLanguage), Cm1, 0 }, + { Zuint8, Cx0101, 0x0022, Z_(LockLEDSettings), Cm1, 0 }, + { Zuint32, Cx0101, 0x0023, Z_(AutoRelockTime), Cm1, 0 }, + { Zuint8, Cx0101, 0x0024, Z_(LockSoundVolume), Cm1, 0 }, + { Zenum8, Cx0101, 0x0025, Z_(LockOperatingMode), Cm1, 0 }, + { Zmap16, Cx0101, 0x0026, Z_(LockSupportedOperatingModes), Cm1, 0 }, + { Zmap16, Cx0101, 0x0027, Z_(LockDefaultConfigurationRegister), Cm1, 0 }, + { Zbool, Cx0101, 0x0028, Z_(LockEnableLocalProgramming), Cm1, 0 }, + { Zbool, Cx0101, 0x0029, Z_(LockEnableOneTouchLocking), Cm1, 0 }, + { Zbool, Cx0101, 0x002A, Z_(LockEnableInsideStatusLED), Cm1, 0 }, + { Zbool, Cx0101, 0x002B, Z_(LockEnablePrivacyModeButton), Cm1, 0 }, + { Zmap16, Cx0101, 0x0040, Z_(LockAlarmMask), Cm1, 0 }, + { Zmap16, Cx0101, 0x0041, Z_(LockKeypadOperationEventMask), Cm1, 0 }, + { Zmap16, Cx0101, 0x0042, Z_(LockRFOperationEventMask), Cm1, 0 }, + { Zmap16, Cx0101, 0x0043, Z_(LockManualOperationEventMask), Cm1, 0 }, + { Zmap16, Cx0101, 0x0044, Z_(LockRFIDOperationEventMask), Cm1, 0 }, + { Zmap16, Cx0101, 0x0045, Z_(LockKeypadProgrammingEventMask), Cm1, 0 }, + { Zmap16, Cx0101, 0x0046, Z_(LockRFProgrammingEventMask), Cm1, 0 }, + { Zmap16, Cx0101, 0x0047, Z_(LockRFIDProgrammingEventMask), Cm1, 0 }, // Aqara Lumi Vibration Sensor { Zuint16, Cx0101, 0x0055, Z_(AqaraVibrationMode), Cm1, 0 }, { Zuint16, Cx0101, 0x0503, Z_(AqaraVibrationsOrAngle), Cm1, 0 }, @@ -742,13 +819,26 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { // Thermostat { Zint16, Cx0201, 0x0000, Z_(LocalTemperature), Cm_100, Z_MAPPING(Z_Data_Thermo, temperature) }, { Zint16, Cx0201, 0x0001, Z_(OutdoorTemperature),Cm_100, 0 }, + { Zmap8, Cx0201, 0x0002, Z_(ThermostatOccupancy), Cm1, 0 }, + { Zint16, Cx0201, 0x0003, Z_(AbsMinHeatSetpointLimit), Cm1, 0 }, + { Zint16, Cx0201, 0x0004, Z_(AbsMaxHeatSetpointLimit), Cm1, 0 }, + { Zint16, Cx0201, 0x0005, Z_(AbsMinCoolSetpointLimit), Cm1, 0 }, + { Zint16, Cx0201, 0x0006, Z_(AbsMaxCoolSetpointLimit), Cm1, 0 }, { Zuint8, Cx0201, 0x0007, Z_(PICoolingDemand), Cm1, Z_MAPPING(Z_Data_Thermo, th_setpoint) }, { Zuint8, Cx0201, 0x0008, Z_(PIHeatingDemand), Cm1, Z_MAPPING(Z_Data_Thermo, th_setpoint) }, + { Zmap8, Cx0201, 0x0009, Z_(HVACSystemTypeConfiguration), Cm1, 0 }, { Zint8, Cx0201, 0x0010, Z_(LocalTemperatureCalibration), Cm_10, 0 }, { Zint16, Cx0201, 0x0011, Z_(OccupiedCoolingSetpoint), Cm_100, Z_MAPPING(Z_Data_Thermo, temperature_target) }, { Zint16, Cx0201, 0x0012, Z_(OccupiedHeatingSetpoint), Cm_100, Z_MAPPING(Z_Data_Thermo, temperature_target) }, { Zint16, Cx0201, 0x0013, Z_(UnoccupiedCoolingSetpoint), Cm_100, 0 }, { Zint16, Cx0201, 0x0014, Z_(UnoccupiedHeatingSetpoint), Cm_100, 0 }, + { Zint16, Cx0201, 0x0015, Z_(MinHeatSetpointLimit), Cm1, 0 }, + { Zint16, Cx0201, 0x0016, Z_(MaxHeatSetpointLimit), Cm1, 0 }, + { Zint16, Cx0201, 0x0017, Z_(MinCoolSetpointLimit), Cm1, 0 }, + { Zint16, Cx0201, 0x0018, Z_(MaxCoolSetpointLimit), Cm1, 0 }, + { Zint8, Cx0201, 0x0019, Z_(MinSetpointDeadBand), Cm1, 0 }, + { Zmap8, Cx0201, 0x001D, Z_(ThermostatAlarmMask), Cm1, 0 }, + { Zenum8, Cx0201, 0x001E, Z_(ThermostatRunningMode), Cm1, 0 }, { Zmap8, Cx0201, 0x001A, Z_(RemoteSensing), Cm1, 0 }, { Zenum8, Cx0201, 0x001B, Z_(ControlSequenceOfOperation), Cm1, 0 }, { Zenum8, Cx0201, 0x001C, Z_(SystemMode), Cm1, 0 }, @@ -768,6 +858,25 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zuint8, Cx0201, 0xFFF0, Z_(ThSetpoint), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Thermo, th_setpoint) }, { Zint16, Cx0201, 0xFFF1, Z_(TempTarget), Cm_100 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Thermo, temperature_target) }, + // Fan Control + { Zenum8, Cx0202, 0x0000, Z_(FanMode), Cm1, 0 }, + { Zenum8, Cx0202, 0x0001, Z_(FanModeSequence), Cm1, 0 }, + + // Dehumidification Control + { Zuint8, Cx0203, 0x0000, Z_(RelativeHumidity), Cm1, 0 }, + { Zuint8, Cx0203, 0x0001, Z_(DehumidificationCooling), Cm1, 0 }, + { Zuint8, Cx0203, 0x0010, Z_(RHDehumidificationSetpoint), Cm1, 0 }, + { Zenum8, Cx0203, 0x0011, Z_(RelativeHumidityMode), Cm1, 0 }, + { Zenum8, Cx0203, 0x0012, Z_(DehumidificationLockout), Cm1, 0 }, + { Zuint8, Cx0203, 0x0013, Z_(DehumidificationHysteresis), Cm1, 0 }, + { Zuint8, Cx0203, 0x0014, Z_(DehumidificationMaxCool), Cm1, 0 }, + { Zenum8, Cx0203, 0x0015, Z_(RelativeHumidityDisplay), Cm1, 0 }, + + // Thermostat User Interface Con- figuration + { Zenum8, Cx0204, 0x0000, Z_(TemperatureDisplayMode), Cm1, 0 }, + { Zenum8, Cx0204, 0x0001, Z_(ThermostatKeypadLockout), Cm1, 0 }, + { Zenum8, Cx0204, 0x0002, Z_(ThermostatScheduleProgrammingVisibility), Cm1, 0 }, + // Color Control cluster { Zuint8, Cx0300, 0x0000, Z_(Hue), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Light, hue) }, { Zuint8, Cx0300, 0x0001, Z_(Sat), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Light, sat) }, @@ -788,6 +897,15 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zuint16, Cx0300, 0x0019, Z_(Primary3X), Cm1, 0 }, { Zuint16, Cx0300, 0x001A, Z_(Primary3Y), Cm1, 0 }, { Zuint8, Cx0300, 0x001B, Z_(Primary3Intensity), Cm1, 0 }, + { Zuint16, Cx0300, 0x0020, Z_(Primary4X), Cm1, 0 }, + { Zuint16, Cx0300, 0x0021, Z_(Primary4Y), Cm1, 0 }, + { Zuint8, Cx0300, 0x0022, Z_(Primary4Intensity), Cm1, 0 }, + { Zuint16, Cx0300, 0x0024, Z_(Primary5X), Cm1, 0 }, + { Zuint16, Cx0300, 0x0025, Z_(Primary5Y), Cm1, 0 }, + { Zuint8, Cx0300, 0x0026, Z_(Primary5Intensity), Cm1, 0 }, + { Zuint16, Cx0300, 0x0028, Z_(Primary6X), Cm1, 0 }, + { Zuint16, Cx0300, 0x0029, Z_(Primary6Y), Cm1, 0 }, + { Zuint8, Cx0300, 0x002A, Z_(Primary6Intensity), Cm1, 0 }, { Zuint16, Cx0300, 0x0030, Z_(WhitePointX), Cm1, 0 }, { Zuint16, Cx0300, 0x0031, Z_(WhitePointY), Cm1, 0 }, { Zuint16, Cx0300, 0x0032, Z_(ColorPointRX), Cm1, 0 }, @@ -799,6 +917,34 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zuint16, Cx0300, 0x003A, Z_(ColorPointBX), Cm1, 0 }, { Zuint16, Cx0300, 0x003B, Z_(ColorPointBY), Cm1, 0 }, { Zuint8, Cx0300, 0x003C, Z_(ColorPointBIntensity), Cm1, 0 }, + { Zuint16, Cx0300, 0x4000, Z_(EnhancedCurrentHue), Cm1, 0 }, + { Zenum8, Cx0300, 0x4001, Z_(EnhancedColorMode), Cm1, 0 }, + { Zuint8, Cx0300, 0x4002, Z_(ColorLoopActive), Cm1, 0 }, + { Zuint8, Cx0300, 0x4003, Z_(ColorLoopDirection), Cm1, 0 }, + { Zuint16, Cx0300, 0x4004, Z_(ColorLoopTime), Cm1, 0 }, + { Zuint16, Cx0300, 0x4005, Z_(ColorLoopStartEnhancedHue), Cm1, 0 }, + { Zuint16, Cx0300, 0x4006, Z_(ColorLoopStoredEnhancedHue), Cm1, 0 }, + { Zmap16, Cx0300, 0x400A, Z_(ColorCapabilities), Cm1, 0 }, + { Zuint16, Cx0300, 0x400B, Z_(ColorTempPhysicalMinMireds), Cm1, 0 }, + { Zuint16, Cx0300, 0x400C, Z_(ColorTempPhysicalMaxMireds), Cm1, 0 }, + + // Ballast Configuration + { Zuint8, Cx0301, 0x0000, Z_(BallastPhysicalMinLevel), Cm1, 0 }, + { Zuint8, Cx0301, 0x0001, Z_(BallastPhysicalMaxLevel), Cm1, 0 }, + { Zmap8, Cx0301, 0x0002, Z_(BallastStatus), Cm1, 0 }, + { Zuint8, Cx0301, 0x0010, Z_(BallastMinLevel), Cm1, 0 }, + { Zuint8, Cx0301, 0x0011, Z_(BallastMaxLevel), Cm1, 0 }, + { Zuint8, Cx0301, 0x0012, Z_(BallastPowerOnLevel), Cm1, 0 }, + { Zuint16, Cx0301, 0x0013, Z_(BallastPowerOnFadeTime), Cm1, 0 }, + { Zuint8, Cx0301, 0x0014, Z_(IntrinsicBallastFactor), Cm1, 0 }, + { Zuint8, Cx0301, 0x0015, Z_(BallastFactorAdjustment), Cm1, 0 }, + { Zuint8, Cx0301, 0x0020, Z_(BallastLampQuantity), Cm1, 0 }, + { Zstring, Cx0301, 0x0030, Z_(LampType), Cm1, 0 }, + { Zstring, Cx0301, 0x0031, Z_(LampManufacturer), Cm1, 0 }, + { Zuint24, Cx0301, 0x0032, Z_(LampRatedHours), Cm1, 0 }, + { Zuint24, Cx0301, 0x0033, Z_(LampBurnHours), Cm1, 0 }, + { Zmap8, Cx0301, 0x0034, Z_(LampAlarmMode), Cm1, 0 }, + { Zuint24, Cx0301, 0x0035, Z_(LampBurnHoursTripPoint), Cm1, 0 }, // Illuminance Measurement cluster { Zuint16, Cx0400, 0x0000, Z_(Illuminance), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_PIR, illuminance) }, // Illuminance (in Lux) @@ -851,12 +997,19 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { // Occupancy Sensing cluster { Zmap8, Cx0406, 0x0000, Z_(Occupancy), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_PIR, occupancy) }, // Occupancy (map8) { Zenum8, Cx0406, 0x0001, Z_(OccupancySensorType), Cm1, 0 }, // OccupancySensorType + { Zuint16, Cx0406, 0x0010, Z_(PIROccupiedToUnoccupiedDelay), Cm1, 0 }, + { Zuint16, Cx0406, 0x0011, Z_(PIRUnoccupiedToOccupiedDelay), Cm1, 0 }, + { Zuint8, Cx0406, 0x0012, Z_(PIRUnoccupiedToOccupiedThreshold), Cm1, 0 }, // { Zunk, Cx0406, 0xFFFF, Z_(), Cm0, 0 }, // Remove all other values // IAS Cluster (Intruder Alarm System) { Zenum8, Cx0500, 0x0000, Z_(ZoneState), Cm1, 0 }, // Occupancy (map8) { Zenum16, Cx0500, 0x0001, Z_(ZoneType), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_type) }, // Zone type for sensor { Zmap16, Cx0500, 0x0002, Z_(ZoneStatus), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_status) }, // Zone status for sensor + { ZEUI64, Cx0500, 0x0010, Z_(IASCIEAddress), Cm1, 0 }, + { Zuint8, Cx0500, 0x0011, Z_(ZoneID), Cm1, 0 }, + { Zuint8, Cx0500, 0x0012, Z_(NumberOfZoneSensitivityLevelsSupported), Cm1, 0 }, + { Zuint8, Cx0500, 0x0013, Z_(CurrentZoneSensitivityLevel), Cm1, 0 }, { Zuint8, Cx0500, 0xFFF0 + ZA_CIE, Z_(CIE), Cm1, 0 }, { Zuint8, Cx0500, 0xFFF0 + ZA_PIR, Z_(Occupancy), Cm1, 0 }, // normally converted to the actual Occupancy 0406/0000 { Zuint8, Cx0500, 0xFFF0 + ZA_Contact, Z_(Contact), Cm1, Z_MAPPING(Z_Data_Alarm, zone_status) }, // We fit the first bit in the LSB @@ -886,11 +1039,133 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zint24, Cx0B01, 0x000E, Z_(PowerThreshold), Cm1, 0 }, // Electrical Measurement cluster + { Zmap32, Cx0B04, 0x0000, Z_(ElectricalMeasurementType), Cm1, 0 }, + { Zint16, Cx0B04, 0x0100, Z_(DCVoltage), Cm1, 0 }, + { Zint16, Cx0B04, 0x0101, Z_(DCVoltageMin), Cm1, 0 }, + { Zint16, Cx0B04, 0x0102, Z_(DCVoltageMax), Cm1, 0 }, + { Zint16, Cx0B04, 0x0103, Z_(DCCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x0104, Z_(DCCurrentMin), Cm1, 0 }, + { Zint16, Cx0B04, 0x0105, Z_(DCCurrentMax), Cm1, 0 }, + { Zint16, Cx0B04, 0x0106, Z_(DCPower), Cm1, 0 }, + { Zint16, Cx0B04, 0x0107, Z_(DCPowerMin), Cm1, 0 }, + { Zint16, Cx0B04, 0x0108, Z_(DCPowerMax), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0200, Z_(DCVoltageMultiplier), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0201, Z_(DCVoltageDivisor), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0202, Z_(DCCurrentMultiplier), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0203, Z_(DCCurrentDivisor), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0204, Z_(DCPowerMultiplier), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0205, Z_(DCPowerDivisor), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0300, Z_(ACFrequency), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0301, Z_(ACFrequencyMin), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0302, Z_(ACFrequencyMax), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0303, Z_(NeutralCurrent), Cm1, 0 }, + { Zint32, Cx0B04, 0x0304, Z_(TotalActivePower), Cm1, 0 }, + { Zint32, Cx0B04, 0x0305, Z_(TotalReactivePower), Cm1, 0 }, + { Zuint32, Cx0B04, 0x0306, Z_(TotalApparentPower), Cm1, 0 }, + { Zint16, Cx0B04, 0x0307, Z_(Measured1stHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x0308, Z_(Measured3rdHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x0309, Z_(Measured5thHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x030A, Z_(Measured7thHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x030B, Z_(Measured9thHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x030C, Z_(Measured11thHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x030D, Z_(MeasuredPhase1stHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x030E, Z_(MeasuredPhase3rdHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x030F, Z_(MeasuredPhase5thHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x0310, Z_(MeasuredPhase7thHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x0311, Z_(MeasuredPhase9thHarmonicCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x0312, Z_(MeasuredPhase11thHarmonicCurrent), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0400, Z_(ACFrequencyMultiplier), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0401, Z_(ACFrequencyDivisor), Cm1, 0 }, + { Zuint32, Cx0B04, 0x0402, Z_(PowerMultiplier), Cm1, 0 }, + { Zuint32, Cx0B04, 0x0403, Z_(PowerDivisor), Cm1, 0 }, + { Zint8, Cx0B04, 0x0404, Z_(HarmonicCurrentMultiplier), Cm1, 0 }, + { Zint8, Cx0B04, 0x0405, Z_(PhaseHarmonicCurrentMultiplier), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0501, Z_(LineCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x0502, Z_(ActiveCurrent), Cm1, 0 }, + { Zint16, Cx0B04, 0x0503, Z_(ReactiveCurrent), Cm1, 0 }, { Zuint16, Cx0B04, 0x0505, Z_(RMSVoltage), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Plug, mains_voltage) }, + { Zuint16, Cx0B04, 0x0506, Z_(RMSVoltageMin), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0507, Z_(RMSVoltageMax), Cm1, 0 }, { Zuint16, Cx0B04, 0x0508, Z_(RMSCurrent), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0509, Z_(RMSCurrentMin), Cm1, 0 }, + { Zuint16, Cx0B04, 0x050A, Z_(RMSCurrentMax), Cm1, 0 }, { Zint16, Cx0B04, 0x050B, Z_(ActivePower), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Plug, mains_power) }, + { Zuint16, Cx0B04, 0x050C, Z_(ActivePowerMin), Cm1, 0 }, + { Zuint16, Cx0B04, 0x050D, Z_(ActivePowerMax), Cm1, 0 }, { Zint16, Cx0B04, 0x050E, Z_(ReactivePower), Cm1, 0 }, { Zint16, Cx0B04, 0x050F, Z_(ApparentPower), Cm1, 0 }, + { Zint8, Cx0B04, 0x0510, Z_(PowerFactor), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0511, Z_(AverageRMSVoltageMeasurementPeriod), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0512, Z_(AverageRMSOverVoltageCounter), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0513, Z_(AverageRMSUnderVoltageCounter), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0514, Z_(RMSExtremeOverVoltagePeriod), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0515, Z_(RMSExtremeUnderVoltagePeriod), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0516, Z_(RMSVoltageSagPeriod), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0517, Z_(RMSVoltageSwellPeriod), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0600, Z_(ACVoltageMultiplier), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0601, Z_(ACVoltageDivisor), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0602, Z_(ACCurrentMultiplier), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0603, Z_(ACCurrentDivisor), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0604, Z_(ACPowerMultiplier), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0605, Z_(ACPowerDivisor), Cm1, 0 }, + { Zmap8, Cx0B04, 0x0700, Z_(DCOverloadAlarmsMask), Cm1, 0 }, + { Zint16, Cx0B04, 0x0701, Z_(DCVoltageOverload), Cm1, 0 }, + { Zint16, Cx0B04, 0x0702, Z_(DCCurrentOverload), Cm1, 0 }, + { Zmap16, Cx0B04, 0x0800, Z_(ACAlarmsMask), Cm1, 0 }, + { Zint16, Cx0B04, 0x0801, Z_(ACVoltageOverload), Cm1, 0 }, + { Zint16, Cx0B04, 0x0802, Z_(ACCurrentOverload), Cm1, 0 }, + { Zint16, Cx0B04, 0x0803, Z_(ACActivePowerOverload), Cm1, 0 }, + { Zint16, Cx0B04, 0x0804, Z_(ACReactivePowerOverload), Cm1, 0 }, + { Zint16, Cx0B04, 0x0805, Z_(AverageRMSOverVoltage), Cm1, 0 }, + { Zint16, Cx0B04, 0x0806, Z_(AverageRMSUnderVoltage), Cm1, 0 }, + { Zint16, Cx0B04, 0x0807, Z_(RMSExtremeOverVoltage), Cm1, 0 }, + { Zint16, Cx0B04, 0x0808, Z_(RMSExtremeUnderVoltage), Cm1, 0 }, + { Zint16, Cx0B04, 0x0809, Z_(RMSVoltageSag), Cm1, 0 }, + { Zint16, Cx0B04, 0x080A, Z_(RMSVoltageSwell), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0901, Z_(LineCurrentPhB), Cm1, 0 }, + { Zint16, Cx0B04, 0x0902, Z_(ActiveCurrentPhB), Cm1, 0 }, + { Zint16, Cx0B04, 0x0903, Z_(ReactiveCurrentPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0905, Z_(RMSVoltagePhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0906, Z_(RMSVoltageMinPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0907, Z_(RMSVoltageMaxPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0908, Z_(RMSCurrentPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0909, Z_(RMSCurrentMinPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x090A, Z_(RMSCurrentMaxPhB), Cm1, 0 }, + { Zint16, Cx0B04, 0x090B, Z_(ActivePowerPhB), Cm1, 0 }, + { Zint16, Cx0B04, 0x090C, Z_(ActivePowerMinPhB), Cm1, 0 }, + { Zint16, Cx0B04, 0x090D, Z_(ActivePowerMaxPhB), Cm1, 0 }, + { Zint16, Cx0B04, 0x090E, Z_(ReactivePowerPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x090F, Z_(ApparentPowerPhB), Cm1, 0 }, + { Zint8, Cx0B04, 0x0910, Z_(PowerFactorPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0911, Z_(AverageRMSVoltageMeasurementPeriodPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0912, Z_(AverageRMSOverVoltageCounterPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0913, Z_(AverageRMSUnderVoltageCounterPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0914, Z_(RMSExtremeOverVoltagePeriodPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0915, Z_(RMSExtremeUnderVoltagePeriodPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0916, Z_(RMSVoltageSagPeriodPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0917, Z_(RMSVoltageSwellPeriodPhB), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A01, Z_(LineCurrentPhC), Cm1, 0 }, + { Zint16, Cx0B04, 0x0A02, Z_(ActiveCurrentPhC), Cm1, 0 }, + { Zint16, Cx0B04, 0x0A03, Z_(ReactiveCurrentPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A05, Z_(RMSVoltagePhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A06, Z_(RMSVoltageMinPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A07, Z_(RMSVoltageMaxPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A08, Z_(RMSCurrentPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A09, Z_(RMSCurrentMinPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A0A, Z_(RMSCurrentMaxPhC), Cm1, 0 }, + { Zint16, Cx0B04, 0x0A0B, Z_(ActivePowerPhC), Cm1, 0 }, + { Zint16, Cx0B04, 0x0A0C, Z_(ActivePowerMinPhC), Cm1, 0 }, + { Zint16, Cx0B04, 0x0A0D, Z_(ActivePowerMaxPhC), Cm1, 0 }, + { Zint16, Cx0B04, 0x0A0E, Z_(ReactivePowerPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A0F, Z_(ApparentPowerPhC), Cm1, 0 }, + { Zint8, Cx0B04, 0x0A10, Z_(PowerFactorPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A11, Z_(AverageRMSVoltageMeasurementPeriodPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A12, Z_(AverageRMSOverVoltageCounterPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A13, Z_(AverageRMSUnderVoltageCounterPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A14, Z_(RMSExtremeOverVoltagePeriodPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A15, Z_(RMSExtremeUnderVoltagePeriodPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A16, Z_(RMSVoltageSagPeriodPhC), Cm1, 0 }, + { Zuint16, Cx0B04, 0x0A17, Z_(RMSVoltageSwellPeriodPhC), Cm1, 0 }, // Diagnostics cluster { Zuint16, Cx0B05, 0x0000, Z_(NumberOfResets), Cm1, 0 }, diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_2_converters.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_2_converters.ino index 85faa6d85..5a7331b9e 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_2_converters.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_5_2_converters.ino @@ -1509,6 +1509,7 @@ void Z_parseAttributeKey_inner(uint16_t shortaddr, class Z_attribute & attr, uin attr.setKeyId(matched_attr.cluster, matched_attr.attribute); attr.attr_type = matched_attr.zigbee_type; attr.attr_multiplier = matched_attr.multiplier; + attr.manuf = matched_attr.manuf; } } } else { @@ -1516,6 +1517,7 @@ void Z_parseAttributeKey_inner(uint16_t shortaddr, class Z_attribute & attr, uin Z_attribute_match matched_attr = Z_findAttributeMatcherById(shortaddr, attr.key.id.cluster, attr.key.id.attr_id, false); if (matched_attr.found()) { attr.attr_type = matched_attr.zigbee_type; + attr.manuf = matched_attr.manuf; } } } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_6_plugin.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_6_plugin.ino index 7db2c99fb..094ec3248 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_6_plugin.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_6_plugin.ino @@ -19,6 +19,18 @@ #ifdef USE_ZIGBEE +const char Z_MUL[] PROGMEM = "mul:"; +const char Z_DIV[] PROGMEM = "div:"; +const char Z_MANUF[] PROGMEM = "manuf:"; + +char * Z_subtoken(char * token, const char * prefix) { + size_t prefix_len = strlen_P(prefix); + if (!strncmp_P(token, prefix, prefix_len)) { + return token + prefix_len; + } + return nullptr; +} + // global singleton Z_plugin_templates g_plugin_templates; @@ -48,6 +60,7 @@ Z_attribute_match Z_plugin_matchAttributeById(const char *model, const char *man attr.name = attr_tmpl->name.c_str(); attr.zigbee_type = attr_tmpl->type; attr.multiplier = attr_tmpl->multiplier; + attr.manuf = attr_tmpl->manuf; } return attr; } @@ -67,6 +80,7 @@ Z_attribute_match Z_plugin_matchAttributeByName(const char *model, const char *m attr.name = attr_tmpl->name.c_str(); attr.zigbee_type = attr_tmpl->type; attr.multiplier = attr_tmpl->multiplier; + attr.manuf = attr_tmpl->manuf; } } return attr; @@ -205,6 +219,7 @@ bool ZbLoad(const char *filename_raw) { char * delimiter_equal = strchr(token, '='); if (delimiter_equal == nullptr) { + // NORMAL ATTRIBUTE // token is of from '0000/0000' or '0000/0000%00' char * delimiter_slash = strchr(token, '/'); char * delimiter_percent = strchr(token, '%'); @@ -215,6 +230,9 @@ bool ZbLoad(const char *filename_raw) { uint16_t attr_id = 0xFFFF; uint16_t cluster_id = 0xFFFF; uint8_t type_id = Zunk; + int8_t multiplier = 1; + char * name = nullptr; + uint16_t manuf = 0; cluster_id = strtoul(token, &delimiter_slash, 16); if (!delimiter_percent) { @@ -223,19 +241,44 @@ bool ZbLoad(const char *filename_raw) { attr_id = strtoul(delimiter_slash+1, &delimiter_percent, 16); type_id = Z_getTypeByName(delimiter_percent+1); } - // name of the attribute + // NAME of the attribute token = strtok_r(rest, ",", &rest); if (token == nullptr) { AddLog(LOG_LEVEL_INFO, "ZIG: ZbLoad '%s' ignore missing name '%s'", filename_raw, buf_line); continue; } + name = token; + // ADDITIONAL ELEMENTS? + // Ex: `manuf:1037` + while (token = strtok_r(rest, ",", &rest)) { + char * sub_token; + // look for multiplier + if (sub_token = Z_subtoken(token, Z_MUL)) { + multiplier = strtoul(sub_token, nullptr, 10); + } + // look for divider + else if (sub_token = Z_subtoken(token, Z_DIV)) { + multiplier = - strtoul(sub_token, nullptr, 10); // negative to indicate divider + } + // look for `manuf:HHHH` + else if (sub_token = Z_subtoken(token, Z_MANUF)) { + manuf = strtoul(sub_token, nullptr, 16); + } + else { + AddLog(LOG_LEVEL_DEBUG, "ZIG: ZbLoad unrecognized modifier '%s'", token); + } + } + // token contains the name of the attribute Z_plugin_attribute & plugin_attr = tmpl->attributes.addToLast(); plugin_attr.cluster = cluster_id; plugin_attr.attribute = attr_id; plugin_attr.type = type_id; - plugin_attr.name = token; + plugin_attr.name = name; + plugin_attr.multiplier = multiplier; + plugin_attr.manuf = manuf; } else { + // ATTRIBUTE SYNONYM // token is of from '0000/0000=0000/0000,1' char * rest2 = token; char * tok2 = strtok_r(rest2, "=", &rest2); @@ -246,11 +289,22 @@ bool ZbLoad(const char *filename_raw) { char * delimiter_slash2 = strchr(tok2, '/'); uint16_t new_cluster_id = strtoul(tok2, &delimiter_slash2, 16); uint16_t new_attr_id = strtoul(delimiter_slash2+1, nullptr, 16); - // multiplier - token = strtok_r(rest, ",", &rest); int8_t multiplier = 1; - if (token != nullptr) { - multiplier = strtol(token, nullptr, 10); + + // ADDITIONAL ELEMENTS? + while (token = strtok_r(rest, ",", &rest)) { + char * sub_token; + // look for multiplier + if (sub_token = Z_subtoken(token, Z_MUL)) { + multiplier = strtoul(sub_token, nullptr, 10); + } + // look for divider + else if (sub_token = Z_subtoken(token, Z_DIV)) { + multiplier = - strtoul(sub_token, nullptr, 10); // negative to indicate divider + } + else { + AddLog(LOG_LEVEL_DEBUG, "ZIG: ZbLoad unrecognized modifier '%s'", token); + } } // create the synonym Z_attribute_synonym & syn = tmpl->synonyms.addToLast(); @@ -305,21 +359,35 @@ bool ZbUnload(const char *filename_raw) { return false; } +// append modifiers like mul/div/manuf +void Z_AppendModifiers(char * buf, size_t buf_len, int8_t multiplier, uint16_t manuf) { + if (multiplier != 0 && multiplier != 1) { + ext_snprintf_P(buf, buf_len, "%s,%s%i", buf, multiplier > 0 ? Z_MUL : Z_DIV, multiplier > 0 ? multiplier : -multiplier); + } + if (manuf) { + ext_snprintf_P(buf, buf_len, "%s,%s%04X", buf, Z_MANUF, manuf); + } +} + // Dump the ZbLoad structure in a format compatible with ZbLoad void ZbLoadDump(void) { + char buf[96]; AddLog(LOG_LEVEL_INFO, "ZIG: ZbLoad dump all current information"); AddLog(LOG_LEVEL_INFO, "====> START"); for (const Z_plugin_template & tmpl : g_plugin_templates) { if (tmpl.filename != nullptr) { - AddLog(LOG_LEVEL_INFO, "# imported from '%s'", tmpl.filename); + ext_snprintf_P(buf, sizeof(buf), "# imported from '%s'", tmpl.filename); + AddLog(LOG_LEVEL_INFO, PSTR("%s"), buf); } // marchers if (tmpl.matchers.length() == 0) { - AddLog(LOG_LEVEL_INFO, ": # no matcher"); + ext_snprintf_P(buf, sizeof(buf), ": # no matcher"); + AddLog(LOG_LEVEL_INFO, PSTR("%s"), buf); } else { for (const Z_plugin_matcher & matcher : tmpl.matchers) { - AddLog(LOG_LEVEL_INFO, ":%s,%s", matcher.model.c_str(), matcher.manufacturer.c_str()); + ext_snprintf_P(buf, sizeof(buf), ":%s,%s", matcher.model.c_str(), matcher.manufacturer.c_str()); + AddLog(LOG_LEVEL_INFO, PSTR("%s"), buf); } } // attributes @@ -328,16 +396,20 @@ void ZbLoadDump(void) { AddLog(LOG_LEVEL_INFO, ""); } else { for (const Z_plugin_attribute & attr : tmpl.attributes) { - if (attr.type == Zunk) { - AddLog(LOG_LEVEL_INFO, "%04X/%04X,%s", attr.cluster, attr.attribute, attr.name.c_str()); - } else { - char type[16]; - Z_getTypeByNumber(type, sizeof(type), attr.type); - AddLog(LOG_LEVEL_INFO, "%04X/%04X%%%s,%s", attr.cluster, attr.attribute, type, attr.name.c_str()); + ext_snprintf_P(buf, sizeof(buf), "%04X/%04X", attr.cluster, attr.attribute); + // add type if known + if (attr.type != Zunk) { + char type_str[16]; + Z_getTypeByNumber(type_str, sizeof(type_str), attr.type); + ext_snprintf_P(buf, sizeof(buf), "%s%%%s", buf, type_str); } + Z_AppendModifiers(buf, sizeof(buf), attr.multiplier, attr.manuf); + AddLog(LOG_LEVEL_INFO, PSTR("%s"), buf); } for (const Z_attribute_synonym & syn : tmpl.synonyms) { - AddLog(LOG_LEVEL_INFO, "%04X/%04X=%04X/%04X,%i", syn.cluster, syn.attribute, syn.new_cluster, syn.new_attribute, syn.multiplier); + ext_snprintf_P(buf, sizeof(buf), "%04X/%04X=%04X/%04X", syn.cluster, syn.attribute, syn.new_cluster, syn.new_attribute); + Z_AppendModifiers(buf, sizeof(buf), syn.multiplier, 0); + AddLog(LOG_LEVEL_INFO, PSTR("%s"), buf); } } } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino index a5a3735be..378062153 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino @@ -352,6 +352,15 @@ void ZbSendReportWrite(class JsonParserToken val_pubwrite, class ZCLFrame & zcl) return; } + // check for manuf code + if (attr.manuf) { + if (zcl.manuf != 0 && zcl.manuf != attr.manuf) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "conflicting manuf code 0x%04X (was 0x%04X)"), attr.manuf, zcl.manuf); + } else { + zcl.manuf = attr.manuf; + } + } + } else { if (attr.key_is_str) { Response_P(PSTR("{\"%s\":\"%s'%s'\"}"), XdrvMailbox.command, PSTR(D_ZIGBEE_UNKNOWN_ATTRIBUTE " "), key.getStr()); @@ -646,6 +655,14 @@ void ZbSendRead(JsonParserToken val_attr, ZCLFrame & zcl) { if (attrs) { free(attrs); } return; } + // check for manuf code + if (matched_attr.manuf) { + if (zcl.manuf != 0 && zcl.manuf != matched_attr.manuf) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "conflicting manuf code 0x%04X (was 0x%04X)"), matched_attr.manuf, zcl.manuf); + } else { + zcl.manuf = matched_attr.manuf; + } + } } if (!found) { AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE D_ZIGBEE_UNKNWON_ATTRIBUTE), key.getStr()); diff --git a/tasmota/zigbee/giex_water.zb b/tasmota/zigbee/giex_water.zb index fbc5f2fd9..b36ffd6f9 100644 --- a/tasmota/zigbee/giex_water.zb +++ b/tasmota/zigbee/giex_water.zb @@ -9,6 +9,6 @@ EF00/0267,CycleIrrigationNumTimes # number of cycle irrigation times, set to 0 EF00/0268,IrrigationTarget # duration in minutes or capacity in Liters (depending on mode) EF00/0269,CycleIrrigationInterval # cycle irrigation interval (minutes, max 1440) EF00/026A,CurrentTemperature # (value ignored because isn't a valid tempurature reading. Misdocumented and usage unclear) -EF00/026C=0001/0021,2 # match to BatteryPercentage +EF00/026C=0001/0021,mul:2 # match to BatteryPercentage EF00/026F,WaterConsumed # water consumed (Litres) EF00/0372,LastIrrigationDuration # (string) Ex: "00:01:10,0" diff --git a/tasmota/zigbee/legacy_tuya.zb b/tasmota/zigbee/legacy_tuya.zb new file mode 100644 index 000000000..06490e363 --- /dev/null +++ b/tasmota/zigbee/legacy_tuya.zb @@ -0,0 +1,31 @@ +#Z2Tv1 +# DEPRECATED +# Legacy Tuya attributes from before Zigbee Device plugins +# Use only if you need to legacy behavior, prefer device specific +: # apply to all devices +EF00/0070,TuyaScheduleWorkdays +EF00/0071,TuyaScheduleHolidays +EF00/0101,Power +EF00/0102,Power2 +EF00/0103,Power3 +EF00/0104,Power4 +EF00/0107,TuyaChildLock +EF00/0112,TuyaWindowDetection +EF00/0114,TuyaValveDetection +EF00/0174,TuyaAutoLock +EF00/0202,TuyaTempTarget +EF00/0202=0201/FFF1,mul:10 # TempTarget +EF00/0203=0402/0000,mul:10 # Temperature +EF00/0215,TuyaBattery +EF00/0266,TuyaMinTemp +EF00/0267,TuyaMaxTemp +EF00/0269,TuyaBoostTime +EF00/026B,TuyaComfortTemp +EF00/026C,TuyaEcoTemp +EF00/026D=0201/FFF0 +EF00/0272,TuyaAwayTemp +EF00/0275,TuyaAwayDays +EF00/0404,TuyaPreset +EF00/0405,TuyaFanMode +EF00/046A,TuyaForceMode +EF00/046F,TuyaWeekSelect