(Google-Translate:)
I have my heat pump in the Android app “Tuya Smart Life” and successfully integrated it into Home Assistant. However, only on/off and heating target temperature are available.
Can anyone tell me if and how I can get more data? Can I set the target water temperature? Can I read sensor data?
Thanks and best regards
My heat pump: Thermatec TH-R290 S06-1P
(Ich habe meine Wärmepumpe in der Andoid App “Tuya Smart Life” und diese auch erfolgreich in Home Assistant integriert. Es stehen jedoch nur an/aus und Solltemperatur Heizung zur Verfügung.
Kann mir jemand sagen, ob und wie ich noch mehr Daten bekomme? Kann ich die Soll-Wassertemperatur einstellen? Kann ich Sensor-Daten auslesen?
Danke und viele Grüße)
(Google Translation)
No, I didn’t manage it with the Tuya Cloud. But I did with Modbus.
A device was already installed: Elfin-EG41B RS485 ↔ 4G&BLE. I replaced that with Elfin-EW11A-0 RS485 ↔ Wi-Fi. If none is present, it belongs on COM2.
And now, with a little Modbus magic, at least these things are possible:
- On/Off (also worked via the cloud before)
- Mode (cooling, heating, hot water, …)
- Operating mode (normal, boost, silent)
- Hot water temperature adjustable and actual temperature visible
- Heating temperature adjustable (but unfortunately the actual temperature is not yet visible)
Furthermore, various voltages, currents, frequencies, temperatures… They’re there, but I don’t need them.
Attached are a few pictures and automation yaml
(German original)
Nein, mit der Tuya Cloud habe ich es nicht geschafft. Aber mit modbus.
Es war schon ein Gerät verbaut: Elfin-EG41B RS485 ↔ 4G&BLE. Das habe ich ersetzt durch Elfin-EW11A-0 RS485 ↔ WLAN. Wenn keins vorhanden ist: Es gehört an COM2.
Und nun, durch ein wenig modbus-Magie, sind mindestens diese Dinge möglich:
- Ein/Aus (ging vorher über die Cloud auch)
- Modus (Kühlen, Heizung, Warmwasser, …)
- Arbeitsmodus (Normal, Boost, Silent)
- Warmwasser-Temperatur einstellbar und Ist-Temperatur sichtbar
- Heiz-Temperatur einstellbar (aber leider noch nicht Ist-Temperatur sichtbar)
Weiterhin noch diverse Spannungen, Ströme, Frequenzen, Temperaturen… Sind zwar da, aber die brauche ich nicht.
Anbei ein paar Bilder und Automatisierungs-yaml
Automatisierung “Thermatec - Set Mode”:
alias: Thermatec - Set Mode
description: ""
triggers:
- entity_id: input_select.thermatec_set_mode
trigger: state
conditions: []
actions:
- data:
hub: thermatecmodbus
unit: 1
address: 772
value: |
{% set map = {
"Kühlen": 0,
"Heizen": 1,
"Warmwasser": 2,
"Fußbodenheizung": 3,
"Warmwasser + Kühlen": 4,
"Warmwasser + Heizen": 5,
"Reserve": 6,
"Warmwasser + Fußbodenheizung": 7
} %} {{ map[states('input_select.thermatec_set_mode')] }}
action: modbus.write_register
mode: single
Automatisierung “Thermatec - Frequency conversion mode”:
alias: Thermatec - Frequency conversion mode
description: ""
triggers:
- trigger: state
entity_id:
- input_select.thermatec_frequency_conversion_mode
conditions: []
actions:
- action: modbus.write_register
metadata: {}
data:
hub: thermatecmodbus
slave: 1
address: 775
value: |
{% if trigger.to_state.state == 'Standard' %}
0
{% elif trigger.to_state.state == 'Energie sparen' %}
2
{% elif trigger.to_state.state == 'Boost' %}
1
{% else %}
0
{% endif %}
mode: single
modbus.yaml:
- name: "thermatecmodbus" # https://www.youtube.com/watch?v=ytIz3_uo_sM
type: tcp # udp / tcp
host: 192.168.xxx.yyy # Nur IP funktioniert! Nicht Name!
port: 502
delay: 2
message_wait_milliseconds: 100
timeout: 5
sensors:
- name: "Thermatec - Compressor operating frequency"
unique_id: thermatec Compressor-operating-frequency
unit_of_measurement: "Hz"
slave: 1
address: 64 # 0x0040
input_type: holding
data_type: int16
- name: "Thermatec - Fan operating frequency"
unique_id: thermatec Fan operating frequency
unit_of_measurement: "Hz"
slave: 1
address: 65 # 0x0041
input_type: holding
data_type: int16
- name: "Thermatec - Electronic expansion valve steps count"
unique_id: thermatec Electronic expansion valve steps count
unit_of_measurement: "Step(s)"
slave: 1
address: 66 # 0x0042
input_type: holding
data_type: int16
- name: "Thermatec - Number of EVI valve steps"
unique_id: thermatec Number of EVI valve steps
unit_of_measurement: "Step(s)"
slave: 1
address: 67 # 0x0043
input_type: holding
data_type: int16
- name: "Thermatec - AC Input Voltage"
unique_id: thermatec AC Input Voltage
unit_of_measurement: "V"
slave: 1
address: 68 # 0x0044
input_type: holding
data_type: int16
# - name: "Thermatec - AC Input Current" # Zeigt nur 0 an?
# unique_id: thermatec AC Input Current
# unit_of_measurement: "A"
# slave: 1
# address: 69 # 0x0045
# input_type: holding
# data_type: int16
# scale: 10
# precision: 2
- name: "Thermatec - Compressor Phase Current"
unique_id: thermatec Compressor Phase Current
unit_of_measurement: "A"
slave: 1
address: 70 # 0x0046
input_type: holding
data_type: int16
scale: 0.1
precision: 1
- name: "Thermatec - Compressor IPM Temperature"
unique_id: thermatec Compressor IPM Temperature
unit_of_measurement: "°C"
slave: 1
address: 71 # 0x0047
input_type: holding
data_type: int16
- name: "Thermatec - High pressure saturation temperature"
unique_id: thermatec High pressure saturation temperature
unit_of_measurement: "°C"
slave: 1
address: 72 # 0x0048
input_type: holding
data_type: int16
- name: "Thermatec - Low pressure saturation temperature"
unique_id: thermatec Low pressure saturation temperature
unit_of_measurement: "°C"
slave: 1
address: 73 # 0x0049
input_type: holding
data_type: int16
- name: "Thermatec - External ambient temperature T1" # Außentemperatur
unique_id: thermatec External ambient temperature T1
unit_of_measurement: "°C"
slave: 1
address: 74 # 0x004A
input_type: holding
data_type: int16
- name: "Thermatec - External coil tube (fin) T2"
unique_id: thermatec External coil tube (fin) T2
unit_of_measurement: "°C"
slave: 1
address: 75 # 0x004B
input_type: holding
data_type: int16
- name: "Thermatec - Internal coil tube (plate replacement) T3"
unique_id: thermatec Internal coil tube (plate replacement) T3
unit_of_measurement: "°C"
slave: 1
address: 76 # 0x004C
input_type: holding
data_type: int16
- name: "Thermatec - Compressor suction temperature T4"
unique_id: thermatec Compressor suction temperature T4
unit_of_measurement: "°C"
slave: 1
address: 77 # 0x004D
input_type: holding
data_type: int16
- name: "Thermatec - Compressor exhaust temperature T5"
unique_id: thermatec Compressor exhaust temperature T5
unit_of_measurement: "°C"
slave: 1
address: 78 # 0x004E
input_type: holding
data_type: int16
- name: "Thermatec - Return water temperature T6"
unique_id: thermatec Return water temperature T6
unit_of_measurement: "°C"
slave: 1
address: 79 # 0x004F
input_type: holding
data_type: int16
- name: "Thermatec - Water outlet temperature T7" # Wasseraustritts-Temperatur
unique_id: thermatec Water outlet temperature T7
unit_of_measurement: "°C"
slave: 1
address: 80 # 0x0050
input_type: holding
data_type: int16
# - name: "Thermatec - Economizer inlet tube T8" # n/c
# unique_id: thermatec Economizer inlet tube T8
# unit_of_measurement: "°C"
# slave: 1
# address: 81 # 0x0051
# input_type: holding
# data_type: int16
# - name: "Thermatec - Economizer inlet tube T9" # Temperatursensor für Gesamtgebäudezufuhrwasser (für Kaskadensysteme) ?
# unique_id: thermatec Economizer inlet tube T9
# unit_of_measurement: "°C"
# slave: 1
# address: 82 # 0x0052
# input_type: holding
# data_type: int16
- name: "Thermatec - Current unit tooling No"
unique_id: thermatec Current unit tooling No
unit_of_measurement: "Number"
slave: 1
address: 83 # 0x0053
input_type: holding
data_type: int16
- name: "Thermatec - Water tank temperature" # Warmwasser-Temperatur
unique_id: thermatec Water tank temperature
unit_of_measurement: "°C"
slave: 1
address: 84 # 0x0054
input_type: holding
data_type: int16
- name: "Thermatec - Fluorine board heat exchanger temperature" #
unique_id: thermatec Fluorine board heat exchanger temperature
unit_of_measurement: "°C"
slave: 1
address: 85 # 0x0055
input_type: holding
data_type: int16
# - name: "Thermatec - Driver manufacturer" # ??
# unique_id: thermatec Driver manufacturer
# unit_of_measurement: ""
# slave: 1
# address: 86 # 0x0056
# input_type: holding
# data_type: int16
- name: "Thermatec - Pump speed PWM" #
unique_id: thermatec Pump speed PWM
unit_of_measurement: ""
slave: 1
address: 87 # 0x0057
input_type: holding
data_type: int16
- name: "Thermatec - Water flow" # Wasserdurchsatz
unique_id: thermatec Water flow
unit_of_measurement: "l/min"
slave: 1
address: 88 # 0x0058
input_type: holding
data_type: int16
- name: "Thermatec - User side water return temperature" #
unique_id: thermatec User side water return temperature
unit_of_measurement: "°C"
slave: 1
address: 89 # 0x0059
input_type: holding
data_type: int16
precision: 0
- name: "Thermatec - Unit input voltage" #
unique_id: thermatec Unit input voltage
unit_of_measurement: "V"
slave: 1
address: 90 # 0x005A
input_type: holding
data_type: int16
precision: 0
- name: "Thermatec - Unit input current" #
unique_id: thermatec Unit input current
unit_of_measurement: "A"
slave: 1
address: 91 # 0x005B
input_type: holding
data_type: int16
scale: 0.01
precision: 2
# - name: "Thermatec - Unit input power" # ??
# unique_id: thermatec Unit input power
# unit_of_measurement: "W"
# slave: 1
# address: 92 # 0x005C
# input_type: holding
# data_type: int16
# scale: 10
# precision: 1
- name: "Thermatec - Total unit electricity consumption" # Gesamtenergieverbrauch der Einheit in kW/h
unique_id: thermatec Total unit electricity consumption
unit_of_measurement: "kWh"
slave: 1
address: 93 # 0x005D
input_type: holding
data_type: int16
precision: 1
# - name: "Thermatec - Sanitary Hot water heat source temperature value" # ??
# unique_id: thermatec Sanitary Hot water heat source temperature value
# unit_of_measurement: "°C"
# slave: 1
# address: 112 # 0x0072
# input_type: holding
# data_type: int16
# scale: 1
# precision: 0
# - name: "Thermatec - Heating heat source temperature value" # ??
# unique_id: thermatec Heating heat source temperature value
# unit_of_measurement: "°C"
# slave: 1
# address: 113 # 0x0073
# input_type: holding
# data_type: int16
# scale: 1
# precision: 0
# - name: "Thermatec - Buffer tank temperature value" # ??
# unique_id: thermatec Buffer tank temperature value
# unit_of_measurement: "°C"
# slave: 1
# address: 114 # 0x0074
# input_type: holding
# data_type: int16
# scale: 1
# precision: 0
# - name: "Thermatec - Total outlet water temperature value" # ??
# unique_id: thermatec Total outlet water temperature value
# unit_of_measurement: "°C"
# slave: 1
# address: 115 # 0x0075
# input_type: holding
# data_type: int16
# scale: 1
# precision: 0
climates:
- name: "Thermatec - Hot water set temperature" # Warmwasser-Temperatur Soll (20-75)
unique_id: thermatec Hot water set temperature
slave: 1
address: 0x0054 # Ist-Temperatur
temperature_unit: C
target_temp_register: 770 # Register zum Setzen des Sollwerts
data_type: int16
scale: 1
precision: 0
min_temp: 20
max_temp: 75
temp_step: 1
- name: "Thermatec - Heating set temperature" # Heiz-Temperatur Soll (20-60)
unique_id: thermatec Heating set temperature
slave: 1
address: 0x0301 # Ist-Temperatur (FALSCH!! hier wird soll-Temp angezeigt)
temperature_unit: C
target_temp_register: 769 # Register zum Setzen des Sollwerts
data_type: int16
scale: 1
precision: 0
min_temp: 20
max_temp: 60
temp_step: 1
# - name: "Thermatec - Set mode" # Wird leider nicht unterstützt
# unique_id: thermatec Set mode
# slave: 1
# address: 0x0304 # 0: cooling, 1: heating, 2: hot water, 3: Floor heating, 4: Hot water + cooling, 5: Hot water + heating, 6: Reserve, 7: Hot water + floor heating
## current_temp_register: 770
# target_temp_register: 770
# temperature_command_register: 770
# data_type: int16
# scale: 1
# precision: 0
# min_temp: 20
# max_temp: 75
# temp_step: 1
# write_type: holding
#
# preset_mode_register: 772
# preset_mode_command_register: 772
# preset_mode_data_type: int16
# preset_modes:
# - cooling
# - heating
# - hot_water
# - floor_heating
# - hot_water_cooling
# - hot_water_heating
# - reserve
# - hot_water_floor_heating
# preset_mode_map:
# cooling: 0
# heating: 1
# hot_water: 2
# floor_heating: 3
# hot_water_cooling: 4
# hot_water_heating: 5
# reserve: 6
# hot_water_floor_heating: 7
# - name: "Thermatec - Cooling set temperature" # Kühl-Temperatur Soll (7-25)
# unique_id: thermatec Cooling set temperature
# slave: 1
# address: 768 # 0x0300
# write_type: holding
# data_type: int16
# command_on: 50 # Beispielwert
# verify:
# input_type: holding
# address: 768
# state_on: 20
switches:
- name: "Thermatec - On/Off"
unique_id: thermatec On Off
# scan_interval: 15 # Alle X Sekunden wird abgefragt
slave: 1
address: 773 # 0x0305
write_type: holding