From 72d454cf57e18ade2f16262847fd29ea2d8a8296 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sun, 26 Jun 2022 07:59:16 +0300 Subject: [PATCH] first commit --- .gitignore | 3 + bin/src.ino.bin | Bin 0 -> 431808 bytes src/HomeAssistantHelper.h | 1280 +++++++++++++++++++++++++++++++++++++ src/MainTask.h | 83 +++ src/MqttTask.h | 474 ++++++++++++++ src/OpenThermTask.h | 542 ++++++++++++++++ src/RegulatorTask.h | 240 +++++++ src/SensorsTask.h | 27 + src/Settings.h | 90 +++ src/WifiManagerTask.h | 77 +++ src/defines.h | 43 ++ src/lib/CustomOpenTherm.h | 46 ++ src/lib/CustomTask.h | 45 ++ src/lib/Equitherm.h | 63 ++ src/lib/MiniTask.h | 64 ++ src/src.ino | 58 ++ 16 files changed, 3135 insertions(+) create mode 100644 .gitignore create mode 100644 bin/src.ino.bin create mode 100644 src/HomeAssistantHelper.h create mode 100644 src/MainTask.h create mode 100644 src/MqttTask.h create mode 100644 src/OpenThermTask.h create mode 100644 src/RegulatorTask.h create mode 100644 src/SensorsTask.h create mode 100644 src/Settings.h create mode 100644 src/WifiManagerTask.h create mode 100644 src/defines.h create mode 100644 src/lib/CustomOpenTherm.h create mode 100644 src/lib/CustomTask.h create mode 100644 src/lib/Equitherm.h create mode 100644 src/lib/MiniTask.h create mode 100644 src/src.ino diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..64fa8cd --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/.vscode +/bin/* +!/bin/src.ino.bin \ No newline at end of file diff --git a/bin/src.ino.bin b/bin/src.ino.bin new file mode 100644 index 0000000000000000000000000000000000000000..2425dc9122db39abd50a816ac8145831f60652e2 GIT binary patch literal 431808 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�x>1FkMGKEWpv9c?oE#Bzr8 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 doc; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = F("{\"outdoorTempSource\": {% if value == 'Boiler' %}0{% elif value == 'Manual' %}1{% elif value == 'External' %}2{% endif %}}"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_outdoorTempSource"; + doc["object_id"] = _prefix + "_outdoorTempSource"; + doc["entity_category"] = "config"; + doc["name"] = "Outdoor temperature source"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = F("{% if value_json.outdoorTempSource == 0 %}Boiler{% elif value_json.outdoorTempSource == 1 %}Manual{% elif value_json.outdoorTempSource == 2 %}External{% endif %}"); + doc["options"][0] = F("Boiler"); + doc["options"][1] = F("Manual"); + doc["options"][2] = F("External"); + + client.beginPublish((F("homeassistant/select/") + _prefix + "/outdoorTempSource/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSwitchDebug(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_debug"; + doc["object_id"] = _prefix + "_debug"; + doc["entity_category"] = "config"; + doc["name"] = "Debug"; + doc["icon"] = "mdi:code-braces"; + doc["state_topic"] = _prefix + F("/settings"); + doc["state_on"] = true; + doc["state_off"] = false; + doc["value_template"] = "{{ value_json.debug }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["payload_on"] = "{\"debug\": true}"; + doc["payload_off"] = "{\"debug\": false}"; + + client.beginPublish((F("homeassistant/switch/") + _prefix + "/debug/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishSwitchEmergency(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_emergency"; + doc["object_id"] = _prefix + "_emergency"; + doc["entity_category"] = "config"; + doc["name"] = "Use emergency"; + doc["icon"] = "mdi:sun-snowflake-variant"; + doc["state_topic"] = _prefix + F("/settings"); + doc["state_on"] = true; + doc["state_off"] = false; + doc["value_template"] = "{{ value_json.emergency.enable }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["payload_on"] = "{\"emergency\": {\"enable\" : true}}"; + doc["payload_off"] = "{\"emergency\": {\"enable\" : false}}"; + + client.beginPublish((F("homeassistant/switch/") + _prefix + "/emergency/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberEmergencyTarget(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_emergency_target"; + doc["object_id"] = _prefix + "_emergency_target"; + doc["entity_category"] = "config"; + doc["device_class"] = "temperature"; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "Emergency target temp"; + doc["icon"] = "mdi:thermometer-alert"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.emergency.target|float(0)|round(1) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"emergency\": {\"target\" : {{ value }}}}"; + doc["min"] = 5; + doc["max"] = 50; + doc["step"] = 0.5; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/emergency_target/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSwitchEmergencyUseEquitherm(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/settings"); + doc["availability"]["value_template"] = F("{{ iif(value_json.outdoorTempSource != 1, 'online', 'offline') }}"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_emergency_use_equitherm"; + doc["object_id"] = _prefix + "_emergency_use_equitherm"; + doc["entity_category"] = "config"; + doc["name"] = "Use equitherm in emergency"; + doc["icon"] = "mdi:snowflake-alert"; + doc["state_topic"] = _prefix + F("/settings"); + doc["state_on"] = true; + doc["state_off"] = false; + doc["value_template"] = "{{ value_json.emergency.useEquitherm }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["payload_on"] = "{\"emergency\": {\"useEquitherm\" : true}}"; + doc["payload_off"] = "{\"emergency\": {\"useEquitherm\" : false}}"; + + client.beginPublish((F("homeassistant/switch/") + _prefix + "/emergency_use_equitherm/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishSwitchHeating(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_heating"; + doc["object_id"] = _prefix + "_heating"; + doc["entity_category"] = "config"; + doc["name"] = "Heating"; + doc["icon"] = "mdi:radiator"; + doc["state_topic"] = _prefix + F("/settings"); + doc["state_on"] = true; + doc["state_off"] = false; + doc["value_template"] = "{{ value_json.heating.enable }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["payload_on"] = "{\"heating\": {\"enable\" : true}}"; + doc["payload_off"] = "{\"heating\": {\"enable\" : false}}"; + + client.beginPublish((F("homeassistant/switch/") + _prefix + "/heating/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberHeatingTarget(byte minTemp = 20, byte maxTemp = 90, bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_heating_target"; + doc["object_id"] = _prefix + "_heating_target"; + doc["entity_category"] = "config"; + doc["device_class"] = "temperature"; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "Heating target"; + doc["icon"] = "mdi:radiator"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.heating.target|float(0)|round(1) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"heating\": {\"target\" : {{ value }}}}"; + doc["min"] = minTemp; + doc["max"] = maxTemp; + doc["step"] = 0.5; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/heating_target/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberHeatingHysteresis(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_heating_hysteresis"; + doc["object_id"] = _prefix + "_heating_hysteresis"; + doc["entity_category"] = "config"; + doc["device_class"] = "temperature"; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "Heating hysteresis"; + doc["icon"] = "mdi:altimeter"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.heating.hysteresis|float(0)|round(1) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"heating\": {\"hysteresis\" : {{ value }}}}"; + doc["min"] = 0; + doc["max"] = 5; + doc["step"] = 0.1; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/heating_hysteresis/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSensorHeatingSetpoint(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_heating_setpoint"; + doc["object_id"] = _prefix + "_heating_setpoint"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "temperature"; + doc["state_class"] = "measurement"; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "Heating setpoint"; + doc["icon"] = "mdi:coolant-temperature"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ value_json.parameters.heatingSetpoint|int(0) }}"; + + client.beginPublish((F("homeassistant/sensor/") + _prefix + "/heating_setpoint/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishSwitchDHW(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_dhw"; + doc["object_id"] = _prefix + "_dhw"; + doc["entity_category"] = "config"; + doc["name"] = "DHW"; + doc["icon"] = "mdi:water-pump"; + doc["state_topic"] = _prefix + F("/settings"); + doc["state_on"] = true; + doc["state_off"] = false; + doc["value_template"] = "{{ value_json.dhw.enable }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["payload_on"] = "{\"dhw\": {\"enable\" : true}}"; + doc["payload_off"] = "{\"dhw\": {\"enable\" : false}}"; + + client.beginPublish((F("homeassistant/switch/") + _prefix + "/dhw/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberDHWTarget(byte minTemp = 40, byte maxTemp = 60, bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_dhw_target"; + doc["object_id"] = _prefix + "_dhw_target"; + doc["entity_category"] = "config"; + doc["device_class"] = "temperature"; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "DHW target"; + doc["icon"] = "mdi:water-pump"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.dhw.target|int(0) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"dhw\": {\"target\" : {{ value|int(0) }}}}"; + doc["min"] = minTemp; + doc["max"] = maxTemp; + doc["step"] = 1; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/dhw_target/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishSwitchPID(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_pid"; + doc["object_id"] = _prefix + "_pid"; + doc["entity_category"] = "config"; + doc["name"] = "PID"; + doc["icon"] = "mdi:chart-bar-stacked"; + doc["state_topic"] = _prefix + F("/settings"); + doc["state_on"] = true; + doc["state_off"] = false; + doc["value_template"] = "{{ value_json.pid.enable }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["payload_on"] = "{\"pid\": {\"enable\" : true}}"; + doc["payload_off"] = "{\"pid\": {\"enable\" : false}}"; + + client.beginPublish((F("homeassistant/switch/") + _prefix + "/pid/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberPIDFactorP(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["unique_id"] = _prefix + "_pid_p"; + doc["object_id"] = _prefix + "_pid_p"; + doc["entity_category"] = "config"; + doc["name"] = "PID factor P"; + doc["icon"] = "mdi:alpha-p-circle-outline"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.pid.p_factor|float(0)|round(3) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"pid\": {\"p_factor\" : {{ value }}}}"; + doc["min"] = 0.001; + doc["max"] = 3; + doc["step"] = 0.001; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/pid_p_factor/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberPIDFactorI(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["unique_id"] = _prefix + "_pid_i"; + doc["object_id"] = _prefix + "_pid_i"; + doc["entity_category"] = "config"; + doc["name"] = "PID factor I"; + doc["icon"] = "mdi:alpha-i-circle-outline"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.pid.i_factor|float(0)|round(3) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"pid\": {\"i_factor\" : {{ value }}}}"; + doc["min"] = 0; + doc["max"] = 3; + doc["step"] = 0.001; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/pid_i_factor/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberPIDFactorD(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["unique_id"] = _prefix + "_pid_d"; + doc["object_id"] = _prefix + "_pid_d"; + doc["entity_category"] = "config"; + doc["name"] = "PID factor D"; + doc["icon"] = "mdi:alpha-d-circle-outline"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.pid.d_factor|float(0)|round(3) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"pid\": {\"d_factor\" : {{ value }}}}"; + doc["min"] = 0; + doc["max"] = 3; + doc["step"] = 0.001; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/pid_d_factor/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishSwitchEquitherm(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_equitherm"; + doc["object_id"] = _prefix + "_equitherm"; + doc["entity_category"] = "config"; + doc["name"] = "Equitherm"; + doc["icon"] = "mdi:sun-snowflake-variant"; + doc["state_topic"] = _prefix + F("/settings"); + doc["state_on"] = true; + doc["state_off"] = false; + doc["value_template"] = "{{ value_json.equitherm.enable }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["payload_on"] = "{\"equitherm\": {\"enable\" : true}}"; + doc["payload_off"] = "{\"equitherm\": {\"enable\" : false}}"; + + client.beginPublish((F("homeassistant/switch/") + _prefix + "/equitherm/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberEquithermFactorN(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["unique_id"] = _prefix + "_equitherm_n"; + doc["object_id"] = _prefix + "_equitherm_n"; + doc["entity_category"] = "config"; + doc["name"] = "Equitherm factor N"; + doc["icon"] = "mdi:alpha-n-circle-outline"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.equitherm.n_factor|float(0)|round(3) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"equitherm\": {\"n_factor\" : {{ value }}}}"; + doc["min"] = 0.001; + doc["max"] = 5; + doc["step"] = 0.001; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/equitherm_n_factor/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberEquithermFactorK(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["unique_id"] = _prefix + "_equitherm_k"; + doc["object_id"] = _prefix + "_equitherm_k"; + doc["entity_category"] = "config"; + doc["name"] = "Equitherm factor K"; + doc["icon"] = "mdi:alpha-k-circle-outline"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.equitherm.k_factor|float(0)|round(2) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"equitherm\": {\"k_factor\" : {{ value }}}}"; + doc["min"] = 0; + doc["max"] = 10; + doc["step"] = 0.01; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/equitherm_k_factor/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberEquithermFactorT(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["unique_id"] = _prefix + "_equitherm_t"; + doc["object_id"] = _prefix + "_equitherm_t"; + doc["entity_category"] = "config"; + doc["name"] = "Equitherm factor T"; + doc["icon"] = "mdi:alpha-t-circle-outline"; + doc["state_topic"] = _prefix + F("/settings"); + doc["value_template"] = "{{ value_json.equitherm.t_factor|float(0)|round(2) }}"; + doc["command_topic"] = _prefix + "/settings/set"; + doc["command_template"] = "{\"equitherm\": {\"t_factor\" : {{ value }}}}"; + doc["min"] = 0; + doc["max"] = 10; + doc["step"] = 0.01; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/equitherm_t_factor/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishSwitchTuning(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_tuning"; + doc["object_id"] = _prefix + "_tuning"; + doc["entity_category"] = "config"; + doc["name"] = "Tuning"; + doc["icon"] = "mdi:tune-vertical"; + doc["state_topic"] = _prefix + F("/state"); + doc["state_on"] = true; + doc["state_off"] = false; + doc["value_template"] = "{{ value_json.tuning.enable }}"; + doc["command_topic"] = _prefix + "/state/set"; + doc["payload_on"] = "{\"tuning\": {\"enable\" : true}}"; + doc["payload_off"] = "{\"tuning\": {\"enable\" : false}}"; + + client.beginPublish((F("homeassistant/switch/") + _prefix + "/tuning/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSelectTuningRegulator(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["availability_mode"] = F("all"); + doc["command_topic"] = _prefix + "/state/set"; + doc["command_template"] = F("{\"tuning\": {\"regulator\": {% if value == 'Equitherm' %}0{% elif value == 'PID' %}1{% endif %}}}"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_tuning_regulator"; + doc["object_id"] = _prefix + "_tuning_regulator"; + doc["entity_category"] = "config"; + doc["name"] = "Tuning regulator"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = F("{% if value_json.tuning.regulator == 0 %}Equitherm{% elif value_json.tuning.regulator == 1 %}PID{% endif %}"); + doc["options"][0] = F("Equitherm"); + doc["options"][1] = F("PID"); + + client.beginPublish((F("homeassistant/select/") + _prefix + "/tuning_regulator/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishBinSensorStatus(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_status"; + doc["object_id"] = _prefix + "_status"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "problem"; + doc["name"] = "Status"; + doc["icon"] = "mdi:list-status"; + doc["state_topic"] = _prefix + F("/status"); + doc["value_template"] = "{{ iif(value == 'online', 'OFF', 'ON') }}"; + doc["expire_after"] = 60; + + client.beginPublish((F("homeassistant/binary_sensor/") + _prefix + "/status/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishBinSensorOtStatus(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_ot_status"; + doc["object_id"] = _prefix + "_ot_status"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "problem"; + doc["name"] = "Opentherm status"; + doc["icon"] = "mdi:list-status"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ iif(value_json.states.otStatus, 'OFF', 'ON') }}"; + + client.beginPublish((F("homeassistant/binary_sensor/") + _prefix + "/ot_status/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishBinSensorHeating(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_heating"; + doc["object_id"] = _prefix + "_heating"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "running"; + doc["name"] = "Heating"; + doc["icon"] = "mdi:radiator"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = F("{{ iif(value_json.states.heating, 'ON', 'OFF') }}"); + + client.beginPublish((F("homeassistant/binary_sensor/") + _prefix + "/heating/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishBinSensorDHW(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_dhw"; + doc["object_id"] = _prefix + "_dhw"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "running"; + doc["name"] = "DHW"; + doc["icon"] = "mdi:water-pump"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = F("{{ iif(value_json.states.dhw, 'ON', 'OFF') }}"); + + client.beginPublish((F("homeassistant/binary_sensor/") + _prefix + "/dhw/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishBinSensorFlame(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_flame"; + doc["object_id"] = _prefix + "_flame"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "running"; + doc["name"] = "Flame"; + doc["icon"] = "mdi:fire"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = F("{{ iif(value_json.states.flame, 'ON', 'OFF') }}"); + + client.beginPublish((F("homeassistant/binary_sensor/") + _prefix + "/flame/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishBinSensorFault(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/state"); + doc["availability"]["value_template"] = F("{{ iif(value_json.states.otStatus, 'online', 'offline') }}"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_fault"; + doc["object_id"] = _prefix + "_fault"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "problem"; + doc["name"] = "Fault"; + doc["icon"] = "mdi:water-boiler-alert"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ iif(value_json.states.fault, 'ON', 'OFF') }}"; + + client.beginPublish((F("homeassistant/binary_sensor/") + _prefix + "/fault/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishBinSensorDiagnostic(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_diagnostic"; + doc["object_id"] = _prefix + "_diagnostic"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "problem"; + doc["name"] = "Diagnostic"; + doc["icon"] = "mdi:account-wrench"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ iif(value_json.states.diagnostic, 'ON', 'OFF') }}"; + + client.beginPublish((F("homeassistant/binary_sensor/") + _prefix + "/diagnostic/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSensorFaultCode(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/state"); + doc["availability"]["value_template"] = F("{{ iif(value_json.states.fault, 'online', 'offline') }}"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_fault_code"; + doc["object_id"] = _prefix + "_fault_code"; + doc["entity_category"] = "diagnostic"; + doc["name"] = "Fault code"; + doc["icon"] = "mdi:chat-alert-outline"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = F("{{ \"E%02d\"|format(value_json.states.faultCode) }}"); + + client.beginPublish((F("homeassistant/sensor/") + _prefix + "/fault_code/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishSensorModulation(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_modulation_level"; + doc["object_id"] = _prefix + "_modulation_level"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "power_factor"; + doc["state_class"] = "measurement"; + doc["unit_of_measurement"] = "%"; + doc["name"] = "Modulation level"; + doc["icon"] = "mdi:fire-circle"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ value_json.sensors.modulation|float(0)|round(0) }}"; + + client.beginPublish((F("homeassistant/sensor/") + _prefix + "/modulation/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSensorPressure(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_pressure"; + doc["object_id"] = _prefix + "_pressure"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "pressure"; + doc["state_class"] = "measurement"; + doc["unit_of_measurement"] = "bar"; + doc["name"] = "Pressure"; + doc["icon"] = "mdi:gauge"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ value_json.sensors.pressure|float(0)|round(2) }}"; + + client.beginPublish((F("homeassistant/sensor/") + _prefix + "/pressure/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishNumberIndoorTemp(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + //doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_indoor_temp"; + doc["object_id"] = _prefix + "_indoor_temp"; + doc["entity_category"] = "config"; + //doc["entity_registry_visible_default"] = false; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "Indoor temperature"; + doc["icon"] = "mdi:home-thermometer"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ value_json.temperatures.indoor|float(0)|round(1) }}"; + doc["command_topic"] = _prefix + "/state/set"; + doc["command_template"] = "{\"temperatures\": {\"indoor\":{{ value }}}}"; + doc["min"] = -70; + doc["max"] = 50; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/indoor_temp/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishNumberOutdoorTemp(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_outdoor_temp"; + doc["object_id"] = _prefix + "_outdoor_temp"; + doc["entity_category"] = "config"; + //doc["entity_registry_visible_default"] = false; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "Outdoor temperature"; + doc["icon"] = "mdi:home-thermometer-outline"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ value_json.temperatures.outdoor|float(0)|round(1) }}"; + doc["command_topic"] = _prefix + "/state/set"; + doc["command_template"] = "{\"temperatures\": {\"outdoor\":{{ value }}}}"; + doc["min"] = -70; + doc["max"] = 50; + + client.beginPublish((F("homeassistant/number/") + _prefix + "/outdoor_temp/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSensorOutdoorTemp(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"][0]["topic"] = _prefix + F("/status"); + doc["availability"][1]["topic"] = _prefix + F("/settings"); + doc["availability"][1]["value_template"] = F("{{ iif(value_json.outdoorTempSource == 2, 'online', 'offline') }}"); + doc["availability_mode"] = "any"; + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_outdoor_temp"; + doc["object_id"] = _prefix + "_outdoor_temp"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "temperature"; + doc["state_class"] = "measurement"; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "Outdoor temperature"; + doc["icon"] = "mdi:home-thermometer-outline"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ value_json.temperatures.outdoor|float(0)|round(1) }}"; + + client.beginPublish((F("homeassistant/sensor/") + _prefix + "/outdoor_temp/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSensorHeatingTemp(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_heating_temp"; + doc["object_id"] = _prefix + "_heating_temp"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "temperature"; + doc["state_class"] = "measurement"; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "Heating temperature"; + doc["icon"] = "mdi:radiator"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ value_json.temperatures.heating|float(0)|round(2) }}"; + + client.beginPublish((F("homeassistant/sensor/") + _prefix + "/heating_temp/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishSensorDHWTemp(bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_dhw_temp"; + doc["object_id"] = _prefix + "_dhw_temp"; + doc["entity_category"] = "diagnostic"; + doc["device_class"] = "temperature"; + doc["state_class"] = "measurement"; + doc["unit_of_measurement"] = "°C"; + doc["name"] = "DHW temperature"; + doc["icon"] = "mdi:water-pump"; + doc["state_topic"] = _prefix + F("/state"); + doc["value_template"] = "{{ value_json.temperatures.dhw|float(0)|round(2) }}"; + + client.beginPublish((F("homeassistant/sensor/") + _prefix + "/dhw_temp/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool publishClimateHeating(byte minTemp = 20, byte maxTemp = 90, bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_heating"; + doc["object_id"] = _prefix + "_heating"; + doc["name"] = "Heating"; + doc["icon"] = "mdi:radiator"; + + doc["current_temperature_topic"] = _prefix + F("/state"); + doc["value_template"] = F("{{ value_json.temperatures.indoor|float(0)|round(2) }}"); + + doc["temperature_command_topic"] = _prefix + "/settings/set"; + doc["temperature_command_template"] = "{\"heating\": {\"target\" : {{ value }}}}"; + + doc["temperature_state_topic"] = _prefix + F("/settings"); + doc["temperature_state_template"] = F("{{ value_json.heating.target|float(0)|round(1) }}"); + + doc["mode_command_topic"] = _prefix + "/settings/set"; + doc["mode_command_template"] = F("{% if value == 'heat' %}{\"heating\": {\"enable\" : true}}" + "{% elif value == 'off' %}{\"heating\": {\"enable\" : false}}{% endif %}"); + doc["mode_state_topic"] = _prefix + F("/settings"); + doc["mode_state_template"] = F("{{ iif(value_json.heating.enable, 'heat', 'off') }}"); + doc["modes"][0] = "off"; + doc["modes"][1] = "heat"; + doc["min_temp"] = minTemp; + doc["max_temp"] = maxTemp; + doc["temp_step"] = 0.5; + + client.beginPublish((F("homeassistant/climate/") + _prefix + "_heating/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + bool publishClimateDHW(byte minTemp = 40, byte maxTemp = 60, bool enabledByDefault = true) { + StaticJsonDocument<1536> doc; + doc["availability"]["topic"] = _prefix + F("/status"); + doc["device"]["identifiers"][0] = _prefix; + doc["device"]["sw_version"] = _deviceVersion; + doc["device"]["manufacturer"] = _deviceManufacturer; + doc["device"]["model"] = _deviceModel; + doc["device"]["name"] = _deviceName; + if (_deviceConfigUrl) { + doc["device"]["configuration_url"] = _deviceConfigUrl; + } + + doc["enabled_by_default"] = enabledByDefault; + doc["unique_id"] = _prefix + "_dhw"; + doc["object_id"] = _prefix + "_dhw"; + doc["name"] = "DHW"; + doc["icon"] = "mdi:water-pump"; + + doc["current_temperature_topic"] = _prefix + F("/state"); + doc["value_template"] = F("{{ value_json.temperatures.dhw|float(0)|round(1) }}"); + + doc["temperature_command_topic"] = _prefix + "/settings/set"; + doc["temperature_command_template"] = "{\"dhw\": {\"target\" : {{ value|int(0) }}}}"; + + doc["temperature_state_topic"] = _prefix + F("/settings"); + doc["temperature_state_template"] = F("{{ value_json.dhw.target|int(0) }}"); + + doc["mode_command_topic"] = _prefix + "/settings/set"; + doc["mode_command_template"] = F("{% if value == 'heat' %}{\"dhw\": {\"enable\" : true}}" + "{% elif value == 'off' %}{\"dhw\": {\"enable\" : false}}{% endif %}"); + doc["mode_state_topic"] = _prefix + F("/settings"); + doc["mode_state_template"] = F("{{ iif(value_json.dhw.enable, 'heat', 'off') }}"); + doc["modes"][0] = "off"; + doc["modes"][1] = "heat"; + doc["min_temp"] = minTemp; + doc["max_temp"] = maxTemp; + + client.beginPublish((F("homeassistant/climate/") + _prefix + "_dhw/config").c_str(), measureJson(doc), true); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + + bool deleteNumberOutdoorTemp() { + return client.publish((F("homeassistant/number/") + _prefix + "/outdoor_temp/config").c_str(), NULL, true); + } + + bool deleteSensorOutdoorTemp() { + return client.publish((F("homeassistant/sensor/") + _prefix + "/outdoor_temp/config").c_str(), NULL, true); + } + +private: + String _prefix = "opentherm"; + String _deviceVersion = "1.0"; + String _deviceManufacturer = "Community"; + String _deviceModel = "Opentherm Gateway"; + String _deviceName = "Opentherm Gateway"; + String _deviceConfigUrl = ""; +}; diff --git a/src/MainTask.h b/src/MainTask.h new file mode 100644 index 0000000..d359176 --- /dev/null +++ b/src/MainTask.h @@ -0,0 +1,83 @@ +#include "lib/MiniTask.h" +#include "SensorsTask.h" +#include "RegulatorTask.h" + +extern MqttTask* tMqtt; + +class MainTask : public CustomTask { +public: + MainTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {} + +protected: + //HttpServerTask* tHttpServer; + SensorsTask* tSensors; + RegulatorTask* tRegulator; + + void setup() { + //tHttpServer = new HttpServerTask(false); + tSensors = new SensorsTask(false, DS18B20_INTERVAL); + tRegulator = new RegulatorTask(true, 10000); + } + + void loop() { + static unsigned long lastHeapInfo = 0; + static unsigned short minFreeHeapSize = 65535; + + if (eeSettings.tick()) { + INFO("Settings updated (EEPROM)"); + } + + if (WiFi.status() == WL_CONNECTED) { + if (!tMqtt->isEnabled()) { + tMqtt->enable(); + } + + } else { + if (tMqtt->isEnabled()) { + tMqtt->disable(); + } + + vars.states.emergency = true; + } + + if (!tSensors->isEnabled() && settings.outdoorTempSource == 2) { + tSensors->enable(); + } else if (tSensors->isEnabled() && settings.outdoorTempSource != 2) { + tSensors->disable(); + } + + //tHttpServer->loopWrapper(); + //yield(); + tSensors->loopWrapper(); + yield(); + tRegulator->loopWrapper(); + +#ifdef USE_TELNET + yield(); + + // anti memory leak + TelnetStream.flush(); + while (TelnetStream.available() > 0) { + TelnetStream.read(); + } +#endif + + if (settings.debug) { + unsigned short freeHeapSize = ESP.getFreeHeap(); + unsigned short minFreeHeapSizeDiff = 0; + + if (freeHeapSize < minFreeHeapSize) { + minFreeHeapSizeDiff = minFreeHeapSize - freeHeapSize; + minFreeHeapSize = freeHeapSize; + } + if (millis() - lastHeapInfo > 10000 || minFreeHeapSizeDiff > 0) { + DEBUG_F("Free heap size: %hu bytes, min: %hu bytes (diff: %hu bytes)\n", freeHeapSize, minFreeHeapSize, minFreeHeapSizeDiff); + lastHeapInfo = millis(); + } + } + } + + /*char[] getUptime() { + uint64_t = esp_timer_get_time(); + }*/ +}; \ No newline at end of file diff --git a/src/MqttTask.h b/src/MqttTask.h new file mode 100644 index 0000000..a6910e0 --- /dev/null +++ b/src/MqttTask.h @@ -0,0 +1,474 @@ +#include +#include +#include +#include "HomeAssistantHelper.h" + +WiFiClient espClient; +PubSubClient client(espClient); +HomeAssistantHelper haHelper; + + +class MqttTask : public CustomTask { +public: + MqttTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {} + +protected: + unsigned long lastReconnectAttempt = 0; + unsigned short int reconnectAttempts = 0; + + void setup() { + client.setServer(settings.mqtt.server, settings.mqtt.port); + client.setCallback(__callback); + haHelper.setPrefix(settings.mqtt.prefix); + haHelper.setDeviceVersion(OT_GATEWAY_VERSION); + + sprintf(buffer, CONFIG_URL, WiFi.localIP().toString().c_str()); + haHelper.setDeviceConfigUrl(buffer); + } + + void loop() { + if (!client.connected() && millis() - lastReconnectAttempt >= MQTT_RECONNECT_INTERVAL) { + INFO_F("Mqtt not connected, state: %i, connecting to server %s...\n", client.state(), settings.mqtt.server); + + if (client.connect(settings.hostname, settings.mqtt.user, settings.mqtt.password)) { + INFO("Connected to MQTT server"); + + client.subscribe(getTopicPath("settings/set").c_str()); + client.subscribe(getTopicPath("state/set").c_str()); + publishHaEntities(); + publishNonStaticHaEntities(true); + + reconnectAttempts = 0; + lastReconnectAttempt = 0; + + } else { + INFO("Failed to connect to MQTT server\n"); + + if (!vars.states.emergency && ++reconnectAttempts >= EMERGENCY_TRESHOLD) { + vars.states.emergency = true; + INFO("Emergency mode enabled"); + } + + forceARP(); + lastReconnectAttempt = millis(); + } + } + + + if (client.connected()) { + if (vars.states.emergency) { + vars.states.emergency = false; + + INFO("Emergency mode disabled"); + } + + client.loop(); + bool published = publishNonStaticHaEntities(); + publish(published); + } + } + + + static void forceARP() { + struct netif* netif = netif_list; + while (netif) { + etharp_gratuitous(netif); + netif = netif->next; + } + } + + static bool updateSettings(JsonDocument& doc) { + bool flag = false; + + if (!doc["debug"].isNull() && doc["debug"].is()) { + settings.debug = doc["debug"].as(); + flag = true; + } + + if (!doc["outdoorTempSource"].isNull() && doc["outdoorTempSource"].is() && doc["outdoorTempSource"] >= 0 && doc["outdoorTempSource"] <= 2) { + settings.outdoorTempSource = doc["outdoorTempSource"]; + flag = true; + } + + if (!doc["mqtt"]["interval"].isNull() && doc["mqtt"]["interval"].is() && doc["mqtt"]["interval"] >= 1000 && doc["mqtt"]["interval"] <= 120000) { + settings.mqtt.interval = doc["mqtt"]["interval"].as(); + flag = true; + } + + // emergency + if (!doc["emergency"]["enable"].isNull() && doc["emergency"]["enable"].is()) { + settings.emergency.enable = doc["emergency"]["enable"].as(); + flag = true; + } + + if (!doc["emergency"]["target"].isNull() && (doc["emergency"]["target"].is() || doc["emergency"]["target"].is())) { + settings.emergency.target = round(doc["emergency"]["target"].as() * 10) / 10; + flag = true; + } + + if (!doc["emergency"]["useEquitherm"].isNull() && doc["emergency"]["useEquitherm"].is()) { + settings.emergency.useEquitherm = doc["emergency"]["useEquitherm"].as(); + flag = true; + } + + // heating + if (!doc["heating"]["enable"].isNull() && doc["heating"]["enable"].is()) { + settings.heating.enable = doc["heating"]["enable"].as(); + flag = true; + } + + if (!doc["heating"]["target"].isNull() && (doc["heating"]["target"].is() || doc["heating"]["target"].is())) { + settings.heating.target = round(doc["heating"]["target"].as() * 10) / 10; + flag = true; + } + + if (!doc["heating"]["hysteresis"].isNull() && (doc["heating"]["hysteresis"].is() || doc["heating"]["hysteresis"].is())) { + settings.heating.hysteresis = round(doc["heating"]["hysteresis"].as() * 10) / 10; + flag = true; + } + + // dhw + if (!doc["dhw"]["enable"].isNull() && doc["dhw"]["enable"].is()) { + settings.dhw.enable = doc["dhw"]["enable"].as(); + flag = true; + } + + if (!doc["dhw"]["target"].isNull() && doc["dhw"]["target"].is()) { + settings.dhw.target = doc["dhw"]["target"].as(); + flag = true; + } + + // pid + if (!doc["pid"]["enable"].isNull() && doc["pid"]["enable"].is()) { + settings.pid.enable = doc["pid"]["enable"].as(); + flag = true; + } + + if (!doc["pid"]["p_factor"].isNull() && (doc["pid"]["p_factor"].is() || doc["pid"]["p_factor"].is())) { + settings.pid.p_factor = round(doc["pid"]["p_factor"].as() * 1000) / 1000; + flag = true; + } + + if (!doc["pid"]["i_factor"].isNull() && (doc["pid"]["i_factor"].is() || doc["pid"]["i_factor"].is())) { + settings.pid.i_factor = round(doc["pid"]["i_factor"].as() * 1000) / 1000; + flag = true; + } + + if (!doc["pid"]["d_factor"].isNull() && (doc["pid"]["d_factor"].is() || doc["pid"]["d_factor"].is())) { + settings.pid.d_factor = round(doc["pid"]["d_factor"].as() * 1000) / 1000; + flag = true; + } + + // equitherm + if (!doc["equitherm"]["enable"].isNull() && doc["equitherm"]["enable"].is()) { + settings.equitherm.enable = doc["equitherm"]["enable"].as(); + flag = true; + } + + if (!doc["equitherm"]["n_factor"].isNull() && (doc["equitherm"]["n_factor"].is() || doc["equitherm"]["n_factor"].is())) { + settings.equitherm.n_factor = round(doc["equitherm"]["n_factor"].as() * 1000) / 1000; + flag = true; + } + + if (!doc["equitherm"]["k_factor"].isNull() && (doc["equitherm"]["k_factor"].is() || doc["equitherm"]["k_factor"].is())) { + settings.equitherm.k_factor = round(doc["equitherm"]["k_factor"].as() * 1000) / 1000; + flag = true; + } + + if (!doc["equitherm"]["t_factor"].isNull() && (doc["equitherm"]["t_factor"].is() || doc["equitherm"]["t_factor"].is())) { + settings.equitherm.t_factor = round(doc["equitherm"]["t_factor"].as() * 1000) / 1000; + flag = true; + } + + if (flag) { + eeSettings.update(); + publish(true); + + return true; + } + + return false; + } + + static bool updateVariables(const JsonDocument& doc) { + bool flag = false; + + if (!doc["ping"].isNull() && doc["ping"]) { + flag = true; + } + + if (!doc["tuning"]["enable"].isNull() && doc["tuning"]["enable"].is()) { + vars.tuning.enable = doc["tuning"]["enable"].as(); + flag = true; + } + + if (!doc["tuning"]["regulator"].isNull() && doc["tuning"]["regulator"].is() && doc["tuning"]["regulator"] >= 0 && doc["tuning"]["regulator"] <= 1) { + vars.tuning.regulator = doc["tuning"]["regulator"]; + flag = true; + } + + if (!doc["temperatures"]["indoor"].isNull() && (doc["temperatures"]["indoor"].is() || doc["temperatures"]["indoor"].is())) { + vars.temperatures.indoor = round(doc["temperatures"]["indoor"].as() * 100) / 100; + flag = true; + } + + if (!doc["temperatures"]["outdoor"].isNull() && (doc["temperatures"]["outdoor"].is() || doc["temperatures"]["outdoor"].is()) && settings.outdoorTempSource == 1) { + vars.temperatures.outdoor = round(doc["temperatures"]["outdoor"].as() * 100) / 100; + flag = true; + } + + if (!doc["restart"].isNull() && doc["restart"].is() && doc["restart"]) { + eeSettings.updateNow(); + ESP.restart(); + } + + if (flag) { + publish(true); + + return true; + } + + return false; + } + + static void publish(bool force = false) { + static unsigned int prevPubVars = 0; + static unsigned int prevPubSettings = 0; + + // publish variables and status + if (force || millis() - prevPubVars > settings.mqtt.interval) { + publishVariables(getTopicPath("state").c_str()); + + if (vars.states.fault) { + client.publish(getTopicPath("status").c_str(), "fault"); + } else { + client.publish(getTopicPath("status").c_str(), vars.states.otStatus ? "online" : "offline"); + } + + forceARP(); + prevPubVars = millis(); + } + + // publish settings + if (force || millis() - prevPubSettings > settings.mqtt.interval * 10) { + publishSettings(getTopicPath("settings").c_str()); + prevPubSettings = millis(); + } + } + + static void publishHaEntities() { + // main + haHelper.publishSelectOutdoorTempSource(); + haHelper.publishSwitchDebug(false); + + // emergency + haHelper.publishSwitchEmergency(); + haHelper.publishNumberEmergencyTarget(); + haHelper.publishSwitchEmergencyUseEquitherm(); + + // heating + haHelper.publishSwitchHeating(false); + //haHelper.publishNumberHeatingTarget(false); + haHelper.publishNumberHeatingHysteresis(); + haHelper.publishSensorHeatingSetpoint(false); + + // dhw + haHelper.publishSwitchDHW(false); + //haHelper.publishNumberDHWTarget(false); + + // pid + haHelper.publishSwitchPID(); + haHelper.publishNumberPIDFactorP(); + haHelper.publishNumberPIDFactorI(); + haHelper.publishNumberPIDFactorD(); + + // equitherm + haHelper.publishSwitchEquitherm(); + haHelper.publishNumberEquithermFactorN(); + haHelper.publishNumberEquithermFactorK(); + haHelper.publishNumberEquithermFactorT(); + + // tuning + haHelper.publishSwitchTuning(); + haHelper.publishSelectTuningRegulator(); + + // states + haHelper.publishBinSensorStatus(); + haHelper.publishBinSensorOtStatus(); + haHelper.publishBinSensorHeating(); + haHelper.publishBinSensorDHW(); + haHelper.publishBinSensorFlame(); + haHelper.publishBinSensorFault(); + haHelper.publishBinSensorDiagnostic(); + haHelper.publishSensorFaultCode(); + + // sensors + haHelper.publishSensorModulation(false); + haHelper.publishSensorPressure(false); + + // temperatures + haHelper.publishNumberIndoorTemp(); + //haHelper.publishNumberOutdoorTemp(); + haHelper.publishSensorHeatingTemp(); + haHelper.publishSensorDHWTemp(); + } + + static bool publishNonStaticHaEntities(bool force = false) { + static byte _heatingMinTemp; + static byte _heatingMaxTemp; + static byte _dhwMinTemp; + static byte _dhwMaxTemp; + static bool _editableOutdoorTemp; + + bool published = false; + bool isStupidMode = !settings.pid.enable && !settings.equitherm.enable; + byte heatingMinTemp = isStupidMode ? vars.parameters.heatingMinTemp : 10; + byte heatingMaxTemp = isStupidMode ? vars.parameters.heatingMaxTemp : 30; + bool editableOutdoorTemp = settings.outdoorTempSource == 1; + + + if (force || _heatingMinTemp != heatingMinTemp || _heatingMaxTemp != heatingMaxTemp) { + if (settings.heating.target < heatingMinTemp || settings.heating.target > heatingMaxTemp) { + settings.heating.target = constrain(settings.heating.target, heatingMinTemp, heatingMaxTemp); + } + + _heatingMinTemp = heatingMinTemp; + _heatingMaxTemp = heatingMaxTemp; + + haHelper.publishNumberHeatingTarget(heatingMinTemp, heatingMaxTemp, false); + haHelper.publishClimateHeating(heatingMinTemp, heatingMaxTemp); + + published = true; + } + + if (force || _dhwMinTemp != vars.parameters.dhwMinTemp || _dhwMaxTemp != vars.parameters.dhwMaxTemp) { + _dhwMinTemp = vars.parameters.dhwMinTemp; + _dhwMaxTemp = vars.parameters.dhwMaxTemp; + + haHelper.publishNumberDHWTarget(vars.parameters.dhwMinTemp, vars.parameters.dhwMaxTemp, false); + haHelper.publishClimateDHW(vars.parameters.dhwMinTemp, vars.parameters.dhwMaxTemp); + + published = true; + } + + if (force || _editableOutdoorTemp != editableOutdoorTemp) { + _editableOutdoorTemp = editableOutdoorTemp; + + if (editableOutdoorTemp) { + haHelper.deleteSensorOutdoorTemp(); + haHelper.publishNumberOutdoorTemp(); + } else { + haHelper.deleteNumberOutdoorTemp(); + haHelper.publishSensorOutdoorTemp(); + } + + published = true; + } + + return published; + } + + static bool publishSettings(const char* topic) { + StaticJsonDocument<2048> doc; + + doc["debug"] = settings.debug; + doc["outdoorTempSource"] = settings.outdoorTempSource; + + doc["emergency"]["enable"] = settings.emergency.enable; + doc["emergency"]["target"] = settings.emergency.target; + doc["emergency"]["useEquitherm"] = settings.emergency.useEquitherm; + + doc["heating"]["enable"] = settings.heating.enable; + doc["heating"]["target"] = settings.heating.target; + doc["heating"]["hysteresis"] = settings.heating.hysteresis; + + doc["dhw"]["enable"] = settings.dhw.enable; + doc["dhw"]["target"] = settings.dhw.target; + + doc["pid"]["enable"] = settings.pid.enable; + doc["pid"]["p_factor"] = settings.pid.p_factor; + doc["pid"]["i_factor"] = settings.pid.i_factor; + doc["pid"]["d_factor"] = settings.pid.d_factor; + + doc["equitherm"]["enable"] = settings.equitherm.enable; + doc["equitherm"]["n_factor"] = settings.equitherm.n_factor; + doc["equitherm"]["k_factor"] = settings.equitherm.k_factor; + doc["equitherm"]["t_factor"] = settings.equitherm.t_factor; + + client.beginPublish(topic, measureJson(doc), false); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + static bool publishVariables(const char* topic) { + StaticJsonDocument<2048> doc; + + doc["tuning"]["enable"] = vars.tuning.enable; + doc["tuning"]["regulator"] = vars.tuning.regulator; + + doc["states"]["otStatus"] = vars.states.otStatus; + doc["states"]["heating"] = vars.states.heating; + doc["states"]["dhw"] = vars.states.dhw; + doc["states"]["flame"] = vars.states.flame; + doc["states"]["fault"] = vars.states.fault; + doc["states"]["diagnostic"] = vars.states.diagnostic; + doc["states"]["faultCode"] = vars.states.faultCode; + + doc["sensors"]["modulation"] = vars.sensors.modulation; + doc["sensors"]["pressure"] = vars.sensors.pressure; + + doc["temperatures"]["indoor"] = vars.temperatures.indoor; + doc["temperatures"]["outdoor"] = vars.temperatures.outdoor; + doc["temperatures"]["heating"] = vars.temperatures.heating; + doc["temperatures"]["dhw"] = vars.temperatures.dhw; + + doc["parameters"]["heatingMinTemp"] = vars.parameters.heatingMinTemp; + doc["parameters"]["heatingMaxTemp"] = vars.parameters.heatingMaxTemp; + doc["parameters"]["heatingSetpoint"] = vars.parameters.heatingSetpoint; + doc["parameters"]["dhwMinTemp"] = vars.parameters.dhwMinTemp; + doc["parameters"]["dhwMaxTemp"] = vars.parameters.dhwMaxTemp; + + client.beginPublish(topic, measureJson(doc), false); + //BufferingPrint bufferedClient(client, 32); + //serializeJson(doc, bufferedClient); + //bufferedClient.flush(); + serializeJson(doc, client); + return client.endPublish(); + } + + static std::string getTopicPath(const char* topic) { + return std::string(settings.mqtt.prefix) + "/" + std::string(topic); + } + + static void __callback(char* topic, byte* payload, unsigned int length) { + if (!length) { + return; + } + + if (settings.debug) { + DEBUG_F("MQTT received message\n\r Topic: %s\n\r Data: ", topic); + for (int i = 0; i < length; i++) { + DEBUG_STREAM.print((char)payload[i]); + } + DEBUG_STREAM.print("\n"); + } + + StaticJsonDocument<2048> doc; + DeserializationError dErr = deserializeJson(doc, (const byte*)payload, length); + if (dErr != DeserializationError::Ok || doc.isNull()) { + return; + } + + if (getTopicPath("state/set").compare(topic) == 0) { + updateVariables(doc); + client.publish(getTopicPath("state/set").c_str(), NULL, true); + + } else if (getTopicPath("settings/set").compare(topic) == 0) { + updateSettings(doc); + client.publish(getTopicPath("settings/set").c_str(), NULL, true); + } + } +}; \ No newline at end of file diff --git a/src/OpenThermTask.h b/src/OpenThermTask.h new file mode 100644 index 0000000..6ae8a8d --- /dev/null +++ b/src/OpenThermTask.h @@ -0,0 +1,542 @@ +#include "lib/CustomOpenTherm.h" + +CustomOpenTherm ot(OPENTHERM_IN_PIN, OPENTHERM_OUT_PIN); + +class OpenThermTask : public CustomTask { +public: + OpenThermTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {} + +protected: + void setup() { + ot.begin(handleInterrupt, responseCallback); + ot.setHandleSendRequestCallback(sendRequestCallback); + } + + void loop() { + static byte currentHeatingTemp, currentDHWTemp = 0; + byte newHeatingTemp, newDHWTemp = 0; + unsigned long localResponse; + + setMasterMemberIdCode(); + DEBUG_F("Slave member id code: %u \n", vars.parameters.slaveMemberIdCode); + + localResponse = ot.setBoilerStatus( + settings.heating.enable && pump, + settings.dhw.enable + ); + + if (!ot.isValidResponse(localResponse)) { + return; + } + + vars.states.heating = ot.isCentralHeatingActive(localResponse); + vars.states.dhw = ot.isHotWaterActive(localResponse); + vars.states.flame = ot.isFlameOn(localResponse); + vars.states.fault = ot.isFault(localResponse); + vars.states.diagnostic = ot.isDiagnostic(localResponse); + + /*if (vars.dump_request.value) + { + testSupportedIDs(); + vars.dump_request.value = false; + }*/ + + + + /*if ( ot.isValidResponse(localResponse) ) { + vars.SlaveMemberIDcode.value = localResponse >> 0 & 0xFF; + uint8_t flags = (localResponse & 0xFFFF) >> 8 & 0xFF; + vars.dhw_present.value = flags & 0x01; + vars.control_type.value = flags & 0x02; + vars.cooling_present.value = flags & 0x04; + vars.dhw_tank_present.value = flags & 0x08; + vars.pump_control_present.value = flags & 0x10; + vars.ch2_present.value = flags & 0x20; + }*/ + + // Команды чтения данных котла + if (millis() - prevUpdateNonEssentialVars > 30000) { + updateSlaveParameters(); + updateMasterParameters(); + // crash? + DEBUG_F("Master type: %u, version: %u \n", vars.parameters.masterType, vars.parameters.masterVersion); + DEBUG_F("Slave type: %u, version: %u \n", vars.parameters.slaveType, vars.parameters.slaveVersion); + + updateMinMaxDhwTemp(); + updateMinMaxHeatingTemp(); + if (settings.outdoorTempSource == 0) { + updateOutsideTemp(); + } + if (vars.states.fault) { + updateFaultCode(); + } + updatePressure(); + + prevUpdateNonEssentialVars = millis(); + } + updateHeatingTemp(); + updateDHWTemp(); + updateModulationLevel(); + + // + // Температура ГВС + newDHWTemp = settings.dhw.target; + if (newDHWTemp != currentDHWTemp) { + if (newDHWTemp < vars.parameters.dhwMinTemp || newDHWTemp > vars.parameters.dhwMaxTemp) { + newDHWTemp = constrain(newDHWTemp, vars.parameters.dhwMinTemp, vars.parameters.dhwMaxTemp); + } + + INFO_F("Set DHW temp = %u \n", newDHWTemp); + + // Записываем заданную температуру ГВС + if (ot.setDHWSetpoint(newDHWTemp)) { + currentDHWTemp = newDHWTemp; + } + } + + // + // Температура отопления + if (fabs(vars.parameters.heatingSetpoint - currentHeatingTemp) > 0.0001) { + INFO_F("Set heating temp = %u \n", vars.parameters.heatingSetpoint); + + // Записываем заданную температуру + if (ot.setBoilerTemperature(vars.parameters.heatingSetpoint)) { + currentHeatingTemp = vars.parameters.heatingSetpoint; + } + } + + // коммутационная разность (hysteresis) + // только для pid и/или equitherm + if (settings.heating.hysteresis > 0 && !vars.states.emergency && (settings.equitherm.enable || settings.pid.enable)) { + float halfHyst = settings.heating.hysteresis / 2; + if (pump && vars.temperatures.indoor - settings.heating.target + 0.0001 >= halfHyst) { + pump = false; + } else if (!pump && vars.temperatures.indoor - settings.heating.target - 0.0001 <= -(halfHyst)) { + pump = true; + } + } else if (!pump) { + pump = true; + } + } + + void static IRAM_ATTR handleInterrupt() { + ot.handleInterrupt(); + } + + void static sendRequestCallback(unsigned long request, unsigned long response, OpenThermResponseStatus status, byte attempt) { + printRequestDetail(ot.getDataID(request), status, request, response, attempt); + } + + void static responseCallback(unsigned long result, OpenThermResponseStatus status) { + static byte attempt = 0; + switch (status) { + case OpenThermResponseStatus::TIMEOUT: + if (++attempt > OPENTHERM_OFFLINE_TRESHOLD) { + vars.states.otStatus = false; + attempt = OPENTHERM_OFFLINE_TRESHOLD; + } + break; + case OpenThermResponseStatus::SUCCESS: + attempt = 0; + vars.states.otStatus = true; + break; + default: + break; + } + } + +protected: + bool pump = true; + unsigned long prevUpdateNonEssentialVars = 0; + + void static printRequestDetail(OpenThermMessageID id, OpenThermResponseStatus status, unsigned long request, unsigned long response, byte attempt) { + sprintf(buffer, "OT REQUEST ID: %4d Request: %8x Response: %8x Attempt: %2d Status: %s", id, request, response, attempt, ot.statusToString(status)); + if (status != OpenThermResponseStatus::SUCCESS) { + //WARN(buffer); + DEBUG(buffer); + } else { + DEBUG(buffer); + } + } + + /* + bool getBoilerTemp() + { + unsigned long response; + return sendRequest(ot.buildGetBoilerTemperatureRequest(),response); + } + + bool getDHWTemp() + { + unsigned long response; + unsigned long request = ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::Tdhw, 0); + return sendRequest(request,response); + } + + bool getOutsideTemp() + { + unsigned long response; + unsigned long request = ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::Toutside, 0); + return sendRequest(request,response); + } + + bool setDHWTemp(float val) + { + unsigned long request = ot.buildRequest(OpenThermRequestType::WRITE, OpenThermMessageID::TdhwSet, ot.temperatureToData(val)); + unsigned long response; + return sendRequest(request,response); + } + + bool getFaultCode() + { + unsigned long response; + unsigned long request = ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::ASFflags, 0); + return sendRequest(request,response); + } + + bool getModulationLevel() { + unsigned long response; + unsigned long request = ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::RelModLevel, 0); + return sendRequest(request,response); + } + + bool getPressure() { + unsigned long response; + unsigned long request = ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::CHPressure, 0); + return sendRequest(request,response); + } + + bool sendRequest(unsigned long request, unsigned long& response) + { + send_newts = millis(); + if (send_newts - send_ts < 200) { + // Преждем чем слать что то - надо подождать 100ms согласно специфиикации протокола ОТ + delay(200 - (send_newts - send_ts)); + } + + bool result = ot.sendRequestAync(request); + if(!result) { + WARN("Не могу отправить запрос"); + WARN("Шина " + ot.isReady() ? "готова" : "не готова"); + return false; + } + while (!ot.isReady()) + { + ot.process(); + yield(); // This is local Task yield() call which allow us to switch to another task in scheduler + } + send_ts = millis(); + response = ot_response; + //printRequestDetail(ot.getDataID(request), request, response); + + return true; // Response is global variable + } + + void testSupportedIDs() + { + // Basic + unsigned long request; + unsigned long response; + OpenThermMessageID id; + //Command + id = OpenThermMessageID::Command; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + //ASFlags + id = OpenThermMessageID::ASFflags; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //TrOverride + id = OpenThermMessageID::TrOverride; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //TSP + id = OpenThermMessageID::TSP; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //TSPindexTSPvalue + id = OpenThermMessageID::TSPindexTSPvalue; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //FHBsize + id = OpenThermMessageID::FHBsize; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //FHBindexFHBvalue + id = OpenThermMessageID::FHBindexFHBvalue; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //MaxCapacityMinModLevel + id = OpenThermMessageID::MaxCapacityMinModLevel; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //TrSet + id = OpenThermMessageID::TrSet; + request = ot.buildRequest(OpenThermRequestType::WRITE, id, ot.temperatureToData(21)); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //RelModLevel + id = OpenThermMessageID::RelModLevel; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //CHPressure + id = OpenThermMessageID::CHPressure; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //DHWFlowRate + id = OpenThermMessageID::DHWFlowRate; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //DayTime + id = OpenThermMessageID::DayTime; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //Date + id = OpenThermMessageID::Date; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //Year + id = OpenThermMessageID::Year; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //TrSetCH2 + id = OpenThermMessageID::TrSetCH2; + request = ot.buildRequest(OpenThermRequestType::WRITE, id, ot.temperatureToData(21)); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //Tr + id = OpenThermMessageID::Tr; + request = ot.buildRequest(OpenThermRequestType::WRITE, id, ot.temperatureToData(21)); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //Tret + id = OpenThermMessageID::Tret; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //Texhaust + id = OpenThermMessageID::Texhaust; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //Hcratio + id = OpenThermMessageID::Hcratio; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //RemoteOverrideFunction + id = OpenThermMessageID::RemoteOverrideFunction; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //OEMDiagnosticCode + id = OpenThermMessageID::OEMDiagnosticCode; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //BurnerStarts + id = OpenThermMessageID::BurnerStarts; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //CHPumpStarts + id = OpenThermMessageID::CHPumpStarts; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //DHWPumpValveStarts + id = OpenThermMessageID::DHWPumpValveStarts; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //DHWBurnerStarts + id = OpenThermMessageID::DHWBurnerStarts; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //BurnerOperationHours + id = OpenThermMessageID::BurnerOperationHours; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //CHPumpOperationHours + id = OpenThermMessageID::CHPumpOperationHours; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //DHWPumpValveOperationHours + id = OpenThermMessageID::DHWPumpValveOperationHours; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + + //DHWBurnerOperationHours + id = OpenThermMessageID::DHWBurnerOperationHours; + request = ot.buildRequest(OpenThermRequestType::READ, id, 0); + if(sendRequest(request,response)) + printRequestDetail(id, ot.getLastResponseStatus(), request, response); + } + */ + + void setMasterMemberIdCode() { + //======================================================================================= + // Эта группа элементов данных определяет информацию о конфигурации как на ведомых, так + // и на главных сторонах. Каждый из них имеет группу флагов конфигурации (8 бит) + // и код MemberID (1 байт). Перед передачей информации об управлении и состоянии + // рекомендуется обмен сообщениями о допустимой конфигурации ведомого устройства + // чтения и основной конфигурации записи. Нулевой код MemberID означает клиентское + // неспецифическое устройство. Номер/тип версии продукта следует использовать в сочетании + // с "кодом идентификатора участника", который идентифицирует производителя устройства. + //======================================================================================= + + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::SConfigSMemberIDcode, 0)); // 0xFFFF + if (!ot.isValidResponse(response)) { + return; + } + + vars.parameters.slaveMemberIdCode = response >> 0 & 0xFF; + ot.sendRequest(ot.buildRequest(OpenThermRequestType::WRITE, OpenThermMessageID::MConfigMMemberIDcode, vars.parameters.slaveMemberIdCode)); + } + + void updateMasterParameters() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::WRITE, OpenThermMessageID::MasterVersion, 0x013F)); + if (!ot.isValidResponse(response)) { + return; + } + + vars.parameters.masterType = (response & 0xFFFF) >> 8; + vars.parameters.masterVersion = response & 0xFF; + } + + void updateSlaveParameters() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::SlaveVersion, 0)); + if (!ot.isValidResponse(response)) { + return; + } + + vars.parameters.slaveType = (response & 0xFFFF) >> 8; + vars.parameters.slaveVersion = response & 0xFF; + } + + void updateMinMaxDhwTemp() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::TdhwSetUBTdhwSetLB, 0)); + + if (!ot.isValidResponse(response)) { + return; + } + + byte minTemp = response & 0xFF; + byte maxTemp = (response & 0xFFFF) >> 8; + + if (minTemp >= 0 && maxTemp > 0 && maxTemp > minTemp) { + vars.parameters.dhwMinTemp = minTemp; + vars.parameters.dhwMaxTemp = maxTemp; + } + } + + void updateMinMaxHeatingTemp() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::MaxTSetUBMaxTSetLB, 0)); + + if (!ot.isValidResponse(response)) { + return; + } + + byte minTemp = response & 0xFF; + byte maxTemp = (response & 0xFFFF) >> 8; + + if (minTemp >= 0 && maxTemp > 0 && maxTemp > minTemp) { + vars.parameters.heatingMinTemp = minTemp; + vars.parameters.heatingMaxTemp = maxTemp; + } + } + + void updateOutsideTemp() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::Toutside, 0)); + + if (ot.isValidResponse(response)) { + vars.temperatures.outdoor = ot.getFloat(response); + } + } + + void updateHeatingTemp() { + unsigned long response = ot.sendRequest(ot.buildGetBoilerTemperatureRequest()); + + if (ot.isValidResponse(response)) { + vars.temperatures.heating = ot.getFloat(response); + } + } + + + void updateDHWTemp() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermMessageType::READ_DATA, OpenThermMessageID::Tdhw, 0)); + + if (ot.isValidResponse(response)) { + vars.temperatures.dhw = ot.getFloat(response); + } + } + + void updateFaultCode() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::ASFflags, 0)); + + if (ot.isValidResponse(response)) { + vars.states.faultCode = response & 0xFF; + } + } + + void updateModulationLevel() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::RelModLevel, 0)); + + if (ot.isValidResponse(response)) { + vars.sensors.modulation = ot.getFloat(response); + } + } + + void updatePressure() { + unsigned long response = ot.sendRequest(ot.buildRequest(OpenThermRequestType::READ, OpenThermMessageID::CHPressure, 0)); + + if (ot.isValidResponse(response)) { + vars.sensors.pressure = ot.getFloat(response); + } + } +}; diff --git a/src/RegulatorTask.h b/src/RegulatorTask.h new file mode 100644 index 0000000..91f23e0 --- /dev/null +++ b/src/RegulatorTask.h @@ -0,0 +1,240 @@ +#include "lib/Equitherm.h" +#include +#include + +Equitherm etRegulator; +GyverPID pidRegulator(0, 0, 0, 10000); +PIDtuner pidTuner; + +class RegulatorTask : public MiniTask { +public: + RegulatorTask(bool enabled = false, unsigned long interval = 0) : MiniTask(enabled, interval) {} + +protected: + bool tunerInit = false; + byte tunerState = 0; + float prevHeatingTarget = 0; + float prevEtResult = 0; + float prevPidResult = 0; + + + void setup() {} + void loop() { + byte newTemp; + + if (vars.states.emergency) { + newTemp = getEmergencyModeTemp(); + } else { + newTemp = getNormalModeTemp(); + } + + // Ограничиваем, если до этого не ограничило + if (newTemp < vars.parameters.heatingMinTemp || newTemp > vars.parameters.heatingMaxTemp) { + newTemp = constrain(newTemp, vars.parameters.heatingMinTemp, vars.parameters.heatingMaxTemp); + } + + if (abs(vars.parameters.heatingSetpoint - newTemp) + 0.0001 >= 1) { + vars.parameters.heatingSetpoint = newTemp; + } + } + + + byte getEmergencyModeTemp() { + byte newTemp = vars.parameters.heatingSetpoint; + + // if use equitherm + if (settings.emergency.useEquitherm && settings.outdoorTempSource != 1) { + etRegulator.Kn = settings.equitherm.n_factor; + etRegulator.Kk = settings.equitherm.k_factor; + etRegulator.Kt = 0; + etRegulator.indoorTemp = 0; + etRegulator.outdoorTemp = vars.temperatures.outdoor; + + etRegulator.setLimits(vars.parameters.heatingMinTemp, vars.parameters.heatingMaxTemp); + etRegulator.targetTemp = settings.emergency.target; + + float etResult = etRegulator.getResult(); + if (fabs(prevEtResult - etResult) + 0.0001 >= 1) { + prevEtResult = etResult; + newTemp = round(etResult); + + INFO_F("New emergency equitherm result: %u (%f) \n", newTemp, etResult); + } + + } else { + // default temp, manual mode + newTemp = round(settings.emergency.target); + } + + return newTemp; + } + + byte getNormalModeTemp() { + bool updateIntegral = false; + byte newTemp = vars.parameters.heatingSetpoint; + + if (fabs(prevHeatingTarget - settings.heating.target) > 0.0001) { + prevHeatingTarget = settings.heating.target; + updateIntegral = true; + + INFO_F("New heating target: %f \n", settings.heating.target); + } + + // if use equitherm + if (settings.equitherm.enable) { + if (vars.tuning.enable && vars.tuning.regulator == 0) { + if (settings.pid.enable) { + settings.pid.enable = false; + } + + etRegulator.Kn = tuneEquithermN(etRegulator.Kn, vars.temperatures.indoor, settings.heating.target, 300, 1800, 0.01, 1); + } else { + etRegulator.Kn = settings.equitherm.n_factor; + } + + if (settings.pid.enable) { + etRegulator.Kt = 0; + etRegulator.indoorTemp = round(vars.temperatures.indoor); + etRegulator.outdoorTemp = round(vars.temperatures.outdoor); + } else { + etRegulator.Kt = settings.equitherm.t_factor; + etRegulator.indoorTemp = vars.temperatures.indoor; + etRegulator.outdoorTemp = vars.temperatures.outdoor; + } + + etRegulator.setLimits(vars.parameters.heatingMinTemp, vars.parameters.heatingMaxTemp); + etRegulator.Kk = settings.equitherm.k_factor; + etRegulator.targetTemp = settings.heating.target; + + float etResult = etRegulator.getResult(); + if (fabs(prevEtResult - etResult) + 0.0001 >= 1) { + prevEtResult = etResult; + updateIntegral = true; + newTemp = round(etResult); + + INFO_F("New equitherm result: %u (%f) \n", newTemp, etResult); + + } else { + updateIntegral = false; + } + } + + // if use pid + if (settings.pid.enable && tunerInit && (!vars.tuning.enable || vars.tuning.regulator != 1)) { + pidTuner.reset(); + tunerState = 0; + tunerInit = false; + INFO(F("Tuning stopped")); + + } else if (settings.pid.enable && vars.tuning.enable && vars.tuning.regulator == 1) { + if (tunerInit && pidTuner.getState() == 3) { + INFO(F("Tuning finished")); + pidTuner.debugText(&INFO_STREAM); + + if (pidTuner.getAccuracy() < 90) { + WARN(F("Tuning bad result, restart...")); + + } else { + settings.pid.p_factor = pidTuner.getPID_p(); + settings.pid.i_factor = pidTuner.getPID_i(); + settings.pid.d_factor = pidTuner.getPID_d(); + vars.tuning.enable = false; + } + + pidTuner.reset(); + tunerState = 0; + tunerInit = false; + + } else { + if (!tunerInit) { + INFO(F("Tuning start")); + + float step; + if (vars.temperatures.indoor - vars.temperatures.outdoor > 10) { + step = ceil(vars.parameters.heatingSetpoint / vars.temperatures.indoor * 2); + } else { + step = 5.0f; + } + + float startTemp = newTemp + step; + if (startTemp >= vars.parameters.heatingMaxTemp) { + startTemp = vars.parameters.heatingMaxTemp - 10; + } + + INFO_F("Tuning started. Start temp: %f, step: %f \n", startTemp, step); + pidTuner.setParameters(NORMAL, startTemp, step, 20 * 60 * 1000, 0.15, 60 * 1000, 10000); + tunerInit = true; + } + + pidTuner.setInput(vars.temperatures.indoor); + pidTuner.compute(); + + if (tunerState > 0 && pidTuner.getState() != tunerState) { + INFO(F("Tuning log:")); + pidTuner.debugText(&INFO_STREAM); + tunerState = pidTuner.getState(); + } + + newTemp = round(pidTuner.getOutput()); + } + } + + if (settings.pid.enable && (!vars.tuning.enable || vars.tuning.enable && vars.tuning.regulator != 1)) { + if (updateIntegral) { + pidRegulator.integral = settings.heating.target; + } + + pidRegulator.Kp = settings.pid.p_factor; + pidRegulator.Ki = settings.pid.i_factor; + pidRegulator.Kd = settings.pid.d_factor; + + pidRegulator.setLimits(vars.parameters.heatingMinTemp, vars.parameters.heatingMaxTemp); + pidRegulator.input = vars.temperatures.indoor; + pidRegulator.setpoint = settings.heating.target; + + float pidResult = pidRegulator.getResultTimer(); + if (abs(prevPidResult - pidResult) >= 0.5) { + prevPidResult = pidResult; + newTemp = round(pidResult); + + INFO_F("New PID result: %u (%f) \n", newTemp, pidResult); + } + } + + // default temp, manual mode + if (!settings.equitherm.enable && !settings.pid.enable) { + newTemp = round(settings.heating.target); + } + + return newTemp; + } + + + float tuneEquithermN(float ratio, float currentTemp, float setTemp, unsigned int dirtyInterval = 60, unsigned int accurateInterval = 1800, float accurateStep = 0.01, float accurateStepAfter = 1) { + static uint32_t _prevIteration = millis(); + + if (abs(currentTemp - setTemp) < accurateStepAfter) { + if (millis() - _prevIteration < (accurateInterval * 1000)) { + return ratio; + } + + if (currentTemp - setTemp > 0.1f) { + ratio -= accurateStep; + + } else if (currentTemp - setTemp < -0.1f) { + ratio += accurateStep; + } + + } else { + if (millis() - _prevIteration < (dirtyInterval * 1000)) { + return ratio; + } + + ratio = ratio * (setTemp / currentTemp); + } + + _prevIteration = millis(); + return ratio; + } + +}; diff --git a/src/SensorsTask.h b/src/SensorsTask.h new file mode 100644 index 0000000..c7951b7 --- /dev/null +++ b/src/SensorsTask.h @@ -0,0 +1,27 @@ +#include + +MicroDS18B20 outdoorSensor; + +class SensorsTask : public MiniTask { +public: + SensorsTask(bool enabled = false, unsigned long interval = 0) : MiniTask(enabled, interval) {} + +protected: + void setup() {} + + void loop() { + // DS18B20 sensor + if (outdoorSensor.online()) { + if (outdoorSensor.readTemp()) { + vars.temperatures.outdoor = outdoorSensor.getTemp(); + + } else { + DEBUG("Invalid data from outdoor sensor (DS18B20)"); + } + + outdoorSensor.requestTemp(); + } else { + WARN("Failed to connect to outdoor sensor (DS18B20)"); + } + } +}; \ No newline at end of file diff --git a/src/Settings.h b/src/Settings.h new file mode 100644 index 0000000..951d2ef --- /dev/null +++ b/src/Settings.h @@ -0,0 +1,90 @@ +struct Settings { + bool debug = false; + // 0 - boiler, 1 - manual, 2 - ds18b20 + byte outdoorTempSource = 0; + char hostname[80] = "opentherm"; + + struct { + char server[80]; + int port = 1883; + char user[32]; + char password[32]; + char prefix[80] = "opentherm"; + unsigned int interval = 5000; + } mqtt; + + struct { + bool enable = true; + float target = 40.0f; + bool useEquitherm = false; + } emergency; + + struct { + bool enable = true; + float target = 40.0f; + float hysteresis = 0.5f; + } heating; + + struct { + bool enable = true; + byte target = 40; + } dhw; + + struct { + bool enable = false; + float p_factor = 3; + float i_factor = 0.2f; + float d_factor = 0; + } pid; + + struct { + bool enable = false; + float n_factor = 0.67f; + float k_factor = 1.0f; + float t_factor = 0.0f; + } equitherm; + +} settings; + +struct Variables { + struct { + bool enable = false; + byte regulator = 0; + } tuning; + + struct { + bool otStatus = false; + bool emergency = false; + bool heating = false; + bool dhw = false; + bool flame = false; + bool fault = false; + bool diagnostic = false; + byte faultCode = 0; + } states; + + struct { + float modulation = 0.0f; + float pressure = 0.0f; + } sensors; + + struct { + float indoor = 0.0f; + float outdoor = 0.0f; + float heating = 0.0f; + float dhw = 0.0f; + } temperatures; + + struct { + byte heatingMinTemp = 20; + byte heatingMaxTemp = 90; + byte heatingSetpoint = 0.0f; + byte dhwMinTemp = 30; + byte dhwMaxTemp = 60; + uint8_t slaveMemberIdCode; + uint8_t slaveType; + uint8_t slaveVersion; + uint8_t masterType; + uint8_t masterVersion; + } parameters; +} vars; \ No newline at end of file diff --git a/src/WifiManagerTask.h b/src/WifiManagerTask.h new file mode 100644 index 0000000..2fce4e3 --- /dev/null +++ b/src/WifiManagerTask.h @@ -0,0 +1,77 @@ +// #include +#define WM_MDNS +#include +//#include +//#include + +// Wifimanager +WiFiManager wm; +WiFiManagerParameter *wmHostname; +WiFiManagerParameter *wmMqttServer; +WiFiManagerParameter *wmMqttPort; +WiFiManagerParameter *wmMqttUser; +WiFiManagerParameter *wmMqttPassword; +WiFiManagerParameter *wmMqttPrefix; + +class WifiManagerTask : public CustomTask { +public: + WifiManagerTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {} + +protected: + void setup() { + WiFi.mode(WIFI_STA); + wm.setDebugOutput(settings.debug); + + wmHostname = new WiFiManagerParameter("hostname", "Hostname", settings.hostname, 80); + wm.addParameter(wmHostname); + + wmMqttServer = new WiFiManagerParameter("mqtt_server", "MQTT server", settings.mqtt.server, 80); + wm.addParameter(wmMqttServer); + + //char mqttPort[6]; + sprintf(buffer, "%d", settings.mqtt.port); + wmMqttPort = new WiFiManagerParameter("mqtt_port", "MQTT port", buffer, 6); + wm.addParameter(wmMqttPort); + + wmMqttUser = new WiFiManagerParameter("mqtt_user", "MQTT username", settings.mqtt.user, 32); + wm.addParameter(wmMqttUser); + + wmMqttPassword = new WiFiManagerParameter("mqtt_password", "MQTT password", settings.mqtt.password, 32); + wm.addParameter(wmMqttPassword); + + wmMqttPrefix = new WiFiManagerParameter("mqtt_prefix", "MQTT prefix", settings.mqtt.prefix, 32); + wm.addParameter(wmMqttPrefix); + + wm.setHostname(settings.hostname); + wm.setWiFiAutoReconnect(true); + wm.setConfigPortalBlocking(false); + wm.setSaveParamsCallback(saveParamsCallback); + wm.setConfigPortalTimeout(300); + wm.setDisableConfigPortal(false); + + if (wm.autoConnect(AP_SSID)) { + INFO_F("Wifi connected. IP: %s, RSSI: %d\n", WiFi.localIP().toString().c_str(), WiFi.RSSI()); + wm.startWebPortal(); + + } else { + INFO(F("Failed to connect to WIFI, start the configuration portal...")); + } + } + + void loop() { + wm.process(); + } + + void static saveParamsCallback() { + strcpy(settings.hostname, (*wmHostname).getValue()); + strcpy(settings.mqtt.server, (*wmMqttServer).getValue()); + settings.mqtt.port = atoi((*wmMqttPort).getValue()); + strcpy(settings.mqtt.user, (*wmMqttUser).getValue()); + strcpy(settings.mqtt.password, (*wmMqttPassword).getValue()); + strcpy(settings.mqtt.prefix, (*wmMqttPrefix).getValue()); + + INFO_F("Settings\nHostname: %s, Server: %s, port: %d, user: %s, pass: %s\n", settings.hostname, settings.mqtt.server, settings.mqtt.port, settings.mqtt.user, settings.mqtt.password); + eeSettings.updateNow(); + INFO(F("Settings saved")); + } +}; \ No newline at end of file diff --git a/src/defines.h b/src/defines.h new file mode 100644 index 0000000..0f2918b --- /dev/null +++ b/src/defines.h @@ -0,0 +1,43 @@ +#define OT_GATEWAY_VERSION "1.0.4" +#define AP_SSID "OpenTherm Gateway" +//#define USE_TELNET + +#define EMERGENCY_TRESHOLD 10 +#define MQTT_RECONNECT_INTERVAL 5000 +#define MQTT_KEEPALIVE 30 + +#define OPENTHERM_IN_PIN 4 +#define OPENTHERM_OUT_PIN 5 +#define OPENTHERM_OFFLINE_TRESHOLD 10 + +#define DS18B20_PIN 2 +#define DS18B20_INTERVAL 1000 +#define DS_CHECK_CRC true +#define DS_CRC_USE_TABLE true + +#define CONFIG_URL "http://%s/" + + +#ifdef USE_TELNET + #define INFO_STREAM TelnetStream + #define WARN_STREAM TelnetStream + #define ERROR_STREAM TelnetStream + #define DEBUG_STREAM if (settings.debug) TelnetStream + #define WM_DEBUG_PORT TelnetStream +#else + #define INFO_STREAM Serial + #define WARN_STREAM Serial + #define ERROR_STREAM Serial + #define DEBUG_STREAM if (settings.debug) Serial + #define WM_DEBUG_PORT Serial +#endif + +#define INFO(...) INFO_STREAM.print("\r[INFO] "); INFO_STREAM.println(__VA_ARGS__); +#define INFO_F(...) INFO_STREAM.print("\r[INFO] "); INFO_STREAM.printf(__VA_ARGS__); +#define WARN(...) WARN_STREAM.print("\r[WARN] "); WARN_STREAM.println(__VA_ARGS__); +#define WARN_F(...) WARN_STREAM.print("\r[WARN] "); WARN_STREAM.printf(__VA_ARGS__); +#define ERROR(...) ERROR_STREAM.print("\r[ERROR] "); ERROR_STREAM.println(__VA_ARGS__); +#define DEBUG(...) DEBUG_STREAM.print("\r[DEBUG] "); DEBUG_STREAM.println(__VA_ARGS__); +#define DEBUG_F(...) DEBUG_STREAM.print("\r[DEBUG] "); DEBUG_STREAM.printf(__VA_ARGS__); + +char buffer[120]; \ No newline at end of file diff --git a/src/lib/CustomOpenTherm.h b/src/lib/CustomOpenTherm.h new file mode 100644 index 0000000..29a1f41 --- /dev/null +++ b/src/lib/CustomOpenTherm.h @@ -0,0 +1,46 @@ +#include + +extern SchedulerClass Scheduler; + +class CustomOpenTherm : public OpenTherm { +private: + unsigned long send_ts = millis(); + void(*handleSendRequestCallback)(unsigned long, unsigned long, OpenThermResponseStatus status, byte attempt); + +public: + CustomOpenTherm(int inPin = 4, int outPin = 5, bool isSlave = false) : OpenTherm(inPin, outPin, isSlave) {} + void setHandleSendRequestCallback(void(*handleSendRequestCallback)(unsigned long, unsigned long, OpenThermResponseStatus status, byte attempt)) { + this->handleSendRequestCallback = handleSendRequestCallback; + } + + unsigned long sendRequest(unsigned long request, byte attempts = 5, byte _attempt = 0) { + _attempt++; + while (send_ts > 0 && millis() - send_ts < 200) { + Scheduler.yield(); + } + + //unsigned long response = OpenTherm::sendRequest(request); + unsigned long _response; + if (!sendRequestAync(request)) { + _response = 0; + } else { + while (!isReady()) { + Scheduler.yield(); + process(); + } + + _response = getLastResponse(); + } + + if (handleSendRequestCallback != NULL) { + handleSendRequestCallback(request, _response, getLastResponseStatus(), _attempt); + } + + send_ts = millis(); + if (getLastResponseStatus() == OpenThermResponseStatus::SUCCESS || _attempt >= attempts) { + return _response; + } else { + return sendRequest(request, attempts, _attempt); + } + } +}; diff --git a/src/lib/CustomTask.h b/src/lib/CustomTask.h new file mode 100644 index 0000000..ff42cd3 --- /dev/null +++ b/src/lib/CustomTask.h @@ -0,0 +1,45 @@ +class CustomTask : public Task { +public: + CustomTask(bool enabled = false, unsigned long interval = 0) { + _enabled = enabled; + _interval = interval; + } + + bool isEnabled() { + return _enabled; + } + + void enable() { + _enabled = true; + } + + void disable() { + _enabled = false; + } + + void setInterval(unsigned long val) { + _interval = val; + } + + unsigned long getInterval() { + return _interval; + } + +protected: + bool _enabled = true; + unsigned long _lastRun = 0; + unsigned long _interval = 0; + + bool shouldRun() { + if (!_enabled || !Task::shouldRun()) { + return false; + } + + if (_interval > 0 && millis() - _lastRun < _interval) { + return false; + } + + _lastRun = millis(); + return true; + } +}; \ No newline at end of file diff --git a/src/lib/Equitherm.h b/src/lib/Equitherm.h new file mode 100644 index 0000000..4e7fc7c --- /dev/null +++ b/src/lib/Equitherm.h @@ -0,0 +1,63 @@ +#include + +#if defined(EQUITHERM_INTEGER) +// расчёты с целыми числами +typedef int datatype; +#else +// расчёты с float числами +typedef float datatype; +#endif + +class Equitherm { +public: + Equitherm() {} + + // kn, kk, kt + Equitherm(float new_kn, float new_kk, float new_kt) { + Kn = new_kn; + Kk = new_kk; + Kt = new_kt; + } + + // лимит выходной величины + void setLimits(int min_output, int max_output) { + _minOut = min_output; + _maxOut = max_output; + } + + datatype targetTemp = 0; + datatype indoorTemp = 0; + datatype outdoorTemp = 0; + float Kn = 0.0; + float Kk = 0.0; + float Kt = 0.0; + + // возвращает новое значение при вызове + datatype getResult() { + datatype output = getResultN() + getResultK() + getResultT(); + output = constrain(output, _minOut, _maxOut); // ограничиваем выход + return output; + } + + // температура контура отопления в зависимости от наружной температуры + datatype getResultN() { + float a = (-0.21 * Kn) - 0.06; // a = -0,21k — 0,06 + float b = (6.04 * Kn) + 1.98; // b = 6,04k + 1,98 + float c = (-5.06 * Kn) + 18.06; // с = -5,06k + 18,06 + float x = (-0.2 * outdoorTemp) + 5; // x = -0.2*t1 + 5 + return (a * x * x) + (b * x) + c; // Tn = ax2 + bx + c + } + + // поправка на желаемую комнатную температуру + datatype getResultK() { + return (targetTemp - 20) * Kk; + } + + // Расчет поправки (ошибки) термостата + datatype getResultT() { + return (targetTemp - indoorTemp) * Kt; + } + +private: + int _minOut = 20, _maxOut = 90; +}; \ No newline at end of file diff --git a/src/lib/MiniTask.h b/src/lib/MiniTask.h new file mode 100644 index 0000000..81b1d9a --- /dev/null +++ b/src/lib/MiniTask.h @@ -0,0 +1,64 @@ +class MiniTask { +public: + MiniTask(bool enabled = false, unsigned long interval = 0) { + _enabled = enabled; + _interval = interval; + } + + bool isEnabled() { + return _enabled; + } + + void enable() { + _enabled = true; + } + + void disable() { + _enabled = false; + } + + void setInterval(unsigned long val) { + _interval = val; + } + + unsigned long getInterval() { + return _interval; + } + + void loopWrapper() { + if (!shouldRun()) { + return; + } + + if (!_setupDone) { + setup(); + _setupDone = true; + } + + loop(); + yield(); + } + +protected: + virtual void setup() {} + virtual void loop() {} + + virtual bool shouldRun() { + if (!_enabled) { + return false; + } + + if (_interval > 0 && millis() - _lastRun < _interval) { + return false; + } + + _lastRun = millis(); + return true; + } + +private: + bool _enabled = false; + unsigned long _interval = 0; + unsigned long _lastRun = 0; + bool _setupDone = false; +}; diff --git a/src/src.ino b/src/src.ino new file mode 100644 index 0000000..d6a2bea --- /dev/null +++ b/src/src.ino @@ -0,0 +1,58 @@ +#include "defines.h" +#include +#include +#include +#include +#include "Settings.h" + +EEManager eeSettings(settings, 30000); + +#include "lib/CustomTask.h" +#include "WifiManagerTask.h" +#include "MqttTask.h" +#include "OpenThermTask.h" +#include "MainTask.h" + +// Tasks +WifiManagerTask* tWm; +MqttTask* tMqtt; +OpenThermTask* tOt; +MainTask* tMain; + +void setup() { +#ifdef USE_TELNET + TelnetStream.begin(); + delay(5000); +#else + Serial.begin(115200); + Serial.println("\n\n"); +#endif + + EEPROM.begin(eeSettings.blockSize()); + uint8_t eeSettingsResult = eeSettings.begin(0, 's'); + if (eeSettingsResult == 0) { + INFO("Settings loaded"); + + } else if (eeSettingsResult == 1) { + INFO("Settings NOT loaded, first start"); + + } else if (eeSettingsResult == 2) { + INFO("Settings NOT loaded (error)"); + } + + tWm = new WifiManagerTask(true); + Scheduler.start(tWm); + + tMqtt = new MqttTask(false); + Scheduler.start(tMqtt); + + tOt = new OpenThermTask(true); + Scheduler.start(tOt); + + tMain = new MainTask(true); + Scheduler.start(tMain); + + Scheduler.begin(); +} + +void loop() {} \ No newline at end of file