From 2942ae9f4a27870b2547cfe1f3e14c1641ba5ef8 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Thu, 7 Jan 2021 19:17:13 +0100 Subject: [PATCH] Fix some properties not being published when debounce is used (#5509) * initial * More logging. https://github.com/Koenkk/zigbee-herdsman-converters/issues/1988 * More logging * Ignore group_optimistic * Cleanup * Add logging again * We got him? * go * linto --- lib/controller.js | 2 +- lib/extension/homeassistant.js | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/controller.js b/lib/controller.js index b7d835dc06..019fc5e9d4 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -344,7 +344,7 @@ class Controller { } } - this.eventBus.emit('publishEntityState', {payload: messagePayload, entity: resolvedEntity, stateChangeReason}); + this.eventBus.emit('publishEntityState', {messagePayload, entity: resolvedEntity, stateChangeReason, payload}); } async iteratePayloadAttributeOutput(topicRoot, payload, options) { diff --git a/lib/extension/homeassistant.js b/lib/extension/homeassistant.js index f5611387ed..8c55e3a0c7 100644 --- a/lib/extension/homeassistant.js +++ b/lib/extension/homeassistant.js @@ -436,10 +436,10 @@ class HomeAssistant extends Extension { const endpoint = match[1]; const endpointRegExp = new RegExp(`(.*)_${endpoint}`); const payload = {}; - for (const key of Object.keys(data.payload)) { + for (const key of Object.keys(data.messagePayload)) { const keyMatch = endpointRegExp.exec(key); if (keyMatch) { - payload[keyMatch[1]] = data.payload[key]; + payload[keyMatch[1]] = data.messagePayload[key]; } } @@ -456,7 +456,8 @@ class HomeAssistant extends Extension { * https://github.com/Koenkk/zigbee2mqtt/issues/959#issuecomment-480341347 */ if (settings.get().advanced.homeassistant_legacy_triggers) { - const keys = ['action', 'click'].filter((k) => data.payload.hasOwnProperty(k) && data.payload[k] !== ''); + const keys = ['action', 'click'].filter((k) => + data.messagePayload.hasOwnProperty(k) && data.messagePayload[k] !== ''); for (const key of keys) { this.publishEntityState(data.entity.device.ieeeAddr, {[key]: ''}); } @@ -469,9 +470,9 @@ class HomeAssistant extends Extension { * and republish it to zigbee2mqtt/my_devic/action */ if (data.entity.definition) { - const keys = ['action', 'click'].filter((k) => data.payload[k] && data.payload[k] !== ''); + const keys = ['action', 'click'].filter((k) => data.messagePayload[k] && data.messagePayload[k] !== ''); for (const key of keys) { - const value = data.payload[key].toString(); + const value = data.messagePayload[key].toString(); await this.publishDeviceTriggerDiscover(data.entity, key, value); await this.mqtt.publish(`${data.entity.name}/${key}`, value, {}); } @@ -502,7 +503,7 @@ class HomeAssistant extends Extension { ]; for (const entry of mockedValues) { - if (entry.condition && !data.payload.hasOwnProperty(entry.property)) { + if (entry.condition && !data.messagePayload.hasOwnProperty(entry.property)) { logger.debug(`Mocking '${entry.property}' value for Home Assistant`); this.publishEntityState(data.entity.device.ieeeAddr, {[entry.property]: entry.value}); }