diff --git a/package.json b/package.json index 1cdc62bec..783bc574a 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "winston-transport": "^4.9.0", "ws": "^8.18.1", "zigbee-herdsman": "3.5.1", - "zigbee-herdsman-converters": "23.26.0", + "zigbee-herdsman-converters": "23.27.0", "zigbee2mqtt-frontend": "0.9.9" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f85237ece..7989c67fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,8 +78,8 @@ importers: specifier: 3.5.1 version: 3.5.1 zigbee-herdsman-converters: - specifier: 23.26.0 - version: 23.26.0 + specifier: 23.27.0 + version: 23.27.0 zigbee2mqtt-frontend: specifier: 0.9.9 version: 0.9.9 @@ -1845,8 +1845,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zigbee-herdsman-converters@23.26.0: - resolution: {integrity: sha512-5NJ/iGRpIe9dtMgeERzPkeeCT9cx6DfXKrAf79jy3IvLlpFgvrZdEvJND2hP2gb+PFlTbtyyoLbf3/uKEUtESQ==} + zigbee-herdsman-converters@23.27.0: + resolution: {integrity: sha512-wepPgT8dk/vEHGhIRZu4Cy4XKiSMrzlYqw1lv36e1GdvRsCKeOoHhnrYfc0vCIy6j5lCTKGO1Af0Hl8GOu6tcw==} zigbee-herdsman@3.5.1: resolution: {integrity: sha512-XhRZSiJ40KibUyh9zxRJKInWoRjsktD+YHFjUKZ7graKhHJkKbqePl37Z+cQbCEfy03px5lmwIokf01OW4JOPQ==} @@ -3534,7 +3534,7 @@ snapshots: yocto-queue@0.1.0: {} - zigbee-herdsman-converters@23.26.0: + zigbee-herdsman-converters@23.27.0: dependencies: buffer-crc32: 1.0.0 iconv-lite: 0.6.3 diff --git a/test/extensions/bridge.test.ts b/test/extensions/bridge.test.ts index b62260202..a135ab350 100644 --- a/test/extensions/bridge.test.ts +++ b/test/extensions/bridge.test.ts @@ -513,6 +513,17 @@ describe('Extension: Bridge', () => { type: 'numeric', value_min: 0, }, + { + access: 2, + description: + 'Whether to unfreeze IKEA lights (that are known to be frozen) before issuing a command, false: no unfreeze support, true: unfreeze support (default true).', + label: 'Unfreeze support', + name: 'unfreeze_support', + property: 'unfreeze_support', + type: 'binary', + value_off: false, + value_on: true, + }, { access: 2, description: @@ -2069,6 +2080,17 @@ describe('Extension: Bridge', () => { type: 'numeric', value_min: 0, }, + { + access: 2, + description: + 'Whether to unfreeze IKEA lights (that are known to be frozen) before issuing a command, false: no unfreeze support, true: unfreeze support (default true).', + label: 'Unfreeze support', + name: 'unfreeze_support', + property: 'unfreeze_support', + type: 'binary', + value_off: false, + value_on: true, + }, { access: 2, description: @@ -2311,7 +2333,7 @@ describe('Extension: Bridge', () => { await mockZHEvents.deviceInterview({device: devices.unsupported, status: 'successful'}); await flushPromises(); expect(mockMQTTPublishAsync).toHaveBeenCalledTimes(7); - // console.log(mockMQTT.publish.mock.calls.filter((c) => c[0] === 'zigbee2mqtt/bridge/event')); + // console.log(mockMQTTPublishAsync.mock.calls.filter((c) => c[0] === 'zigbee2mqtt/bridge/event')); expect(mockMQTTPublishAsync).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/event', stringify({ @@ -2491,6 +2513,17 @@ describe('Extension: Bridge', () => { type: 'numeric', value_min: 0, }, + { + access: 2, + description: + 'Whether to unfreeze IKEA lights (that are known to be frozen) before issuing a command, false: no unfreeze support, true: unfreeze support (default true).', + label: 'Unfreeze support', + name: 'unfreeze_support', + property: 'unfreeze_support', + type: 'binary', + value_off: false, + value_on: true, + }, { access: 2, description: diff --git a/test/extensions/publish.test.ts b/test/extensions/publish.test.ts index 8f30c39d1..5da10ffc9 100644 --- a/test/extensions/publish.test.ts +++ b/test/extensions/publish.test.ts @@ -967,18 +967,20 @@ describe('Extension: Publish', () => { const payload = {state: 'ON', brightness: 20, color_temp: 200, transition: 20}; await mockMQTTEvents.message('zigbee2mqtt/bulb/set', stringify(payload)); await flushPromises(); - expect(endpoint.command).toHaveBeenCalledTimes(2); + expect(endpoint.command).toHaveBeenCalledTimes(3); expect(endpoint.command.mock.calls[0]).toEqual(['genLevelCtrl', 'moveToLevelWithOnOff', {level: 20, transtime: 0}, {}]); - expect(endpoint.command.mock.calls[1]).toEqual(['lightingColorCtrl', 'moveToColorTemp', {colortemp: 200, transtime: 200}, {}]); + expect(endpoint.command.mock.calls[1]).toEqual(['genLevelCtrl', 'stop', {}, {}]); // unfreeze + expect(endpoint.command.mock.calls[2]).toEqual(['lightingColorCtrl', 'moveToColorTemp', {colortemp: 200, transtime: 200}, {}]); }); it('Should use transition only once when setting brightness and color temperature for group which contains TRADFRI', async () => { const group = groups.group_with_tradfri; await mockMQTTEvents.message('zigbee2mqtt/group_with_tradfri/set', stringify({state: 'ON', transition: 60, brightness: 20, color_temp: 400})); await flushPromises(); - expect(group.command).toHaveBeenCalledTimes(2); + expect(group.command).toHaveBeenCalledTimes(3); expect(group.command.mock.calls[0]).toEqual(['genLevelCtrl', 'moveToLevelWithOnOff', {level: 20, transtime: 0}, {}]); - expect(group.command.mock.calls[1]).toEqual(['lightingColorCtrl', 'moveToColorTemp', {colortemp: 400, transtime: 600}, {}]); + expect(group.command.mock.calls[1]).toEqual(['genLevelCtrl', 'stop', {}, {}]); // unfreeze + expect(group.command.mock.calls[2]).toEqual(['lightingColorCtrl', 'moveToColorTemp', {colortemp: 400, transtime: 600}, {}]); }); it('Message transition should overrule options transition', async () => {