LG Therma V WH 20/27 S heatpump water heater support

I’ve seen a few custom integrations for LG smartthinq devices (namely, Samps’ and Ollo69’s), but none support the heatpump boilers (Therma V WH20S and WH27S).
If someone smarter than me can figure out how to integrate them with HASS, it would be greatly appreciated :slightly_smiling_face:

i have the same question.
LG WH27s is my last device i want to add to home assistant

1 Like

Hi, I would also like someone to integrate this heat pump model. I expect it could eventually go with integration from LG’s Smart Thing LGE

+1 would also like to have WH27S as a integrated device in home assistant, my heat pump works already with GitHub - ollo69/ha-smartthinq-sensors: HomeAssistant custom integration for SmartThinQ LG devices configurable with Lovelace User Interface.

to update everyone, it’s now supported by Ollo69’s integration!

1 Like

That are great news but can you explain a bit more here or someone else for all those on the verge to buy one or not for example WH27S ?

I came across on the search for surplus PV Power usage cause the LG is missing the SG ready option which would be the easiest way to power it from solar power when surplus power is fed into the grid and therefore the 550 W are available or maybe over 250W.
Real shame that LG has missed that cause everyone else offers this in a new heatpump.

At least ollo69 integration looks really nice - for the washing machine
image

but I could not find any additonals infos about the LG WH27 S , I mean the UI and the possibilities like a surplus heating function / boost.

never got a notification, sorry! I had pretty much the same problem, I made a simple (but rather long) automation to check PV production and change settings on the water heater. You could easily modify it to check for export (or excess) power, just change the entities :slight_smile:

When production is under 400W it sets temperature to 40C and operation mode to heatpump only
When production is under 2500W temperature goes to 57C, heatpump only
Over 2500W, 57C and “turbo” (use the resistors too) mode.

Note that:

  • The temperatures are set by an input number, to be able to set them from a dashboard instead of editing all the statements in the automation each time. I have an “eco” temperature (40C) and a “normal” one (57C)
  • All the if statements check if the temperature is already set, otherwise it would beep every 5 minutes as the automation would set it every time. This way it beeps only if it actually has to change something.
  • At the start it checks a random value of the PV inverter to check if it’s connected, if it isn’t it sets the temperature to the “normal” one, with heatpump only mode. It’s there because it woud crap out when the inverter disconnected for any reason (I later RMA’d the wifi module and disconnection issues got solved, but it’s handy if it ever happens again)
alias: Decidi cosa fa il boiler in base alla produzione solare
description: ""
trigger:
  - platform: time_pattern
    minutes: /5
condition: []
action:
  - alias: Controlla che l'inverter sia connesso alla rete
    if:
      - condition: state
        entity_id: binary_sensor.export_power_over_500w
        attribute: position
        state: unknown
        alias: Se l'inverter non è connesso
    then:
      - alias: Setta la temperatura del boiler a target non eco
        if:
          - condition: not
            conditions:
              - condition: template
                value_template: >-
                  {{states("input_number.temperatura_target_boiler")|float ==
                  state_attr("water_heater.boiler" , "temperature")|float}}
            alias: se non è già settata
        then:
          - service: water_heater.set_temperature
            data:
              temperature: "{{states(\"input_number.temperatura_target_boiler\")|float}}"
            target:
              entity_id: water_heater.boiler
      - alias: setta il boiler a pompa di colore
        if:
          - condition: not
            conditions:
              - condition: template
                value_template: >-
                  {{state_attr("water_heater.boiler" , "operation_mode") ==
                  "performance"}}
            alias: se non è già settata
        then:
          - service: water_heater.set_operation_mode
            data:
              operation_mode: performance
            target:
              entity_id: water_heater.boiler
    else:
      - if:
          - condition: numeric_state
            entity_id: sensor.pv_power
            above: 2500
        then:
          - if:
              - condition: not
                conditions:
                  - condition: template
                    value_template: >-
                      {{states("input_number.temperatura_target_boiler")|float
                      == state_attr("water_heater.boiler" ,
                      "temperature")|float}}
            then:
              - service: water_heater.set_temperature
                data:
                  temperature: "{{states(\"input_number.temperatura_target_boiler\")|float}}"
                target:
                  entity_id: water_heater.boiler
          - if:
              - condition: not
                conditions:
                  - condition: template
                    value_template: >-
                      {{state_attr("water_heater.boiler" , "operation_mode") ==
                      "performance"}}
            then:
              - service: water_heater.set_operation_mode
                data:
                  operation_mode: performance
                target:
                  entity_id: water_heater.boiler
        else:
          - if:
              - condition: numeric_state
                entity_id: sensor.pv_power
                above: 400
            then:
              - if:
                  - condition: not
                    conditions:
                      - condition: template
                        value_template: >-
                          {{states("input_number.temperatura_target_boiler")|float
                          == state_attr("water_heater.boiler" ,
                          "temperature")|float}}
                then:
                  - service: water_heater.set_temperature
                    data:
                      temperature: >-
                        {{states("input_number.temperatura_target_boiler")|float}}
                    target:
                      entity_id: water_heater.boiler
              - if:
                  - condition: not
                    conditions:
                      - condition: template
                        value_template: >-
                          {{state_attr("water_heater.boiler" , "operation_mode")
                          == "heat_pump"}}
                then:
                  - service: water_heater.set_operation_mode
                    data:
                      operation_mode: heat_pump
                    target:
                      entity_id: water_heater.boiler
            else:
              - if:
                  - condition: not
                    conditions:
                      - condition: template
                        value_template: >-
                          {{states("input_number.temperatura_eco_boiler")|float
                          == state_attr("water_heater.boiler" ,
                          "temperature")|float}}
                then:
                  - service: water_heater.set_temperature
                    data:
                      temperature: "{{states(\"input_number.temperatura_eco_boiler\")|float}}"
                    target:
                      entity_id: water_heater.boiler
              - if:
                  - condition: not
                    conditions:
                      - condition: template
                        value_template: >-
                          {{state_attr("water_heater.boiler" , "operation_mode")
                          == "heat_pump"}}
                then:
                  - service: water_heater.set_operation_mode
                    data:
                      operation_mode: heat_pump
                    target:
                      entity_id: water_heater.boiler
        alias: Gestisci la temperatura e potenza del boiler a seconda del sole
mode: single

comments are in italian .-.

Thanks a lot for your reply.
Meanwhile our search went on cause the LG was not available here with a heat exchanger.

We wanted to use our oil central heating for those cold strong winter days and nights when the heatpump becomes inefficient.

Then you use a pump to pump warm fluid throught the coil inside the warm water tank aka heat exchanger.

And then we realised that such a heatpump for warm water is not running the whole day, just a few hours based on the consumption figures from other owners who had 500 kWh consumption for 270 Liter and family of 4.
Such a heatpump is designed to run usually 14 hours x 700 Watt max = 10 kWh of input. WIth the SCOP of 3,3 you would get roughly 33 kWh of energy in the water.

So far so good.
Therefore we got a french warm water heatpump with a coil and 16 kW heatexchanger aka coil which we wanted to use in reverse method.
The heatpump is heating up to 63° C from Surplus solar power and once that temperature is reached the pump of the central oil burner is starting to pump the 63° hot water into its kettle and then back again to heat up the water running through the kettle to the radiators in each room. The oil condensing boiler will not turn on due to its lower temperature limit of 40°C .

We are using an Atlantic Explorer V4 270 Liter with heatexchanger / coil

This way we can transfer roughly 18 kWh of warmth into the heating system withoug big losses. When the water boiler reaches 40°C it starts heating up again.
Like charging and discharging a battery.
We assume a 85% effficiency for the oil condensing boiler from the oil in the tank to the warmth energy in the water. If we transfer roughly 18 kWh then how much oil would we need to get 18 kWh by oil ?
18 kWh / 85% = 21,18 kWh would be needed. Oil has an energy density of 9,8 kWh / Liter so 21,2 kWh / 9,8 kWh / L = 21,18 / 9,8 L = 2,16 L oil saved.

2,16 Liter oil for heating is roughly 2,20€
We had to spend 18 kWh surplus which would bring a usual compensation of 7,5 Cent or 0,075€ / kWh = 1,35€ versus 2,20€ sounds not much, but over 200 days of heating you will save 160€ more per year. And the extra coil was roughly 250€ more.

Finally the Atlantic Explorer came along with a Home Assistant integration so everything ready to use.

Long story but maybe helpfull for others who are on the verge to buy a water heatpump as their first heatpump .

And of cause thank you and the italian good bye

a la prossima (volta)