From c95d5b9c271ac2ec7535a0926b2c829b68fd0833 Mon Sep 17 00:00:00 2001 From: VonOx Date: Wed, 18 May 2022 09:29:48 +0200 Subject: [PATCH] Add support for Sonoff SNZB-01 --- server/services/zigbee2mqtt/exposes/enumType.js | 7 ++++++- server/test/services/zigbee2mqtt/exposes/enumType.test.js | 7 ++++--- server/utils/constants.js | 3 ++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/server/services/zigbee2mqtt/exposes/enumType.js b/server/services/zigbee2mqtt/exposes/enumType.js index 9c49188a6a..3f848d9890 100644 --- a/server/services/zigbee2mqtt/exposes/enumType.js +++ b/server/services/zigbee2mqtt/exposes/enumType.js @@ -13,9 +13,12 @@ module.exports = { case BUTTON_STATUS.DOUBLE_CLICK: relatedValue = 'double'; break; - case BUTTON_STATUS.LONG_CLICK: + case BUTTON_STATUS.HOLD_CLICK: relatedValue = 'hold'; break; + case BUTTON_STATUS.LONG_CLICK: + relatedValue = 'long'; + break; default: relatedValue = undefined; } @@ -34,6 +37,8 @@ module.exports = { case 'double': return BUTTON_STATUS.DOUBLE_CLICK; case 'hold': + return BUTTON_STATUS.HOLD_CLICK; + case 'long': return BUTTON_STATUS.LONG_CLICK; default: return undefined; diff --git a/server/test/services/zigbee2mqtt/exposes/enumType.test.js b/server/test/services/zigbee2mqtt/exposes/enumType.test.js index 66db517067..e2ef588fd0 100644 --- a/server/test/services/zigbee2mqtt/exposes/enumType.test.js +++ b/server/test/services/zigbee2mqtt/exposes/enumType.test.js @@ -11,7 +11,8 @@ describe('zigbee2mqtt enumType', () => { [ { enumValue: 'single', intValue: BUTTON_STATUS.CLICK }, { enumValue: 'double', intValue: BUTTON_STATUS.DOUBLE_CLICK }, - { enumValue: 'hold', intValue: BUTTON_STATUS.LONG_CLICK }, + { enumValue: 'hold', intValue: BUTTON_STATUS.HOLD_CLICK }, + { enumValue: 'long', intValue: BUTTON_STATUS.LONG_CLICK }, ].forEach((mapping) => { const { enumValue, intValue } = mapping; @@ -28,14 +29,14 @@ describe('zigbee2mqtt enumType', () => { it('should write undefined value on missing enum', () => { const missingEnumExpose = { - values: ['single', 'long', 'short', 'double', 'triple'], + values: ['single', 'short', 'double', 'triple'], }; const result = enumType.writeValue(missingEnumExpose, BUTTON_STATUS.LONG_CLICK); assert.equal(result, undefined); }); it('should write undefined value', () => { - const result = enumType.writeValue(expose, 6); + const result = enumType.writeValue(expose, 7); assert.equal(result, undefined); }); diff --git a/server/utils/constants.js b/server/utils/constants.js index 931913d85a..1033d07959 100644 --- a/server/utils/constants.js +++ b/server/utils/constants.js @@ -8,7 +8,8 @@ const BUTTON_STATUS = { DOUBLE_CLICK: 2, LONG_CLICK_PRESS: 3, LONG_CLICK_RELEASE: 4, - LONG_CLICK: 5, + HOLD_CLICK: 5, + LONG_CLICK: 6, }; const USER_ROLE = {