Zigbee add Legrand clusters 0xFC01 and 0xFC40

This commit is contained in:
Stephan Hadinger 2021-04-05 10:28:09 +02:00
parent 9dabc9ea69
commit e939db9a30
3 changed files with 240 additions and 220 deletions

View File

@ -278,6 +278,11 @@ const char Z_strings[] PROGMEM =
"LastMessageLQI" "\x00" "LastMessageLQI" "\x00"
"LastMessageRSSI" "\x00" "LastMessageRSSI" "\x00"
"LastSetTime" "\x00" "LastSetTime" "\x00"
"LegrandHeatingMode" "\x00"
"LegrandMode" "\x00"
"LegrandOpt1" "\x00"
"LegrandOpt2" "\x00"
"LegrandOpt3" "\x00"
"LidlPower" "\x00" "LidlPower" "\x00"
"LocalTemperature" "\x00" "LocalTemperature" "\x00"
"LocalTemperatureCalibration" "\x00" "LocalTemperatureCalibration" "\x00"
@ -702,224 +707,229 @@ enum Z_offsets {
Zo_LastMessageLQI = 3308, Zo_LastMessageLQI = 3308,
Zo_LastMessageRSSI = 3323, Zo_LastMessageRSSI = 3323,
Zo_LastSetTime = 3339, Zo_LastSetTime = 3339,
Zo_LidlPower = 3351, Zo_LegrandHeatingMode = 3351,
Zo_LocalTemperature = 3361, Zo_LegrandMode = 3370,
Zo_LocalTemperatureCalibration = 3378, Zo_LegrandOpt1 = 3382,
Zo_LocalTime = 3406, Zo_LegrandOpt2 = 3394,
Zo_LocationAge = 3416, Zo_LegrandOpt3 = 3406,
Zo_LocationMethod = 3428, Zo_LidlPower = 3418,
Zo_LocationType = 3443, Zo_LocalTemperature = 3428,
Zo_LockState = 3456, Zo_LocalTemperatureCalibration = 3445,
Zo_LockType = 3466, Zo_LocalTime = 3473,
Zo_LongPollInterval = 3475, Zo_LocationAge = 3483,
Zo_LongPollIntervalMin = 3492, Zo_LocationMethod = 3495,
Zo_MainsFrequency = 3512, Zo_LocationType = 3510,
Zo_MainsVoltage = 3527, Zo_LockState = 3523,
Zo_Manufacturer = 3540, Zo_LockType = 3533,
Zo_MaxTempExperienced = 3553, Zo_LongPollInterval = 3542,
Zo_MeterTypeID = 3572, Zo_LongPollIntervalMin = 3559,
Zo_MinTempExperienced = 3584, Zo_MainsFrequency = 3579,
Zo_Mode = 3603, Zo_MainsVoltage = 3594,
Zo_Model = 3608, Zo_Manufacturer = 3607,
Zo_ModelId = 3614, Zo_MaxTempExperienced = 3620,
Zo_MotorStepSize = 3622, Zo_MeterTypeID = 3639,
Zo_Movement = 3636, Zo_MinTempExperienced = 3651,
Zo_MullerLightMode = 3645, Zo_Mode = 3670,
Zo_MultiApplicationType = 3661, Zo_Model = 3675,
Zo_MultiDescription = 3682, Zo_ModelId = 3681,
Zo_MultiInApplicationType = 3699, Zo_MotorStepSize = 3689,
Zo_MultiInDescription = 3722, Zo_Movement = 3703,
Zo_MultiInNumberOfStates = 3741, Zo_MullerLightMode = 3712,
Zo_MultiInOutOfService = 3763, Zo_MultiApplicationType = 3728,
Zo_MultiInReliability = 3783, Zo_MultiDescription = 3749,
Zo_MultiInStatusFlags = 3802, Zo_MultiInApplicationType = 3766,
Zo_MultiInValue = 3821, Zo_MultiInDescription = 3789,
Zo_MultiNumberOfStates = 3834, Zo_MultiInNumberOfStates = 3808,
Zo_MultiOutApplicationType = 3854, Zo_MultiInOutOfService = 3830,
Zo_MultiOutDescription = 3878, Zo_MultiInReliability = 3850,
Zo_MultiOutNumberOfStates = 3898, Zo_MultiInStatusFlags = 3869,
Zo_MultiOutOfService = 3921, Zo_MultiInValue = 3888,
Zo_MultiOutOutOfService = 3939, Zo_MultiNumberOfStates = 3901,
Zo_MultiOutReliability = 3960, Zo_MultiOutApplicationType = 3921,
Zo_MultiOutRelinquishDefault = 3980, Zo_MultiOutDescription = 3945,
Zo_MultiOutStatusFlags = 4006, Zo_MultiOutNumberOfStates = 3965,
Zo_MultiOutValue = 4026, Zo_MultiOutOfService = 3988,
Zo_MultiReliability = 4040, Zo_MultiOutOutOfService = 4006,
Zo_MultiRelinquishDefault = 4057, Zo_MultiOutReliability = 4027,
Zo_MultiStatusFlags = 4080, Zo_MultiOutRelinquishDefault = 4047,
Zo_MultiValue = 4097, Zo_MultiOutStatusFlags = 4073,
Zo_MultipleScheduling = 4108, Zo_MultiOutValue = 4093,
Zo_NumberOfDevices = 4127, Zo_MultiReliability = 4107,
Zo_NumberOfPrimaries = 4143, Zo_MultiRelinquishDefault = 4124,
Zo_NumberOfResets = 4161, Zo_MultiStatusFlags = 4147,
Zo_NumberofActuationsLift = 4176, Zo_MultiValue = 4164,
Zo_NumberofActuationsTilt = 4199, Zo_MultipleScheduling = 4175,
Zo_Occupancy = 4222, Zo_NumberOfDevices = 4194,
Zo_OccupancySensorType = 4232, Zo_NumberOfPrimaries = 4210,
Zo_OccupiedCoolingSetpoint = 4252, Zo_NumberOfResets = 4228,
Zo_OccupiedHeatingSetpoint = 4276, Zo_NumberofActuationsLift = 4243,
Zo_OnOffTransitionTime = 4300, Zo_NumberofActuationsTilt = 4266,
Zo_OpenPeriod = 4320, Zo_Occupancy = 4289,
Zo_OppleMode = 4331, Zo_OccupancySensorType = 4299,
Zo_OutdoorTemperature = 4341, Zo_OccupiedCoolingSetpoint = 4319,
Zo_OverTempTotalDwell = 4360, Zo_OccupiedHeatingSetpoint = 4343,
Zo_PICoolingDemand = 4379, Zo_OnOffTransitionTime = 4367,
Zo_PIHeatingDemand = 4395, Zo_OpenPeriod = 4387,
Zo_POD = 4411, Zo_OppleMode = 4398,
Zo_Panic = 4415, Zo_OutdoorTemperature = 4408,
Zo_PartNumber = 4421, Zo_OverTempTotalDwell = 4427,
Zo_PersistentMemoryWrites = 4432, Zo_PICoolingDemand = 4446,
Zo_PersonalAlarm = 4455, Zo_PIHeatingDemand = 4462,
Zo_PhysicalClosedLimit = 4469, Zo_POD = 4478,
Zo_PhysicalClosedLimitLift = 4489, Zo_Panic = 4482,
Zo_PhysicalClosedLimitTilt = 4513, Zo_PartNumber = 4488,
Zo_Power = 4537, Zo_PersistentMemoryWrites = 4499,
Zo_Power2 = 4543, Zo_PersonalAlarm = 4522,
Zo_Power3 = 4550, Zo_PhysicalClosedLimit = 4536,
Zo_Power4 = 4557, Zo_PhysicalClosedLimitLift = 4556,
Zo_PowerOffEffect = 4564, Zo_PhysicalClosedLimitTilt = 4580,
Zo_PowerOnRecall = 4579, Zo_Power = 4604,
Zo_PowerOnTimer = 4593, Zo_Power2 = 4610,
Zo_PowerSource = 4606, Zo_Power3 = 4617,
Zo_PowerThreshold = 4618, Zo_Power4 = 4624,
Zo_Pressure = 4633, Zo_PowerOffEffect = 4631,
Zo_PressureMaxMeasuredValue = 4642, Zo_PowerOnRecall = 4646,
Zo_PressureMaxScaledValue = 4667, Zo_PowerOnTimer = 4660,
Zo_PressureMinMeasuredValue = 4690, Zo_PowerSource = 4673,
Zo_PressureMinScaledValue = 4715, Zo_PowerThreshold = 4685,
Zo_PressureScale = 4738, Zo_Pressure = 4700,
Zo_PressureScaledTolerance = 4752, Zo_PressureMaxMeasuredValue = 4709,
Zo_PressureScaledValue = 4776, Zo_PressureMaxScaledValue = 4734,
Zo_PressureTolerance = 4796, Zo_PressureMinMeasuredValue = 4757,
Zo_Primary1Intensity = 4814, Zo_PressureMinScaledValue = 4782,
Zo_Primary1X = 4832, Zo_PressureScale = 4805,
Zo_Primary1Y = 4842, Zo_PressureScaledTolerance = 4819,
Zo_Primary2Intensity = 4852, Zo_PressureScaledValue = 4843,
Zo_Primary2X = 4870, Zo_PressureTolerance = 4863,
Zo_Primary2Y = 4880, Zo_Primary1Intensity = 4881,
Zo_Primary3Intensity = 4890, Zo_Primary1X = 4899,
Zo_Primary3X = 4908, Zo_Primary1Y = 4909,
Zo_Primary3Y = 4918, Zo_Primary2Intensity = 4919,
Zo_ProductCode = 4928, Zo_Primary2X = 4937,
Zo_ProductRevision = 4940, Zo_Primary2Y = 4947,
Zo_ProductURL = 4956, Zo_Primary3Intensity = 4957,
Zo_QualityMeasure = 4967, Zo_Primary3X = 4975,
Zo_RGB = 4982, Zo_Primary3Y = 4985,
Zo_RMSCurrent = 4986, Zo_ProductCode = 4995,
Zo_RMSVoltage = 4997, Zo_ProductRevision = 5007,
Zo_ReactivePower = 5008, Zo_ProductURL = 5023,
Zo_RecallScene = 5022, Zo_QualityMeasure = 5034,
Zo_RemainingTime = 5034, Zo_RGB = 5049,
Zo_RemoteSensing = 5048, Zo_RMSCurrent = 5053,
Zo_RemoveAllGroups = 5062, Zo_RMSVoltage = 5064,
Zo_RemoveAllScenes = 5078, Zo_ReactivePower = 5075,
Zo_RemoveGroup = 5094, Zo_RecallScene = 5089,
Zo_RemoveScene = 5106, Zo_RemainingTime = 5101,
Zo_ResetAlarm = 5118, Zo_RemoteSensing = 5115,
Zo_ResetAllAlarms = 5129, Zo_RemoveAllGroups = 5129,
Zo_SWBuildID = 5144, Zo_RemoveAllScenes = 5145,
Zo_Sat = 5154, Zo_RemoveGroup = 5161,
Zo_SatMove = 5158, Zo_RemoveScene = 5173,
Zo_SatStep = 5166, Zo_ResetAlarm = 5185,
Zo_SceneCount = 5174, Zo_ResetAllAlarms = 5196,
Zo_SceneValid = 5185, Zo_SWBuildID = 5211,
Zo_ScheduleMode = 5196, Zo_Sat = 5221,
Zo_SeaPressure = 5209, Zo_SatMove = 5225,
Zo_ShortPollInterval = 5221, Zo_SatStep = 5233,
Zo_Shutter = 5239, Zo_SceneCount = 5241,
Zo_ShutterClose = 5247, Zo_SceneValid = 5252,
Zo_ShutterLift = 5260, Zo_ScheduleMode = 5263,
Zo_ShutterOpen = 5272, Zo_SeaPressure = 5276,
Zo_ShutterStop = 5284, Zo_ShortPollInterval = 5288,
Zo_ShutterTilt = 5296, Zo_Shutter = 5306,
Zo_SoftwareRevision = 5308, Zo_ShutterClose = 5314,
Zo_StackVersion = 5325, Zo_ShutterLift = 5327,
Zo_StandardTime = 5338, Zo_ShutterOpen = 5339,
Zo_StartUpOnOff = 5351, Zo_ShutterStop = 5351,
Zo_Status = 5364, Zo_ShutterTilt = 5363,
Zo_StoreScene = 5371, Zo_SoftwareRevision = 5375,
Zo_SwitchType = 5382, Zo_StackVersion = 5392,
Zo_SystemMode = 5393, Zo_StandardTime = 5405,
Zo_TRVBoost = 5404, Zo_StartUpOnOff = 5418,
Zo_TRVChildProtection = 5413, Zo_Status = 5431,
Zo_TRVMirrorDisplay = 5432, Zo_StoreScene = 5438,
Zo_TRVMode = 5449, Zo_SwitchType = 5449,
Zo_TRVWindowOpen = 5457, Zo_SystemMode = 5460,
Zo_TempTarget = 5471, Zo_TRVBoost = 5471,
Zo_Temperature = 5482, Zo_TRVChildProtection = 5480,
Zo_TemperatureMaxMeasuredValue = 5494, Zo_TRVMirrorDisplay = 5499,
Zo_TemperatureMinMeasuredValue = 5522, Zo_TRVMode = 5516,
Zo_TemperatureTolerance = 5550, Zo_TRVWindowOpen = 5524,
Zo_TerncyDuration = 5571, Zo_TempTarget = 5538,
Zo_TerncyRotate = 5586, Zo_Temperature = 5549,
Zo_ThSetpoint = 5599, Zo_TemperatureMaxMeasuredValue = 5561,
Zo_Time = 5610, Zo_TemperatureMinMeasuredValue = 5589,
Zo_TimeEpoch = 5615, Zo_TemperatureTolerance = 5617,
Zo_TimeStatus = 5625, Zo_TerncyDuration = 5638,
Zo_TimeZone = 5636, Zo_TerncyRotate = 5653,
Zo_TotalProfileNum = 5645, Zo_ThSetpoint = 5666,
Zo_TuyaAutoLock = 5661, Zo_Time = 5677,
Zo_TuyaAwayDays = 5674, Zo_TimeEpoch = 5682,
Zo_TuyaAwayTemp = 5687, Zo_TimeStatus = 5692,
Zo_TuyaBattery = 5700, Zo_TimeZone = 5703,
Zo_TuyaBoostTime = 5712, Zo_TotalProfileNum = 5712,
Zo_TuyaChildLock = 5726, Zo_TuyaAutoLock = 5728,
Zo_TuyaComfortTemp = 5740, Zo_TuyaAwayDays = 5741,
Zo_TuyaEcoTemp = 5756, Zo_TuyaAwayTemp = 5754,
Zo_TuyaFanMode = 5768, Zo_TuyaBattery = 5767,
Zo_TuyaForceMode = 5780, Zo_TuyaBoostTime = 5779,
Zo_TuyaMaxTemp = 5794, Zo_TuyaChildLock = 5793,
Zo_TuyaMinTemp = 5806, Zo_TuyaComfortTemp = 5807,
Zo_TuyaPreset = 5818, Zo_TuyaEcoTemp = 5823,
Zo_TuyaScheduleHolidays = 5829, Zo_TuyaFanMode = 5835,
Zo_TuyaScheduleWorkdays = 5850, Zo_TuyaForceMode = 5847,
Zo_TuyaTempTarget = 5871, Zo_TuyaMaxTemp = 5861,
Zo_TuyaValveDetection = 5886, Zo_TuyaMinTemp = 5873,
Zo_TuyaValvePosition = 5905, Zo_TuyaPreset = 5885,
Zo_TuyaWeekSelect = 5923, Zo_TuyaScheduleHolidays = 5896,
Zo_TuyaWindowDetection = 5938, Zo_TuyaScheduleWorkdays = 5917,
Zo_UnoccupiedCoolingSetpoint = 5958, Zo_TuyaTempTarget = 5938,
Zo_UnoccupiedHeatingSetpoint = 5984, Zo_TuyaValveDetection = 5953,
Zo_UtilityName = 6010, Zo_TuyaValvePosition = 5972,
Zo_ValidUntilTime = 6022, Zo_TuyaWeekSelect = 5990,
Zo_ValvePosition = 6037, Zo_TuyaWindowDetection = 6005,
Zo_VelocityLift = 6051, Zo_UnoccupiedCoolingSetpoint = 6025,
Zo_ViewGroup = 6064, Zo_UnoccupiedHeatingSetpoint = 6051,
Zo_ViewScene = 6074, Zo_UtilityName = 6077,
Zo_Water = 6084, Zo_ValidUntilTime = 6089,
Zo_WhitePointX = 6090, Zo_ValvePosition = 6104,
Zo_WhitePointY = 6102, Zo_VelocityLift = 6118,
Zo_WindowCoveringType = 6114, Zo_ViewGroup = 6131,
Zo_X = 6133, Zo_ViewScene = 6141,
Zo_Y = 6135, Zo_Water = 6151,
Zo_ZCLVersion = 6137, Zo_WhitePointX = 6157,
Zo_ZoneState = 6148, Zo_WhitePointY = 6169,
Zo_ZoneStatus = 6158, Zo_WindowCoveringType = 6181,
Zo_ZoneStatusChange = 6169, Zo_X = 6200,
Zo_ZoneType = 6186, Zo_Y = 6202,
Zo__ = 6195, Zo_ZCLVersion = 6204,
Zo_xx = 6197, Zo_ZoneState = 6215,
Zo_xx000A00 = 6200, Zo_ZoneStatus = 6225,
Zo_xx0A = 6209, Zo_ZoneStatusChange = 6236,
Zo_xx0A00 = 6214, Zo_ZoneType = 6253,
Zo_xx19 = 6221, Zo__ = 6262,
Zo_xx190A = 6226, Zo_xx = 6264,
Zo_xx190A00 = 6233, Zo_xx000A00 = 6267,
Zo_xxxx = 6242, Zo_xx0A = 6276,
Zo_xxxx00 = 6247, Zo_xx0A00 = 6281,
Zo_xxxx0A00 = 6254, Zo_xx19 = 6288,
Zo_xxxxyy = 6263, Zo_xx190A = 6293,
Zo_xxxxyyyy = 6270, Zo_xx190A00 = 6300,
Zo_xxxxyyyy0A00 = 6279, Zo_xxxx = 6309,
Zo_xxxxyyzz = 6292, Zo_xxxx00 = 6314,
Zo_xxyy = 6301, Zo_xxxx0A00 = 6321,
Zo_xxyy0A00 = 6306, Zo_xxxxyy = 6330,
Zo_xxyyyy = 6315, Zo_xxxxyyyy = 6337,
Zo_xxyyyy000000000000 = 6322, Zo_xxxxyyyy0A00 = 6346,
Zo_xxyyyy0A0000000000 = 6341, Zo_xxxxyyzz = 6359,
Zo_xxyyyyzz = 6360, Zo_xxyy = 6368,
Zo_xxyyyyzzzz = 6369, Zo_xxyy0A00 = 6373,
Zo_xxyyzzzz = 6380, Zo_xxyyyy = 6382,
Zo_xxyyyy000000000000 = 6389,
Zo_xxyyyy0A0000000000 = 6408,
Zo_xxyyyyzz = 6427,
Zo_xxyyyyzzzz = 6436,
Zo_xxyyzzzz = 6447,
}; };

View File

@ -127,7 +127,7 @@ enum Cx_cluster_short {
Cx0010, Cx0011, Cx0012, Cx0013, Cx0014, Cx001A, Cx0020, Cx0100, Cx0010, Cx0011, Cx0012, Cx0013, Cx0014, Cx001A, Cx0020, Cx0100,
Cx0101, Cx0102, Cx0201, Cx0300, Cx0400, Cx0401, Cx0402, Cx0403, Cx0101, Cx0102, Cx0201, Cx0300, Cx0400, Cx0401, Cx0402, Cx0403,
Cx0404, Cx0405, Cx0406, Cx0500, Cx0702, Cx0B01, Cx0B04, Cx0B05, Cx0404, Cx0405, Cx0406, Cx0500, Cx0702, Cx0B01, Cx0B04, Cx0B05,
CxEF00, CxFCC0, CxFCCC, CxEF00, CxFC01, CxFC40, CxFCC0, CxFCCC,
}; };
const uint16_t Cx_cluster[] PROGMEM = { const uint16_t Cx_cluster[] PROGMEM = {
@ -136,7 +136,7 @@ const uint16_t Cx_cluster[] PROGMEM = {
0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x001A, 0x0020, 0x0100, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x001A, 0x0020, 0x0100,
0x0101, 0x0102, 0x0201, 0x0300, 0x0400, 0x0401, 0x0402, 0x0403, 0x0101, 0x0102, 0x0201, 0x0300, 0x0400, 0x0401, 0x0402, 0x0403,
0x0404, 0x0405, 0x0406, 0x0500, 0x0702, 0x0B01, 0x0B04, 0x0B05, 0x0404, 0x0405, 0x0406, 0x0500, 0x0702, 0x0B01, 0x0B04, 0x0B05,
0xEF00, 0xFCC0, 0xFCCC, 0xEF00, 0xFC01, 0xFC40, 0xFCC0, 0xFCCC,
}; };
uint16_t CxToCluster(uint8_t cx) { uint16_t CxToCluster(uint8_t cx) {
@ -642,6 +642,14 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = {
{ Ztuya4, CxEF00, 0x046A, Z_(TuyaForceMode), Cm1, 0 }, { Ztuya4, CxEF00, 0x046A, Z_(TuyaForceMode), Cm1, 0 },
{ Ztuya4, CxEF00, 0x046F, Z_(TuyaWeekSelect), Cm1, 0 }, { Ztuya4, CxEF00, 0x046F, Z_(TuyaWeekSelect), Cm1, 0 },
// Legrand BTicino - Manuf code 0x1021
{ Zdata16, CxFC01, 0x0000, Z_(LegrandOpt1), Cm1, 0 },
{ Zbool, CxFC01, 0x0001, Z_(LegrandOpt2), Cm1, 0 },
{ Zbool, CxFC01, 0x0002, Z_(LegrandOpt3), Cm1, 0 },
// Legrand - Manuf code 0x1021
{ Zenum8, CxFC40, 0x0000, Z_(LegrandHeatingMode), Cm1, 0 },
// Aqara Opple spacific // Aqara Opple spacific
{ Zuint8, CxFCC0, 0x0009, Z_(OppleMode), Cm1, 0 }, { Zuint8, CxFCC0, 0x0009, Z_(OppleMode), Cm1, 0 },

View File

@ -89,6 +89,8 @@ const Z_CommandConverter Z_Commands[] PROGMEM = {
{ Z_(ShutterLift), 0x0102, 0x05, 0x01, Z_(xx) }, // Lift percentage, 0%=open, 100%=closed { Z_(ShutterLift), 0x0102, 0x05, 0x01, Z_(xx) }, // Lift percentage, 0%=open, 100%=closed
{ Z_(ShutterTilt), 0x0102, 0x08, 0x01, Z_(xx) }, // Tilt percentage { Z_(ShutterTilt), 0x0102, 0x08, 0x01, Z_(xx) }, // Tilt percentage
{ Z_(Shutter), 0x0102, 0xFF, 0x01, Z_() }, { Z_(Shutter), 0x0102, 0xFF, 0x01, Z_() },
// Legrand - Manuf 1021
{ Z_(LegrandMode), 0xFC40, 0x00, 0x01, Z_(xx) },
// Blitzwolf PIR // Blitzwolf PIR
{ Z_(Occupancy), 0xEF00, 0x01, 0x82, Z_()}, // Specific decoder for Blitzwolf PIR, empty name means special treatment { Z_(Occupancy), 0xEF00, 0x01, 0x82, Z_()}, // Specific decoder for Blitzwolf PIR, empty name means special treatment
// Decoders only - normally not used to send, and names may be masked by previous definitions // Decoders only - normally not used to send, and names may be masked by previous definitions