Buderus LOGAMAX PLUS GB172-14 + RC310 + EMS-ESP32: How to connect?

I will have a new heating system installed next month:

For the data acquisition I decided on EMS-ESP32, with which I can process this in Homeassistant.

Has anyone ever had an EMS-ESP32 connected to a LOGAMAX PLUS GB172-14?
I would be happy if someone has already tried it and can give me tips on how to integrate it.

Thanks.

Hi,

maybe a little late answer but


It works just fine. Buy the ready to use box (or connect an esp32 to the interface board). Connect it to the maintenance jack in the Logamax and configure WIFI of the ems-esp.

Enable MQTT on the ems-esp and home assistant side. Configure credentials and enable HA discovery on the ems-esp.

Seconds later you will have a **** load of entities on the home assistant side which tell you a lot of info.
They are added automatically because of MQTT discovery.

BONUS: Directly on the ems-esp webinterface you can also set a lot of values and tune e.g. your design temperatures.

@TimoF
Thanks for your replay. Confirm it is working
but with few problems:

  • Can’t use the maintenance jack, because when I connect it, the RC310 doesn’t work anymore.

  • Connection via the EMS bus contacts works, but only if I use the correct polarity.

  • I cannot fix the error messages, even attempts with different short 15cm cables (twisted, LAN cable, shielded data cable 
) always produce the same error rate. But since the errors are low, it is not really important. see: https://github.com/emsesp/EMS-ESP32/issues/101

  • It also confuses me, because tap water is always 0 l / min and I cannot tell whether the shower is being used.

But basically it works very well. The people at EMS-ESP do a good job.

Hi,

seems all very similar to my setup. I have rx fails from time to time, but EMS quality is still 100%.

I also have 0l/min all the time. Maybe it is just not supported on the hardware side. I have a Buderus/Topline GB162 and RC30.

I’d really like to have a nice way to visualize all the information in a meaningful manner.
Right now I think of using the picture-elements card and create a picture of my physical heating setup and overlay all the values. (Something like that heating scheme)

Hi,
Yes. I am working on the same task, have pressure and water temperature sensors (flow, return, boiler, water meter) for cold and hot water and record gas consumption. This would work with a picture element and the data from the sensors can then be displayed with “elements”.

Example plant sensor:

- type: picture-elements
    image: /local/images/plants.jpg
    dtitle: "Garden Plant Sensor"
    style: |
      ha-card {
         
      }
      .card-header {
         color: # B5B5B5;
         font-weight: 400! important;
         font-size: 1.5em! important;
         line-height: 24px;
         padding: 15px;
      }
    elements:
      - entity: sensor.miflora_sensor_light
        style:
          "--ha-label-badge-font-size": 0.9em
          title: 'visible: none'
          left: 10%
          top: 27%
          color: "#ffffff"
        type: state badge
      - entity: sensor.miflora_sensor_conductivity
        style:
          "--ha-label-badge-font-size": 0.9em
          left: 30%
          top: 27%
          color: "#ffffff"
        type: state badge
      - entity: sensor.miflora_sensor_battery
        style:
          "--ha-label-badge-font-size": 0.9em
          left: 10%
          top: 72%
          color: "#ffffff"
        type: state badge
      - entity: sensor.miflora_sensor_moisture
        style:
          "--ha-label-badge-font-size": 0.9em
          left: 30%
          top: 72%
          color: "#ffffff"
        type: state badge
      - entity: sensor.miflora_sensor_temperature
        style:
          "--ha-label-badge-font-size": 0.9em
          left: 92%
          top: 50%
          color: "#ffffff"
        type: state badge
      - entity: sensor.miflora_sensor_timestamp
        style:
          bottom: -15px
          right: -72px
          "--ha-label-badge-font-size": 0.9em
          color: "#ffffff"
        type: state-label

Bildschirmfoto 2021-09-15 um 15.32.47

I’m striving for a more technical overview like this.
It is a bit tedious with the picture element but ok.

1 Like

Hello @petsie and @TimoF , were you able to solve the situation the RC30 stops working when using the maintenance plug (i think opening the cover to access the panel allready disables the rc30)? I’m considering buying the EMS-ESP32, but I’m a bit turned off by the fact to leave the cover open at all times and having the rc30 not available.

@jurgendb

I use the Gateway S32 (Standard Edition) w/o any modification, but when i use the original jack cable the RC310 is deactivated. Same as when i do not have the correct polarity with the 2 wire cable.
No problem, the 2 wire cable is working.

So i use only the EMS BUS cable (I believe the right pin on the screw terminal is the EMS+ pin, the left on EMS-.) and this is working for me.

@jurgendb
I have my esp32 with the interface board in the maintenance jack.

My RC30 (I think) is connected on the wall outside the boiler.

I have no issues.

Where is the ESM±Pin? Under the blue hood behind the RC310? Just got my new Buderus-Installation today and look forward to “upgrade” it! :slight_smile:

Hi @Bepp

see: Connecting a Gateway S32 (ESP32 Standard edition) — EMS Gateway documentation

Hi Everyone!

Great to see other LOGAMAX owners succesfully integrate their devices with HA.

I have a question. Is there a way to use your existing Home Assistant devices with temperature sensors as thermostats for the boiler connected with a WiFi gateway?

1 Like

Hello. I have a question regarding my heating system. I have a boiler with an RC200 panel (thermostat), which is currently installed in a dedicated boiler room. The boiler operates based on the thermostat settings from this panel, which is not ideal for me. I have a two-story house with two separate heating circuits and pumps. The situation arises where the thermostat in the boiler room is set to 21 degrees Celsius, and the temperature there reaches 21+ degrees due to the heating. In the meantime, on the second floor, in one of the rooms, it’s only 18 degrees Celsius, which is too cold.

My question is: Can I use Gateway S32 to receive temperature data from another Zigbee sensor, for example, the average value from all sensors on the second floor or simply the value from the sensor in the specific room that needs heating? In this case, other rooms could be regulated using servo motors based on their respective sensors, preventing overheating. Currently, I want to substitute the boiler’s temperature data with a wireless thermometer located in a different room. Thank you.

Negative, you cannot use the Gateway S32 for Zigbee sensors.

I have similar behavior when winter starts, the rooms on the 2nd floor do not reach the desired room temperature. But that puts itself into perspective after a few days.

I have an RC310 (25.0 °C) on the gas boiler and ZIGBEE thermostats (°C roombased) on all radiators and regulate the temperature there in the transition period a little higher than in the normal heating period.

When I measure the flow and return temperatures, I see that the gas boiler heats until a certain temperature spread is reached. A temperature sensor outside the gas boiler probably doesn’t help much because it does exactly the same thing as the one in the gas boiler.

In my case the only decisive factor for how long the gas boiler heats is the delta between the flow and return temperatures.

1 Like

Thank you for your response. So, the optimal solution would be to set a higher temperature on the main thermostat than the temperature in the specific room where it is located, allowing the warmth to reach the colder room. Meanwhile, in the other rooms, temperature could be regulated using thermostatic radiator valves (servo motors). However, I am concerned about whether the boiler might end up wasting gas when all rooms have reached the desired temperature, and all valves are closed. Will the boiler continue to heat the water, or will it be based on the return water temperature? If the return water temperature is not very cold, will it reduce its heating?

I am also considering the option of automating the thermostat temperature change in the Gateway S32 if it’s necessary for any of the rooms, lowering the temperature if the rooms are already warm. In any case, I want to maximize the efficiency of the boiler and avoid excessive gas consumption.

I noticed the calendar feature on your thermostat screenshots. I understand it’s used to set the heating schedule for different days and times. Could you please guide me on how to configure it? Thank you.

@serhii-ha

But I don’t know your heating system, so there may well be special features.

However, I am concerned about whether the boiler might end up wasting gas when all rooms have reached the desired temperature, and all valves are closed.

No, because the Boiler will stop heating, because the return temperature is the same as the forward temperature.

If the return water temperature is not very cold, will it reduce its heating?

Yes, but based on the heating curve (Main Settings heater)

I am also considering the option of automating the thermostat temperature change in the Gateway S32 


No i would not do this, because the heater controller can do this better, because this is programmed with the heater controller. Otherwise this will not work in simple Houses.

It took me almost a heating season on my system (I’m just a user and not a heating expert) to find the best setting (simple heating):

The temperature on the RC310 (gas boiler) is only used to adjust the heating curve; there is no room measurement. The heating curve describes the flow temperature and temperature spread, taking into account the building structure and the heating requirement and was set when the heating system was installed. At first I had less settings and found that the system modulates very strongly (heater on/off, heat pump on/off) and it works best for me at 25°C.

For the radiators I had normal hydraulic valves and adjusted them to the heating requirement depending on the room. That didn’t work well, so I switched to Zigbee thermostats. These measure the room temperature and, depending on this, the heat requirement of the radiator is regulated.

Therefore, I no longer need to control the heating system, because controlling it using the average temperature of the house only results in greater gas consumption and is also not economical.

To monitor the whole thing, I use the EMS-ESP32, temperature sensors on the flow and return, the Zigbee thermostats and Zigbee Aqara temperature, humidity and pressure sensors in each room. Evaluated in Homeassistant and Grafana.

Calendar function is only displayed in the Homeassistant; I set the summer, winter and vacation times either on the heating (RC310) or with ESP32-EMS. An exception is the vacation settings, which I do with a home assistant automation based on the calendar entries.

In summary, the gas boiler must be correctly configured according to the building’s heating needs. Then find the right gas boiler temperature setting and regulate the room temperature using heating thermostats.

heating_thermostate_set_temp_pack:
  # -------------------------
  # inputs
  # -------------------------
  input_boolean:
    heating_thermostat_enabled:
      name: Heizungssteuerung Thermostate Temperatur aktiveren
      icon: mdi:home-thermometer

    holiday_enabled:
      name: Urlaubstag Heizungssteuerung ein
      icon: mdi:beach

  input_number:

    thermostat_zentralheizung:
      name: Heizung RC310 Solltemeratur
      min: 12
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_bad:
      name: Bad Solltemperatur
      min: 20
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_office:
      name: BĂŒro Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_wc:
      name: GĂ€ste WC Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_wohnzimmer1:
      name: Wohnzimmer Nord Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_wohnzimmer2:
      name: Wohnzimmer SĂŒd Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_kitchen:
      name: KĂŒche Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_kinderzimmer1:
      name: Zimmer Tina Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_kinderzimmer2:
      name: GĂ€stezimmer Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_schlafzimmer:
      name: Schlafzimmer Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_fitnessraum:
      name: Fitnessraum Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    thermostat_eingang:
      name: Eingang Solltemperatur
      min: 16
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:heating-coil

    heating_day_temp:
      name: Tagestemperatur
      min: 1
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:thermometer
      # initial: 24.00

    heating_night_temp:
      name: Nachtemperatur
      min: 1
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:thermometer
      # initial: 19.5

    heating_min_temp:
      name: Min. Temperatur
      min: 1
      max: 30
      step: 0.5
      mode: slider
      unit_of_measurement: "°C"
      icon: mdi:thermometer
      # initial: 12.00


  # ---------------------
  automation:
    # ---------------------
    - id: check_calendar_holiday
      alias: Kalender Urlaub Eintrag
      description: PrĂŒft den Start / Ende des Urlaubes im Kalender
      initial_state: false
      mode: queued
      trigger:
        - platform: calendar
          event: start
          entity_id: calendar.urlaubsplaner
        - platform: calendar
          event: end
          entity_id: calendar.urlaubsplaner
      condition:
        alias: "Thermostatsteuerung prĂŒfen - heating_thermostat_enabled"
        condition: state
        entity_id: input_boolean.heating_thermostat_enabled
        state: "on"
      action:
        - choose:
            - conditions: >
                {{ trigger.event == 'start' }}
              sequence:
                - service: input_boolean.turn_on
                  alias: "Urlaubsmodus Heizung aktiviert"
                  target:
                    entity_id: input_boolean.holiday_enabled
                - service: script.infomessagegotify
                  alias: "Send info message to gotify"
                  data:
                    title: "{{'ZEUSUS: Urlaubsplanung'}}"
                    message: Start des Urlaubes {{ trigger.calendar_event.summary }} @{{ trigger.calendar_event.start }}
            - conditions: >
                {{ trigger.event == 'end' }}
              sequence:
                - service: input_boolean.turn_off
                  alias: "Urlaubsmodus Heizung aus"
                  target:
                    entity_id: input_boolean.holiday_enabled
                - service: script.infomessagegotify
                  alias: "Send info message to gotify"
                  data:
                    title: "{{'ZEUSUS: Urlaubsplanung'}}"
                    message: Ende des Urlaubes {{ trigger.calendar_event.summary }} @{{ trigger.calendar_event.start }}
          default:
            - service: input_boolean.turn_off
              alias: "Urlaubsmodus Heizung aus"
              target:
                entity_id: input_boolean.holiday_enabled
            - service: script.infomessagegotify
              alias: "Send info message to gotify"
              data:
                title: "{{'ZEUSUS: Reset Heizungstermostate'}}"
                message: "Einstellung Normalbetrieb, kein Urlaub"

    - id: setHeatingThermostat
      alias: "Heizungsthermostate einstellen"
      description: "Setzen der Thermostate Urlaub, Sommer- oder Winterbetrieb"
      initial_state: false
      mode: queued
      trigger:
        - platform: time
          alias: "Check time at 00:00:10"
          at: "00:00:10"
        - platform: state
          alias: "AusfĂŒhren wenn Thermostate Temperatur (heating_thermostat_enabled) aktiviert wurde."
          entity_id: input_boolean.holiday_enabled
          from: "off"
          to: "on"
        - platform: state
          alias: "AusfĂŒhren wenn Thermostate Temperatur (heating_thermostat_enabled) deaktiviert wurde."
          entity_id: input_boolean.holiday_enabled
          from: "on"
          to: "off"
      action:
        - variables:
            thermostats:
              - thermostat_office
              - thermostat_wc
              - thermostat_kitchen
              - thermostat_wohnzimmer1
              - thermostat_wohnzimmer2
              - thermostat_bad
              - thermostat_kinderzimmer1
              - thermostat_kinderzimmer2
              - thermostat_schlafzimmer
              - thermostat_fitnessraum
        - repeat:
            for_each: "{{ thermostats }}"
            sequence:
              - service: climate.set_temperature
                alias: "Set the selected thermostat temperature based on the input_number (min, value, max)"
                data:
                  temperature: >-
                    {%if is_state("input_boolean.holiday_enabled","on") %}
                      {{ state_attr('input_number.' ~ repeat.item,'min') | float(0.00) }}
                    {%elif is_state('sensor.thermostat_hc1_summer_mode', 'Sommer')%}
                      {{ state_attr('input_number.' ~ repeat.item,'max') | float(0.00) }}
                    {%else%}
                      {{ states('input_number.' ~ repeat.item) | float(0.00) }}
                    {%endif%}
                target:
                  entity_id: "climate.{{ repeat.item }}"
              - delay:
                  milliseconds: 200
              - service: script.infomessagegotify
                alias: "Send info message to gotify"
                data:
                  title: "{{'ZEUSUS: Heizungssteuerung - Thermostate'}}"
                  message: "Thermostat {{ repeat.item }} wurden am: {{ now().strftime('%Y-%m-%d %H:%M:%S') }} auf {{ state_attr('climate.' ~ repeat.item,'temperature') | float(0.00) }} °C eingestellt."

    - id: resetHeatingtemp
      alias: "Heizungsthermostate reset"
      description: "Reset der Thermostate Urlaub, Sommer- oder Winterbetrieb"
      initial_state: true
      trigger:
        - platform: state
          entity_id:
            - input_boolean.heating_thermostat_enabled
      condition:
        alias: "Thermostatsteuerung prĂŒfen - heating_thermostat_enabled"
        condition: state
        entity_id: input_boolean.heating_thermostat_enabled
        state: "on"
      mode: queued
      action:
        - variables:
            thermostats:
              - thermostat_office
              - thermostat_wc
              - thermostat_kitchen
              - thermostat_wohnzimmer1
              - thermostat_wohnzimmer2
              - thermostat_bad
              - thermostat_kinderzimmer1
              - thermostat_kinderzimmer2
              - thermostat_schlafzimmer
              - thermostat_fitnessraum
        - repeat:
            for_each: "{{ thermostats }}"
            sequence:
              - service: climate.set_temperature
                alias: "Set the selected thermostat temperature based on the input_number (min, value, max)"
                data:
                  temperature: >-
                    {%if is_state("input_boolean.holiday_enabled","on") %}
                      {{ state_attr('input_number.' ~ repeat.item,'min') | float(0.00) }}
                    {%elif is_state('sensor.thermostat_hc1_summer_mode', 'Sommer')%}
                      {{ state_attr('input_number.' ~ repeat.item,'max') | float(0.00) }}
                    {%else%}
                      {{ states('input_number.' ~ repeat.item) | float(0.00) }}
                    {%endif%}
                target:
                  entity_id: "climate.{{ repeat.item }}"
              - delay:
                  milliseconds: 200
              - service: script.infomessagegotify
                alias: "Send info message to gotify"
                data:
                  title: "{{'ZEUSUS: Heizungssteuerung - Thermostate reset'}}"
                  message: "Thermostat {{ repeat.item }} wurden am: {{ now().strftime('%Y-%m-%d %H:%M:%S') }} auf {{ state_attr('climate.' ~ repeat.item,'temperature') | float(0.00) }} °C eingestellt."

1 Like

Thank you for your detailed response. I’m just beginning to optimize the heating in my house, so I still have a lot ahead of me. I quickly drew my current heating diagram. I have a Buderus Logamax GB042-22 boiler and 2 manifolds (one for each floor). Each manifold has 10 zones.

The RC200 panel, an external temperature sensor, and a sensor inside the RC200, which is located in the boiler room, are connected to the boiler. The system operates based on this temperature.

As far as I understand, your boiler supplies water to the heating system based on a curve rather than a temperature sensor. For example, if all rooms are heated, and there’s no need for additional heating, the water returning to the boiler is almost the same temperature as it leaves the boiler. Thus, the boiler uses minimal energy to reheat it, which, in my opinion, is efficient (correct me if I’m wrong).

I’m planning to test the curve instead of a fixed temperature in my heating setup.

I did not fully understand. When you used the system based on the average indoor air temperature, did it prove to be less effective than using the curve method?

Thanks again for your help. It helped me understand what to do and what to test.

Yes, same as my system.
The RC200 does not measure the room temperature, but only sets the heating curve (flow and return temperature) based on the system settings (outside temperature, heating demand, weather
). If you increase the temperature, the flow temperature and the temperature spread should also change.

But as I see it, your heating system is only switched using the internal logic of the heating control. If that is the case, then you can only regulate this by setting the heating requirement for the consumers (mainfolds).

If you don’t have an additional temperature control (which switches off the individual heating circuits), hot water will be supplied to all heating circuits until the difference between forward and reverse corresponds to the delta of the heating curve and then the heating switches off. In the worst case scenario, this can lead to some rooms becoming warmer and some rooms becoming too cold and the gas consumption is not optimal.

To understand how the heating control works, I would attach a temperature sensor (ESP + DS18B20) to the flow and return pipe and monitor the values.

see (sorry only in german):

I’m not sure whether the EMS-ESP works with the Buderus Logamax GB042-22. If so, then you would get more information about the Buderus Logamax GB042-22 there.

https://bbqkees-electronics.nl/ems-device-compatibility/

Buderus GB042 no ??

DIY Radiant Floor Heating Control System with Home Assistant

2 Likes

@petsie @serhii-ha Did you alreaedy look at the virtual room thermostat? Room-temperature-controlled thermostat function with external sensors · emsesp/EMS-ESP32 · Discussion #1287 · GitHub

Hi there, new to the game. I have managed to install the Gateway from BBQKees and to bring the “rough data” in home assistant. what would be the next steps if I would like to refine a bit what I see in HA? Any easy way to have something similar in function with the controls that I have on the wall?

Thank you!