diff --git a/tasmota/xdrv_23_zigbee_5__constants.ino b/tasmota/xdrv_23_zigbee_5__constants.ino index f28ea0b5b..4786cc944 100644 --- a/tasmota/xdrv_23_zigbee_5__constants.ino +++ b/tasmota/xdrv_23_zigbee_5__constants.ino @@ -381,6 +381,8 @@ const char Z_strings[] PROGMEM = "TuyaFanMode" "\x00" "TuyaForceMode" "\x00" "TuyaWeekSelect" "\x00" + "TerncyRotate" "\x00" + "TerncyDuration" "\x00" "Identify" "\x00" "xxxx" "\x00" "IdentifyQuery" "\x00" @@ -780,95 +782,97 @@ enum Z_offsets { Zo_TuyaFanMode = 5097, Zo_TuyaForceMode = 5109, Zo_TuyaWeekSelect = 5123, - Zo_Identify = 5138, - Zo_xxxx = 5147, - Zo_IdentifyQuery = 5152, - Zo_AddGroup = 5166, - Zo_xxxx00 = 5175, - Zo_ViewGroup = 5182, - Zo_GetGroup = 5192, - Zo_01xxxx = 5201, - Zo_GetAllGroups = 5208, - Zo_00 = 5221, - Zo_RemoveGroup = 5224, - Zo_RemoveAllGroups = 5236, - Zo_ViewScene = 5252, - Zo_xxxxyy = 5262, - Zo_RemoveScene = 5269, - Zo_RemoveAllScenes = 5281, - Zo_RecallScene = 5297, - Zo_GetSceneMembership = 5309, - Zo_PowerOffEffect = 5328, - Zo_xxyy = 5343, - Zo_PowerOnRecall = 5348, - Zo_PowerOnTimer = 5362, - Zo_xxyyyyzzzz = 5375, - Zo_xx0A00 = 5386, - Zo_DimmerUp = 5393, - Zo_00190200 = 5402, - Zo_DimmerDown = 5411, - Zo_01190200 = 5422, - Zo_DimmerStop = 5431, - Zo_ResetAlarm = 5442, - Zo_xxyyyy = 5453, - Zo_ResetAllAlarms = 5460, - Zo_xx000A00 = 5475, - Zo_HueSat = 5484, - Zo_xxyy0A00 = 5491, - Zo_Color = 5500, - Zo_xxxxyyyy0A00 = 5506, - Zo_xxxx0A00 = 5519, - Zo_ShutterOpen = 5528, - Zo_ShutterClose = 5540, - Zo_ShutterStop = 5553, - Zo_ShutterLift = 5565, - Zo_xx = 5577, - Zo_ShutterTilt = 5580, - Zo_Shutter = 5592, - Zo_DimmerMove = 5600, - Zo_xx0A = 5611, - Zo_DimmerStepUp = 5616, - Zo_00xx0A00 = 5629, - Zo_DimmerStepDown = 5638, - Zo_01xx0A00 = 5653, - Zo_DimmerStep = 5662, - Zo_xx190A00 = 5673, - Zo_01 = 5682, - Zo_HueMove = 5685, - Zo_xx19 = 5693, - Zo_HueStepUp = 5698, - Zo_HueStepDown = 5708, - Zo_03xx0A00 = 5720, - Zo_HueStep = 5729, - Zo_SatMove = 5737, - Zo_SatStep = 5745, - Zo_xx190A = 5753, - Zo_ColorMove = 5760, - Zo_xxxxyyyy = 5770, - Zo_ColorStep = 5779, - Zo_ColorTempMoveUp = 5789, - Zo_01xxxx000000000000 = 5805, - Zo_ColorTempMoveDown = 5824, - Zo_03xxxx000000000000 = 5842, - Zo_ColorTempMoveStop = 5861, - Zo_00xxxx000000000000 = 5879, - Zo_ColorTempMove = 5898, - Zo_xxyyyy000000000000 = 5912, - Zo_ColorTempStepUp = 5931, - Zo_01xxxx0A0000000000 = 5947, - Zo_ColorTempStepDown = 5966, - Zo_03xxxx0A0000000000 = 5984, - Zo_ColorTempStep = 6003, - Zo_xxyyyy0A0000000000 = 6017, - Zo_ArrowClick = 6036, - Zo_ArrowHold = 6047, - Zo_ArrowRelease = 6057, - Zo_ZoneStatusChange = 6070, - Zo_xxxxyyzz = 6087, - Zo_xxyyzzzz = 6096, - Zo_AddScene = 6105, - Zo_xxyyyyzz = 6114, - Zo_StoreScene = 6123, + Zo_TerncyRotate = 5138, + Zo_TerncyDuration = 5151, + Zo_Identify = 5166, + Zo_xxxx = 5175, + Zo_IdentifyQuery = 5180, + Zo_AddGroup = 5194, + Zo_xxxx00 = 5203, + Zo_ViewGroup = 5210, + Zo_GetGroup = 5220, + Zo_01xxxx = 5229, + Zo_GetAllGroups = 5236, + Zo_00 = 5249, + Zo_RemoveGroup = 5252, + Zo_RemoveAllGroups = 5264, + Zo_ViewScene = 5280, + Zo_xxxxyy = 5290, + Zo_RemoveScene = 5297, + Zo_RemoveAllScenes = 5309, + Zo_RecallScene = 5325, + Zo_GetSceneMembership = 5337, + Zo_PowerOffEffect = 5356, + Zo_xxyy = 5371, + Zo_PowerOnRecall = 5376, + Zo_PowerOnTimer = 5390, + Zo_xxyyyyzzzz = 5403, + Zo_xx0A00 = 5414, + Zo_DimmerUp = 5421, + Zo_00190200 = 5430, + Zo_DimmerDown = 5439, + Zo_01190200 = 5450, + Zo_DimmerStop = 5459, + Zo_ResetAlarm = 5470, + Zo_xxyyyy = 5481, + Zo_ResetAllAlarms = 5488, + Zo_xx000A00 = 5503, + Zo_HueSat = 5512, + Zo_xxyy0A00 = 5519, + Zo_Color = 5528, + Zo_xxxxyyyy0A00 = 5534, + Zo_xxxx0A00 = 5547, + Zo_ShutterOpen = 5556, + Zo_ShutterClose = 5568, + Zo_ShutterStop = 5581, + Zo_ShutterLift = 5593, + Zo_xx = 5605, + Zo_ShutterTilt = 5608, + Zo_Shutter = 5620, + Zo_DimmerMove = 5628, + Zo_xx0A = 5639, + Zo_DimmerStepUp = 5644, + Zo_00xx0A00 = 5657, + Zo_DimmerStepDown = 5666, + Zo_01xx0A00 = 5681, + Zo_DimmerStep = 5690, + Zo_xx190A00 = 5701, + Zo_01 = 5710, + Zo_HueMove = 5713, + Zo_xx19 = 5721, + Zo_HueStepUp = 5726, + Zo_HueStepDown = 5736, + Zo_03xx0A00 = 5748, + Zo_HueStep = 5757, + Zo_SatMove = 5765, + Zo_SatStep = 5773, + Zo_xx190A = 5781, + Zo_ColorMove = 5788, + Zo_xxxxyyyy = 5798, + Zo_ColorStep = 5807, + Zo_ColorTempMoveUp = 5817, + Zo_01xxxx000000000000 = 5833, + Zo_ColorTempMoveDown = 5852, + Zo_03xxxx000000000000 = 5870, + Zo_ColorTempMoveStop = 5889, + Zo_00xxxx000000000000 = 5907, + Zo_ColorTempMove = 5926, + Zo_xxyyyy000000000000 = 5940, + Zo_ColorTempStepUp = 5959, + Zo_01xxxx0A0000000000 = 5975, + Zo_ColorTempStepDown = 5994, + Zo_03xxxx0A0000000000 = 6012, + Zo_ColorTempStep = 6031, + Zo_xxyyyy0A0000000000 = 6045, + Zo_ArrowClick = 6064, + Zo_ArrowHold = 6075, + Zo_ArrowRelease = 6085, + Zo_ZoneStatusChange = 6098, + Zo_xxxxyyzz = 6115, + Zo_xxyyzzzz = 6124, + Zo_AddScene = 6133, + Zo_xxyyyyzz = 6142, + Zo_StoreScene = 6151, }; diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index bbaf670a0..5d96d9c70 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -129,7 +129,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, + CxEF00, CxFCCC, }; const uint16_t Cx_cluster[] PROGMEM = { @@ -138,7 +138,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, + 0xEF00, 0xFCCC, }; uint16_t CxToCluster(uint8_t cx) { @@ -611,6 +611,10 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Ztuya1, CxEF00, 0x0405, Z_(TuyaFanMode), Cm1, 0 }, { Ztuya1, CxEF00, 0x046A, Z_(TuyaForceMode), Cm1, 0 }, { Ztuya1, CxEF00, 0x046F, Z_(TuyaWeekSelect), Cm1, 0 }, + + // Terncy specific - 0xFCCC + { Zuint16, CxFCCC, 0x001A, Z_(TerncyDuration), Cm1, 0 }, + { Zint16, CxFCCC, 0x001B, Z_(TerncyRotate), Cm1, 0 }, }; #pragma GCC diagnostic pop diff --git a/tasmota/xdrv_23_zigbee_6_commands.ino b/tasmota/xdrv_23_zigbee_6_commands.ino index f3ad8748a..b409dcf86 100644 --- a/tasmota/xdrv_23_zigbee_6_commands.ino +++ b/tasmota/xdrv_23_zigbee_6_commands.ino @@ -136,6 +136,8 @@ const Z_CommandConverter Z_Commands[] PROGMEM = { { Z_(GetSceneMembership),0x0005, 0x06, 0x82,Z_(xxyyzzzz) }, // specific // Tuya - Moes specific { Z_(), 0xEF00, 0xFF, 0x83, Z_() }, // capture any command in 0xEF00 cluster + // Terncy specific + { Z_(), 0xFCCC, 0x00, 0x82, Z_(xxyy) }, // Terncy button (multi-)press }; /*********************************************************************************************\ @@ -419,6 +421,10 @@ void convertClusterSpecific(class Z_attribute_list &attr_list, uint16_t cluster, attr_list.removeAttribute(&attr_raw); // remove raw command } break; + case 0xFCCC0000: // Terncy button (multi-)press + attr_list.addAttribute(PSTR("TerncyPress"), true).setUInt(xyz.y); + attr_list.addAttribute(PSTR("TerncyCount"), true).setUInt(xyz.x); + break; } } else { // general case // do we send command with endpoint suffix