From 1c7817ad778770f05ea8cc1603d37af7045c2209 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Mon, 2 Jan 2023 09:18:36 +0100 Subject: [PATCH 1/5] Fix Home Assistant `Template variable warning: 'dict object' has no attribute 'latest_version' when rendering '{{ value_json['update']['latest_version'] }}'` error. https://github.com/Koenkk/zigbee2mqtt/issues/15747 --- lib/extension/homeassistant.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/extension/homeassistant.ts b/lib/extension/homeassistant.ts index e8addc0d..41713d0f 100644 --- a/lib/extension/homeassistant.ts +++ b/lib/extension/homeassistant.ts @@ -1478,7 +1478,7 @@ export default class HomeAssistant extends Extension { } } - if (entity.isDevice() && entity.definition?.ota && !message.update?.hasOwnProperty('installed_version')) { + if (entity.isDevice() && entity.definition?.ota && !message.update?.hasOwnProperty('latest_version')) { message.update = {...message.update, installed_version: -1, latest_version: -1}; } } From 9fe48e2a888ad951bf79482cce5b6c4fb8f333e1 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Tue, 3 Jan 2023 10:58:47 +0100 Subject: [PATCH 2/5] Revert "Expose cover `moving` state to Home Assistant (#15555)" This reverts commit 56f7f3e1bdb2f4f6266d712884cee026bc32c98d. --- lib/extension/homeassistant.ts | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/lib/extension/homeassistant.ts b/lib/extension/homeassistant.ts index 41713d0f..7c9dad1c 100644 --- a/lib/extension/homeassistant.ts +++ b/lib/extension/homeassistant.ts @@ -393,7 +393,6 @@ export default class HomeAssistant extends Extension { const motorState = allExposes?.find((e) => e.type === 'enum' && e.name === 'motor_state' && e.access === ACCESS_STATE); const running = allExposes?.find((e) => e.type === 'binary' && e.name === 'running'); - const moving = allExposes?.find((e) => e.type === 'enum' && e.name === 'moving'); const discoveryEntry: DiscoveryEntry = { type: 'cover', @@ -407,38 +406,24 @@ export default class HomeAssistant extends Extension { }, }; - // For curtains that have `motor_state` or `moving` lookup a possible state names and make this + // For curtains that have `motor_state` lookup a possible state names and make this // available for discovery. If the curtains only support the `running` value, // then we use it anyway. The movement direction is calculated (assumed) in this case. - if (motorState || moving) { + if (motorState) { const openingLookup = ['opening', 'open', 'forward', 'up', 'rising']; const closingLookup = ['closing', 'close', 'backward', 'back', 'reverse', 'down', 'declining']; const stoppedLookup = ['stopped', 'stop', 'pause', 'paused']; - const movingState = motorState ? motorState : moving; - - const openState = state.values.find((s) => openingLookup.includes(s.toLowerCase())); - const closeState = state.values.find((s) => closingLookup.includes(s.toLowerCase())); - const openingState = movingState.values.find((s) => openingLookup.includes(s.toLowerCase())); - const closingState = movingState.values.find((s) => closingLookup.includes(s.toLowerCase())); - const stoppedState = movingState.values.find((s) => stoppedLookup.includes(s.toLowerCase())); + const openingState = motorState.values.find((s) => openingLookup.includes(s.toLowerCase())); + const closingState = motorState.values.find((s) => closingLookup.includes(s.toLowerCase())); + const stoppedState = motorState.values.find((s) => stoppedLookup.includes(s.toLowerCase())); if (openingState && closingState && stoppedState) { discoveryEntry.discovery_payload.state_opening = openingState; discoveryEntry.discovery_payload.state_closing = closingState; - if (openState && closeState) { - discoveryEntry.discovery_payload.state_open = openState; - discoveryEntry.discovery_payload.state_closed = closeState; - discoveryEntry.discovery_payload.value_template = - `{{ value_json.${movingState.property} if value_json.${movingState.property} and` + - ` value_json.${movingState.property} != '${stoppedState}' else` + - ` value_json.${featurePropertyWithoutEndpoint(state)} }}`; - } else { - discoveryEntry.discovery_payload.state_stopped = stoppedState; - discoveryEntry.discovery_payload.value_template = - `{{ '${stoppedState}' if not value_json.${movingState.property}` + - ` else value_json.${movingState.property} }}`; - } + discoveryEntry.discovery_payload.state_stopped = stoppedState; + discoveryEntry.discovery_payload.value_template = `{% if not value_json.${motorState.property} %}` + + ` ${stoppedState} {% else %} {{ value_json.${motorState.property} }} {% endif %}`; } } else if (running) { discoveryEntry.discovery_payload.value_template = `{% if not value_json.${running.property} %} ` + From 217fbb284a3bbe0f17538e8431a3f04ea78c8afa Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Wed, 4 Jan 2023 19:49:27 +0100 Subject: [PATCH 3/5] Fix Home Assistant `Template variable warning: 'dict object' has no attribute 'latest_version' when rendering '{{ value_json['update']['latest_version'] }}'` error attempt 2. https://github.com/Koenkk/zigbee2mqtt/issues/15747 --- lib/extension/homeassistant.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/extension/homeassistant.ts b/lib/extension/homeassistant.ts index 7c9dad1c..6bc36387 100644 --- a/lib/extension/homeassistant.ts +++ b/lib/extension/homeassistant.ts @@ -1463,7 +1463,7 @@ export default class HomeAssistant extends Extension { } } - if (entity.isDevice() && entity.definition?.ota && !message.update?.hasOwnProperty('latest_version')) { + if (entity.isDevice() && entity.definition?.ota && message.update?.latest_version == null) { message.update = {...message.update, installed_version: -1, latest_version: -1}; } } From f984734961f417b0057d00f3cf6b2c98bc3dfb28 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Fri, 6 Jan 2023 11:07:14 +0100 Subject: [PATCH 4/5] Update zigbee-herdsman-converters to v15.0.12-hotfix.0 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e5197e5..853d9662 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "winston-transport": "^4.5.0", "ws": "^8.11.0", "zigbee-herdsman": "0.14.83", - "zigbee-herdsman-converters": "15.0.12", + "zigbee-herdsman-converters": "15.0.12-hotfix.0", "zigbee2mqtt-frontend": "0.6.121" }, "bin": { @@ -9040,9 +9040,9 @@ } }, "node_modules/zigbee-herdsman-converters": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-15.0.12.tgz", - "integrity": "sha512-HAWIiuGYFXHwkNU4OePvaDQ32Wh7gUGYb/flY7kefTjJM+fyEW9mqV9kjdnJWi7IezrjOvzMIhI+zi4IOOAARw==", + "version": "15.0.12-hotfix.0", + "resolved": "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-15.0.12-hotfix.0.tgz", + "integrity": "sha512-rjH8rNp38kUJvf24qAuoRLK3j7XslBidRtK9fzcstTKgfl5/6HjfTQMCsEQ+nOiT0g8WHsfQWil9YqzUCiB1+Q==", "dependencies": { "axios": "^1.2.1", "buffer-crc32": "^0.2.13", @@ -15681,9 +15681,9 @@ } }, "zigbee-herdsman-converters": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-15.0.12.tgz", - "integrity": "sha512-HAWIiuGYFXHwkNU4OePvaDQ32Wh7gUGYb/flY7kefTjJM+fyEW9mqV9kjdnJWi7IezrjOvzMIhI+zi4IOOAARw==", + "version": "15.0.12-hotfix.0", + "resolved": "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-15.0.12-hotfix.0.tgz", + "integrity": "sha512-rjH8rNp38kUJvf24qAuoRLK3j7XslBidRtK9fzcstTKgfl5/6HjfTQMCsEQ+nOiT0g8WHsfQWil9YqzUCiB1+Q==", "requires": { "axios": "^1.2.1", "buffer-crc32": "^0.2.13", diff --git a/package.json b/package.json index db16d3ea..db99ad27 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "winston-transport": "^4.5.0", "ws": "^8.11.0", "zigbee-herdsman": "0.14.83", - "zigbee-herdsman-converters": "15.0.12", + "zigbee-herdsman-converters": "15.0.12-hotfix.0", "zigbee2mqtt-frontend": "0.6.121" }, "devDependencies": { From 7d67ffc429db09f4a7395cc4a97dc991dc5dab08 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Fri, 6 Jan 2023 11:07:47 +0100 Subject: [PATCH 5/5] 1.29.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 853d9662..80a9df2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "zigbee2mqtt", - "version": "1.29.0", + "version": "1.29.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "zigbee2mqtt", - "version": "1.29.0", + "version": "1.29.1", "license": "GPL-3.0", "dependencies": { "ajv": "^8.11.2", diff --git a/package.json b/package.json index db99ad27..ed959418 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zigbee2mqtt", - "version": "1.29.0", + "version": "1.29.1", "description": "Zigbee to MQTT bridge using Zigbee-herdsman", "main": "index.js", "repository": {