Zigbee add support for Muller Licht remote

This commit is contained in:
Stephan Hadinger 2021-01-10 11:47:12 +01:00
parent e35cac1ba8
commit d0021b9b04
3 changed files with 202 additions and 196 deletions

View File

@ -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,
};

View File

@ -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;

View File

@ -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