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:
s-hadinger 2020-10-23 22:49:51 +02:00 committed by GitHub
parent f3498f031b
commit f566660fb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 105 additions and 91 deletions

View File

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

View File

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

View File

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