mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 10:46:31 +00:00
Zigbee support for Terncy Smart Dial (#9612)
* Zigbee support for Terncy Smart Dial * Fix wrong attributes for TerncyDuration * Fix wrong type for TerncyDuration Co-authored-by: Stephan Hadinger <stephan.hadinger@gmail.com>
This commit is contained in:
parent
f3498f031b
commit
f566660fb8
@ -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,
|
||||
};
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user