From 214e840ec2ec473794005bd0c62785484f74c244 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sat, 16 Dec 2023 01:52:17 +0300 Subject: [PATCH] fix buildings JsonDocuments --- src/HaHelper.h | 518 ++++++++++++++++++++++++------------------------- 1 file changed, 259 insertions(+), 259 deletions(-) diff --git a/src/HaHelper.h b/src/HaHelper.h index 9d9762f..ef4c23f 100644 --- a/src/HaHelper.h +++ b/src/HaHelper.h @@ -8,14 +8,14 @@ public: bool publishSelectOutdoorSensorType(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"sensors\": {\"outdoor\": {\"type\": {% if value == 'Boiler' %}0{% elif value == 'Manual' %}1{% elif value == 'External' %}2{% endif %}}}}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("outdoor_sensor_type").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("outdoor_sensor_type").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("outdoor_sensor_type"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("outdoor_sensor_type"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Outdoor temperature source"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{% if value_json.sensors.outdoor.type == 0 %}Boiler{% elif value_json.sensors.outdoor.type == 1 %}Manual{% elif value_json.sensors.outdoor.type == 2 %}External{% endif %}"); doc[FPSTR(HA_OPTIONS)][0] = F("Boiler"); doc[FPSTR(HA_OPTIONS)][1] = F("Manual"); @@ -27,18 +27,18 @@ public: bool publishSelectIndoorSensorType(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); #if USE_BLE doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"sensors\": {\"indoor\": {\"type\": {% if value == 'Manual' %}1{% elif value == 'External' %}2{% elif value == 'Bluetooth' %}3{% endif %}}}}"); #else doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"sensors\": {\"indoor\": {\"type\": {% if value == 'Manual' %}1{% elif value == 'External' %}2{% endif %}}}}"); #endif doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("indoor_sensor_type").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("indoor_sensor_type").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("indoor_sensor_type"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("indoor_sensor_type"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Indoor temperature source"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); #if USE_BLE doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{% if value_json.sensors.indoor.type == 1 %}Manual{% elif value_json.sensors.indoor.type == 2 %}External{% elif value_json.sensors.indoor.type == 3 %}Bluetooth{% endif %}"); #else @@ -56,19 +56,19 @@ public: bool publishNumberOutdoorSensorOffset(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.sensors.outdoor.type != 1, 'online', 'offline') }}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("outdoor_sensor_offset").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("outdoor_sensor_offset").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("outdoor_sensor_offset"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("outdoor_sensor_offset"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Outdoor sensor offset"); doc[FPSTR(HA_ICON)] = F("mdi:altimeter"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.sensors.outdoor.offset|float(0)|round(2) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"sensors\": {\"outdoor\" : {\"offset\" : {{ value }}}}}"); doc[FPSTR(HA_MIN)] = -10; doc[FPSTR(HA_MAX)] = 10; @@ -81,19 +81,19 @@ public: bool publishNumberIndoorSensorOffset(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.sensors.indoor.type != 1, 'online', 'offline') }}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("indoor_sensor_offset").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("indoor_sensor_offset").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("indoor_sensor_offset"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("indoor_sensor_offset"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Indoor sensor offset"); doc[FPSTR(HA_ICON)] = F("mdi:altimeter"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.sensors.indoor.offset|float(0)|round(2) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"sensors\": {\"indoor\" : {\"offset\" : {{ value }}}}}"); doc[FPSTR(HA_MIN)] = -10; doc[FPSTR(HA_MAX)] = 10; @@ -108,16 +108,16 @@ public: bool publishSwitchDebug(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("debug").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("debug").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("debug"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("debug"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Debug"); doc[FPSTR(HA_ICON)] = F("mdi:code-braces"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.debug }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"debug\": true}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"debug\": false}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -129,16 +129,16 @@ public: bool publishSwitchEmergency(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("emergency").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("emergency").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("emergency"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("emergency"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Use emergency"); doc[FPSTR(HA_ICON)] = F("mdi:sun-snowflake-variant"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.emergency.enable }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"emergency\": {\"enable\" : true}}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"emergency\": {\"enable\" : false}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -149,16 +149,16 @@ public: bool publishNumberEmergencyTarget(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("emergency_target").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("emergency_target").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("emergency_target"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("emergency_target"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Emergency target temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-alert"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.emergency.target|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"emergency\": {\"target\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 5; doc[FPSTR(HA_MAX)] = 50; @@ -171,19 +171,19 @@ public: bool publishSwitchEmergencyUseEquitherm(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.sensors.outdoor.type != 1, 'online', 'offline') }}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("emergency_use_equitherm").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("emergency_use_equitherm").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("emergency_use_equitherm"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("emergency_use_equitherm"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Use equitherm in emergency"); doc[FPSTR(HA_ICON)] = F("mdi:snowflake-alert"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.emergency.useEquitherm }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"emergency\": {\"useEquitherm\" : true}}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"emergency\": {\"useEquitherm\" : false}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -194,18 +194,18 @@ public: bool publishSwitchHeating(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Heating"); doc[FPSTR(HA_ICON)] = F("mdi:radiator"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.heating.enable }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"heating\": {\"enable\" : true}}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"heating\": {\"enable\" : false}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -215,18 +215,18 @@ public: bool publishSwitchHeatingTurbo(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_turbo").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_turbo").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_turbo"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_turbo"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Turbo heating"); doc[FPSTR(HA_ICON)] = F("mdi:rocket-launch-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.heating.turbo }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"heating\": {\"turbo\" : true}}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"heating\": {\"turbo\" : false}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -236,18 +236,18 @@ public: bool publishNumberHeatingTarget(byte minTemp = 20, byte maxTemp = 90, bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_target").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_target").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_target"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_target"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Heating target"); doc[FPSTR(HA_ICON)] = F("mdi:radiator"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.heating.target|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"heating\": {\"target\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = minTemp; doc[FPSTR(HA_MAX)] = maxTemp; @@ -261,16 +261,16 @@ public: bool publishNumberHeatingHysteresis(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_hysteresis").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_hysteresis").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_hysteresis"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_hysteresis"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Heating hysteresis"); doc[FPSTR(HA_ICON)] = F("mdi:altimeter"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.heating.hysteresis|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"heating\": {\"hysteresis\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0; doc[FPSTR(HA_MAX)] = 5; @@ -283,17 +283,17 @@ public: bool publishSensorHeatingSetpoint(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_setpoint").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_setpoint").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_setpoint"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_setpoint"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Heating setpoint"); doc[FPSTR(HA_ICON)] = F("mdi:coolant-temperature"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.parameters.heatingSetpoint|int(0) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -302,17 +302,17 @@ public: bool publishSensorCurrentHeatingMinTemp(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("current_heating_min_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("current_heating_min_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("current_heating_min_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("current_heating_min_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Current heating min temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-down"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.parameters.heatingMinTemp|int(0) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -321,17 +321,17 @@ public: bool publishSensorCurrentHeatingMaxTemp(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("current_heating_max_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("current_heating_max_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("current_heating_max_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("current_heating_max_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Current heating max temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-up"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.parameters.heatingMaxTemp|int(0) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -341,16 +341,16 @@ public: bool publishNumberHeatingMinTemp(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_min_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_min_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_min_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_min_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Heating min temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-down"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.heating.minTemp|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"heating\": {\"minTemp\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0; doc[FPSTR(HA_MAX)] = 99; @@ -364,16 +364,16 @@ public: bool publishNumberHeatingMaxTemp(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_max_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_max_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_max_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_max_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Heating max temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-up"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.heating.maxTemp|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"heating\": {\"maxTemp\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 1; doc[FPSTR(HA_MAX)] = 100; @@ -387,16 +387,16 @@ public: bool publishNumberHeatingMaxModulation(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_max_modulation").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_max_modulation").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_max_modulation"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_max_modulation"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("power_factor"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("%"); doc[FPSTR(HA_NAME)] = F("Max modulation"); doc[FPSTR(HA_ICON)] = F("mdi:speedometer"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.heating.maxModulation|int(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"heating\": {\"maxModulation\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 1; doc[FPSTR(HA_MAX)] = 100; @@ -410,18 +410,18 @@ public: bool publishSwitchDhw(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("DHW"); doc[FPSTR(HA_ICON)] = F("mdi:water-pump"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.dhw.enable }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"dhw\": {\"enable\" : true}}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"dhw\": {\"enable\" : false}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -431,18 +431,18 @@ public: bool publishNumberDhwTarget(byte minTemp = 40, byte maxTemp = 60, bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_target").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_target").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_target"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_target"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("DHW target"); doc[FPSTR(HA_ICON)] = F("mdi:water-pump"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.dhw.target|int(0) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"dhw\": {\"target\" : {{ value|int(0) }}}}"); doc[FPSTR(HA_MIN)] = minTemp; doc[FPSTR(HA_MAX)] = maxTemp <= minTemp ? maxTemp : maxTemp; @@ -455,17 +455,17 @@ public: bool publishSensorCurrentDhwMinTemp(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("current_dhw_min_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("current_dhw_min_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("current_dhw_min_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("current_dhw_min_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Current DHW min temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-down"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.parameters.dhwMinTemp|int(0) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -474,17 +474,17 @@ public: bool publishSensorCurrentDhwMaxTemp(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("current_dhw_max_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("current_dhw_max_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("current_dhw_max_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("current_dhw_max_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Current DHW max temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-up"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.parameters.dhwMaxTemp|int(0) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -494,16 +494,16 @@ public: bool publishNumberDhwMinTemp(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_min_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_min_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_min_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_min_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("DHW min temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-down"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.dhw.minTemp|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"dhw\": {\"minTemp\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0; doc[FPSTR(HA_MAX)] = 99; @@ -517,16 +517,16 @@ public: bool publishNumberDhwMaxTemp(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_max_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_max_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_max_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_max_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("DHW max temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-up"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.dhw.maxTemp|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"dhw\": {\"maxTemp\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 1; doc[FPSTR(HA_MAX)] = 100; @@ -541,16 +541,16 @@ public: bool publishSwitchPID(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("PID"); doc[FPSTR(HA_ICON)] = F("mdi:chart-bar-stacked"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.pid.enable }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"pid\": {\"enable\" : true}}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"pid\": {\"enable\" : false}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -560,14 +560,14 @@ public: bool publishNumberPIDFactorP(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_p").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_p").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_p"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_p"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("PID factor P"); doc[FPSTR(HA_ICON)] = F("mdi:alpha-p-circle-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.pid.p_factor|float(0)|round(3) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"pid\": {\"p_factor\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0.001; doc[FPSTR(HA_MAX)] = 10; @@ -580,14 +580,14 @@ public: bool publishNumberPIDFactorI(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_i").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_i").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_i"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_i"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("PID factor I"); doc[FPSTR(HA_ICON)] = F("mdi:alpha-i-circle-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.pid.i_factor|float(0)|round(3) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"pid\": {\"i_factor\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0; doc[FPSTR(HA_MAX)] = 10; @@ -600,14 +600,14 @@ public: bool publishNumberPIDFactorD(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_d").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_d").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_d"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_d"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("PID factor D"); doc[FPSTR(HA_ICON)] = F("mdi:alpha-d-circle-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.pid.d_factor|float(0)|round(3) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"pid\": {\"d_factor\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0; doc[FPSTR(HA_MAX)] = 10; @@ -621,16 +621,16 @@ public: bool publishNumberPIDMinTemp(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_min_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_min_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_min_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_min_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("PID min temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-down"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.pid.minTemp|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"pid\": {\"minTemp\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0; doc[FPSTR(HA_MAX)] = 99; @@ -644,16 +644,16 @@ public: bool publishNumberPIDMaxTemp(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_max_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_max_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pid_max_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pid_max_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("PID max temp"); doc[FPSTR(HA_ICON)] = F("mdi:thermometer-chevron-up"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.pid.maxTemp|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"pid\": {\"maxTemp\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 1; doc[FPSTR(HA_MAX)] = 100; @@ -668,16 +668,16 @@ public: bool publishSwitchEquitherm(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("equitherm").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("equitherm").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("equitherm"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("equitherm"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Equitherm"); doc[FPSTR(HA_ICON)] = F("mdi:sun-snowflake-variant"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.equitherm.enable }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"equitherm\": {\"enable\" : true}}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"equitherm\": {\"enable\" : false}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -687,14 +687,14 @@ public: bool publishNumberEquithermFactorN(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("equitherm_n").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("equitherm_n").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("equitherm_n"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("equitherm_n"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Equitherm factor N"); doc[FPSTR(HA_ICON)] = F("mdi:alpha-n-circle-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.equitherm.n_factor|float(0)|round(3) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"equitherm\": {\"n_factor\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0.001; doc[FPSTR(HA_MAX)] = 10; @@ -707,14 +707,14 @@ public: bool publishNumberEquithermFactorK(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("equitherm_k").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("equitherm_k").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("equitherm_k"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("equitherm_k"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Equitherm factor K"); doc[FPSTR(HA_ICON)] = F("mdi:alpha-k-circle-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.equitherm.k_factor|float(0)|round(2) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"equitherm\": {\"k_factor\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0; doc[FPSTR(HA_MAX)] = 10; @@ -727,16 +727,16 @@ public: bool publishNumberEquithermFactorT(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.pid.enable, 'offline', 'online') }}"); - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("equitherm_t").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("equitherm_t").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("equitherm_t"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("equitherm_t"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Equitherm factor T"); doc[FPSTR(HA_ICON)] = F("mdi:alpha-t-circle-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.equitherm.t_factor|float(0)|round(2) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"equitherm\": {\"t_factor\" : {{ value }}}}"); doc[FPSTR(HA_MIN)] = 0; doc[FPSTR(HA_MAX)] = 10; @@ -751,16 +751,16 @@ public: bool publishSwitchTuning(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("tuning").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("tuning").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("tuning"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("tuning"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Tuning"); doc[FPSTR(HA_ICON)] = F("mdi:tune-vertical"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_STATE_ON)] = true; doc[FPSTR(HA_STATE_OFF)] = false; doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.tuning.enable }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set"); doc[FPSTR(HA_PAYLOAD_ON)] = F("{\"tuning\": {\"enable\" : true}}"); doc[FPSTR(HA_PAYLOAD_OFF)] = F("{\"tuning\": {\"enable\" : false}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -770,16 +770,16 @@ public: bool publishSelectTuningRegulator(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_AVAILABILITY_MODE)] = F("all"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"tuning\": {\"regulator\": {% if value == 'Equitherm' %}0{% elif value == 'PID' %}1{% endif %}}}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("tuning_regulator").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("tuning_regulator").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("tuning_regulator"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("tuning_regulator"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Tuning regulator"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{% if value_json.tuning.regulator == 0 %}Equitherm{% elif value_json.tuning.regulator == 1 %}PID{% endif %}"); doc[FPSTR(HA_OPTIONS)][0] = F("Equitherm"); doc[FPSTR(HA_OPTIONS)][1] = F("PID"); @@ -792,13 +792,13 @@ public: bool publishBinSensorStatus(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("status").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("status").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("status"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("status"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("problem"); doc[FPSTR(HA_NAME)] = F("Status"); doc[FPSTR(HA_ICON)] = F("mdi:list-status"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value == 'online', 'OFF', 'ON') }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 60; @@ -808,13 +808,13 @@ public: bool publishBinSensorOtStatus(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("ot_status").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("ot_status").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("ot_status"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("ot_status"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("problem"); doc[FPSTR(HA_NAME)] = F("Opentherm status"); doc[FPSTR(HA_ICON)] = F("mdi:list-status"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.otStatus, 'OFF', 'ON') }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -823,15 +823,15 @@ public: bool publishBinSensorHeating(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("running"); doc[FPSTR(HA_NAME)] = F("Heating"); doc[FPSTR(HA_ICON)] = F("mdi:radiator"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.heating, 'ON', 'OFF') }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -840,15 +840,15 @@ public: bool publishBinSensorDhw(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("running"); doc[FPSTR(HA_NAME)] = F("DHW"); doc[FPSTR(HA_ICON)] = F("mdi:water-pump"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.dhw, 'ON', 'OFF') }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -857,15 +857,15 @@ public: bool publishBinSensorFlame(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("flame").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("flame").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("flame"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("flame"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("running"); doc[FPSTR(HA_NAME)] = F("Flame"); doc[FPSTR(HA_ICON)] = F("mdi:fire"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.flame, 'ON', 'OFF') }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -874,16 +874,16 @@ public: bool publishBinSensorFault(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.otStatus, 'online', 'offline') }}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("fault").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("fault").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("fault"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("fault"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("problem"); doc[FPSTR(HA_NAME)] = F("Fault"); doc[FPSTR(HA_ICON)] = F("mdi:water-boiler-alert"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.fault, 'ON', 'OFF') }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -892,15 +892,15 @@ public: bool publishBinSensorDiagnostic(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("diagnostic").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("diagnostic").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("diagnostic"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("diagnostic"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("problem"); doc[FPSTR(HA_NAME)] = F("Diagnostic"); doc[FPSTR(HA_ICON)] = F("mdi:account-wrench"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.diagnostic, 'ON', 'OFF') }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -909,15 +909,15 @@ public: bool publishSensorFaultCode(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.fault, 'online', 'offline') }}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("fault_code").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("fault_code").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("fault_code"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("fault_code"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_NAME)] = F("Fault code"); doc[FPSTR(HA_ICON)] = F("mdi:chat-alert-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ \"E%02d\"|format(value_json.sensors.faultCode) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -926,17 +926,17 @@ public: bool publishSensorRssi(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("rssi").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("rssi").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("rssi"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("rssi"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("signal_strength"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("dBm"); doc[FPSTR(HA_NAME)] = F("RSSI"); doc[FPSTR(HA_ICON)] = F("mdi:signal"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.sensors.rssi|float(0)|round(1) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -945,17 +945,17 @@ public: bool publishSensorUptime(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("uptime").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("uptime").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("uptime"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("uptime"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("duration"); doc[FPSTR(HA_STATE_CLASS)] = F("total_increasing"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("s"); doc[FPSTR(HA_NAME)] = F("Uptime"); doc[FPSTR(HA_ICON)] = F("mdi:clock-start"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.sensors.uptime|int(0) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -965,17 +965,17 @@ public: bool publishSensorModulation(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("modulation_level").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("modulation_level").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("modulation_level"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("modulation_level"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("power_factor"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("%"); doc[FPSTR(HA_NAME)] = F("Modulation level"); doc[FPSTR(HA_ICON)] = F("mdi:fire-circle"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.sensors.modulation|float(0)|round(0) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -984,17 +984,17 @@ public: bool publishSensorPressure(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pressure").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pressure").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("pressure"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("pressure"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("pressure"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("bar"); doc[FPSTR(HA_NAME)] = F("Pressure"); doc[FPSTR(HA_ICON)] = F("mdi:gauge"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.sensors.pressure|float(0)|round(2) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -1003,17 +1003,17 @@ public: bool publishSensorDhwFlowRate(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_flow_rate").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_flow_rate").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_flow_rate"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_flow_rate"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("volume"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("L/min"); doc[FPSTR(HA_NAME)] = F("DHW flow rate"); doc[FPSTR(HA_ICON)] = F("mdi:water-pump"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.sensors.dhwFlowRate|float(0)|round(2) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -1024,15 +1024,15 @@ public: bool publishNumberIndoorTemp(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("indoor_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("indoor_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("indoor_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("indoor_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Indoor temperature"); doc[FPSTR(HA_ICON)] = F("mdi:home-thermometer"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.temperatures.indoor|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"temperatures\": {\"indoor\":{{ value }}}}"); doc[FPSTR(HA_MIN)] = -99; doc[FPSTR(HA_MAX)] = 99; @@ -1045,18 +1045,18 @@ public: bool publishSensorIndoorTemp(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][0][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][0][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_AVAILABILITY_MODE)] = F("any"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("indoor_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("indoor_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("indoor_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("indoor_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Indoor temperature"); doc[FPSTR(HA_ICON)] = F("mdi:home-thermometer"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.temperatures.indoor|float(0)|round(1) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -1066,15 +1066,15 @@ public: bool publishNumberOutdoorTemp(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("outdoor_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("outdoor_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("outdoor_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("outdoor_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Outdoor temperature"); doc[FPSTR(HA_ICON)] = F("mdi:home-thermometer-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.temperatures.outdoor|float(0)|round(1) }}"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"temperatures\": {\"outdoor\":{{ value }}}}"); doc[FPSTR(HA_MIN)] = -99; doc[FPSTR(HA_MAX)] = 99; @@ -1087,18 +1087,18 @@ public: bool publishSensorOutdoorTemp(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][0][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][0][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_AVAILABILITY_MODE)] = F("any"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("outdoor_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("outdoor_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("outdoor_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("outdoor_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Outdoor temperature"); doc[FPSTR(HA_ICON)] = F("mdi:home-thermometer-outline"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.temperatures.outdoor|float(0)|round(1) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -1107,17 +1107,17 @@ public: bool publishSensorHeatingTemp(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("Heating temperature"); doc[FPSTR(HA_ICON)] = F("mdi:radiator"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.temperatures.heating|float(0)|round(2) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -1126,17 +1126,17 @@ public: bool publishSensorDhwTemp(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_temp").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_temp").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw_temp"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw_temp"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic"); doc[FPSTR(HA_DEVICE_CLASS)] = F("temperature"); doc[FPSTR(HA_STATE_CLASS)] = F("measurement"); doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("°C"); doc[FPSTR(HA_NAME)] = F("DHW temperature"); doc[FPSTR(HA_ICON)] = F("mdi:water-pump"); - doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_STATE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.temperatures.dhw|float(0)|round(2) }}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -1146,15 +1146,15 @@ public: bool publishClimateHeating(byte minTemp = 20, byte maxTemp = 90, byte currentTempSource = HaHelper::TEMP_SOURCE_HEATING, bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("heating"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("heating"); doc[FPSTR(HA_NAME)] = F("Heating"); doc[FPSTR(HA_ICON)] = F("mdi:radiator"); if (currentTempSource == HaHelper::TEMP_SOURCE_HEATING || currentTempSource == HaHelper::TEMP_SOURCE_INDOOR) { - doc[FPSTR(HA_CURRENT_TEMPERATURE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_CURRENT_TEMPERATURE_TOPIC)] = this->getDeviceTopic("state"); } if (currentTempSource == HaHelper::TEMP_SOURCE_HEATING) { @@ -1164,27 +1164,27 @@ public: doc[FPSTR(HA_CURRENT_TEMPERATURE_TEMPLATE)] = F("{{ value_json.temperatures.indoor|float(0)|round(2) }}"); } - doc[FPSTR(HA_TEMPERATURE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_TEMPERATURE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_TEMPERATURE_COMMAND_TEMPLATE)] = F("{\"heating\": {\"target\" : {{ value }}}}"); - doc[FPSTR(HA_TEMPERATURE_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_TEMPERATURE_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_TEMPERATURE_STATE_TEMPLATE)] = F("{{ value_json.heating.target|float(0)|round(1) }}"); - doc[FPSTR(HA_MODE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_MODE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_MODE_COMMAND_TEMPLATE)] = F("{% if value == 'heat' %}{\"heating\": {\"enable\" : true}}" "{% elif value == 'off' %}{\"heating\": {\"enable\" : false}}{% endif %}"); - doc[FPSTR(HA_MODE_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_MODE_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_MODE_STATE_TEMPLATE)] = F("{{ iif(value_json.heating.enable, 'heat', 'off') }}"); doc[FPSTR(HA_MODES)][0] = F("off"); doc[FPSTR(HA_MODES)][1] = F("heat"); - doc[FPSTR(HA_ACTION_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_ACTION_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_ACTION_TEMPLATE)] = F("{{ iif(value_json.states.heating, 'heating', 'idle') }}"); - doc[FPSTR(HA_PRESET_MODE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_PRESET_MODE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_PRESET_MODE_COMMAND_TEMPLATE)] = F("{% if value == 'boost' %}{\"heating\": {\"turbo\" : true}}" "{% elif value == 'none' %}{\"heating\": {\"turbo\" : false}}{% endif %}"); - doc[FPSTR(HA_PRESET_MODE_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_PRESET_MODE_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_PRESET_MODE_VALUE_TEMPLATE)] = F("{{ iif(value_json.heating.turbo, 'boost', 'none') }}"); doc[FPSTR(HA_PRESET_MODES)][0] = F("boost"); @@ -1198,31 +1198,31 @@ public: bool publishClimateDhw(byte minTemp = 40, byte maxTemp = 60, bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("status"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("dhw"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("dhw"); doc[FPSTR(HA_NAME)] = F("DHW"); doc[FPSTR(HA_ICON)] = F("mdi:water-pump"); - doc[FPSTR(HA_CURRENT_TEMPERATURE_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_CURRENT_TEMPERATURE_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_CURRENT_TEMPERATURE_TEMPLATE)] = F("{{ value_json.temperatures.dhw|float(0)|round(1) }}"); - doc[FPSTR(HA_TEMPERATURE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_TEMPERATURE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_TEMPERATURE_COMMAND_TEMPLATE)] = F("{\"dhw\": {\"target\" : {{ value|int(0) }}}}"); - doc[FPSTR(HA_TEMPERATURE_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_TEMPERATURE_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_TEMPERATURE_STATE_TEMPLATE)] = F("{{ value_json.dhw.target|int(0) }}"); - doc[FPSTR(HA_MODE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set").c_str(); + doc[FPSTR(HA_MODE_COMMAND_TOPIC)] = this->getDeviceTopic("settings/set"); doc[FPSTR(HA_MODE_COMMAND_TEMPLATE)] = F("{% if value == 'heat' %}{\"dhw\": {\"enable\" : true}}" "{% elif value == 'off' %}{\"dhw\": {\"enable\" : false}}{% endif %}"); - doc[FPSTR(HA_MODE_STATE_TOPIC)] = this->getDeviceTopic("settings").c_str(); + doc[FPSTR(HA_MODE_STATE_TOPIC)] = this->getDeviceTopic("settings"); doc[FPSTR(HA_MODE_STATE_TEMPLATE)] = F("{{ iif(value_json.dhw.enable, 'heat', 'off') }}"); doc[FPSTR(HA_MODES)][0] = F("off"); doc[FPSTR(HA_MODES)][1] = F("heat"); - doc[FPSTR(HA_ACTION_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_ACTION_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_ACTION_TEMPLATE)] = F("{{ iif(value_json.states.dhw, 'heating', 'idle') }}"); doc[FPSTR(HA_MIN_TEMP)] = minTemp; @@ -1236,12 +1236,12 @@ public: bool publishButtonRestart(bool enabledByDefault = true) { JsonDocument doc; doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("restart").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("restart").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("restart"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("restart"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("restart"); doc[FPSTR(HA_NAME)] = F("Restart"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"actions\": {\"restart\": true}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -1250,15 +1250,15 @@ public: bool publishButtonResetFault(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.fault, 'online', 'offline') }}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("reset_fault").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("reset_fault").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("reset_fault"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("reset_fault"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("restart"); doc[FPSTR(HA_NAME)] = F("Reset fault"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"actions\": {\"resetFault\": true}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120; @@ -1267,15 +1267,15 @@ public: bool publishButtonResetDiagnostic(bool enabledByDefault = true) { JsonDocument doc; - doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("state").c_str(); + doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = this->getDeviceTopic("state"); doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.diagnostic, 'online', 'offline') }}"); doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; - doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("reset_diagnostic").c_str(); - doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("reset_diagnostic").c_str(); + doc[FPSTR(HA_UNIQUE_ID)] = this->getObjectId("reset_diagnostic"); + doc[FPSTR(HA_OBJECT_ID)] = this->getObjectId("reset_diagnostic"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_DEVICE_CLASS)] = F("restart"); doc[FPSTR(HA_NAME)] = F("Reset diagnostic"); - doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set").c_str(); + doc[FPSTR(HA_COMMAND_TOPIC)] = this->getDeviceTopic("state/set"); doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"actions\": {\"resetDiagnostic\": true}}"); doc[FPSTR(HA_EXPIRE_AFTER)] = 120;