More data about heat pump via Tuya Smart Life?

(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