Gree Versati III Air to water heat pump

Hi,

I have seen your dashboard. It is amasing! I have only one question regarding this topics.
What is the Word 142 and 143 (Setting and Running frequence), it is the iPWM signals of the inside pump?

Thanks,
Tamas

1 Like

I just installed gree versati 3 mono , can anyone explain a bit for the weather depend mode , ty .

Hi, it has been a couple of years since you posted about the Versatii 2 modubus protocol, but can you share the Gree protocol document? The register addresses in your code seem to exactly match my heat pump, but I would like to use other registers, higher that the ones in your screen shot, and also the bitmapped registers.

I have 3 Gree documents for the Versatii 2, but none match my machine.

I just installed gree versati 3 mono , can anyone explain a bit for the weather depend mode

The weather dependent mode varies the target temperature (water temperature or room temperature) depending on the outside temperature. The colder it is outside the higher the target temperature.

The parameters are set as endpoints on a straight line graph.

Hello, those who have esp or wemos connected, how did you solve the power supply? Using external brick or connected directly to heat pump mainboard ? Please share your ideas, in my case it’s hard to connect external power supply.

I have moved this display to another spot in the house so I can control the temp without going to the boiling room.

I have a 2 questions:

  1. Since this display has only one modbus port, did you connect in parallel or did you use some other ports on the board? I believe it has another one with 2 pins?

  2. Can you set temperature via Homeassistant like you can do it via display?

Thanks

could you please attach picture how did you connect the display of the HP and RS485?

Thanks

Display uses port 2, modbus is 1.

1 Like

The control unit has a 12V DC out. I have used a step down from 12V to 5V to power my ESP8266.

1 Like

Can’t find it, could you mark on electric wiring diagram of Versati III ? Or a photo of the board. Or by “control unit” you meant a LCD display unit? :slight_smile: Much appreciated.


Of course, here you go. My model is Versati II

Thanks, Versati III doesn’t have separate +12VDC, but i can use power from panel.
Anyway, what do you have connected to your LOLIN in the 3rd and 4th picture?
I see TTL to RS485 converter and what is the other thing?

Oh, that is a different matter unrelated to the ESPHome project. It just receives 3V from the board. Apologies for the confusion.

My ESPHome setup is 12V from control panel with 12V to 5V step down, GPIO pins toTTL to RS485 connected to the BMS port.

Yes. You have to set “Water out temperature” through HA automation. Make sure you have it in your ESPHome project. Depending on the protocol version it may be at different addresses, in my case (modbus protocol 1.0) it is at 10.

On a related note, it is also fun to set up one’s own thermostat automation by using the heat pumps Outdoor temperature measurement, indoor temperature readings from other integrated thermostats and time of the day, so it does not run full noise in the middle of the night.

My prototype.

Ordered some boards , planning to put everything in single place.

@Akinkurtoglu could you share all the fancy automations you’ve done? I am interested with indoor temp sensors and thermostats.

Here’s an automation I created for controlling my heat pump dynamically based on outdoor and indoor temperatures. This setup:
• Adjusts the heating water temperature set point based on conditions.
• Enables “Quiet Mode” at night, unless the alarm system is armed away.
• Uses multiple temperature sensors to optimize heating efficiency.


alias: Heat Pump - Dynamic Temperature Control
description: >
  Adjusts heat pump settings based on outdoor and indoor temperatures,
  while toggling Quiet Mode based on time.
  
trigger:
  # Automation triggers on sensor state changes
  - entity_id:
      - sensor.isi_pompasi_outdoor
      - sensor.summerhouse_temperature
      - sensor.summerhouse_living_room_temperature
      - sensor.summerhouse_bedroom_temperature
    trigger: state

conditions:
  # Ensures heat pump is in "Heat" mode and turned "On"
  - condition: device
    device_id: 105c7549481f700207848fc1950f2de3
    domain: select
    entity_id: 51723ec3e82a2a952566cd767ebfb55f
    type: selected_option
    option: Heat

  - condition: device
    device_id: 105c7549481f700207848fc1950f2de3
    domain: select
    entity_id: b18977fe9a06e0f30b21211344ad1d0d
    type: selected_option
    option: "On"

actions:
  # Adjusts the heating water set point dynamically
  - target:
      entity_id: number.isi_pompasi_heating_water_out_set_point
    data:
      value: >-
        {% set current_hour = now().hour %}
        {% set is_night_time = current_hour >= 21 or current_hour < 9 %}

        {% if is_night_time %}
          30
        {% elif states('sensor.summerhouse_temperature') | float > 20 and
              states('sensor.summerhouse_living_room_temperature') | float > 21 and
              states('sensor.summerhouse_bedroom_temperature') | float > 20 %}
          30
        {% elif states('sensor.isi_pompasi_outdoor') | float <= 7 %}
          42
        {% elif states('sensor.isi_pompasi_outdoor') | float > 7 and
                states('sensor.isi_pompasi_outdoor') | float <= 15 %}
          38
        {% else %}
          34
        {% endif %}
    action: number.set_value

  # Toggles Quiet Mode based on time and security status
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ now().hour >= 21 or now().hour < 9 }}"
          - condition: not
            conditions:
              - condition: device
                device_id: e2af9cd0eed34025d273d99f54f0ba66
                domain: alarm_control_panel
                entity_id: e2b694dd35059a80c57605fee8040705
                type: is_armed_away
        sequence:
          - type: turn_on
            device_id: 105c7549481f700207848fc1950f2de3
            entity_id: a8fa79dc5ca444195ace4633c9b426e8
            domain: switch

      - conditions:
          - condition: template
            value_template: "{{ now().hour >= 9 and now().hour < 21 }}"
        sequence:
          - type: turn_off
            device_id: 105c7549481f700207848fc1950f2de3
            entity_id: a8fa79dc5ca444195ace4633c9b426e8
            domain: switch

mode: single

1 Like

ah I missed the second connector :smiley: thank you a lot

Can you please tell me one more thing, I am struggling to find the right connector for the AB port, I see that you have posted the pictures of your prototype and I saw the connector?

No idea what’s the name, found one in the “random stuff” box, but as far as I remember, it was bought in a local electronics shop, it’s not something rare.

1 Like

I Have the same problem, did you manage to fix this?

For those that have Bergen Heatpump (which is gree versati 3)

Here is the config that works

esphome:
  name: "versati-esp"

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:
captive_portal:
api:
  encryption:
    key: "<somekey>"
    
ota:
  - platform: esphome
    id: my_ota
    password: "<esphomepasswd>"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.88.127  # Replace with your desired IP address
    gateway: 192.168.88.1      # Replace with your router's IP address
    subnet: 255.255.255.0

web_server:
  port: 80

uart:
  id: mod_bus
  tx_pin: GPIO16
  rx_pin: GPIO17
  baud_rate: 9600
  stop_bits: 1

modbus:
  flow_control_pin: GPIO23
  send_wait_time: 200ms
  id: modbus_versati3
  

modbus_controller:
  - id: versati3
    ## the Modbus device addr
    address: 0x01
    modbus_id: modbus_versati3
    setup_priority: -10
    update_interval: 15s



text_sensor:
  - platform: template
    id: versati_117_unit_status_text
    name: "versati_117_unit_status"

  - platform: template
    id: versati_132_thermostat_status_text
    name: "versati_132_thermostat_status"
    
  - platform: template
    id: versati_135_disinfection_status_text
    name: "versati_135_disinfection_status"



number:
  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_2_mode_set"
    id: versati_2_mode_set
    address: 2
    value_type: S_WORD
    entity_category: config
    min_value: 1
    max_value: 5
    step: 1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_3_optional_E_heater_set"
    address: 3
    value_type: S_WORD
    entity_category: config
    step: 1
    min_value: 1
    max_value: 3
    mode: slider  
      # last: 2   
      # 1:1 set/
      # 2:2 sets/
      # 3: Off
      # Default: 1 set

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_4_disinfection_temp_set"
    address: 4
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config
    step: 1
    min_value: 40
    max_value: 70
    mode: slider   
      # last: 60℃
      # Default: 70℃
  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_5_floor_debug_segments_set"
    address: 5
    value_type: S_WORD
    entity_category: config
    step: 1
    min_value: 1
    max_value: 10
    mode: slider  
      # Default : 1 section

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_6_floor_debug_period_1_set"
    address: 6
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config
    step: 1
    min_value: 25
    max_value: 35
    mode: slider  
      # Default: 25℃

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_7_delta_of_segment_temp_set"
    address: 7
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config
    step: 1
    min_value: 2
    max_value: 10
    mode: slider  
      # Default: 5℃

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_8_segment_time_set"
    address: 8
    unit_of_measurement: "h"
    value_type: S_WORD
    entity_category: config  
    step: 1
    min_value: 12
    max_value: 72
    mode: slider  
      # Default: 0 Hour

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_9_WOT_cool_temp_set"
    address: 9
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config        
    step: 1
    min_value: 7
    max_value: 25
    mode: slider  
      # Default: 18℃

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_10_WOT_heat_temp_set"
    address: 10
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config   
    step: 1
    min_value: 20
    max_value: 60
    mode: slider  
      # last: 46℃
      # Actual value:
      # 20~60℃ [High-temp] / 20~55℃[low-temp]
      # Default:
      # 45℃[High-temp]/45℃[Low-temp]

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_11_RT_cool_temp_set"
    address: 11
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 18
    max_value: 30
    mode: slider 
      # Default:24°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_12_RT_heat_temp_set"
    address: 12
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 18
    max_value: 30
    mode: slider 
      # Default:20°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_13_tank_target_temp_set"
    address: 13
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 40
    max_value: 80
    mode: slider 
      # last: 48°C
      # Default:50°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_14_eheater_temp_set"
    address: 14
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: -20
    max_value: 18
    mode: slider 
      # last: -7°C
      # Default:-15°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_15_other_switch_on_temp_set"
    address: 15
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: -20
    max_value: 18
    mode: slider 
      # last: -20°C
      # Default:-20°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_16_HP_max_temp_set"
    address: 16
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 40
    max_value: 55
    mode: slider 
      # last: 50°C
      # Default:50°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_17_upper_AT_heat_temp_set"
    address: 17
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 10
    max_value: 37
    mode: slider 
      # last: 12°C
      # Default:25°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_18_lower_AT_heat_temp_set"
    address: 18
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: -20
    max_value: 9
    mode: slider 
      # last: -12°C
      # Default:-20°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_19_upper_RT_heat_temp_set"
    address: 19
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 22
    max_value: 30
    mode: slider 
      # last: 24°C
      # Default:24°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_20_lower_RT_heat_temp_set"
    address: 20
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 18
    max_value: 21
    mode: slider 
      # last: 18°C
      # Default:18°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_21_upper_WT_heat_temp_set"
    address: 21
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 46
    max_value: 60
    mode: slider 
      # last: 43°C
      # Actual value: 46~60℃[High-temp]/ 46~55℃[Low-temp]
      # 55℃[High-temp]/55℃[Low-temp]

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_22_lower_WT_heat_temp_set"
    address: 22
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 20
    max_value: 45
    mode: slider 
      # last: 33°C
      # Default:40°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_23_upper_AT_cool_temp_set"
    address: 23
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 26
    max_value: 48
    mode: slider 
      # last: 40°C
      # Default:40°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_24_lower_AT_cool_temp_set"
    address: 24
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 10
    max_value: 25
    mode: slider 
      # last: 25°C
      # Default:25°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_25_upper_RT_cool_temp_set"
    address: 25
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 24
    max_value: 30
    mode: slider 
      # last: 27°C
      # Default:27°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_26_lower_RT_cool_temp_set"
    address: 26
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 18
    max_value: 23
    mode: slider 
      # last: 22°C
      # Default:22°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_27_upper_WT_cool_temp_set"
    address: 27
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1
    min_value: 15
    max_value: 25
    mode: slider 
      # last: 15°C
      # Default:15°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_28_lower_WT_cool_temp_set"
    address: 28
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 7
    max_value: 14
    mode: slider 
      # last: 7°C
      # Default:7°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_29_delta_cool_temp_set"
    address: 29
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 2
    max_value: 10
    mode: slider 
      # last: 5°C
      # Default:5°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_30_delta_heat_temp_set"
    address: 30
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 2
    max_value: 10
    mode: slider 
      # last: 10°C
      # Default:10°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_31_delta_hot_water_temp_set"
    address: 31
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 2
    max_value: 8
    mode: slider 
      # last: 5°C
      # Default:5°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_32_delta_room_temp_set"
    address: 32
    unit_of_measurement: "°C"
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 1
    max_value: 5
    mode: slider 
      # last: 2°C
      # Default:2°C

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_33_cool_run_time_set"
    address: 33
    unit_of_measurement: "min"
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 1
    max_value: 10
    mode: slider 
      # last: 3min
      # Default:3min

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_34_heat_run_time_set"
    address: 34
    unit_of_measurement: "min"
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 1
    max_value: 10
    mode: slider 
      # last: 5min
      # Default:5min

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_35_other_thermal_logic_set"
    address: 35
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 1
    max_value: 3
    mode: slider 
      # last: 0
      # Default:1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_36_tank_heater_set"
    address: 36
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 1
    max_value: 2
    mode: slider 
      # last: 1
      # Default:1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_37_optional_E_heater_logic_set"
    address: 37
    value_type: S_WORD
    entity_category: config 
    step: 1    
    min_value: 1
    max_value: 2
    mode: slider 
      # last: 2
      # Default:1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_38_current_limit_value_set"
    address: 38
    unit_of_measurement: "A"
    value_type: S_WORD
    entity_category: config
    step: 1    
    min_value: 0
    max_value: 50
    mode: slider 
      # last: 16A
      # Default:16A

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_39_thermostat_mode_set"
    address: 39
    value_type: S_WORD
    entity_category: config
    step: 1    
    min_value: 0
    max_value: 2
    mode: slider 
      # last: 2
      # 0: Without/
      # 1: Air /
      # 2: Air+hot water
      # Default: 0-Without

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_40_force_mode_set"
    address: 40
    value_type: S_WORD
    entity_category: config
    step: 1    
    min_value: 1
    max_value: 3
    mode: slider 
      # last: 3
      # 1: Force-cool/
      # 2: Force-heat /
      # 3: Off
      # Default: 3 - Off

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_41_air_removal_set"
    address: 41
    value_type: S_WORD
    entity_category: config
    step: 1    
    min_value: 1
    max_value: 3
    mode: slider   
      # last: 3  
      # 1: Air /
      # 2: Water tank/
      # 3: Off

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_42_on85_off170_set"
    address: 42
    value_type: S_WORD
    entity_category: config
    step: 85
    min_value: 85
    max_value: 170
    mode: slider   
      # last: 85
      # 0xAA:On = 85
      # 0x55:Off = 170
      # Default: Off=170

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_43_power_limit_set"
    address: 43
    unit_of_measurement: "kW" 
    value_type: S_WORD
    entity_category: config
    step: 1    
    min_value: 0
    max_value: 10
    mode: slider   
      # last: 42 
      # Actual value:0~10 Kw
      # Default :3 Kw

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_44_error_reset_1=clear"
    address: 44
    value_type: S_WORD
    entity_category: config
    step: 1    
    min_value: 0
    max_value: 1
      # 0: Does not clear fault
      # 1: Clear fault






sensor:
  - platform: modbus_controller
    modbus_controller_id: versati3
    id: versati_117_unit_status_number
    name: versati_117_unit_status_number
    address: 0x76
    register_type: holding
    value_type: S_WORD
    on_value:
      then:
        - lambda: |-
            int state = id(versati_117_unit_status_number).state;
            std::string text;
            if (state == 1) {
              text = "COOL";
            } else if (state == 2) {
              text = "HEAT";
            } else if (state == 6) {
              text = "HOT WATER";
            } else if (state == 8) {
              text = "OFF";
            } else {
              text = "UNKNOWN";
            }
            id(versati_117_unit_status_text).publish_state(text);

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_118_outdoor_temp"
    address: 118
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_119_discharge_temp"
    address: 119
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_120_defrost_temp"
    address: 120
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_121_suction_temp"
    address: 121
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_122_economizer_in_temp"
    address: 122
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_123_economizer_out_temp"
    address: 123
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_124_discharge_pressure_temp"
    address: 124
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_125_water_out_PE_temp"
    address: 125
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_126_optional_water_sensor_temp"
    address: 126
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_127_water_in_PE_temp"
    address: 127
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_128_tank_control_temp"
    address: 128
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_129_remote_room_temp"
    address: 129
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1    

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_130_gas_pipe_temp"
    address: 130
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_131_liquid_pipe_temp"
    address: 131
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: versati3
    id: "versati_132_thermostat_status_number"
    name: versati_132_thermostat_status_number
    address: 132
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1 
    on_value:
      then:
        - lambda: |-
            int state = id(versati_132_thermostat_status_number).state;
            std::string text;
            if (state == 1) {
              text = "COOL";
            } else if (state == 2) {
              text = "HEAT";
            } else if (state == 3) {
              text = "OFF";
            } else {
              text = "UNKNOWN";
            }
            id(versati_132_thermostat_status_text).publish_state(text);


  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_133_floor_debug"
    address: 133
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1 
    filters:
    - multiply: 0.001    

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_134_debug_time"
    address: 134
    unit_of_measurement: "h" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1 

  - platform: modbus_controller
    modbus_controller_id: versati3
    id: "versati_135_disinfection_status_number"
    name: "versati_135_disinfection_status_number"
    address: 135
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1 
    on_value:
      then:
        - lambda: |-
            int state = id(versati_135_disinfection_status_number).state;
            std::string text;
            if (state == 1) {
              text = "Running";
            } else if (state == 2) {
              text = "Done";
            } else if (state == 3) {
              text = "Failed";
            } else if (state == 0) {
              text = "OFF";
            } else {
              text = "UNKNOWN";
            }
            id(versati_135_disinfection_status_text).publish_state(text);

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_136_error_time_for_floor_debug"
    address: 136
    unit_of_measurement: "s" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1 

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_137_weather_depend_temp"
    address: 137
    unit_of_measurement: "°C" 
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1 

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_142_setting_fruequency_status"
    address: 142
    unit_of_measurement: "Hz" 
    register_type: holding
    value_type: S_WORD    

  - platform: modbus_controller
    modbus_controller_id: versati3
    name: "versati_143_running_frequency_status"
    address: 143
    unit_of_measurement: "Hz" 
    register_type: holding
    value_type: S_WORD