WPCU über Modbus – Troubleshooting

Dieser Beitrag bezieht sich auf die Steuerung einer Waterkotte Wärmepumpe über Modbus und Home Assistant. Dies ist in diesem Artikel beschrieben. Den du zuerst lesen solltest. Hier findest du nur eine Reaktion darauf zur weiterführenden Lektüre….

Ich habe eine Zuschrift erhalten, von einem Bastler, der Probleme hat die WP mit dem Home Assistant zu verbinden. Hier stelle ich meine Versuche online zu helfen.

Das Mail :

Sehr geehrter Betreiber der Internetseite Losmuchachos.at! 

Ich habe auch eine Waterkotte Wärmepumpe DS5011.3 mit dem WPCU.C Regler und möchte diese über Modbus regeln.Über das Programm CAS Modbus Scanner bekomme ich Werte,nur leider mit ihrer NodeRed und Homeassistant Programmierung geht nichts. Könnten Sie mir bitte weiterhelfen? Ich wäre Ihnen sehr dankbar! 

Mit freundlichen Grüßen ….

Nach einiger gemeinsamer Tüftelei sind wir auf den Fehler gekommen. Die Verbindung wurde nicht durch ein Nullmodemkabel, sondern durch Kreuzen der RX/TX Kabel, sowie Verbinung von GND hergestellt. Dies reicht um das Gerät als „connected“ anzuzeigen, es kommen aber keine Werte. Nach Kauf des von mir empfohlenen RS232/TCP Converters mit Nullmodemkabel, hat es funktioniert.


  1. Juergen

    Hallo, deine Wärmepumpen Integration ist 100% was ich gerade umsetze. Echt genial. Soweit hab ich alles ident zu deiner Anleitung umgesetzt und funktioniert auch gut. Dein Dashboard speziell die Display Anzeige wäre noch super hilfreich für Anfänger wie mich. Wenn Du hier noch was teilen könntest wäre echt MEGA.

    Antworten
    1. comment by losmuchachos
      el muchacho

      Hmm. Ich versuche es gerne. Das ist meine Seite, die nur WP-Daten ausgibt. Ich hab noch eine Übersichtsseite, die die wichtigen Werte darstellt, aber da verwende ich sehr viele Werte, die von Logiken berechnet sind etc. Die hat man nicht direkt aus der Wärmepumpe. Da ist diese Seite besser geeignet. Viel Erfolg damit! Ich weiß nicht wie gut das funktioniert.

      views:
      – type: sections
      max_columns: 4
      icon: mdi:eye-outline
      path: wp-main
      title: WP_main
      sections:
      – type: grid
      cards:
      – type: tile
      entity: switch.increaseoff_waterkotte
      name: Turbo Deaktiviert
      state_content: state
      icon: mdi:car-turbocharger
      icon_tap_action:
      action: more-info
      tap_action:
      action: more-info
      – type: tile
      entity: switch.wateroff_waterkotte
      name: WW Deaktiviert
      state_content: state
      icon: mdi:water
      icon_tap_action:
      action: more-info
      tap_action:
      action: more-info
      – type: tile
      entity: switch.heatoff_waterkotte
      name: Heizung Deaktiviert
      state_content: state
      icon: mdi:heat-wave
      icon_tap_action:
      action: more-info
      tap_action:
      action: more-info
      – type: tile
      entity: binary_sensor.warmepumpeaktiv_waterkotte
      – type: entities
      entities:
      – entity: sensor.returnreal_waterkotte
      name: Rücklauf Ist
      – entity: sensor.returnnominal_waterkotte
      name: Rücklauf Soll
      – entity: sensor.domesticwatertemp_waterkotte
      name: WW ist
      – entity: number.watertempnominal_waterkotte
      name: WW soll
      icon: mdi:thermometer-check
      show_header_toggle: false
      – type: entities
      entities:
      – entity: sensor.cop_waterkotte
      name: COP
      icon: mdi:exponent
      – entity: sensor.pelectric_waterkotte
      name: Leistung Elektrisch
      secondary_info: none
      – entity: sensor.flowtemp_waterkotte
      name: Ausgangstemperatur
      show_header_toggle: false
      title: Leistungswerte
      – type: entities
      entities:
      – entity: sensor.sensor_outsidetemp_waterkotte
      name: Außentemperatur
      icon: mdi:home-thermometer-outline
      – entity: sensor.outsidetemp1h_waterkotte
      name: Außentemperatur 1h
      icon: mdi:home-thermometer-outline
      – entity: sensor.outsidetemp24h_waterkotte
      name: Außentemperatur 24h
      icon: mdi:home-thermometer-outline
      title: Sensoren
      show_header_toggle: false
      – type: heading
      icon: mdi:sun-angle-outline
      heading: Solaranteil
      heading_style: title
      – type: horizontal-stack
      cards:
      – type: gauge
      name: Momentan
      min: 0
      needle: true
      severity:
      green: 75
      yellow: 25
      red: 0
      max: 100
      entity: sensor.wp_pvprozent_nodered
      – type: gauge
      min: 0
      needle: true
      severity:
      green: 75
      yellow: 25
      red: 0
      max: 100
      entity: sensor.wp_anteil_pv_gesamt_prozent
      name: Gesamt
      – type: entity
      entity: text.displaytext_waterkotte
      grid_options:
      columns: full
      name: WW-Text
      – type: entity
      entity: text.heizung_displaytext_waterkotte
      grid_options:
      columns: full
      name: Heizung Text
      – type: grid
      cards:
      – type: custom:apexcharts-card
      graph_span: 8h
      header:
      show: true
      title: Leistung & COP
      show_states: true
      colorize_states: true
      series:
      – entity: sensor.pelectric_waterkotte
      name: Leistung
      curve: straight
      type: line
      yaxis_id: primary
      stroke_width: 2
      unit: W
      – entity: sensor.cop_waterkotte
      name: COP
      unit: ‚ ‚
      curve: straight
      type: column
      yaxis_id: secondary
      fill_raw: zero
      yaxis:
      – id: primary
      min: 0
      max: auto
      – id: secondary
      min: 0
      max: auto
      opposite: true
      – type: history-graph
      hours_to_show: 12
      entities:
      – entity: binary_sensor.wp_heizzeit_nodered
      name: Heizzeit
      – entity: switch.heatoff_waterkotte
      name: HeatOFF
      – entity: binary_sensor.wp_turbozeit_nodered
      name: Turbozeit
      – entity: switch.increaseoff_waterkotte
      name: TurboOFF
      – entity: binary_sensor.wp_wasserzeit_nodered
      name: Wasserzeit
      – entity: switch.wateroff_waterkotte
      name: Wasser OFF
      – entity: sensor.returnreal_waterkotte
      name: Rücklauf ist
      – entity: sensor.returnnominal_waterkotte
      name: RL soll
      – entity: sensor.temperatur_buro
      name: Temp Büro
      – entity: sensor.pelectric_waterkotte
      name: Leistung WP
      – entity: counter.warmepumpe_starts
      name: Kompressor Starts
      – entity: binary_sensor.warmepumpeaktiv_waterkotte
      name: Aktiv
      – entity: sensor.domesticwatertemp_waterkotte
      name: Wasser Ist
      – entity: number.watertempnominal_waterkotte
      name: Wasser Soll
      – entity: binary_sensor.heizeninkuerze_nodered
      name: bald Heizen
      – entity: binary_sensor.wwinkuerze_nodered
      name: bald WW
      – entity: binary_sensor.wp_heizen_aktiv_waterkotte
      name: Heizen aktiv
      – entity: binary_sensor.wwheizen_aktiv_waterkotte
      name: WW aktiv
      title: 12h
      – type: history-graph
      entities:
      – entity: sensor.delta_ist_soll_return_nodered
      hours_to_show: 3
      title: 3h
      – type: grid
      cards:
      – type: heading
      heading: Neuer Abschnitt
      – type: tile
      entity: binary_sensor.heizeninkuerze_nodered
      – type: tile
      entity: sensor.delta_ist_soll_return_nodered
      – type: tile
      entity: binary_sensor.wwinkuerze_nodered
      – type: tile
      entity: sensor.delta_ww_istsoll_nodered
      – type: tile
      entity: select.wp_status_nodered
      – type: tile
      entity: switch.ww_usehigherhysteresis_waterkotte
      name: WW-erhöhte Hysterese
      icon: mdi:thermometer-plus
      icon_tap_action:
      action: more-info
      – type: tile
      entity: switch.heizung_manuell_aus_waterkotte
      icon_tap_action:
      action: more-info
      – type: tile
      entity: text.heizung_grundfuerabschaltung
      grid_options:
      columns: full
      – title: Wärmepumpe
      cards: []
      type: sections
      icon: mdi:heat-pump-outline
      sections:
      – type: grid
      cards:
      – type: entities
      entities:
      – entity: switch.heatoff_waterkotte
      name: Heizen deaktivieren
      icon: mdi:heat-wave
      – entity: time.heatingtimeon_waterkotte
      name: Heizen ein
      icon: mdi:clock-check-outline
      – entity: time.heatingtimeoff_waterkotte
      name: Heizen aus
      icon: mdi:clock-minus-outline
      – entity: sensor.returnreal_waterkotte
      name: Rücklauf Ist
      – entity: sensor.returnnominal_waterkotte
      name: Rücklauf Soll
      – entity: number.heatcurvestarttemp_waterkotte
      name: Heizkurve Starttemperatur
      icon: mdi:chart-bell-curve-cumulative
      – entity: number.heatingcurvebasetemp_waterkotte
      name: Heizkurve RücklaufSollBasis
      icon: mdi:chart-bell-curve-cumulative
      – entity: number.heatingcurvegradient_waterkotte
      name: Heizkurve Steigung
      icon: mdi:chart-bell-curve-cumulative
      – entity: number.heatingcurvelimit_waterkotte
      name: Heizkurve Max Limit
      icon: mdi:chart-bell-curve-cumulative
      – entity: number.heatingcurvehysteresis_waterkotte
      – entity: switch.increaseoff_waterkotte
      name: Turbo deaktivieren
      icon: mdi:fan-alert
      – entity: time.increasetimeon_waterkotte_2
      name: ‚Turbo Ein ‚
      icon: mdi:fan-clock
      – entity: time.increasetimeoff_waterkotte
      name: Turbo Aus
      icon: mdi:timer-cancel
      – entity: number.increaseoffset_waterkotte
      title: Heizen
      show_header_toggle: false
      – type: entities
      entities:
      – entity: sensor.cop_waterkotte
      name: COP
      icon: mdi:exponent
      – entity: sensor.pelectric_waterkotte
      name: Leistung Elektrisch
      secondary_info: none
      – entity: sensor.pthermal_waterkotte
      name: Leistung Thermal
      – entity: sensor.sourceintemp_waterkotte
      name: Quelle Eingangstemperatur
      icon: mdi:water-pump
      – entity: sensor.sourceouttemp_waterkotte
      name: Quelle Ausgangstemperatur
      icon: mdi:water-pump-off
      – entity: counter.warmepumpe_starts
      name: Kompressor Starts
      icon: mdi:ray-start-arrow
      show_header_toggle: false
      title: Leistungswerte
      – type: entities
      entities:
      – entity: sensor.condensationpress_waterkotte
      name: Kondensator Druck
      icon: mdi:car-brake-low-pressure
      – entity: sensor.condensationtemp_waterkotte
      name: Kondensator Temperatur
      – entity: sensor.evaporatorpress_waterkotte
      name: Verdampfer Druck
      – entity: sensor.evaporatortemp_waterkotte
      name: Verdampfer Temperatur
      – entity: sensor.flowtemp_waterkotte
      name: Ausgang Temperatur
      – entity: sensor.suctionlinetemp_waterkotte
      name: Saugleitung Temperatur
      title: Systemwerte
      show_header_toggle: false
      – type: grid
      cards:
      – type: tile
      entity: binary_sensor.heizeninkuerze_nodered
      – type: tile
      entity: binary_sensor.warmepumpeaktiv_waterkotte
      – type: custom:apexcharts-card
      graph_span: 8h
      header:
      show: true
      title: Leistung & COP
      show_states: true
      colorize_states: true
      series:
      – entity: sensor.pelectric_waterkotte
      name: Leistung
      curve: straight
      type: line
      yaxis_id: primary
      stroke_width: 2
      unit: W
      – entity: sensor.cop_waterkotte
      name: COP
      unit: ‚ ‚
      curve: straight
      type: column
      yaxis_id: secondary
      fill_raw: zero
      yaxis:
      – id: primary
      min: 0
      max: auto
      – id: secondary
      min: 0
      max: auto
      opposite: true
      – type: entities
      entities:
      – entity: switch.wateroff_waterkotte
      name: Warmwasser deaktivieren
      icon: mdi:close-octagon-outline
      – entity: time.watertimeon_waterkotte
      name: WW einschalten
      icon: mdi:timer-check-outline
      – entity: time.watertimeoff_waterkotte
      name: WW ausschalten
      icon: mdi:timer-cancel-outline
      – entity: sensor.domesticwatertemp_waterkotte
      name: WW Temperatur
      – entity: number.watertempnominal_waterkotte
      name: WW Soll
      icon: mdi:thermometer-water
      – entity: number.waterhysteresis_waterkotte
      name: WW Hysterese
      icon: mdi:thermometer-water
      title: Warmwasser
      show_header_toggle: false
      – type: entities
      entities:
      – entity: sensor.hourscompressor_waterkotte
      name: Arbeitstsunden Kompressor
      icon: mdi:fan-clock
      – entity: sensor.hoursheating_waterkotte
      name: Arbeitstsunden Heizung
      icon: mdi:clock-fast
      – entity: sensor.hourswater_waterkotte
      name: Arbeitsstunden Wasser
      icon: mdi:timeline-clock-outline
      – entity: sensor.outsidetemp1h_waterkotte
      name: Außentemperatur 1h
      icon: mdi:home-thermometer-outline
      – entity: sensor.outsidetemp24h_waterkotte
      name: Außentemperatur 24h
      icon: mdi:home-thermometer-outline
      – entity: sensor.sensor_outsidetemp_waterkotte
      name: Außentemperatur
      icon: mdi:home-thermometer-outline
      – entity: sensor.temperatur_buro
      – entity: sensor.temperatur_kuche
      – entity: sensor.wellbeing_luftreiniger_2_temp
      name: Luftreiniger Praxis
      – entity: sensor.temperatur_bad_eltern
      – entity: sensor.aranet4_28652_temperature
      title: Sensoren
      show_header_toggle: false

      Antworten
  2. Gerald

    Hallo, ich finde die Integration genial und ich möchte diese auch bei meiner DS5012 mit WPCU.C Controller einsetzen.
    Auch die Beschreibung ist echt sehr cool gemacht und super einfach umzusetzen.
    Vielen Dank an der Stelle für Deine tolle Arbeit!

    Ich habe einen Waveshare RS232/485/422 to RJ45 Ethernet Module, TCP/IP to Serial, with POE im Einsatz mit der IP Adresse 192.168.1.220

    Mit Deinem „ModbusHeizung.py“ habe ich den Verbindungstest erfolgreich geschafft.

    Protokoll:
    Es wird versucht zu einer Waterkotte Wärempumpe mit WCPU Steuerung über Modbus TCP eine Verbinung herzustellen.
    Bitte gib die IP-Adresse des Mobus TP Gateways ein: 192.168.1.220
    Keine Fehlermeldung bisher? Die Verbindung zum Gateway sollte stehen. Drücke Enter um weiter zu machen,….
    Ich versuche jetzt einen ersten Wert zu lesen:
    ERROR: request ask for transaction_id=1 but got id=23, Skipping.
    0x661 – Water: False
    0x3f1 – Heat: False
    Oben die Werte ob Warmwasser und Heizung aktiviert sind (FALSE) oder ob die händishce Abschaltung ein ist (TRUE).
    Wenn das läuft, dann gehen wir aufs Ganze…(Enter)
    0x1b1 – Outdoor Temp.: 17.807775497436523 °C
    0x1d1 – Outdoor Temp. (1h): 18.053455352783203 °C
    0x1f1 – Outdoor Temp. (24h): 20.49428939819336 °C
    0x211 – Source in Temp: 23.133886337280273 °C
    0x231 – Source out Temp: 19.56263542175293 °C

    0x1251 – Firmware version: C 01.04.00
    0x12d1 – Firmware date: May 28 2010
    0x1351 – Model: DS012302AI
    0x13d1 – Serial number: 00351360
    0x1451 – Set model: 0
    0x14d1 – Set serial nr: 0
    0x1551 – Operating state: [False, False, False, False, False, False, False, False]
    0x1561 – Digital output: [False, False, False, False, False, False, False, False]
    0x1571 – Digital input: [False, False, False, False, False, False, False, False]
    0x1581 – ADC error: [False, False, False, False, False, False, False, False]
    0x1591 – LCD line 1: M201: WWasser
    0x1611 – LCD line 2: Kein Bedarf
    0x1691 – Time factor: 1.0
    Connection to (192.168.68.220, 502) failed: timed out
    Traceback (most recent call last):
    File „c:\Users\gstei\AppData\Local\Temp\a29dd3c2-deeb-4d93-9bc1-045a775a1c59_WaterkottePython (1).zip.c59\WaterkottePython\ModbusHeizung.py“, line 381, in
    modbus_reader = ModbusReader(‚192.168.68.220‘)
    File „c:\Users\gstei\AppData\Local\Temp\a29dd3c2-deeb-4d93-9bc1-045a775a1c59_WaterkottePython (1).zip.c59\WaterkottePython\ModbusHeizung.py“, line 45, in __init__
    raise Exception(f“Verbindung zum Modbus-Server bei {host}:{port} fehlgeschlagen!“)
    Exception: Verbindung zum Modbus-Server bei 192.168.68.220:502 fehlgeschlagen!

    Es kommen alle Werte an, aber zum Schluss kommt der Kommentar „Connection to (192.168.68.220, 502) failed: timed out“

    Ich habe Deine „waterkotte_modbus_gesamt.json“ in Node Red auf meinem Home Assistant Importiert und im Flex Getter die IP auf 192.168.1.220 geändert.

    Leider kommen im Debug nur Fehlermeldungen.
    Debug:
    22.7.2026, 00:18:54node: Heizungsdisplay abfragen = on ?
    msg : error
    { name: „InputError“, message: „Entity could not be found in c…“, stack: „InputError: Entity could not b…“ }
    22.7.2026, 00:18:58node: Heizungsdisplay abfragen = on ?
    msg : error
    { name: „InputError“, message: „Entity could not be found in c…“, stack: „InputError: Entity could not b…“ }
    22.7.2026, 00:19:02node: Heizungsdisplay abfragen = on ?
    msg : error
    { name: „InputError“, message: „Entity could not be found in c…“, stack: „InputError: Entity could not b…“ }
    22.7.2026, 00:19:06node: Heizungsdisplay abfragen = on ?
    msg : error
    { name: „InputError“, message: „Entity could not be found in c…“, stack: „InputError: Entity could not b…“ }

    Beim Modbus Flex GEtter steht „active“, beim Buffer Parser „xxx“, Heizungsdisplay abfragen= on ? „not found“, bei den Messwerten „home-assistant.error.error“

    Kannst Du mir

    Antworten
    1. comment by losmuchachos
      el muchacho

      Hallo, also das erste was mir auffällt ist dass in deinen Protiokollen etc. 2 verschiedene IM Adressen verwendet werden. (mal 68 dann wieder 1 an dritter Stelle). Unter Umständen kommen dann trotzdem manchmal Werte an und manchaml nicht. (Ja nach Subnet im Netzwerk) Schau mal ob es daran liegen kann. Stelle sicher dass die IP frei ist, und nimm als 3. Wert den gleichen den auch dein Router hat. Wenn das nicht hilft wird es wohl komplizierter 🙁

      Antworten
      1. comment by losmuchachos
        el muchacho

        Wenn das nicht hilft, schick mal an die KI deiner Wahl die Links meiner beiden Beiträge, eine Erklärung was du bisher gemacht hast und die Protokolle.

Was meinst du ???

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert