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