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.
Eigenschaften der Entität "climate.inverpearl"
Attribut | Wert |
---|---|
hvac_modes | off, heat_cool |
min_temp | 5 |
max_temp | 43 |
target_temp_step | 1 |
current_temperature | 22 |
temperature | 28 |
friendly_name | InverPEARL |
supported_features | 385 |
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ät | Typ | Funktion |
---|---|---|
input_boolean.poolwp_pv_logik_status | Schalter | Aktiviert oder deaktiviert die gesamte PV-Automatik |
input_boolean.poolwp_wp_manuell | Schalter | Manuelle Einschaltung der WP – überschreibt alle anderen Bedingungen |
input_boolean.poolwp_wp_manuelle_sperre | Schalter | Verhindert jegliche Einschaltung – absolute Sperre |
input_boolean.poolwp_technik_sperre | Schalter | Wird aktiviert, wenn das Tageslimit erreicht ist (z. B. 5 Starts) |
input_number.poolwp_start_counter | Zahl | Zählt die heutigen Starts der WP |
input_number.poolwp_start_max_per_day | Zahl | Gibt an, wie oft die WP pro Tag maximal starten darf |
input_number.poolwp_min_delay_minutes | Zahl | Definiert die Mindestzeit (in Minuten) zwischen zwei Starts |
input_boolean.poolwp_pv_bedingung_erfuellt | Schalter | Statusanzeige: PV-Bedingungen aktuell erfüllt |
input_boolean.poolwp_pv_freigabe_erfolgt | Schalter | Statusanzeige: 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.
YAML-aufklappen
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.
YAML-aufklappen
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.
YAML-aufklappen
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
YAML-aufklappen
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`
YAML-aufklappen
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)
YAML-aufklappen
asdf