Pool Wärmepumpe "Evolution Topline" Modbus Register finden ohne Anleitung

Hallo,

ich habe hier eine Pool WP die ich über Modbus via ESPHOME einbinden will.
Auf dem PCB ist ein 2. RS 485 Port.

Wie geht man vor wenn man keine Informationen über die Register hat?

Aktueller stand: Bei Gerät 1 antwortet er, bei Gerät 0 nicht, Fehler. Annahme: 1 Passt
Die ersten 40 Register eingebunden, Daten werden gelesen, Annahme Baudrate passt???

Daten in diesen Registern ergeben keinen Sinn. 20 Nullen, 15 fixe Zahlen, 5 Werte ändern sich selten. Annahme: Einfach die falsch Register ?

Gibt es die Möglichkeit eine Dump zu erstellen mit ESPHOME?
Kann man eine falsche Baudrate ausschließen da Modbus CRC hat?
Kann man ausschließen das das Gerät unter weiteren Adressen erreichbar ist? Das ist doch unüblich oder?

Wie würdet ihr vorgehen? Adressen 1000 2000 3000 … testen?

Modell ist “Evolution Topline 9” mit full Inverter,

Wa lässt dich annehmen, dass dies eine Modbus Schnittstelle ist? Im Web findet sich nichts dazu…

Auf dem PCB steht RS 485_2 , an _1 hängt die Bedienung mit Wlan Krams. Wenn das standard Seriell wäre würde ich bestimmt nichts lesen können via Modbus. Das Board sieht so aus als ob es in verschieden Geräte geht. Ist natürlich die Frage ob die Firmware Modbus unterstützt.

Was sagt denn dein Lieferant dazu?

Bist Du mit der WP weitergekommen?
Ich habe eine “Evolution Baseline 9” und habe schon einiges probiert - aber das Ding will einfach nicht mit mir reden. Mit einem ESP und RS485-TTL Konverter bekomme ich mit dem ESPhome Template von Richard Stevens und 9600baud 8n1 viele “duplicate modbus commands”, aber keine sinnvollen Werte.
Fuer mich sieht das nach einem Protokollproblem aus … was hast Du denn eingestellt, dass Du Werte zurueckbekommst?

Hallo, nein ich habe nicht weiter getestet.

Ich habe wahllos Register gelesen, kam aber nicht viel sinnvolles zurück.
Sehr wenige Register lieferten Daten, die aber nicht interpretiert werden konnten

Meine Überlegung war, wenn was zurück kommt, ist es Modbus Protokoll.

Auch kam unter einer anderen ID nichts zurück.

Mein Setup:

# Setup Modbus #1 for
uart:
- id: uart_modbus
  tx_pin: 33
  rx_pin: 32
  baud_rate: 9600 #115200 #9600

modbus:
  id: modbus_1
  #flow_control_pin: 14
  #send_wait_time: 200ms
  uart_id: uart_modbus
  #setup_priority: -10

modbus_controller:
  - id: modbus_controller_1
    address: 0x01
    modbus_id: modbus_1
    command_throttle: 100ms
    setup_priority: -10
    update_interval: 10s

sensor:
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "x0"
    register_type: holding
    address: 0
    unit_of_measurement: "x"
    value_type: U_WORD

 usw ...

Das ist quasi identisch zu meiner Config (ich nutze nur andere Pins vom ESP32).
Wenn ich als Gegenstelle zu dem ESP32 mit ESPhome und dem RS485-TTL Konverter einen Modbus-Simulator mit RS485-TTL Konverter haenge, dann funktioniert alles wie gedacht und fehlerfrei - sobald ich das Ganze aber an die Waermepumpe haenge (egal ob an den freien RS485-2 oder an den RS485-1 statt des WLAN Moduls), dann kommt nix Sinnvolles und jede Menge “duplicate modbus command” Fehler - also so, als wenn keine Gegenstelle vorhanden waere. Die Frage ist jetzt, ob das ein elektrisches (Pegel/Timing/…) oder ein logisches (UARTconfig/Protokol/…) Problem ist.

  • Was kam denn bei Dir zurueck?
  • Hast Du die Config aus dem Github-Link meiner anderen Mail probiert, oder bist Du nur Register fuer Register durchgegangen?
  • Hattest Du auch diese “duplicate modbus command” Fehler?

Hi, sorry das ich den alten post aufwärme aber: konntest du deine WP mittlerweile mit Modbus auslesen/ansteuern?

Ich habe derzeit das identische problem, dass ich keine sinnvollen werte bzw connection timeouts erhalte.

Hallo, habe sie erst seit 2 Wochen wieder im Betrieb, aber keine Fortschritte. Kommen keine sinnvollen Daten, und die Daten die kommen verändern sich nicht. Hatte auch mal den ersten Port getestet an dem das Tuya? Internet-Bedienmodul hängt. Da Modbus keinen Übertragungsfehler hat, sollte eigentlich was passieren. Ich bleibe dran.

Hi, ich bleibe ebenfalls dran. Sofern ich fortschritte erziehle melde ich mich hier. Ich habe mal den hersteller der platine bzgl einer Dokumentation angeschrieben. Laut dem vertreiber der WP kein Modbus, was ich ihm aber nicht do recht abkaufe. Da ich doch schon ein paar Daten abrufen konnte…

Ich hab ESPhome durch Tasmota ersetzt und damit bekomme ich eine stabile Verbindung und auch reproduzierbare Werte. Leider nicht so wie erwartet. Es existieren ja diverse Listen fuer Fairland Waermepumpen deren Bilder den Evolution WPs sehr aehnlich sind - aber damit hatte ich (zumindest bis jetzt) keinen Erfolg.
Bei mir funktioniert nur Deviceaddress “1” und Functioncode “3” - damit bekomme ich fuer die Register 0-183 Werte zurueck.
Wenn ich die WP einschalte, dann aendern sich einige Register stark - andere aendern sich ueber die Zeit etwas und der Rest bleibt gleich.
Sieht nach Lebensaufgabe aus, herauszufinden was jetzt was ist.
Ich probier jetzt mal die “tuya-local” Integration aus - vielleicht komme ich ja mit dem DPS Dump weiter.

Ist schwierig, einige Werte scheinen definitiv abhängig vom Betriebszustand zu sein:
holding register
105 (dezimal) → Am Gerät gewählte Soll-Temperatur

0x701 → ? Irgendein Betriebsdruck
0x70C → ? Wert 0 wenn sie läuft, sonst wird hochgezählt bis 8191
0x70D → ? Wert 0 wenn sie nicht läuft, sonst ein Wert zwischen 30-80
0x307 → ? Könnte ein Betriebszustand sein, 0 Läuft, 4 Pause nach Fehler (habe vermutlich Kältemittelmangel) , 5 nach Start

Fehlermöglichkeit wäre noch das nur bestimmte Register als Lesestart genommen werden können, und ggf. eine fixe oder maximale Anzahl an Registern gelesen werden kann.

Also bei mir funktioniert schonmal das Setzen der Soll Temp …

number:
# 105 / 0x69 -> PHP Target Temp Heating
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Target Temp Heating"
    id: php_target_temp_heating
    register_type: holding
    address: 105 #0x69
    value_type: U_WORD
    unit_of_measurement: "°C"
    min_value: 20
    max_value: 40

# 106 / 0x6A -> PHP Target Temp Cooling
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Target Temp Cooling"
    id: php_target_temp_cooling
    register_type: holding
    address: 106 #0x6A
    value_type: U_WORD
    unit_of_measurement: "°C"
    min_value: 8
    max_value: 30

# 108 / 0x6C -> PHP Target Temp Auto
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Target Temp Auto"
    id: php_target_temp_auto
    register_type: holding
    address: 108 #0x6C
    value_type: U_WORD
    unit_of_measurement: "°C"
    min_value: 8
    max_value: 40




sensor:
  # 47 / 0x2F -> PHP Inlet Water Temperature ?
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP X1 Water? Temperature"
    id: php_x1_water_temperature
    register_type: holding
    address: 47 #0x2F
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
 
# 50 / 0x32 -> PHP Inlet Water Temperature ?
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP X2 Water? Temperature"
    id: php_x2_water_temperature
    register_type: holding
    address: 50 #0x32
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 54 / 0x36 -> PHP Outlet Water Temperature ?
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Outlet Water Temperature ?"
    id: php_outlet_water_temperature
    register_type: holding
    address: 54 #0x36
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 58 / 0x3A -> PHP Inlet Water Temperature ?
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP X3 Water? Temperature"
    id: php_x3_water_temperature
    register_type: holding
    address: 58 #0x3A
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 53 / 0x35 -> PHP Z1 Temperature ?
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Z1 Temperature"
    id: php_z1_temperature
    register_type: holding
    address: 53 #0x35
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 55 / 0x37 -> PHP Air Temperature ?
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Air Temperature"
    id: php_air_temperature
    register_type: holding
    address: 55 #0x37
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1



 # 48 / 0x30 -> PHP  Y1
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Y1"
    id: php_y1
    register_type: holding
    address: 48 #0x30
    value_type: U_WORD



1 „Gefällt mir“

Hi nochmal,

also ich konnte mit deinen infos ebenfalls schon sinnvoll die verschiedenen Temperaturwerte auslesen. Diese befinden sich in den identischen Registern wie bei dir. Weiterhin konnte ich zumindest über mbpoll das Register 93 als Status On/Off identifizieren. zumindest ändert sich der wert von 1 auf 0 und umgekhert beim an und ausschalten der WP. Die integration in Homeassistant habe ich noch nicht geschafft. hier bleibt der Status immer 0. Schreiben mit mbpoll geht ebenfalls nicht. weder als coil noch als holding. Evtl. ein Schreibschutz drauf?

Wie hast du die Adressen eigentlich herausgefunden? try & error?

Ich habe mal mit mbpoll per script die addressen 1-300 als holding gemapped. Dabei kamen oft sich wiederholende werte raus. Die allermeisten konnte ich aber nicht zuordnen. Der nächste schritt wäre zwischen das Wifi Modul und die Platine einen Modbus Sniffer zu hängen und die Werte bei der Bedienung auszulesen.

Hallo, unten nochmal ein Update.

Was mir noch fehlt:
-Boost/Eco/Silent Umschaltung
-Fehlermeldungskonstruktion, analog zu Bedienungsanleitung, mit Flow Sensor Erfassung
-manuelles Schalten der Pumpe zum Umwälzen wenn kein PV Überschuss
-aktuelle Leistung in Watt, ggf. berechenbar

MfG

#select:

# select mit optionsmap funktioniert nicht mit ESP-IDF -> temporäre Schaltung siehe "number"
## 92 / 0x5C -> PHP Operating Mode -> 0=Off 1=On
#  - platform: modbus_controller
#    modbus_controller_id: modbus_controller_1
#    name: "PHP Power Switch"
#    id: php_power_switch
#    address: 92 # 0x5C
#    value_type: U_WORD
#    optionsmap:
#      Off: 0
#      On: 1

# select mit optionsmap funktioniert nicht mit ESP-IDF -> temporäre Schaltung siehe "number"
## 93 / 0x5D -> PHP Operating Mode -> 0=Auto  1=Cool 2=Heat
#  - platform: modbus_controller
#    modbus_controller_id: modbus_controller_1
#    name: "PHP Operating Mode"
#    id: php_operating_mode
#    address: 93 # 0x5D
#    value_type: U_WORD
#    optionsmap:
#      Auto: 0
#      Heating: 1
#      Cooling: 2



number:

# temporär number bis select mit optionsmap funktioniert 
# 92 / 0x69 -> PHP Power Switch -> 0=off 1=on
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Power Switch"
    id: php_power_switch_number
    address: 92
    value_type: U_WORD
    min_value: 0
    max_value: 1
    step: 1

# temporär number bis select mit optionsmap funktioniert 
# 93 / 0x69 -> PHP Operating Mode -> 0=auto  1=cool 2=heat
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Operating Mode"
    id: php_operating_mode_number
    address: 93
    value_type: U_WORD
    min_value: 0
    max_value: 2
    step: 1


# 105 / 0x69 -> PHP Target Temp Heating
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Target Temp Heating"
    id: php_target_temp_heating
    register_type: holding
    address: 105 #0x69
    value_type: U_WORD
    unit_of_measurement: "°C"
    min_value: 20
    max_value: 40

# 106 / 0x6A -> PHP Target Temp Cooling
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Target Temp Cooling"
    id: php_target_temp_cooling
    register_type: holding
    address: 106 #0x6A
    value_type: U_WORD
    unit_of_measurement: "°C"
    min_value: 8
    max_value: 30

# 108 / 0x6C -> PHP Target Temp Auto
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Target Temp Auto"
    id: php_target_temp_auto
    register_type: holding
    address: 108 #0x6C
    value_type: U_WORD
    unit_of_measurement: "°C"
    min_value: 8
    max_value: 40

# Sensoren
# Statuscode - Abfrage am Terminal        -> PCB Anschluss

#01 Frequenz des Kompressors 1 / Frequency of Compressor 1 -> CODE 01 -> 0 ~ 120 Hz
#03 Wassertemperatur am Einlass / Water Inlet Temperature -> CODE 03 -> -99 ~ 999 °C -> PCB-Connector: T3
#04 Spulen-Temperatur / Coil Temperature -> CODE 04 -> -99 ~ 999 °C -> PCB-Connector: T4?
#05 KM Auslassleitung Temperatur / R Discharge Line Temperature -> CODE 05 -> -99 ~ 999 °C -> PCB-Connector: T7?
#06 KM Ansaugleitung Temperatur / R Suction Line Temperature -> CODE 06 -> -99 ~ 999 °C -> PCB-Connector: T6?
#07 Zwischentemperatur / Intermediate Temperature -> CODE 07 -> -99 ~ 999 °C
#08 Umgebungslufttemperatur / Ambient Air Temperature -> CODE 8 -> -99 ~ 999 °C -> PCB-Connector: T8
#11 Wassertemperatur am Auslass / Water Outlet Temperature -> CODE 11 -> -99 ~ 999 °C -> PCB-Connector: T5
#17 Stufe des Hauptabsperrventils / Stage of the main shut-off valve -> CODE 17 -> 0 ~ 999 p
#25 Treiber-Wechselspannung / Driver AC Voltage  -> CODE 25 -> 0 ~ 999 V
#26 Treiber Wechselstrom 0~99.9 A
#27 Treiber-Gleichspannung / Driver DC Voltage -> CODE 27 -> 0 ~ 999 V
#28 PHP Treiber Phasenstrom / Driver Phase Current -> CODE 28 -> 0 ~ 99.9 A
#29 Treiber IPM Temperatur / Driver IPM Temperature -> CODE 29 -> -99 ~ 999 °C
#30 DC-Lüfter 1 Drehzahl / DC Fan 1 Speed -> CODE 30 -> 0 ~ 999 rpm
#31 DC-Lüfter 2 Drehzahl / DC Fan 2 Speed -> CODE 31 -> 0 ~ 999 rpm
#-                                          LP -> Niedrigdruckschutzschalter ?
#-                                          HP -> Hochdruckschutzschalter ?
#-                                          WFS: Paddelschalter ?


sensor:

# 47 / 0x2F -> PHP Wassertemperatur am Einlass / Water Inlet Temperature -> CODE 03 -> -99 ~ 999 °C -> PCB-Connector: T3
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Water Inlet Temperature"
    id: php_water_inlet_temperature
    register_type: holding
    address: 47 #0x2F
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 50 / 0x32 -> PHP NEIN                 Wassertemperatur am Auslass / Water Outet Temperature -> CODE 11 -> -99 ~ 999 °C -> PCB-Connector: (CHK)T5
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Water Outlet Temperature NEIN"
    id: php_water_outlet_temperature_N
    register_type: holding
    address: 50 #0x32
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 52 / 0x34 -> PHP KM Auslassleitung Temperatur / R Discharge Line Temperature -> CODE 05 -> -99 ~ 999 °C -> PCB-Connector: T5 (DRUCKSEITE)
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R Discharge Line Temperature"
    id: php_r_discharge_line_temperature
    register_type: holding
    address: 52 #0x34
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 53 / 0x35 -> PHP KM Ansaugleitung Temperatur / R Suction Line Temperature -> CODE 05 -> -99 ~ 999 °C -> PCB-Connector: T6 (SAUGSEITE)
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R Suction Line Temperature"
    id: php_r_suction_line_temperature
    register_type: holding
    address: 53 #0x35
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 54 / 0x36 -> Zwischentemperatur / Intermediate Temperature -> CODE 07 -> -99 ~ 999 °C
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Intermediate Temperature"
    id: php_intermediate_temperature
    register_type: holding
    address: 54 #0x36
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 55 / 0x37 -> PHP Umgebungslufttemperatur / Ambient Air Temperature -> CODE 8 -> -99 ~ 999 °C -> PCB-Connector: T8
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Ambient Air Temperature"
    id: php_ambient_air_temperature
    register_type: holding
    address: 55 #0x37
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 58 / 0x3A -> PHP Wassertemperatur am Auslass / Water Outlet Temperature -> CODE 11 -> -99 ~ 999 °C -> PCB-Connector: (CHK)T5
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Water Outlet Temperature"
    id: php_water_outlet_temperature
    register_type: holding
    address: 58 #0x3A
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

# 72 / 0x48 -> PHP Treiber-Wechselspannung / Driver AC Voltage -> CODE 25 -> 0 ~ 999 V
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Driver AC Voltage"
    id: php_driver_ac_voltage
    register_type: holding
    address: 72 #0x48
    value_type: U_WORD
    unit_of_measurement: "V"

# 1793 / 0x701 -> PHP Discharge Line 2 Temp Sensor    UNKNOWN 1  -> Power Control Module Temp Sensor
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Discharge Line 2 Temp"
    id: php_discharge_line_2_temp
    register_type: holding
    address: 1793 # 0x701
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

 # 31 / 0x1F -> PHP Treiber Phasenstrom / Driver Phase Current -> CODE 28 -> 0 ~ 99.9 A
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Driver Phase Current"
    id: php_driver_phase_current
    register_type: holding
    address: 31 #0x1F
    value_type: U_WORD
    unit_of_measurement: "A"
    #accuracy_decimals: 1
    #filters:
    #  - multiply: 0.1



 # 39 / 0x27 -> PHP  R39
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R39"
    id: php_r39
    register_type: holding
    address: 39 #0x27
    value_type: U_WORD

# 41 / 0x29 -> PHP  R41
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R41"
    id: php_r41
    register_type: holding
    address: 41 #0x29
    value_type: U_WORD

 # 48 / 0x30 -> PHP R48
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R48"
    id: php_r48
    register_type: holding
    address: 48 #0x30
    value_type: U_WORD


 # 51 / 0x33 -> PHP Spulen-Temperatur / Coil Temperature -> CODE 04 -> -99 ~ 999 °C -> PCB-Connector: T4 
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Coil Temperature"
    id: php_coil_temperature
    register_type: holding
    address: 51 #0x33
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

 # 64 / 0x40 -> PHP Stufe des Hauptabsperrventils / Stage of the main shut-off valve -> CODE 17 -> 0 ~ 999 p
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Stage of the main shut-off valve"
    id: php_stage_of_the_main_shut_off_valve
    register_type: holding
    address: 64 #0x40
    value_type: U_WORD
    unit_of_measurement: "p"
   

 # 73 / 0x49 -> PHP R73
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R73"
    id: php_r73
    register_type: holding
    address: 73 #0x49
    value_type: U_WORD


# 74 / 0x4A -> PHP Treiber-Gleichspannung / Driver DC Voltage -> CODE 27 -> 0 ~ 999 V
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Driver DC Voltage"
    id: php_driver_dc_voltage
    register_type: holding
    address: 74 #0x4A
    value_type: U_WORD
    unit_of_measurement: "V"


# 75 / 0x4B -> PHP R75
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R75"
    id: php_r75
    register_type: holding
    address: 75 #0x4B
    value_type: U_WORD


# 76 / 0x4C -> PHP Treiber IPM Temperatur / Driver IPM Temperature -> CODE 29 -> -99 ~ 999 °C   
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Driver IPM Temperature"
    id: php_driver_ipm_temperature
    register_type: holding
    address: 76 #0x4C
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1


# 77 / 0x4D -> PHP DC-Lüfter 1 Drehzahl / DC Fan 1 Speed -> CODE 30 -> 0 ~ 999 rpm
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP DC Fan 1 Speed"
    id: php_dc_fan_1_speed
    register_type: holding
    address: 77 #0x4D
    value_type: U_WORD
    unit_of_measurement: "rpm"


# 1800 / 0x708
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R1800"
    id: php_r1800
    address: 1800 # 0x708
    register_type: holding
    value_type: U_WORD

# 1801 / 0x709
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R1801"
    id: php_r1801
    address: 1801 # 0x709
    register_type: holding
    value_type: U_WORD

# 1802 / 0x70A
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R1802"
    id: php_r1802
    address: 1802 # 0x70A
    register_type: holding
    value_type: U_WORD

# 1803 / 0x70B
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R1803"
    id: php_r1803
    address: 1803 # 0x70B
    register_type: holding
    value_type: U_WORD
    

# 1804 / 0x70C -> PHP R1804     Counter for ??
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP R1804"
    id: php_r1804
    register_type: holding
    address: 1804 # 0x70C
    value_type: U_WORD


# 1805 / 0x70D -> PHP Frequenz des Kompressors 1 / Frequency of Compressor 1 -> CODE 8 -> 0 ~ 120 Hz
  - platform: modbus_controller
    modbus_controller_id: modbus_controller_1
    name: "PHP Frequency of Compressor 1"
    id: php_frequency_of_compressor_1
    register_type: holding
    address: 1805 # 0x70D
    value_type: U_WORD
    unit_of_measurement: "Hz"

Respekt. Wie bist du an die register gekommen? Würde mich echt mal interessieren. Alles Try&Error?

Ja eigentlich schon herausgefunden durch probieren, sind ja die Register die auch am Gerät eingesehen werden können, gemäß Bedienungsanleitung. Eigentlich sollte der Hersteller das bereitstellen. Vermutlich steigt jetzt der Absatz von dem Gerät.

Also bei meiner WP kann ich keine register einsehen. Aber du hast ja bis auf die Modi (Eco, Boost, Silent) und die fehlermeldungen schon alles geschafft.

Ich hatte beim Verkaeufer schon nachgefragt, ob es eine Beschreibung der Modbus-Register gibt und der hat mir - nach Ruecksprache mit dem Hersteller - geantwortet, dass diese WP keinen Modbus haben. Ist natuerlich Quatsch, aber ich hatte auch nix anderes erwartet.

Dafuer war mein Versuch mit der App erfolgreich und ich konnte die WP mit der tuya-local Integration in den Home Assistant einbinden. Allerdings stehen dann nur wenige Features zur Verfuegung:
Ist/Soll-Temperatur
Ein/Aus
Heat/Cool/Off
Quick heat/Quiet heat/Smart heat/Smart cool/Quiet cool/Quick cool

Das Log dazu sieht dann so aus:

Device matches poolex_q7_heatpump with quality of 100%.

DPS: {"updated_at": 1750940186.276119, "1": false, "2": 28, "3": 25, "4": "ECO_Heat", "11": "standby", "13": "c", "21": 0}
 [{"id": 1, "name": "switch", "type": "Boolean", "format": "{}", "enumMap": {}}, {"id": 2, "name": "temp_set", "type": "Integer", "format": "{\"unit\":\"\u2103\",\"min\":5,\"max\":80,\"scale\":0,\"step\":1}", "enumMap": {}}, {"id": 3, "name": "temp_current", "type": "Integer", "format": "{\"unit\":\"\u2103\",\"min\":-30,\"max\":100,\"scale\":0,\"step\":1}", "enumMap": {}}, {"id": 11, "name": "work_state", "type": "Enum", "format": "{\"range\":[\"heating\"]}", "enumMap": {}}, {"id": 13, "name": "temp_unit_convert", "type": "Enum", "format": "{\"range\":[\"c\",\"f\"]}", "enumMap": {}}, {"id": 14, "name": "temp_set_f", "type": "Integer", "format": "{\"unit\":\"\u2109\",\"min\":41,\"max\":176,\"scale\":0,\"step\":1}", "enumMap": {}}, {"id": 15, "name": "temp_current_f", "type": "Integer", "format": "{\"unit\":\"\u2109\",\"min\":-22,\"max\":212,\"scale\":0,\"step\":1}", "enumMap": {}}]

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Wenn, dann funktioniert eine Integration über localtuya deutlich besser (nicht tuya-local) dort lassen sich alle entitäten integrieren. Erforderlich ist dann aber ein account auf der ruya developer plattform.

Ich verfolge weiterhin den weg über modbus und setze da ganz stark auf @SpenZerx :wink:

Er ist nahe dran die letzten Register zu finden.

Mit tuya-local oder localtuya hatte ich letztes jahr probleme nach updates etc. Modbus ist da eindeutig zuverlässiger.