wichers / esphome-opentherm

Port of OpenTherm protocol to ESPHome.io firmware.
40 stars 16 forks source link

I have a compilation problem #7

Open 111lisu opened 1 year ago

111lisu commented 1 year ago

I have a compilation problem:

INFO Reading configuration /config/esphome/opentherm-gateway.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing opentherm-gateway (board: esp32dev; framework: arduino; platform: platformio/espressif32 @ 3.5.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- AsyncTCP-esphome @ 1.2.2
|-- WiFi @ 1.0
|-- FS @ 1.0
|-- Update @ 1.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
|   |-- AsyncTCP-esphome @ 1.2.2
|-- DNSServer @ 1.1.0
|-- ESPmDNS @ 1.0
|-- ArduinoJson @ 6.18.5
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/main.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/lib64d/WiFi/WiFiScan.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/lib64d/WiFi/WiFiServer.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/lib64d/WiFi/WiFiUdp.cpp.o
/config/esphome/opentherm-gateway.yaml: In lambda function:
/config/esphome/opentherm-gateway.yaml:84:51: error: no matching function for call to 'esphome::binary_sensor::BinarySensor::BinarySensor(const char [10])'
In file included from src/esphome/core/application.h:13:0,
                 from src/esphome/components/api/api_connection.h:4,
                 from src/esphome.h:3,
                 from src/main.cpp:3:
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor()
   explicit BinarySensor();
            ^
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note:   candidate expects 0 arguments, 1 provided
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(const esphome::binary_sensor::BinarySensor&)
 class BinarySensor : public EntityBase {
       ^
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [10]' to 'const esphome::binary_sensor::BinarySensor&'
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(esphome::binary_sensor::BinarySensor&&)
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [10]' to 'esphome::binary_sensor::BinarySensor&&'
/config/esphome/opentherm-gateway.yaml:86:53: error: no matching function for call to 'esphome::binary_sensor::BinarySensor::BinarySensor(const char [11])'
In file included from src/esphome/core/application.h:13:0,
                 from src/esphome/components/api/api_connection.h:4,
                 from src/esphome.h:3,
                 from src/main.cpp:3:
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor()
   explicit BinarySensor();
            ^
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note:   candidate expects 0 arguments, 1 provided
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(const esphome::binary_sensor::BinarySensor&)
 class BinarySensor : public EntityBase {
       ^
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [11]' to 'const esphome::binary_sensor::BinarySensor&'
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(esphome::binary_sensor::BinarySensor&&)
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [11]' to 'esphome::binary_sensor::BinarySensor&&'
/config/esphome/opentherm-gateway.yaml:88:49: error: no matching function for call to 'esphome::binary_sensor::BinarySensor::BinarySensor(const char [9])'
In file included from src/esphome/core/application.h:13:0,
                 from src/esphome/components/api/api_connection.h:4,
                 from src/esphome.h:3,
                 from src/main.cpp:3:
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor()
   explicit BinarySensor();
            ^
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note:   candidate expects 0 arguments, 1 provided
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(const esphome::binary_sensor::BinarySensor&)
 class BinarySensor : public EntityBase {
       ^
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [9]' to 'const esphome::binary_sensor::BinarySensor&'
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(esphome::binary_sensor::BinarySensor&&)
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [9]' to 'esphome::binary_sensor::BinarySensor&&'
/config/esphome/opentherm-gateway.yaml:90:65: error: no matching function for call to 'esphome::binary_sensor::BinarySensor::BinarySensor(const char [17])'
In file included from src/esphome/core/application.h:13:0,
                 from src/esphome/components/api/api_connection.h:4,
                 from src/esphome.h:3,
                 from src/main.cpp:3:
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor()
   explicit BinarySensor();
            ^
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note:   candidate expects 0 arguments, 1 provided
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(const esphome::binary_sensor::BinarySensor&)
 class BinarySensor : public EntityBase {
       ^
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [17]' to 'const esphome::binary_sensor::BinarySensor&'
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(esphome::binary_sensor::BinarySensor&&)
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [17]' to 'esphome::binary_sensor::BinarySensor&&'
/config/esphome/opentherm-gateway.yaml:92:65: error: no matching function for call to 'esphome::binary_sensor::BinarySensor::BinarySensor(const char [17])'
In file included from src/esphome/core/application.h:13:0,
                 from src/esphome/components/api/api_connection.h:4,
                 from src/esphome.h:3,
                 from src/main.cpp:3:
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor()
   explicit BinarySensor();
            ^
src/esphome/components/binary_sensor/binary_sensor.h:28:12: note:   candidate expects 0 arguments, 1 provided
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(const esphome::binary_sensor::BinarySensor&)
 class BinarySensor : public EntityBase {
       ^
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [17]' to 'const esphome::binary_sensor::BinarySensor&'
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note: candidate: esphome::binary_sensor::BinarySensor::BinarySensor(esphome::binary_sensor::BinarySensor&&)
src/esphome/components/binary_sensor/binary_sensor.h:26:7: note:   no known conversion for argument 1 from 'const char [17]' to 'esphome::binary_sensor::BinarySensor&&'
*** [/data/opentherm-gateway/.pioenvs/opentherm-gateway/src/main.cpp.o] Error 1
========================= [FAILED] Took 18.73 seconds =========================
confucius78 commented 1 year ago

Same here..

mihsu81 commented 1 year ago

Try https://github.com/wichers/esphome-opentherm/pull/6

111lisu commented 1 year ago

Try #6?

mihsu81 commented 1 year ago

Try #6?

Yes, modify your yaml file to match the modifications proposed in PR #6.

111lisu commented 1 year ago

Thanks a lot. Compiled - ESPHome 2022.9.1

climate:
- platform: custom
  lambda: |-
    auto thermostat_in = new esp32::ArduinoInternalGPIOPin();
    thermostat_in->set_pin(26);
    thermostat_in->pin_mode(gpio::FLAG_INPUT);
    auto thermostat_out = new esp32::ArduinoInternalGPIOPin();
    thermostat_out->set_pin(17);
    thermostat_out->pin_mode(gpio::FLAG_OUTPUT);
    auto boiler_in = new esp32::ArduinoInternalGPIOPin();
    boiler_in->set_pin(25);
    boiler_in->pin_mode(gpio::FLAG_INPUT);
    auto boiler_out = new esp32::ArduinoInternalGPIOPin();
    boiler_out->set_pin(16);
    boiler_out->pin_mode(gpio::FLAG_OUTPUT);
    auto ot = new esphome::opentherm::OpenThermGWClimate(thermostat_in, thermostat_out, boiler_in, boiler_out);
    App.register_component(ot);
    ot->ch_active = new BinarySensor();
    ot->ch_active->set_name("CH Active");
    App.register_binary_sensor(ot->ch_active);
    ot->dhw_active = new BinarySensor();
    ot->dhw_active->set_name("DHW Active");
    App.register_binary_sensor(ot->dhw_active);
    ot->flame_on = new BinarySensor();
    ot->flame_on->set_name("Flame On");
    App.register_binary_sensor(ot->flame_on);
    ot->diagnostic_event = new BinarySensor();
    ot->diagnostic_event->set_name("Diagnostic Event");
    App.register_binary_sensor(ot->diagnostic_event);
    ot->fault_indication = new BinarySensor();
    ot->fault_indication->set_name("Fault Indication");
    App.register_binary_sensor(ot->fault_indication);
    ot->boiler_water_temp = new Sensor("Boiler Water Temperature");
    App.register_sensor(ot->boiler_water_temp);
    ot->dhw_temperature = new Sensor("DHW Temperature");
    App.register_sensor(ot->dhw_temperature);
    ot->return_water_temperature = new Sensor("Return Water Temperature");
    App.register_sensor(ot->return_water_temperature);
    ot->relative_modulation_level = new Sensor("Relative Modulation Level");
    App.register_climate(ot);
    return {ot};
  climates:
    - name: "livingroom"
Bart-1992 commented 1 year ago

Hi,

I've got the following error while compiling, I hope someone can help me out?

INFO Reading configuration /config/esphome/opentherm-gateway.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing opentherm-gateway (board: esp32dev; framework: arduino; platform: platformio/espressif32 @ 5.2.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- AsyncTCP-esphome @ 1.2.2
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
|   |-- AsyncTCP-esphome @ 1.2.2
|-- ESPmDNS @ 2.0.0
|-- ArduinoJson @ 6.18.5
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/api_connection.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/api_frame_helper.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/api_pb2.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/api_pb2_service.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/api_server.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/list_entities.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/proto.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/subscribe_state.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/api/user_services.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/binary_sensor/automation.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/binary_sensor/binary_sensor.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/binary_sensor/filter.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/climate/climate.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/climate/climate_mode.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/climate/climate_traits.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/esp32/core.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/esp32/gpio.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/esp32/preferences.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/json/json_util.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/logger/logger.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/md5/md5.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/mdns/mdns_component.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/mdns/mdns_esp32_arduino.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/mdns/mdns_esp8266.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/mdns/mdns_esp_idf.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/mdns/mdns_rp2040.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/network/util.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/ota/ota_backend_arduino_esp32.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/ota/ota_backend_arduino_esp8266.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/ota/ota_backend_arduino_rp2040.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/ota/ota_backend_esp_idf.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/ota/ota_component.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/sensor/automation.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/sensor/filter.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/sensor/sensor.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/socket/bsd_sockets_impl.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/socket/lwip_raw_tcp_impl.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/socket/socket.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/web_server/list_entities.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/web_server/web_server.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/web_server_base/web_server_base.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/wifi/wifi_component.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/wifi/wifi_component_esp32_arduino.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/wifi/wifi_component_esp8266.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/wifi/wifi_component_esp_idf.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/components/wifi/wifi_component_pico_w.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/application.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/color.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/component.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/component_iterator.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/controller.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/entity_base.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/helpers.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/log.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/scheduler.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/esphome/core/util.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/main.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/opentherm.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/src/opentherm_gw_climate.cpp.o
Building /data/opentherm-gateway/.pioenvs/opentherm-gateway/bootloader.bin
Generating partitions /data/opentherm-gateway/.pioenvs/opentherm-gateway/partitions.bin
Creating esp32 image...
Successfully created esp32 image.
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/lib53e/AsyncTCP-esphome/AsyncTCP.cpp.o
/config/esphome/opentherm-gateway.yaml: In lambda function:
/config/esphome/opentherm-gateway.yaml:37:32: error: expected type-specifier
     auto thermostat_in = new esp32::ArduinoInternalGPIOPin();
                                ^~~~~
/config/esphome/opentherm-gateway.yaml:40:33: error: expected type-specifier
     auto thermostat_out = new esp32::ArduinoInternalGPIOPin();
                                 ^~~~~
/config/esphome/opentherm-gateway.yaml:43:28: error: expected type-specifier
     auto boiler_in = new esp32::ArduinoInternalGPIOPin();
                            ^~~~~
/config/esphome/opentherm-gateway.yaml:46:29: error: expected type-specifier
     auto boiler_out = new esp32::ArduinoInternalGPIOPin();
                             ^~~~~
/config/esphome/opentherm-gateway.yaml:74:17: error: could not convert '{ot}' from '<brace-enclosed initializer list>' to 'std::vector<esphome::climate::Climate*>'
     return {ot};
                 ^
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/lib64d/WiFi/WiFi.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/lib64d/WiFi/WiFiAP.cpp.o
Compiling /data/opentherm-gateway/.pioenvs/opentherm-gateway/lib64d/WiFi/WiFiClient.cpp.o
*** [/data/opentherm-gateway/.pioenvs/opentherm-gateway/src/main.cpp.o] Error 1
========================= [FAILED] Took 366.68 seconds =========================
hooijschuur commented 1 year ago

i would like to use this with an esp 8266. how can i change this?

mihsu81 commented 1 year ago

@Bart-1992 replace the 4 existing instances of esp32::ArduinoInternalGPIOPin() with esphome::esp32::ESP32InternalGPIOPin() and add GPIONUM in front of the GPIO pin numbers in set_pin(). Would be something like:

- platform: custom
  lambda: |-
    auto thermostat_in = new esphome::esp32::ESP32InternalGPIOPin();
    thermostat_in->set_pin(GPIO_NUM_9);
    thermostat_in->pin_mode(gpio::FLAG_INPUT);
    auto thermostat_out = new esphome::esp32::ESP32InternalGPIOPin();
    thermostat_out->set_pin(GPIO_NUM_11);
    thermostat_out->pin_mode(gpio::FLAG_OUTPUT);
    auto boiler_in = new esphome::esp32::ESP32InternalGPIOPin();
    boiler_in->set_pin(GPIO_NUM_33);
    boiler_in->pin_mode(gpio::FLAG_INPUT);
    auto boiler_out = new esphome::esp32::ESP32InternalGPIOPin();
    boiler_out->set_pin(GPIO_NUM_35);
    boiler_out->pin_mode(gpio::FLAG_OUTPUT);
    auto ot = new esphome::opentherm::OpenThermGWClimate(thermostat_in, thermostat_out, boiler_in, boiler_out);
    App.register_component(ot);
    ot->ch_active = new BinarySensor();
    ot->ch_active->set_name("CH Active");
    App.register_binary_sensor(ot->ch_active);
    ot->dhw_active = new BinarySensor();
    ot->dhw_active->set_name("DHW Active");
    App.register_binary_sensor(ot->dhw_active);
    ot->flame_on = new BinarySensor();
    ot->flame_on->set_name("Flame On");
    App.register_binary_sensor(ot->flame_on);
    ot->diagnostic_event = new BinarySensor();
    ot->diagnostic_event->set_name("Diagnostic Event");
    App.register_binary_sensor(ot->diagnostic_event);
    ot->fault_indication = new BinarySensor();
    ot->fault_indication->set_name("Fault Indication");
    App.register_binary_sensor(ot->fault_indication);
    ot->boiler_water_temp = new Sensor("Boiler Water Temperature");
    App.register_sensor(ot->boiler_water_temp);
    ot->dhw_temperature = new Sensor("DHW Temperature");
    App.register_sensor(ot->dhw_temperature);
    ot->return_water_temperature = new Sensor("Return Water Temperature");
    App.register_sensor(ot->return_water_temperature);
    ot->relative_modulation_level = new Sensor("Relative Modulation Level");
    App.register_climate(ot);
    return {ot};