Suche

HomeAssistant: Poolsana InverPEARL

Pool Wärmepumpe InverPEARL in HomeAssistant einbinden #TomTuT

Du kannst die ↗ Poolsana InverPEARL Inverter-Wärmepumpe in deinen HomeAssistant einbinden. Das klappt mit der Tuya-App ganz einfach. 

Dashboard im HomeAssistant

Das hier kannst du alles im HomeAssistant mit der Tuya-App und der Poolsana InverPEARL auslesen und steuern. Dazu benötigst du die Tuya-App und natürlich eine Installation von ↗ HomeAssistant.

Tuya-App

Die Tuya-App kannst du hier herunterladen: 

↗ https://smartapp.tuya.com/tuyasmart

Eigenschaften der Entität "climate.inverpearl"

AttributWert
hvac_modesoff, heat_cool
min_temp5
max_temp43
target_temp_step1
current_temperature22
temperature28
friendly_nameInverPEARL
supported_features385

Dashboard YAML Beispiel

Du kannst dir folgendes YAML-Skript direkt als neues Dashboard im HomeAssistant anlegen. Dann siehst du welche Eigenschaften bei dir tatsächlich angezeigt werden. 


views:
  - title: Wärmepumpe
    path: waermepumpe
    icon: mdi:heat-pump
    cards:
      - type: thermostat
        entity: climate.inverpearl
        name: InverPEARL Steuerung
      - type: entities
        title: Status
        show_header_toggle: true
        entities:
          - entity: climate.inverpearl
            name: Wärmepumpe EIN/AUS
          - entity: climate.inverpearl
            name: Betriebsmodus
          - type: attribute
            entity: climate.inverpearl
            attribute: current_temperature
            name: Ist-Temperatur
          - type: attribute
            entity: climate.inverpearl
            attribute: temperature
            name: Zieltemperatur
          - type: attribute
            entity: climate.inverpearl
            attribute: hvac_action
            name: Aktive Aktion (z. B. Heizen)
      - type: horizontal-stack
        cards:
          - type: button
            name: Einschalten
            icon: mdi:fire
            tap_action:
              action: call-service
              service: climate.set_hvac_mode
              data:
                entity_id: climate.inverpearl
                hvac_mode: heat
          - type: button
            name: Ausschalten
            icon: mdi:power
            tap_action:
              action: call-service
              service: climate.set_hvac_mode
              data:
                entity_id: climate.inverpearl
                hvac_mode: 'off'


Automationen ertellen

Im folgenden führe ich dich jetzt Schrittweise durch alle Prozesse, wie ich mit der InverPEARL meine PV-Überschuss Automation in HomeAssistant realisiert habe (Stand 05/2025)

Schritt 1: Helfer erstellen

Für die Automatisierung der PV-gesteuerten Pool-Wärmepumpe habe ich folgende Helfer manuell in der Home Assistant Oberfläche unter Einstellungen → Geräte & Dienste → Helfer erstellt.

HomeAssistant: InverPower Ultra Helfer

EntitätTypFunktion
input_boolean.poolwp_pv_logik_statusSchalterAktiviert oder deaktiviert die gesamte PV-Automatik
input_boolean.poolwp_wp_manuellSchalterManuelle Einschaltung der WP – überschreibt alle anderen Bedingungen
input_boolean.poolwp_wp_manuelle_sperreSchalterVerhindert jegliche Einschaltung – absolute Sperre
input_boolean.poolwp_technik_sperreSchalterWird aktiviert, wenn das Tageslimit erreicht ist (z. B. 5 Starts)
input_number.poolwp_start_counterZahlZählt die heutigen Starts der WP
input_number.poolwp_start_max_per_dayZahlGibt an, wie oft die WP pro Tag maximal starten darf
input_number.poolwp_min_delay_minutesZahlDefiniert die Mindestzeit (in Minuten) zwischen zwei Starts
input_boolean.poolwp_pv_bedingung_erfuelltSchalterStatusanzeige: PV-Bedingungen aktuell erfüllt
input_boolean.poolwp_pv_freigabe_erfolgtSchalterStatusanzeige: Freigabe zur WP-Aktivierung erfolgt

🟢 Automation 1: poolwp_pv_start

Die erste Automation mit dem Ziel: Wärmepumpe wird automatisch eingeschaltet, wenn:

  • PV-Überschuss > 2000 W
  • Batterie > 99 %
  • WP ist derzeit aus
  • keine manuelle Sperre oder manuelle Aktivierung
  • PV-Automatik aktiv
  • Technik-Sperre ist aus
  • letzter Start & Stop liegen mindestens X Minuten zurück
  • Startzähler < Tageslimit

Folgendes YAML-Skript kannst du als eine neue Automation in HomeAssistant anlegen. 

> Einstellungen → Automationen & Szenen → Automatisierungen
> und klickst unten rechts auf „+ Automation erstellen“.
> Danach wählst du oben rechts die drei Punkte (⋮) aus und klickst auf
> „In YAML bearbeiten“, um den vollständigen YAML-Code einzufügen.

📝 Anmerkung: 30 Minuten Sperre (Technik schonen)
Das last_changed von input_boolean.poolwp_last_stop_time deckt meine 30-Minuten-Sperre ab. Denn nach dem letzten STOPP darf 30 Minuten keine Einschaltung mehr erfolgen. Das sehen wir nachher im Dashboard noch genauer. 


alias: poolwp_pv_start
description: >
  Startet die Pool-Wärmepumpe, wenn PV-Überschuss vorhanden ist, 
  alle Bedingungen erfüllt sind und die Technik-Sperre nicht greift.
trigger:
  - platform: time_pattern
    minutes: "/5"  # alle 5 Minuten prüfen
  - platform: state
    entity_id:
      - input_boolean.poolwp_pv_logik_status
      - input_boolean.poolwp_wp_manuelle_sperre
    to: "off"

condition:
  - condition: state
    entity_id: input_boolean.poolwp_pv_logik_status
    state: "on"

  - condition: state
    entity_id: input_boolean.poolwp_wp_manuelle_sperre
    state: "off"

  - condition: state
    entity_id: input_boolean.poolwp_wp_manuell
    state: "off"

  - condition: state
    entity_id: input_boolean.poolwp_technik_sperre
    state: "off"

  - condition: template
    value_template: >
      {{ states('sensor.solax_grid_export') | float(0) > 2000 }}

  - condition: template
    value_template: >
      {{ states('sensor.solax_battery_capacity') | float(0) > 99 }}

  - condition: template
    value_template: >
      {{ states('climate.inverpearl') != 'heat' }}

  - condition: template
    value_template: >
      {% set last_stop = now() - timedelta(
        minutes=states('input_number.poolwp_min_delay_minutes') | int(30)) %}
      {{ as_datetime(states.input_boolean.poolwp_last_stop_time.last_changed) < last_stop }}

  - condition: template
    value_template: >
      {% set counter = states('input_number.poolwp_start_counter') | int(0) %}
      {% set max_starts = states('input_number.poolwp_start_max_per_day') | int(5) %}
      {{ counter < max_starts }}

action:
  - service: climate.set_hvac_mode
    data:
      entity_id: climate.inverpearl
      hvac_mode: heat

  - service: input_number.set_value
    target:
      entity_id: input_number.poolwp_start_counter
    data:
      value: >
        {{ states('input_number.poolwp_start_counter') | int(0) + 1 }}

  - service: input_boolean.turn_on
    entity_id: input_boolean.poolwp_pv_freigabe_erfolgt

  - if:
      - condition: template
        value_template: >
          {% set counter = states('input_number.poolwp_start_counter') | int(0) + 1 %}
          {% set max_starts = states('input_number.poolwp_start_max_per_day') | int(5) %}
          {{ counter >= max_starts }}
    then:
      - service: input_boolean.turn_on
        target:
          entity_id: input_boolean.poolwp_technik_sperre

mode: single


🟢 Automation 2: poolwp_pv_stop

Die zweite Automation sorgt dafür, dass die Pool-Wärmepumpe automatisch ausgeschaltet wird, wenn nicht mehr genug PV-Leistung zur Verfügung steht. Sie greift nur dann, wenn:

  • Die PV-Automatik aktiv ist
  • Der PV-Überschuss 2 Minuten lang unter 500 W fällt
  • Kein manueller Betrieb aktiv ist
  • Die Wärmepumpe aktuell läuft

Beim Auslösen der Automation:

  • Wird die Wärmepumpe über hvac_mode: „off“ abgeschaltet
  • Der Helfer poolwp_pv_freigabe_erfolgt wird auf off gesetzt – als Statusanzeige im Dashboard
  • Der Zeitpunkt des Ausschaltens wird über den Helfer poolwp_last_stop_time protokolliert (indirekt über dessen last_changed) … und das realisiert, das die WP nicht vor 30 Minuten wieder eingeschaltet werden kann. 

alias: poolwp_pv_stop
description: >
  Schaltet die Pool-Wärmepumpe aus, wenn der PV-Überschuss unter 500 W fällt 
  und keine manuelle Aktivierung läuft.
trigger:
  - platform: numeric_state
    entity_id: sensor.solax_grid_export
    below: 500
    for:
      minutes: 2

condition:
  - condition: state
    entity_id: input_boolean.poolwp_pv_logik_status
    state: "on"

  - condition: state
    entity_id: input_boolean.poolwp_wp_manuell
    state: "off"

  - condition: template
    value_template: >
      {{ states('climate.inverpearl') == 'heat' }}

action:
  - service: climate.set_hvac_mode
    data:
      entity_id: climate.inverpearl
      hvac_mode: "off"

  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.poolwp_pv_freigabe_erfolgt

  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.poolwp_last_stop_time

mode: single


🟢 Automation 3: poolwp_technik_reset

Technik-Sperre zurücksetzen
Diese Automation dient dazu, die automatische Technik-Sperre aufzuheben, wenn du aktiv steuerst.
Sie greift, wenn:

  • Die manuelle Aktivierung (poolwp_wp_manuell) aktiviert wird
  • Oder ich die PV-Logik (poolwp_pv_logik_status) wieder aktiv setze

In beiden Fällen:

  • Wird der Tages-Startzähler (poolwp_start_counter) auf 0 gesetzt
  • Die Technik-Sperre (poolwp_technik_sperre) wird deaktiviert

Damit ist die Automatik wieder frei – entweder zum manuellen Start oder zur nächsten automatischen Prüfung.


alias: poolwp_technik_reset
description: >
  Setzt die Technik-Sperre und den Tageszähler zurück, wenn manuell eingegriffen
  oder die PV-Logik erneut aktiviert wird.
trigger:
  - platform: state
    entity_id:
      - input_boolean.poolwp_wp_manuell
      - input_boolean.poolwp_pv_logik_status
    to: "on"
condition: []
action:
  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.poolwp_technik_sperre

  - service: input_number.set_value
    target:
      entity_id: input_number.poolwp_start_counter
    data:
      value: 0
mode: single

🟢 Automation 4 : poolwp_shutdown_on_pv_deactivate

🔴 Erklärungsblock: Abschalten bei Deaktivierung der PV-Logik
Diese Automation stellt sicher, dass die Wärmepumpe nicht weiterläuft, wenn ich  die PV-Automatik deaktiviere!
Sie greift nur dann, wenn:

  • Die PV-Logik (poolwp_pv_logik_status) von „on“ auf „off“ geschaltet wird
  • Die WP aktuell läuft
  • Kein manueller (poolwp_wp_manuell) Betrieb aktiv ist

Beim Auslösen:

  • Wird die Wärmepumpe sofort ausgeschaltet (hvac_mode: „off“)
  • Die Statusanzeige poolwp_pv_freigabe_erfolgt wird auf off gesetzt

alias: poolwp_shutdown_on_pv_deactivate
description: >
  Schaltet die WP aus, wenn die PV-Logik deaktiviert wird – sofern kein manueller Betrieb läuft.
trigger:
  - platform: state
    entity_id: input_boolean.poolwp_pv_logik_status
    from: "on"
    to: "off"

condition:
  - condition: state
    entity_id: input_boolean.poolwp_wp_manuell
    state: "off"

  - condition: template
    value_template: >
      {{ states('climate.inverpearl') == 'heat' }}

action:
  - service: climate.set_hvac_mode
    data:
      entity_id: climate.inverpearl
      hvac_mode: "off"

  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.poolwp_pv_freigabe_erfolgt

mode: single

🟢 Automation 5 : poolwp_statusanzeige_bedingung_erfuellt

Diese Automation aktualisiert den Status-Helfer `poolwp_pv_bedingung_erfuellt`, um im Dashboard sichtbar zu machen, ob ein automatischer Start der Wärmepumpe aktuell überhaupt möglich wäre.

Ist also nur für die  Visualisierung und Transparenz – unabhängig davon, ob tatsächlich eingeschaltet wird.

Geprüft wird:

  • PV-Überschuss ist über 2000 W
  • Batterieladung liegt über 99 %
  • Die Wärmepumpe ist derzeit aus

Wenn alle Bedingungen erfüllt sind, wird `poolwp_pv_bedingung_erfuellt` auf `on` gesetzt – andernfalls auf `off`


alias: poolwp_statusanzeige_bedingung_erfuellt
description: >
  Setzt den Statusanzeige-Helfer, wenn die PV-Bedingungen erfüllt sind 
  (Überschuss, Batterie, WP aus).
trigger:
  - platform: time_pattern
    minutes: "/2"
  - platform: state
    entity_id:
      - sensor.solax_grid_export
      - sensor.solax_battery_capacity
      - climate.inverpearl

condition: []
action:
  - choose:
      - conditions:
          - condition: template
            value_template: >
              {{ states('sensor.solax_grid_export') | float(0) > 2000 }}
          - condition: template
            value_template: >
              {{ states('sensor.solax_battery_capacity') | float(0) > 99 }}
          - condition: template
            value_template: >
              {{ states('climate.inverpearl') != 'heat' }}
        sequence:
          - service: input_boolean.turn_on
            target:
              entity_id: input_boolean.poolwp_pv_bedingung_erfuellt
    default:
      - service: input_boolean.turn_off
        target:
          entity_id: input_boolean.poolwp_pv_bedingung_erfuellt
mode: single

🟢 Dashboard bauen

Hier kommt jetzt mein Dashboard (wie im Beitrag oben schon grob gezeigt)


asdf


Schreibe einen Kommentar

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