From 19c54040bce431f3394ae98ee02440f6edccbd44 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Sun, 10 Jan 2021 16:54:01 +0100 Subject: [PATCH] Allow string values for permit_join call. https://github.com/Koenkk/zigbee2mqtt/issues/5644 --- lib/extension/bridge.js | 4 ++++ test/bridge.test.js | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/extension/bridge.js b/lib/extension/bridge.js index e8b83f47..613fb207 100644 --- a/lib/extension/bridge.js +++ b/lib/extension/bridge.js @@ -185,6 +185,10 @@ class Bridge extends Extension { value = message; } + if (typeof value === 'string') { + value = value.toLowerCase() === 'true'; + } + await this.zigbee.permitJoin(value, resolvedEntity, time); const response = {value}; if (resolvedEntity) response.device = message.device; diff --git a/test/bridge.test.js b/test/bridge.test.js index db9c034b..33e4db17 100644 --- a/test/bridge.test.js +++ b/test/bridge.test.js @@ -219,6 +219,18 @@ describe('Bridge', () => { {retain: false, qos: 0}, expect.any(Function) ); + zigbeeHerdsman.permitJoin.mockClear(); + MQTT.publish.mockClear(); + MQTT.events.message('zigbee2mqtt/bridge/request/permit_join', stringify({"value": "False"})); + await flushPromises(); + expect(zigbeeHerdsman.permitJoin).toHaveBeenCalledTimes(1); + expect(zigbeeHerdsman.permitJoin).toHaveBeenCalledWith(false, undefined, undefined); + expect(MQTT.publish).toHaveBeenCalledWith( + 'zigbee2mqtt/bridge/response/permit_join', + stringify({"data":{"value":false},"status":"ok"}), + {retain: false, qos: 0}, expect.any(Function) + ); + // Invalid payload zigbeeHerdsman.permitJoin.mockClear(); MQTT.publish.mockClear();