diff --git a/CHANGELOG.md b/CHANGELOG.md index 34bd3df..0f5a877 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Add rudimentary way of differentiating between different automation types * Disable "heating/cooling allowed" on legacy EDA units, fixes crash (https://github.com/Jalle19/eda-modbus-bridge/issues/105) * Disable "eco" mode switch on older units (https://github.com/Jalle19/eda-modbus-bridge/issues/104) +* Add optional sensors for control panel temperature, supply fan speed and exhaust fan speed (https://github.com/Jalle19/eda-modbus-bridge/issues/96) ## 2.7.1 diff --git a/app/homeassistant.mjs b/app/homeassistant.mjs index 3935b81..377c575 100644 --- a/app/homeassistant.mjs +++ b/app/homeassistant.mjs @@ -152,6 +152,27 @@ export const configureMqttDiscovery = async (modbusClient, mqttClient) => { 'Room temperature #3', { 'enabled_by_default': false } ), + // Optional sensors that are only guaranteed to work on MD automation units + 'controlPanel1Temperature': createTemperatureSensorConfiguration( + configurationBase, + 'controlPanel1Temperature', + 'Control panel #1 temperature', + { 'enabled_by_default': automationType === AUTOMATION_TYPE_MD } + ), + 'controlPanel2Temperature': createTemperatureSensorConfiguration( + configurationBase, + 'controlPanel2Temperature', + 'Control panel #2 temperature', + { 'enabled_by_default': automationType === AUTOMATION_TYPE_MD } + ), + 'supplyFanSpeed': createSensorConfiguration(configurationBase, 'supplyFanSpeed', 'Supply fan speed', { + 'unit_of_measurement': '%', + 'enabled_by_default': automationType === AUTOMATION_TYPE_MD, + }), + 'exhaustFanSpeed': createSensorConfiguration(configurationBase, 'exhaustFanSpeed', 'Exhaust fan speed', { + 'unit_of_measurement': '%', + 'enabled_by_default': automationType === AUTOMATION_TYPE_MD, + }), } // Configurable numbers diff --git a/app/modbus.mjs b/app/modbus.mjs index 4e3a09a..43a0a4e 100644 --- a/app/modbus.mjs +++ b/app/modbus.mjs @@ -158,6 +158,19 @@ export const getReadings = async (modbusClient) => { } } + // Sensors that only work reliably on MD automation devices + const deviceInformation = await getDeviceInformation(modbusClient) + if (deviceInformation.automationType === AUTOMATION_TYPE_MD) { + result = await mutex.runExclusive(async () => tryReadHoldingRegisters(modbusClient, 1, 4)) + readings = { + ...readings, + 'controlPanel1Temperature': parseTemperature(result.data[0]), + 'controlPanel2Temperature': parseTemperature(result.data[1]), + 'supplyFanSpeed': result.data[2], + 'exhaustFanSpeed': result.data[3], + } + } + return readings }