diff --git a/tasmota/xdrv_23_zigbee_5__constants.ino b/tasmota/xdrv_23_zigbee_5__constants.ino index a5c223b2b..0a3926db7 100644 --- a/tasmota/xdrv_23_zigbee_5__constants.ino +++ b/tasmota/xdrv_23_zigbee_5__constants.ino @@ -299,6 +299,7 @@ const char Z_strings[] PROGMEM = "ModelId" "\x00" "MotorStepSize" "\x00" "Movement" "\x00" + "MullerLightMode" "\x00" "MultiApplicationType" "\x00" "MultiDescription" "\x00" "MultiInApplicationType" "\x00" @@ -493,7 +494,6 @@ const char Z_strings[] PROGMEM = "xxyyyyzzzz" "\x00" "xxyyzzzz" "\x00" ; - enum Z_offsets { Zo_ = 0, Zo_00 = 1, @@ -720,199 +720,200 @@ enum Z_offsets { Zo_ModelId = 3604, Zo_MotorStepSize = 3612, Zo_Movement = 3626, - Zo_MultiApplicationType = 3635, - Zo_MultiDescription = 3656, - Zo_MultiInApplicationType = 3673, - Zo_MultiInDescription = 3696, - Zo_MultiInNumberOfStates = 3715, - Zo_MultiInOutOfService = 3737, - Zo_MultiInReliability = 3757, - Zo_MultiInStatusFlags = 3776, - Zo_MultiInValue = 3795, - Zo_MultiNumberOfStates = 3808, - Zo_MultiOutApplicationType = 3828, - Zo_MultiOutDescription = 3852, - Zo_MultiOutNumberOfStates = 3872, - Zo_MultiOutOfService = 3895, - Zo_MultiOutOutOfService = 3913, - Zo_MultiOutReliability = 3934, - Zo_MultiOutRelinquishDefault = 3954, - Zo_MultiOutStatusFlags = 3980, - Zo_MultiOutValue = 4000, - Zo_MultiReliability = 4014, - Zo_MultiRelinquishDefault = 4031, - Zo_MultiStatusFlags = 4054, - Zo_MultiValue = 4071, - Zo_MultipleScheduling = 4082, - Zo_NumberOfDevices = 4101, - Zo_NumberOfPrimaries = 4117, - Zo_NumberOfResets = 4135, - Zo_NumberofActuationsLift = 4150, - Zo_NumberofActuationsTilt = 4173, - Zo_Occupancy = 4196, - Zo_OccupancySensorType = 4206, - Zo_OccupiedCoolingSetpoint = 4226, - Zo_OccupiedHeatingSetpoint = 4250, - Zo_OnOffTransitionTime = 4274, - Zo_OpenPeriod = 4294, - Zo_OppleMode = 4305, - Zo_OutdoorTemperature = 4315, - Zo_OverTempTotalDwell = 4334, - Zo_PICoolingDemand = 4353, - Zo_PIHeatingDemand = 4369, - Zo_POD = 4385, - Zo_Panic = 4389, - Zo_PartNumber = 4395, - Zo_PersistentMemoryWrites = 4406, - Zo_PersonalAlarm = 4429, - Zo_PhysicalClosedLimit = 4443, - Zo_PhysicalClosedLimitLift = 4463, - Zo_PhysicalClosedLimitTilt = 4487, - Zo_Power = 4511, - Zo_Power2 = 4517, - Zo_Power3 = 4524, - Zo_Power4 = 4531, - Zo_PowerOffEffect = 4538, - Zo_PowerOnRecall = 4553, - Zo_PowerOnTimer = 4567, - Zo_PowerSource = 4580, - Zo_PowerThreshold = 4592, - Zo_Pressure = 4607, - Zo_PressureMaxMeasuredValue = 4616, - Zo_PressureMaxScaledValue = 4641, - Zo_PressureMinMeasuredValue = 4664, - Zo_PressureMinScaledValue = 4689, - Zo_PressureScale = 4712, - Zo_PressureScaledTolerance = 4726, - Zo_PressureScaledValue = 4750, - Zo_PressureTolerance = 4770, - Zo_Primary1Intensity = 4788, - Zo_Primary1X = 4806, - Zo_Primary1Y = 4816, - Zo_Primary2Intensity = 4826, - Zo_Primary2X = 4844, - Zo_Primary2Y = 4854, - Zo_Primary3Intensity = 4864, - Zo_Primary3X = 4882, - Zo_Primary3Y = 4892, - Zo_ProductCode = 4902, - Zo_ProductRevision = 4914, - Zo_ProductURL = 4930, - Zo_QualityMeasure = 4941, - Zo_RMSCurrent = 4956, - Zo_RMSVoltage = 4967, - Zo_ReactivePower = 4978, - Zo_RecallScene = 4992, - Zo_RemainingTime = 5004, - Zo_RemoteSensing = 5018, - Zo_RemoveAllGroups = 5032, - Zo_RemoveAllScenes = 5048, - Zo_RemoveGroup = 5064, - Zo_RemoveScene = 5076, - Zo_ResetAlarm = 5088, - Zo_ResetAllAlarms = 5099, - Zo_SWBuildID = 5114, - Zo_Sat = 5124, - Zo_SatMove = 5128, - Zo_SatStep = 5136, - Zo_SceneCount = 5144, - Zo_SceneValid = 5155, - Zo_ScheduleMode = 5166, - Zo_SeaPressure = 5179, - Zo_ShortPollInterval = 5191, - Zo_Shutter = 5209, - Zo_ShutterClose = 5217, - Zo_ShutterLift = 5230, - Zo_ShutterOpen = 5242, - Zo_ShutterStop = 5254, - Zo_ShutterTilt = 5266, - Zo_SoftwareRevision = 5278, - Zo_StackVersion = 5295, - Zo_StandardTime = 5308, - Zo_StartUpOnOff = 5321, - Zo_Status = 5334, - Zo_StoreScene = 5341, - Zo_SwitchType = 5352, - Zo_SystemMode = 5363, - Zo_TRVBoost = 5374, - Zo_TRVChildProtection = 5383, - Zo_TRVMirrorDisplay = 5402, - Zo_TRVMode = 5419, - Zo_TRVWindowOpen = 5427, - Zo_TempTarget = 5441, - Zo_Temperature = 5452, - Zo_TemperatureMaxMeasuredValue = 5464, - Zo_TemperatureMinMeasuredValue = 5492, - Zo_TemperatureTolerance = 5520, - Zo_TerncyDuration = 5541, - Zo_TerncyRotate = 5556, - Zo_ThSetpoint = 5569, - Zo_Time = 5580, - Zo_TimeEpoch = 5585, - Zo_TimeStatus = 5595, - Zo_TimeZone = 5606, - Zo_TotalProfileNum = 5615, - Zo_TuyaAutoLock = 5631, - Zo_TuyaAwayDays = 5644, - Zo_TuyaAwayTemp = 5657, - Zo_TuyaBattery = 5670, - Zo_TuyaBoostTime = 5682, - Zo_TuyaChildLock = 5696, - Zo_TuyaComfortTemp = 5710, - Zo_TuyaEcoTemp = 5726, - Zo_TuyaFanMode = 5738, - Zo_TuyaForceMode = 5750, - Zo_TuyaMaxTemp = 5764, - Zo_TuyaMinTemp = 5776, - Zo_TuyaPreset = 5788, - Zo_TuyaScheduleHolidays = 5799, - Zo_TuyaScheduleWorkdays = 5820, - Zo_TuyaTempTarget = 5841, - Zo_TuyaValveDetection = 5856, - Zo_TuyaValvePosition = 5875, - Zo_TuyaWeekSelect = 5893, - Zo_TuyaWindowDetection = 5908, - Zo_UnoccupiedCoolingSetpoint = 5928, - Zo_UnoccupiedHeatingSetpoint = 5954, - Zo_UtilityName = 5980, - Zo_ValidUntilTime = 5992, - Zo_ValvePosition = 6007, - Zo_VelocityLift = 6021, - Zo_ViewGroup = 6034, - Zo_ViewScene = 6044, - Zo_Water = 6054, - Zo_WhitePointX = 6060, - Zo_WhitePointY = 6072, - Zo_WindowCoveringType = 6084, - Zo_X = 6103, - Zo_Y = 6105, - Zo_ZCLVersion = 6107, - Zo_ZoneState = 6118, - Zo_ZoneStatus = 6128, - Zo_ZoneStatusChange = 6139, - Zo_ZoneType = 6156, - Zo_xx = 6165, - Zo_xx000A00 = 6168, - Zo_xx0A = 6177, - Zo_xx0A00 = 6182, - Zo_xx19 = 6189, - Zo_xx190A = 6194, - Zo_xx190A00 = 6201, - Zo_xxxx = 6210, - Zo_xxxx00 = 6215, - Zo_xxxx0A00 = 6222, - Zo_xxxxyy = 6231, - Zo_xxxxyyyy = 6238, - Zo_xxxxyyyy0A00 = 6247, - Zo_xxxxyyzz = 6260, - Zo_xxyy = 6269, - Zo_xxyy0A00 = 6274, - Zo_xxyyyy = 6283, - Zo_xxyyyy000000000000 = 6290, - Zo_xxyyyy0A0000000000 = 6309, - Zo_xxyyyyzz = 6328, - Zo_xxyyyyzzzz = 6337, - Zo_xxyyzzzz = 6348, + Zo_MullerLightMode = 3635, + Zo_MultiApplicationType = 3651, + Zo_MultiDescription = 3672, + Zo_MultiInApplicationType = 3689, + Zo_MultiInDescription = 3712, + Zo_MultiInNumberOfStates = 3731, + Zo_MultiInOutOfService = 3753, + Zo_MultiInReliability = 3773, + Zo_MultiInStatusFlags = 3792, + Zo_MultiInValue = 3811, + Zo_MultiNumberOfStates = 3824, + Zo_MultiOutApplicationType = 3844, + Zo_MultiOutDescription = 3868, + Zo_MultiOutNumberOfStates = 3888, + Zo_MultiOutOfService = 3911, + Zo_MultiOutOutOfService = 3929, + Zo_MultiOutReliability = 3950, + Zo_MultiOutRelinquishDefault = 3970, + Zo_MultiOutStatusFlags = 3996, + Zo_MultiOutValue = 4016, + Zo_MultiReliability = 4030, + Zo_MultiRelinquishDefault = 4047, + Zo_MultiStatusFlags = 4070, + Zo_MultiValue = 4087, + Zo_MultipleScheduling = 4098, + Zo_NumberOfDevices = 4117, + Zo_NumberOfPrimaries = 4133, + Zo_NumberOfResets = 4151, + Zo_NumberofActuationsLift = 4166, + Zo_NumberofActuationsTilt = 4189, + Zo_Occupancy = 4212, + Zo_OccupancySensorType = 4222, + Zo_OccupiedCoolingSetpoint = 4242, + Zo_OccupiedHeatingSetpoint = 4266, + Zo_OnOffTransitionTime = 4290, + Zo_OpenPeriod = 4310, + Zo_OppleMode = 4321, + Zo_OutdoorTemperature = 4331, + Zo_OverTempTotalDwell = 4350, + Zo_PICoolingDemand = 4369, + Zo_PIHeatingDemand = 4385, + Zo_POD = 4401, + Zo_Panic = 4405, + Zo_PartNumber = 4411, + Zo_PersistentMemoryWrites = 4422, + Zo_PersonalAlarm = 4445, + Zo_PhysicalClosedLimit = 4459, + Zo_PhysicalClosedLimitLift = 4479, + Zo_PhysicalClosedLimitTilt = 4503, + Zo_Power = 4527, + Zo_Power2 = 4533, + Zo_Power3 = 4540, + Zo_Power4 = 4547, + Zo_PowerOffEffect = 4554, + Zo_PowerOnRecall = 4569, + Zo_PowerOnTimer = 4583, + Zo_PowerSource = 4596, + Zo_PowerThreshold = 4608, + Zo_Pressure = 4623, + Zo_PressureMaxMeasuredValue = 4632, + Zo_PressureMaxScaledValue = 4657, + Zo_PressureMinMeasuredValue = 4680, + Zo_PressureMinScaledValue = 4705, + Zo_PressureScale = 4728, + Zo_PressureScaledTolerance = 4742, + Zo_PressureScaledValue = 4766, + Zo_PressureTolerance = 4786, + Zo_Primary1Intensity = 4804, + Zo_Primary1X = 4822, + Zo_Primary1Y = 4832, + Zo_Primary2Intensity = 4842, + Zo_Primary2X = 4860, + Zo_Primary2Y = 4870, + Zo_Primary3Intensity = 4880, + Zo_Primary3X = 4898, + Zo_Primary3Y = 4908, + Zo_ProductCode = 4918, + Zo_ProductRevision = 4930, + Zo_ProductURL = 4946, + Zo_QualityMeasure = 4957, + Zo_RMSCurrent = 4972, + Zo_RMSVoltage = 4983, + Zo_ReactivePower = 4994, + Zo_RecallScene = 5008, + Zo_RemainingTime = 5020, + Zo_RemoteSensing = 5034, + Zo_RemoveAllGroups = 5048, + Zo_RemoveAllScenes = 5064, + Zo_RemoveGroup = 5080, + Zo_RemoveScene = 5092, + Zo_ResetAlarm = 5104, + Zo_ResetAllAlarms = 5115, + Zo_SWBuildID = 5130, + Zo_Sat = 5140, + Zo_SatMove = 5144, + Zo_SatStep = 5152, + Zo_SceneCount = 5160, + Zo_SceneValid = 5171, + Zo_ScheduleMode = 5182, + Zo_SeaPressure = 5195, + Zo_ShortPollInterval = 5207, + Zo_Shutter = 5225, + Zo_ShutterClose = 5233, + Zo_ShutterLift = 5246, + Zo_ShutterOpen = 5258, + Zo_ShutterStop = 5270, + Zo_ShutterTilt = 5282, + Zo_SoftwareRevision = 5294, + Zo_StackVersion = 5311, + Zo_StandardTime = 5324, + Zo_StartUpOnOff = 5337, + Zo_Status = 5350, + Zo_StoreScene = 5357, + Zo_SwitchType = 5368, + Zo_SystemMode = 5379, + Zo_TRVBoost = 5390, + Zo_TRVChildProtection = 5399, + Zo_TRVMirrorDisplay = 5418, + Zo_TRVMode = 5435, + Zo_TRVWindowOpen = 5443, + Zo_TempTarget = 5457, + Zo_Temperature = 5468, + Zo_TemperatureMaxMeasuredValue = 5480, + Zo_TemperatureMinMeasuredValue = 5508, + Zo_TemperatureTolerance = 5536, + Zo_TerncyDuration = 5557, + Zo_TerncyRotate = 5572, + Zo_ThSetpoint = 5585, + Zo_Time = 5596, + Zo_TimeEpoch = 5601, + Zo_TimeStatus = 5611, + Zo_TimeZone = 5622, + Zo_TotalProfileNum = 5631, + Zo_TuyaAutoLock = 5647, + Zo_TuyaAwayDays = 5660, + Zo_TuyaAwayTemp = 5673, + Zo_TuyaBattery = 5686, + Zo_TuyaBoostTime = 5698, + Zo_TuyaChildLock = 5712, + Zo_TuyaComfortTemp = 5726, + Zo_TuyaEcoTemp = 5742, + Zo_TuyaFanMode = 5754, + Zo_TuyaForceMode = 5766, + Zo_TuyaMaxTemp = 5780, + Zo_TuyaMinTemp = 5792, + Zo_TuyaPreset = 5804, + Zo_TuyaScheduleHolidays = 5815, + Zo_TuyaScheduleWorkdays = 5836, + Zo_TuyaTempTarget = 5857, + Zo_TuyaValveDetection = 5872, + Zo_TuyaValvePosition = 5891, + Zo_TuyaWeekSelect = 5909, + Zo_TuyaWindowDetection = 5924, + Zo_UnoccupiedCoolingSetpoint = 5944, + Zo_UnoccupiedHeatingSetpoint = 5970, + Zo_UtilityName = 5996, + Zo_ValidUntilTime = 6008, + Zo_ValvePosition = 6023, + Zo_VelocityLift = 6037, + Zo_ViewGroup = 6050, + Zo_ViewScene = 6060, + Zo_Water = 6070, + Zo_WhitePointX = 6076, + Zo_WhitePointY = 6088, + Zo_WindowCoveringType = 6100, + Zo_X = 6119, + Zo_Y = 6121, + Zo_ZCLVersion = 6123, + Zo_ZoneState = 6134, + Zo_ZoneStatus = 6144, + Zo_ZoneStatusChange = 6155, + Zo_ZoneType = 6172, + Zo_xx = 6181, + Zo_xx000A00 = 6184, + Zo_xx0A = 6193, + Zo_xx0A00 = 6198, + Zo_xx19 = 6205, + Zo_xx190A = 6210, + Zo_xx190A00 = 6217, + Zo_xxxx = 6226, + Zo_xxxx00 = 6231, + Zo_xxxx0A00 = 6238, + Zo_xxxxyy = 6247, + Zo_xxxxyyyy = 6254, + Zo_xxxxyyyy0A00 = 6263, + Zo_xxxxyyzz = 6276, + Zo_xxyy = 6285, + Zo_xxyy0A00 = 6290, + Zo_xxyyyy = 6299, + Zo_xxyyyy000000000000 = 6306, + Zo_xxyyyy0A0000000000 = 6325, + Zo_xxyyyyzz = 6344, + Zo_xxyyyyzzzz = 6353, + Zo_xxyyzzzz = 6364, }; diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index bb1b3c3ed..ad740c0e5 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -195,6 +195,7 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zoctstr, Cx0000, 0x000A, Z_(ProductCode), Cm1, 0 }, { Zstring, Cx0000, 0x000B, Z_(ProductURL), Cm1, 0 }, { Zstring, Cx0000, 0x4000, Z_(SWBuildID), Cm1, 0 }, + { Zuint8, Cx0000, 0x4005, Z_(MullerLightMode), Cm1, 0 }, // { Zunk, Cx0000, 0xFFFF, nullptr, Cm0, 0 }, // Remove all other values // Cmd 0x0A - Cluster 0x0000, attribute 0xFF01 - proprietary { Zmap8, Cx0000, 0xFF01, Z_(), Cm0, 0 }, @@ -1185,6 +1186,10 @@ void ZCLFrame::parseReportAttributes(Z_attribute_list& attr_list) { uint32_t i = 0; uint32_t len = _payload.len(); + if (ZCL_WRITE_ATTRIBUTES == getCmdId()) { + attr_list.addAttribute(PSTR("Command"), true).setStr(PSTR("Write")); + } + while (len >= i + 3) { uint16_t attrid = _payload.get16(i); i += 2; diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 24bb98fac..dd91d9e6c 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -1639,9 +1639,9 @@ void Z_IncomingMessage(class ZCLFrame &zcl_received) { zcl_received.parseResponse(); // Zigbee general "Default Response", publish ZbResponse message } else { // Build the ZbReceive list - if ( (!zcl_received.isClusterSpecificCommand()) && (ZCL_REPORT_ATTRIBUTES == zcl_received.getCmdId())) { + if ( (!zcl_received.isClusterSpecificCommand()) && (ZCL_REPORT_ATTRIBUTES == zcl_received.getCmdId() || ZCL_WRITE_ATTRIBUTES == zcl_received.getCmdId())) { zcl_received.parseReportAttributes(attr_list); // Zigbee report attributes from sensors - if (clusterid) { defer_attributes = true; } // don't defer system Cluster=0 messages + if (clusterid && (ZCL_REPORT_ATTRIBUTES == zcl_received.getCmdId())) { defer_attributes = true; } // don't defer system Cluster=0 messages or Write Attribute } else if ( (!zcl_received.isClusterSpecificCommand()) && (ZCL_READ_ATTRIBUTES_RESPONSE == zcl_received.getCmdId())) { zcl_received.parseReadAttributesResponse(attr_list); if (clusterid) { defer_attributes = true; } // don't defer system Cluster=0 messages