From 1c8ba3d28eb8e852dca2bf731295809e6af783ea Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Thu, 26 Mar 2020 22:01:05 +0100 Subject: [PATCH] Mock water_leak value for Home Assistant when it's not available. #3146 --- lib/extension/homeassistant.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/extension/homeassistant.js b/lib/extension/homeassistant.js index 0d0c67ab..32740716 100644 --- a/lib/extension/homeassistant.js +++ b/lib/extension/homeassistant.js @@ -1445,10 +1445,25 @@ class HomeAssistant extends BaseExtension { * Publish a value for update_available (if not there yet) to prevent Home Assistant generating warnings of * this value not being available. */ - if (data.entity.device && data.entity.mapped && data.entity.mapped.hasOwnProperty('ota') && - !data.payload.hasOwnProperty('update_available')) { - logger.debug(`Mocking update_available value for Home Assistant`); - this.publishEntityState(data.entity.device.ieeeAddr, {update_available: false}); + const mockedValues = [ + { + property: 'update_available', + condition: data.entity.device && data.entity.mapped && data.entity.mapped.hasOwnProperty('ota'), + value: false, + }, + { + property: 'water_leak', + condition: data.entity.device && data.entity.mapped && + mapping[data.entity.mapped.model].includes(cfg.binary_sensor_water_leak), + value: false, + }, + ]; + + for (const entry of mockedValues) { + if (entry.condition && !data.payload.hasOwnProperty(entry.property)) { + logger.debug(`Mocking '${entry.property}' value for Home Assistant`); + this.publishEntityState(data.entity.device.ieeeAddr, {[entry.property]: entry.value}); + } } }