LG Therma V heat pump modbus control

Did anyone manage to connect PENKTH000 so I have consumption info in LG controller AND at the same time rs485 interface to read and maybe control the unit?

If so how exactly did you connect it? and did you set thermaV unit switch to master or slave? https://community-assets.home-assistant.io/original/4X/e/8/9/e8918e7d19888b3a22d68edec155b77a8a475ec6.png

Ideally if rs485 electrical meter connected on the same bus and still working, but that is just nice to have.

HM123M U33
water flow sensor not working on this modbus. Have flow rate 0

- name: lg_current_flow_rate
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 8
        slave: 1
        zero_suppress: 5
        unit_of_measurement: l/min
        input_type: input

Hello, I was wondering if we can have the KW consuption, does anyone knows?

hey can you share the card at the bottom that you are using?

Has anyone connected NK4 to modbus successfully ? I didn’t manage to, so I asked service and thats what they send me

Yes I did.
First I defined input_number in configuration.yaml

input_number:
  hp_shift_value_in_auto_mode_circuit1:
    name: Set HP Setpoin Shift in AI Mode
    min: -5
    max: 5
    step: 1

Then I created automation to trigger the temperature shift based on slider position like this

- id: LG Heat Pump AI Shift Value Circuit 1
  alias: LG Heat Pump AI Shift Value
  description: Write AI Shift Value in Modbus
  triggers:
  - entity_id:
    - input_number.hp_shift_value_in_auto_mode_circuit1
    trigger: state
  conditions: []
  actions:
  - data_template:
      hub: lg_heatpump
      slave: 1
      address: 4
      value: '{% if states(''input_number.hp_shift_value_in_auto_mode_circuit1'')
        | int(default=0) < 0 %}  {{states(''input_number.hp_shift_value_in_auto_mode_circuit1'')
        | int + 65536 }} {% else %} {{states(''input_number.hp_shift_value_in_auto_mode_circuit1'')
        | int }} {% endif %}'
    action: modbus.write_register
  mode: single

If you change AI mode on LG remote controller you want your slider to be updated like this

- id: LG Heat Pump AI Shift Value Circuit 1 Slider Update
  alias: LG Heat Pump AI Shift Value Slider Update
  description: Update Input Number sensor current value from Heat Pump AI
  triggers:
  - entity_id:
    - sensor.hp_shift_value_in_auto_mode_circuit1
    trigger: state
  conditions: []
  actions:
  - target:
      entity_id: input_number.hp_shift_value_in_auto_mode_circuit1
    data:
      value: '{{ states(''sensor.hp_shift_value_in_auto_mode_circuit1'') }}'
    action: input_number.set_value
  mode: single

As for climate, I am using climate template to define custom climate to be able to control all customizations. This climate template is fully relay on modbus climate entity

climate:
  - platform: climate_template
    name: LG Heat Pump
    unique_id: lg_therma_v_combined
    modes:
      - "off"
      - "heat"
      - "auto"
    #min_temp: 15
    #max_temp: 50
    #availability_template: false
    min_temp_template:
      "{% if states('climate.hp_heating_climate', 'hvac_modes') == 'auto' %}
      -5
      {% else %}
      15
      {% endif %}"
    max_temp_template:
      "{% if states('climate.hp_heating_climate', 'hvac_modes') == 'auto' %}
      5
      {% else %}
      55
      {% endif %}"
    current_temperature_template: "{{ state_attr('climate.hp_heating_climate', 'current_temperature') }}"
    target_temperature_template:
      "{% if states('climate.hp_heating_climate', 'hvac_modes') == 'auto' %}
      {{ states('input_number.hp_shift_value_in_auto_mode_circuit1') }}
      {% else %}
      {{ state_attr('climate.hp_heating_climate', 'temperature') }}
      {% endif %}"
    hvac_mode_template: "{{ states('climate.hp_heating_climate') if is_state('switch.hp_power_switch', 'on') else 'off' }}"
    set_temperature:
      choose:
        - conditions:
            - "{{ states('climate.hp_heating_climate') == 'heat' }}"
          sequence:
            - service: climate.set_temperature
              data:
                entity_id: climate.hp_heating_climate
                temperature: "{{ temperature }}"
        - conditions:
            - "{{ states('climate.hp_heating_climate') == 'auto' }}"
          sequence:
            - action: input_number.set_value
              target:
                entity_id: input_number.hp_shift_value_in_auto_mode_circuit1
              data:
                value: "{{ temperature }}"
    set_hvac_mode:
      choose:
        - conditions:
            - "{{ hvac_mode == 'off' }}"
          sequence:
            - service: switch.turn_off
              target:
                entity_id: switch.hp_power_switch
        - conditions:
            - "{{ hvac_mode in ['auto', 'heat', 'cool'] }}"
          sequence:
            - service: switch.turn_on
              target:
                entity_id: switch.hp_power_switch
            - service: climate.set_hvac_mode
              target:
                entity_id: climate.hp_heating_climate
              data:
                hvac_mode: "{{ hvac_mode }}"

At last you can use climate card to show this custom climate and control you heat pump. Here is the example with bubble climate card I am using right now
AUTO mode


HEAT mode

:
Hope this helps.

1 Like

Do you mean this one?


This is picture-elements card:

type: picture-elements
elements:
  - type: state-badge
    entity: sensor.hp_outlet_temp
    style:
      top: 5%
      left: 5%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
         --label-badge-text-color: rgba(0,0,0,1);
         --label-badge-blue: rgba(19,114,158,1);
         --label-badge-background-color: rgba(255,255,255,0.6);
         }
  - type: state-badge
    entity: sensor.hp_inlet_temp
    style:
      top: 5%
      left: 21%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
         --label-badge-text-color: rgba(0,0,0,1);
         --label-badge-blue: rgba(19,114,158,1);
         --label-badge-background-color: rgba(255,255,255,0.6);
         }
  - type: state-badge
    entity: sensor.hp_outside_temp
    style:
      top: 5%
      left: 37%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
         --label-badge-text-color: rgba(0,0,0,1);
         --label-badge-blue: rgba(19,114,158,1);
         --label-badge-background-color: rgba(255,255,255,0.6);
         }
  - type: state-badge
    entity: sensor.hp_indoor_temp
    style:
      top: 5%
      left: 53%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
         --label-badge-text-color: rgba(0,0,0,1);
         --label-badge-blue: rgba(19,114,158,1);
         --label-badge-background-color: rgba(255,255,255,0.6);
         }
  - type: state-badge
    entity: binary_sensor.hp_water_pump_status
    style:
      top: 50%
      left: 5%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
         --label-badge-blue: rgba(19,114,158,1);
         --label-badge-text-color: {% if is_state('binary_sensor.hp_water_pump_status', 'on') %} rgba(204,0,0,1) {% else %} grey {% endif %};
         --label-badge-background-color: rgba(255,255,255,0.6);
         }
  - type: state-badge
    entity: sensor.hp_flow_rate
    style:
      top: 5%
      left: 70%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
         --label-badge-text-color: rgba(0,0,0,1);
         --label-badge-blue: rgba(19,114,158,1);
         --label-badge-background-color: rgba(255,255,255,0.6);
         }
  - type: state-badge
    entity: binary_sensor.hp_compressor_status
    style:
      top: 50%
      left: 21%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
          --label-badge-text-color: {% if is_state('binary_sensor.hp_compressor_status', 'on') %} rgba(204,0,0,1) {% else %} grey {% endif %};
          --label-badge-blue: rgba(19,114,158,1);
          --label-badge-background-color: rgba(255,255,255,0.6);
          }
  - type: state-badge
    entity: sensor.hp_compressor_rpm
    style:
      top: 50%
      left: 37%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
        {
         --label-badge-text-color: rgba(0,0,0,1);
         --label-badge-blue: rgba(19,114,158,1);
         --label-badge-background-color: rgba(255,255,255,0.6);
         }
  - type: state-badge
    entity: binary_sensor.hp_error_status
    style:
      top: 50%
      left: 53%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
          --label-badge-blue: rgba(19,114,158,1);
          --label-badge-text-color: {% if is_state('binary_sensor.hp_error_status', 'on') %} rgba(204,0,0,1) {% else %} grey {% endif %};
          --label-badge-background-color: rgba(255,255,255,0.6);
          }
  - type: state-badge
    entity: sensor.hp_error_code
    style:
      top: 50%
      left: 70%
      transform: scale(0.9,0.9)
    card_mod:
      style: |
        :host
         {
          --label-badge-blue: rgba(19,114,158,1);
          --label-badge-text-color: {% if is_state('binary_sensor.hp_defrosting_status', 'on') %} rgba(204,0,0,1) {% else %} grey {% endif %};
          --label-badge-background-color: rgba(255,255,255,0.6);
          }
image: local/lg_banner_2.png

As for KW consumption, I think there is no such information in modbus as I searched all registers available in heat pump, so I am using SmartThinQ LGE Sensors, custom cloud integration, to retrive current consumption. Based on that you can create integral sensor which will track your consumption in kWh so you can see daily, weekly,… consumtion from history…

This is perfect, thanks for the detailed answer!

I’m interested in that “Defrost” card.
Are you counting how many times it ran? If so, how?

On another note, I saw you mentioned using the SmartThinQ Sensors for the electrical consumption.

Have you had issues with the Wifi module?

I used to have one while also communicating through mod-bus, and sometimes it would stop working and affecting the heat pump. I had to power down the HP to reset the error.

If you are referring to LG WiFi module in heat pump I’ve never experienced any issue with it. And this is the only value (power consumption) I am getting from external cloud integration. Other option is to attach heat pump over power meter and get that value with internal integration.
As for defrost, you should have binary sensor defined in modbus for defrost.
Based on that sensor you can create another one which can count “on” state on defrost sensor for some period of time. I have configured that sensor in confiration.yaml, but you can also use helpers from gui.

sensor:
  - platform: history_stats
    name: "hp_defrost_count_today"
    unique_id: "hp_defrost_count_today"
    entity_id: binary_sensor.hp_defrosting_status
    state: "on"
    type: count
    start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
    end: "{{ now() }}"

witch settings you have or yaml for FLOW?
i have HM123M U33 monoblock and modbus for flow is 0 l/min

- name: lg_current_flow_rate
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 8
        slave: 1
        zero_suppress: 5
        unit_of_measurement: l/min
        input_type: input

Mine is HM091MR U44
Water flow sensor definition:

- name: "hp_flow_rate"
      unique_id: "hp_flow_rate"
      precision: 1
      scale: 0.1
      scan_interval: 10
      address: 8
      slave: 1
      unit_of_measurement: "l/min"
      input_type: input

Hi,

I’ve already searched other channels and haven’t found an answer, so I’m joining the discussion. My problem is that after connecting my LG I received a completely different address. I have a lot of data but I can’t identify everything. Maybe some of you had a similar problem?

I found the basic values, inlet temperature (hp_16_input) and outlet temperature (hp_17_input), set temperature (hp_25_holding), outdoor temperature (hp_12_input)

Do you have an idea?

Additionally, I have the HM163M U33 pump. I am also attaching my yaml

    name: modbus_hub
    type: tcp
    host: 192.168.1.200
    port: 502

    delay: 1
    message_wait_milliseconds: 200
    timeout: 14
   
    binary_sensors:
    
    - name: "hp_7_discrete_input"
      
      scan_interval: 10
      address: 6
      slave: 2
      input_type: discrete_input
   
    - name: "hp_8_discrete_input"
      
      scan_interval: 10
      address: 7
      slave: 2
      input_type: discrete_input
     
      
    - name: "hp_9_discrete_input"
      
      scan_interval: 10
      address: 8
      slave: 2
      input_type: discrete_input
   
    - name: "hp_32_discrete_input"
      
      scan_interval: 10
      address: 31
      slave: 2
      input_type: discrete_input
    
    - name: "hp_33_discrete_input"
      
      scan_interval: 10
      address: 32
      slave: 2
      input_type: discrete_input
      
    - name: "hp_3_coil"
      
      scan_interval: 10
      address: 2
      slave: 2
      input_type: coil
     
    - name: "hp_4_coil"
      
      scan_interval: 10
      address: 3
      slave: 2
      input_type: coil
    
    - name: "hp_5_coil"
      
      scan_interval: 10
      address: 4
      slave: 2
      input_type: coil
      
      
    - name: "hp_6_coil"
      
      scan_interval: 10
      address: 5
      slave: 2
      input_type: coil
   
    - name: "hp_30_coil"
      
      scan_interval: 10
      address: 29
      slave: 2
      input_type: coil
    
    - name: "hp_31_coil"
      
      scan_interval: 10
      address: 30
      slave: 2
      input_type: coil
    
   
    - name: "hp_25_holding"
      
      scan_interval: 10
      address: 24
      slave: 2
      input_type: holding
    
      
    - name: "hp_26_holding"
      
      scan_interval: 10
      address: 25
      slave: 2
      input_type: holding
     
    - name: "hp_27_holding"
      
      scan_interval: 10
      address: 26
      slave: 2
      input_type: holding
    
    - name: "hp_28_holding"
      
      scan_interval: 10
      address: 27
      slave: 2
      input_type: holding
   
    - name: "hp_29_holding"
      
      scan_interval: 10
      address: 28
      slave: 2
      input_type: holding
  
   
      
   
    - name: "hp_10_input_bs"
      
      scan_interval: 10
      address: 9
      slave: 2
      input_type: input
   
      
    - name: "hp_11_input_bs"
      
      scan_interval: 10
      address: 10
      slave: 2
      input_type: input
      
      
    - name: "hp_12_input_bs"
      
      scan_interval: 10
      address: 11
      slave: 2
      input_type: input
      
        
    - name: "hp_13_input_bs"
      
      scan_interval: 10
      address: 12
      slave: 2
      input_type: input
      
    - name: "hp_14_input_bs"
      
      scan_interval: 10
      address: 13
      slave: 2
      input_type: input
      
    - name: "hp_15_input_bs"
      
      scan_interval: 10
      address: 14
      slave: 2
      input_type: input
      
      
      
    - name: "hp_16_input_bs"
      unique_id: "modbus.hp_inlet_temp"
      scan_interval: 10
      address: 15
      slave: 2
      input_type: input
      
      
    - name: "hp_17_input_bs"
      unique_id: "modbus.hp_outlet_temp"
      scan_interval: 10
      address: 16
      slave: 2
      input_type: input
      
      
    - name: "hp_18_input_bs"
      
      scan_interval: 10
      address: 17
      slave: 2
      input_type: input
     
      
      
    - name: "hp_19_input_bs"
      
      scan_interval: 10
      address: 18
      slave: 2
      input_type: input
     
      
    - name: "hp_20_input_bs"
      
      scan_interval: 10
      address: 19
      slave: 2
      input_type: input
     
      
    - name: "hp_21_input_bs"
      
      scan_interval: 10
      address: 20
      slave: 2
      input_type: input
     
      
    - name: "hp_22_input_bs"
      
      scan_interval: 10
      address: 21
      slave: 2
      input_type: input
      
    - name: "hp_23_input_bs"
      
      scan_interval: 10
      address: 22
      slave: 2
      input_type: input
      
      
    - name: "hp_24_input_bs"
      
      scan_interval: 10
      address: 23
      slave: 2
      input_type: input
      
      
      
    - name: "hp_25_input_bs"
      
      scan_interval: 10
      address: 24
      slave: 2
      input_type: input
    
      
    
      
    sensors:
    
   
    - name: "hp_10_input"
      
      scan_interval: 10
      address: 9
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_11_input"
      
      scan_interval: 10
      address: 10
      slave: 2
      scale: 0.1
      precision: 1
      input_type: input
      unit_of_measurement: "l/min"
      
    - name: "hp_12_input"
      
      scan_interval: 10
      address: 11
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
        
    - name: "hp_13_input"
      
      scan_interval: 10
      address: 12
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_14_input"
      
      scan_interval: 10
      address: 13
      slave: 2
      scale: 0.1
      precision: 1
      input_type: input
      unit_of_measurement: "l/min"
      
    - name: "hp_15_input"
      
      scan_interval: 10
      address: 14
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_16_input"
      
      scan_interval: 10
      address: 15
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_17_input"
      
      scan_interval: 10
      address: 16
      slave: 2
      scale: 0.1
      precision: 1
      input_type: input
      unit_of_measurement: "l/min"
      
    - name: "hp_18_input"
      
      scan_interval: 10
      address: 17
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
      
    - name: "hp_19_input"
      
      scan_interval: 10
      address: 18
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_20_input"
      
      scan_interval: 10
      address: 19
      slave: 2
      scale: 0.1
      precision: 1
      input_type: input
      unit_of_measurement: "l/min"
      
    - name: "hp_21_input"
      
      scan_interval: 10
      address: 20
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_22_input"
      
      scan_interval: 10
      address: 21
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_23_input"
      
      scan_interval: 10
      address: 22
      slave: 2
      scale: 0.1
      precision: 1
      input_type: input
      unit_of_measurement: "l/min"
      
    - name: "hp_24_input"
      
      scan_interval: 10
      address: 23
      slave: 2
      input_type: input
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
      
    - name: "hp_25_input"
      
      scan_interval: 10
      address: 24
      slave: 2
      scale: 0.1
      precision: 1
      input_type: input
      unit_of_measurement: "l/min"
      
    
  
    - name: "hp_25_holding"
      unique_id: "modbus.hp_target_temp"
      scan_interval: 10
      address: 24
      slave: 2
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_26_holding"
      
      scan_interval: 10
      address: 25
      slave: 2
      input_type: holding
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
      
    - name: "hp_27_holding"
      
      scan_interval: 10
      address: 26
      slave: 2
      input_type: holding
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
    - name: "hp_28_holding"
      
      scan_interval: 10
      address: 27
      slave: 2
      scale: 0.1
      precision: 1
      input_type: holding
      unit_of_measurement: "l/min"
      
    - name: "hp_29_holding"
      
      scan_interval: 10
      address: 28
      slave: 2
      input_type: holding
      scale: 0.1
      precision: 1
      device_class: temperature
      unit_of_measurement: "°C"
      
  
    switches:
    - name: "hp_silent_mode"
      unique_id: "modbus.hp_silent_mode"
      slave: 2
      address: 2
      write_type: coil
      command_on: 1
      command_off: 0
      verify:
        input_type: coil
        address: 2
        state_on: 1
        state_off: 0
        
    - name: "HP_4_Coil"
      slave: 2
      address: 3
      write_type: coil
      command_on: 1
      command_off: 0
      verify:
            input_type: coil
            address: 3
            state_on: 1
            state_off: 0
            
    - name: "HP_5_Coil"
      slave: 2
      address: 4
      write_type: coil
      command_on: 1
      command_off: 0
      verify:
            input_type: coil
            address: 4
            state_on: 1
            state_off: 0
            
    - name: "HP_6_Coil"
      slave: 2
      address: 5
      write_type: coil
      command_on: 1
      command_off: 0
      verify:
            input_type: coil
            address: 5
            state_on: 1
            state_off: 0
            
    - name: "HP_30_Coil"
      slave: 2
      address: 29
      write_type: coil
      command_on: 1
      command_off: 0
      verify:
            input_type: coil
            address: 29
            state_on: 1
            state_off: 0
            
    - name: "HP_31_Coil"
      slave: 2
      address: 30
      write_type: coil
      command_on: 1
      command_off: 0
      verify:
            input_type: coil
            address: 30
            state_on: 1
            state_off: 0
            
    - name: "HP_25_Holding"
      slave: 2
      address: 24
      write_type: holding
      command_on: 1
      command_off: 0
      verify:
            input_type: holding
            address: 24
            state_on: 1
            state_off: 0
1 Like

HM123M U33

  - name: LG therma v 
    type: tcp
    host: 192.168.0.200
    port: 502
    delay: 2
    timeout: 5
    sensors: 
    
    ##input
      - name: lg_error_code
        scan_interval: 120
        address: 0
        slave: 1
        input_type: input

      - name: lg_water_inlet_temp
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 2
        slave: 1
        unit_of_measurement: °C
        input_type: input

      - name: lg_water_outlet_temp
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 3
        slave: 1
        unit_of_measurement: °C
        input_type: input

      - name: lg_dhw_water_temp
        scale: 0.1
        precision: 1
        scan_interval: 30
        address: 5
        slave: 1
        unit_of_measurement: °C
        input_type: input        
        
      - name: lg_room_air_temp_circuit1
        scale: 0.1
        precision: 1
        scan_interval: 60
        address: 7
        slave: 1
        unit_of_measurement: °C
        input_type: input
        
      - name: lg_current_flow_rate
        scale: 0.1
        precision: 1
        scan_interval: 10
        address: 8
        slave: 1
        unit_of_measurement: l/min
        input_type: input

      - name: lg_outdoor_air_temp
        scale: 0.1
        precision: 1
        scan_interval: 60
        address: 12
        slave: 1
        unit_of_measurement: °C
        input_type: input
        
      - name: lg_Pipe_in_temp
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 16
        slave: 1
        unit_of_measurement: °C
        input_type: input
      
      - name: lg_Pipe_out_temp
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 17
        slave: 1
        unit_of_measurement: °C
        input_type: input

      - name: lg_suction_temp
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 18
        slave: 1
        unit_of_measurement: °C
        input_type: input

      - name: lg_compressor_temp
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 19
        slave: 1
        unit_of_measurement: °C
        input_type: input

      - name: lg_condensor_temp
        scale: 0.1
        precision: 1
        scan_interval: 15
        address: 20
        slave: 1
        unit_of_measurement: °C
        input_type: input
        
      - name: lg_high_press
        scale: 0.01
        precision: 3
        scan_interval: 30
        address: 22
        slave: 1
        unit_of_measurement: Bar
        input_type: input
        
      - name: lg_low_press
        scale: 0.01
        precision: 3
        scan_interval: 30
        address: 23
        slave: 1
        unit_of_measurement: Bar
        input_type: input
        
      - name: lg_inverter
        scale: 1
        precision: 0
        scan_interval: 30
        address: 24
        slave: 1
        unit_of_measurement: Hz
        input_type: input
        
        ##holding
      - name: lg_operation_mode
        scan_interval: 30
        address: 0
        slave: 1
        input_type: holding
        
      - name: lg_control_method
        scan_interval: 30
        address: 1
        slave: 1
        input_type: holding
        
      - name: lg_target_temp_circuit1
        scale: 0.1
        precision: 1
        scan_interval: 30
        address: 2
        slave: 1
        unit_of_measurement: °C
        input_type: holding

      - name: lg_room_air_temp_circuit1_holding
        scale: 0.1
        precision: 1
        scan_interval: 30
        address: 3
        slave: 1
        unit_of_measurement: °C
        input_type: holding
        
      - name: lg_shift_value_in_auto_mode_circuit1
        scan_interval: 30
        address: 4
        slave: 1
        input_type: holding
        
      - name: lg_shift_value_in_auto_mode_circuit2
        scan_interval: 30
        address: 7
        slave: 1
        input_type: holding

      - name: lg_dhw_target_temp
        scale: 0.1
        precision: 1
        scan_interval: 30
        address: 8
        slave: 1
        unit_of_measurement: °C
        input_type: holding       
        
    binary_sensors:
        ## discrete
      - name: lg_water_flow_status   
        scan_interval: 15
        address: 0
        slave: 1
        input_type: discrete_input
        
      - name: lg_water_pump_status   
        scan_interval: 15
        address: 1
        slave: 1
        input_type: discrete_input
        
      - name: lg_compressor_status   
        scan_interval: 30
        address: 3
        slave: 1
        input_type: discrete_input
        
      - name: lg_defrosting_status   
        scan_interval: 30
        address: 4
        slave: 1
        input_type: discrete_input
        
      - name: lg_dhw_heating_status
        scan_interval: 30
        address: 5
        slave: 1
        input_type: discrete_input

      - name: lg_silent_mode_status   
        scan_interval: 30
        address: 7
        slave: 1
        input_type: discrete_input

      - name: lg_error_status   
        scan_interval: 30
        address: 13
        slave: 1
        input_type: discrete_input
        
    switches:        
        ##coil
      - name: lg_enable_disable_heating/cooling
        address: 0
        slave: 1
        write_type: coil
        verify:

      - name: lg_enable_disable_dhw
        address: 1
        slave: 1
        write_type: coil
        verify:
        
      - name: lg_silent_mode_set
        address: 2
        slave: 1
        write_type: coil
        verify:
        
      - name: lg_trigger_desinfection_operation
        address: 3
        slave: 1
        write_type: coil
        verify:
        
      - name: lg_emergency_stop
        address: 4
        slave: 1
        write_type: coil
        verify:
        
      - name: lg_trigger_emergency_operation
        address: 5
        slave: 1
        write_type: coil
        verify:

    # THERMOSTATS
    climates:
      - name: "Therma V heating/cooling"
        address: 7
        slave: 1
        input_type: input
        max_temp: 60
        min_temp: 18
        offset: 0
        precision: 1
        scale: 0.1
        target_temp_register: 2
        temp_step: 1
        temperature_unit: C
        hvac_mode_register:
          address: 0
          values:
            state_cool: 0
            state_heat: 4
            state_auto: 3
            
      - name: "Therma V DHW"
        address: 5
        slave: 1
        input_type: input
        max_temp: 60
        min_temp: 40
        offset: 0
        precision: 1
        scale: 0.1
        target_temp_register: 8
        temp_step: 1
        temperature_unit: C

Try this. I have 12kw 3F monoblock. This yaml dont work for my flow - l/m.
Try with your addresses

Thank you very much for the quick response, great community!

Unfortunately these addresses do not match my modbus addresses. I am attaching a table of modbus addresses available to me.

Below I am attaching a list of addresses that I can read in HA. As I wrote earlier, I recognized some of them, but most of them I didn’t. Has anyone encountered such a problem?

same heatpump. My is 12Kw yours 16Kw.
Use this yaml and backup yours. The new u44 heatpump use same yaml like my.

On this forum https://gathering.tweakers.net/forum/list_messages/2017448/120 they have U44 heatpump with same yaml

Thank you very much for your reply.

I quickly checked your proposal. Some of these items work, but unfortunately many do not. Do you have the original Modbus address book or do you know where to get it? the one I have from the LG manual does not work https://www.yourwizblog.com/blog/2022/02/20/therma-v-modbus-information/

Thank,

https://gathering.tweakers.net/forum/list_message/76531486#76531486

Modbus registers voor Series 4:
Input code:
Regist Description
30001 Error Code
30002 ODU operation Cycle 0 : Standby(OFF) / 1 : Cooling / 2 : Heating
30003 Water inlet temp. [0.1 °C ×10]
30004 Water outlet temp. [0.1 °C ×10]
30005 Backup heater outlet temp. [0.1 °C ×10]
30006 DHW tank water temp. [0.1 °C ×10]
30007 Solar collector temp. [0.1 °C ×10]
30008 Room air temp. (Circuit 1) [0.1 °C ×10]
30009 Current Flow rate [0.1 LPM ×10]
30010 Flow temp. (Circuit 2) [0.1 °C ×10]
30011 Room air temp. (Circuit 2) [0.1 °C ×10]
30012 Energy State input 0 : Energy state 0; 1: Energy state 1….
30013 Outdoor Air temp. [0.1 °C ×10]
30014
30015
30016
30017 Pipe in temp [0.1 °C ×10]
30018 Pipe out temp [0.1 °C ×10]
30019 Suction temp [0.1 °C ×10]
30020 INV1 dis. temp [0.1 °C ×10]
30021 HEX temp [0.1 °C ×10]
30022
30023 HighPress [mBar]
30024 LowPress [mBar]
30025 Inverter [Hz]
39998 Produc Group 0x8X (0x80, 0x83, 0x88, 0x89)
39999 Product Info. Split : 0 / Monobloc : 3 / High Temp. : 4 / Medium Temp. : 5 / System Boiler : 6

Holding code:
Regist Description
40001 Operation Mode 0 : Cooling / 4 : Heating / 3 : Auto
40002 Control method (Circuit 1/2) 0 : Water outlet temp. Control 1 : Water inlet temp. Control 2 : Room air control
40003 Target temp (Heating/Cooling) Circuit 1 [0.1 °C ×10]
40004 Room Air Temp. Circuit 1 [0.1 °C ×10]
40005 Shift value(Target) in auto mode Circuit 1 1K
40006 Target temp (Heating/Cooling) Circuit 2 [0.1 °C ×10]
40007 Room Air Temp. Circuit 2 [0.1 °C ×10]
40008 Shift value(Target) in auto mode Circuit 2 1K
40009 DHW Target temp. [0.1 °C ×10]
40010 Energy state input 0…8

Discrete code:
Regist Description
10001 Water flow status 0 : Flow rate ok / 1 : Flow rate too low
10002 Water Pump status 0 : Water Pump OFF / 1 : Water Pump ON
10003 Ext. Water Pump status 0 : Water Pump OFF / 1 : Water Pump ON
10004 Compressor status 0 : Compressor OFF / 1 : Compressor ON
10005 Defrosting status 0 : Defrost OFF / 1 : Defrost ON
10006 DHW heating status (DHW Thermal On/Off) 0 : DHW inactive / 1 : DHW active
10007 DHW Tank disinfection status 0 : Disinfection inactive / 1 : Disinfection active
10008 Silent mode status 0 : Silent mode inactive / 1 : Silent mode active
10009 Cooling status 0 : No cooling / 1 : Cooling operation
10010 Solar pump status 0 : Solar pump OFF / 1: Solar pump ON
10011 Backup heater (Step 1) status 0 : OFF / 1 : ON
10012 Backup heater (Step 2) status 0 : OFF / 1 : ON
10013 DHW boost heater status 0 : OFF / 1 : ON
10014 Error status 0 : no error / 1 : error state
10015 Emergency Operation Available (Space heating/cooling) 0 : Unavailable / 1 : Available
10016 Emergency Operation Available (DHW) 0 : Unavailable / 1 : Available
10017 Mix pump status 0 : Mix pump OFF / 1 : Mix pump ON

Coil code:
Regist Description
00001 Enable/Disable (Heating/Cooling) 0 : Operation OFF / 1 : Operation ON
00002 Enable/Disable (DHW) 0 : Operation OFF / 1 : Operation ON
00003 Silent Mode Set 0 : Silent mode OFF / 1 : Silent mode ON
00004 Trigger Disinfection operation 0 : Keep status / 1 : Operation start
00005 Emergency Stop 0 : Normal operation / 1 : Emergency stop
00006 Trigger Emergency Operation 0 : Keep status / 1 : Operation Start

1 Like

please tell me if is possible to show the flow on u33. What is the yaml

try it:

  • name: " Current Flow rate"

    scan_interval: 10
    address: 17
    slave: 2
    input_type: input
    scale: 0.1
    precision: 1
    unit_of_measurement: "l/min"