ESPHome-modbus-heatpump-Gre.../README.md
2023-03-04 19:08:45 +01:00

1146 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ESPHome modbus - heatpump Gree Versati III
## Description:
This manual describes how to connect the device to Home Assistant via Modbus protocol using ESP and RS485/TTL converter.
In this case it is about connecting a Gree Versati III 10kw heat pump.
## Info:
- use only shielded cable, otherwise the error "Modbus CRC Check Failed!" may appear in the log.
- put a 120 ohm resistor after the last connected device
- modbus datasheet: [Gree Versati III](https://github.com/peca2345/ESPHome-modbus-heatpump-Gree-Versati-III/blob/main/modbus-versati-iii-en.pdf)
- you have to find out what the heatpump address is - default is 0x1
- you also need to find out the serial port speed - default 9600
- in ESPHome use the sensor class only for addresses that are read-only
- for addresses that are read/write use the "number" class (you can then change their values in lovelace)
- for each register you want to have in HA you have to create a separate sensor in ESPHome
- you can write the address to the sensor in decimal or hex
## Lovelace:
![lovelace](https://github.com/peca2345/ESPHome-modbus-heatpump-Gree-Versati-III/blob/main/IMG/Lovelace.png?raw=true)
## Components:
- ESP8266 / ESP32
- RS485/TTL converter: [SHOP](https://www.laskakit.cz/prevodnik-ttl-na-rs-485--max485/)
## Schematic ESP32:
![Schema](https://github.com/peca2345/ESPHome-modbus-heatpump-Gree-Versati-III/blob/main/IMG/schematic2.png?raw=true)
## Schematic ESP8266 - Wemos D1 mini:
![Schema](https://github.com/peca2345/ESPHome-modbus-heatpump-Gree-Versati-III/blob/main/IMG/schematic_wemos.png?raw=true)
## ESPHome code:
```
esphome:
name: versati-modbus-esp32
esp32:
board: esp32dev
framework:
type: arduino
logger:
captive_portal:
api:
encryption:
key: "1k0OjFSddafHxtX4c5YzpeTwmWfc4X9aqgsVKzS2ntI="
ota:
password: "af492f27651e0694487dedbdb60e136e"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
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: 100ms
id: modbus_versati3
modbus_controller:
- id: versati3
## the Modbus device addr
address: 0x1
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
# Default24°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
# Default20°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
# Default50°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
# Default50°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
# Default25°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
# Default24°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
# Default18°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: 4660℃[High-temp]/ 4655℃[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
# Default40°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
# Default40°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
# Default25°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
# Default27°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
# Default22°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
# Default15°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
# Default7°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
# Default5°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
# Default10°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
# Default5°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
# Default2°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
# Default3min
- 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
# Default5min
- 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
# Default1
- 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
# Default1
- 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
# Default1
- 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
# Default16A
- 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:010 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: 117
register_type: holding
value_type: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_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: U_WORD
```
## Lovelace config:
```
type: entities
entities:
- entity: number.versati_3_optional_e_heater_set
name: Optional E-heater
- entity: number.versati_5_floor_debug_segments_set
name: Floor debug segments
- entity: number.versati_6_floor_debug_period_1_set
name: Floor debug period 1
- entity: number.versati_7_delta_of_segment_temp_set
name: Δ Segment
- entity: number.versati_8_segment_time_set
name: Segment time
- entity: number.versati_13_tank_target_temp_set
name: Tank target
- entity: number.versati_14_eheater_temp_set
name: E-Heater
- entity: number.versati_15_other_switch_on_temp_set
name: Other switch on
- entity: number.versati_33_cool_run_time_set
name: Cool run time
- entity: number.versati_35_other_thermal_logic_set
name: Other thermal logic segment
- entity: number.versati_36_tank_heater_set
name: Tank heater
- entity: number.versati_37_optional_e_heater_logic_set
name: Optional E-Heater logic
- entity: number.versati_40_force_mode_set
name: Force mode
- entity: number.versati_41_air_removal_set
name: Air removal
type: entities
entities:
- entity: sensor.versati_118_outdoor_temp
name: Outdoor temp
- entity: sensor.versati_119_discharge_temp
name: Discharge temp
- entity: sensor.versati_120_defrost_temp
name: Defrost temp
- entity: sensor.versati_121_suction_temp
name: Suction temp
- entity: sensor.versati_122_economizer_in_temp
name: Economizer IN temp
- entity: sensor.versati_123_economizer_out_temp
name: Economizer OUT temp
- entity: sensor.versati_124_discharge_pressure_temp
name: Discharge pressure temp
- entity: sensor.versati_126_optional_water_sensor_temp
name: Optional water sensor temp
- entity: sensor.versati_128_tank_control_temp
name: Tank control temp
- entity: sensor.versati_129_remote_room_temp
name: Remote room temp
- entity: sensor.versati_131_liquid_pipe_temp
name: Liquid pipe temp
- entity: sensor.versati_132_thermostat_status_2
name: Thermostat status
- entity: sensor.versati_132_thermostat_status_number
name: Thermostat status number
- entity: sensor.versati_133_floor_debug
name: Floor debug temp
- entity: sensor.versati_134_debug_time
name: Debug time
- entity: sensor.versati_136_error_time_for_floor_debug
name: Error time for floor debug
- entity: sensor.versati_137_weather_depend_temp
name: Weather depend temp
- entity: sensor.versati_142_setting_fruequency_status
name: Setting frequency
- entity: sensor.versati_143_running_frequency_status
name: Running frequency
type: entities
entities:
- entity: number.versati_17_upper_at_heat_temp_set
name: AT upper heat
- entity: number.versati_18_lower_at_heat_temp_set
name: AT lower heat
- entity: number.versati_19_upper_rt_heat_temp_set
name: RT upper heat
- entity: number.versati_20_lower_rt_heat_temp_set
name: RT lower heat
- entity: number.versati_21_upper_wt_heat_temp_set
name: WT upper heat
- entity: number.versati_22_lower_wt_heat_temp_set
name: WT lower heat
- entity: number.versati_23_upper_at_cool_temp_set
name: AT upper cool
- entity: number.versati_24_lower_at_cool_temp_set
name: AT lower cool
- entity: number.versati_25_upper_rt_cool_temp_set
name: RT upper cool
- entity: number.versati_26_lower_rt_cool_temp_set
name: RT lower cool
- entity: number.versati_27_upper_wt_cool_temp_set
name: WT upper cool
- entity: number.versati_28_lower_wt_cool_temp_set
name: WT lower cool
- entity: number.versati_29_delta_cool_temp_set
name: Δ Cool
- entity: number.versati_30_delta_heat_temp_set
name: Δ Heat
- entity: number.versati_31_delta_hot_water_temp_set
name: Δ Hot water
- entity: number.versati_32_delta_room_temp_set
name: Δ Room
- entity: number.versati_10_wot_heat_temp_set
name: WOT heat
- entity: number.versati_9_wot_cool_temp_set
name: WOT Cool
- entity: number.versati_12_rt_heat_temp_set
name: RT heat
- entity: number.versati_11_rt_cool_temp_set
name: RT Cool
type: entities
entities:
- entity: sensor.versati_135_disinfection_status_2
name: Disinfection status
- entity: sensor.versati_117_unit_status_2
name: Unit status
- entity: number.versati_42_on85_off170_set
name: ON (85) / OFF (170)
- entity: number.versati_39_thermostat_mode_set
name: Thermostat mode
- entity: sensor.versati_127_water_in_pe_temp
name: Water IN temp
- entity: sensor.versati_125_water_out_pe_temp
name: Water OUT PE temp
- entity: number.versati_4_disinfection_temp_set
name: Disinfection
- entity: number.versati_13_tank_target_temp_set
name: Tank target
- entity: number.versati_16_hp_max_temp_set
name: HP max
- entity: number.versati_33_cool_run_time_set
name: Cool run time
- entity: number.versati_34_heat_run_time_set
name: Heat run time
- entity: number.versati_36_tank_heater_set
name: Tank heater
- entity: number.versati_43_power_limit_set
name: Power limit
- entity: number.versati_38_current_limit_value_set
name: Current limit
- entity: number.versati_44_error_reset_1_clear
name: Error (1=clear)
```