Pool Wärmepumpe und Pool Pumpe mit Home Assistant

Die Idee mit dem Überschuss

Da ich eine Photovoltaik Anlage auf dem Dach habe wollte ich die Pool Inverter Wärmepumpe mit Hilfe des Gesamten Haus-Stromverbrauchs „regeln“. Der erste Gedanke war die Pool Wärmepumpe über den Integrierten potential freien Schalter aktivieren und deaktivieren. Bei der Installation habe ich dann bemerkt dieser potentialfreie Kontakt wurde nicht für den Benutzer leicht zugängig zur Verfügung gestellt. Die IPS 140 Max hat diesen Eingang wohl laut dem Techniker, den ich am Telefon hatte, nur auf der Platine. Außerdem sei es nicht empfehlenswert, die Pumpe damit aus und an zu schalten.

Dann musste ich doch den Plan B umsetzten die Inverter Wärmepumpe über die Tuya API zu steuern.

Voraussetzungen

Wärmepumpe

Die Inverter Wärmepumpe muss die Tuya API unterstützen. Es gibt einige APPS die darauf hinweisen, dass die Pumpe auch in der Tuya APP laufen. Nach meinern Recherchen sind das auf jeden Fall diese zwei:

  • SMART Life APP
  • Inverter Life

Es kann auch sein, dass es noch andere „Forks“ wie diese aus der Tuya App gibt. Ist die Wärmepumpe dann erst mal in der Tuya App kann man diese über die HA Local Tuya Integration einbinden. (hier für gibt es einige Tutorials online -> einfach mal Youtube oder Google befragen)

Sontiges

Einen Strommesser der Hausleistung muss ebenfalls vorhanden sein. Hier bieten sich verschiedene Möglichkeiten an.

Ich hatte erst den Volkszähler im Einsatz bin dann aber auf den Stromleser umgestiegen. Dieser lässt sich Recht gut über die HA Tasmota Integration einrichten. (auch hier sind Youtube und Google eine gute Anlaufstelle).

Gleitender Mittelwert Sensor

Dieser Statistische Sensor (Helfer) wird benötigt nicht bei jeder Wolke die Wärmepumpe um/aus zu schalten. Ich habe dazu ein Fenster von 15 minuten auf den Gesamt-Haus-Verbrauch gelegt. Der Sensor ist vom Typ Durchschnitt (Arithmetisch).

Die eigentliche „Regelung“ der Wärmepumpe

Sind die Einstiegshürden genommen kann die Wärme Pumpe relativ einfach über eine Automation „geregelt“ werden. Ich hatte am Anfang etwas experimentiert und bin dann zu diesem Script gekommen (yaml):


alias: Pool Wärmepumpe
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.haus_power_gleitender_mittelwert
conditions:
  - condition: sun
    before: sunset
    after: sunrise
    before_offset: "01:30:00"
    after_offset: "01:30:00"
    enabled: true
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_power_gleitender_mittelwert
            below: -750
          - condition: device
            type: is_off
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            entity_id: 4d3dbc964857562d65ca574ec6abcd84
            domain: switch
            for:
              hours: 0
              minutes: 20
              seconds: 0
        sequence:
          - type: turn_on
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            entity_id: 4d3dbc964857562d65ca574ec6abcd84
            domain: switch
          - alias: Benachrichtigung an iPhone Flo
            action: notify.mobile_app_taxus
            metadata: {}
            data:
              title: Pool
              message: >-
                Wärmepumpe AN • Wassertemperatur:
                {{states('sensor.pool_temperatur') | round(1)}} 
            enabled: true
        alias: Einschalten -> Stille
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_power_gleitender_mittelwert
            below: -400
          - condition: device
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: selected_option
            option: Stille
            for:
              hours: 0
              minutes: 5
              seconds: 0
          - condition: device
            type: is_on
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            entity_id: 4d3dbc964857562d65ca574ec6abcd84
            domain: switch
            for:
              hours: 0
              minutes: 5
              seconds: 0
        sequence:
          - device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: select_option
            option: Smart
        alias: Modus ändern Stille -> Smart
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_power_gleitender_mittelwert
            below: -400
          - condition: device
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: selected_option
            option: Smart
            for:
              hours: 0
              minutes: 5
              seconds: 0
          - condition: device
            type: is_on
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            entity_id: 4d3dbc964857562d65ca574ec6abcd84
            domain: switch
            for:
              hours: 0
              minutes: 5
              seconds: 0
        sequence:
          - device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: select_option
            option: Turbo
        alias: Modus ändern Smart -> Turbo
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_power_gleitender_mittelwert
            above: 400
          - condition: device
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: selected_option
            option: Turbo
            for:
              hours: 0
              minutes: 15
              seconds: 0
          - condition: device
            type: is_on
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            entity_id: 4d3dbc964857562d65ca574ec6abcd84
            domain: switch
            for:
              hours: 0
              minutes: 5
              seconds: 0
        sequence:
          - device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: select_option
            option: Smart
        alias: Modus ändern Turbo -> Smart
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_power_gleitender_mittelwert
            above: 400
          - condition: device
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: selected_option
            option: Smart
            for:
              hours: 0
              minutes: 15
              seconds: 0
          - condition: device
            type: is_on
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            entity_id: 4d3dbc964857562d65ca574ec6abcd84
            domain: switch
            for:
              hours: 0
              minutes: 5
              seconds: 0
        sequence:
          - device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: select_option
            option: Stille
        alias: Modus ändern Smart -> Stille
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_power_gleitender_mittelwert
            above: 500
          - condition: device
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            domain: select
            entity_id: 125b13a2ac5e633977fff86ce507f8b2
            type: selected_option
            option: Stille
            for:
              hours: 0
              minutes: 15
              seconds: 0
          - condition: device
            type: is_on
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            entity_id: 4d3dbc964857562d65ca574ec6abcd84
            domain: switch
            for:
              hours: 0
              minutes: 20
              seconds: 0
            enabled: true
        sequence:
          - type: turn_off
            device_id: b1ea52198ef7e55bef70f9060795e4ee
            entity_id: 4d3dbc964857562d65ca574ec6abcd84
            domain: switch
          - alias: Benachrichtigung an iPhone Flo
            action: notify.mobile_app_taxus
            metadata: {}
            data:
              title: Pool
              message: >-
                Wärmepumpe AUS • Wassertemperatur:
                {{states('sensor.pool_temperatur') | round(1)}} 
            enabled: true
        alias: Stille -> Ausschalten
mode: restart

Ich könnt dies als Grundlage für eure Automation nehmen. Allerdings müsst ihr dann noch die device_id, entity_id, … anpassen.

Die Pool Pumpe

Dann wollte ich meine Speck Badu Eco Soft Pumpe einfach steuern. Die Pumpe bringt die Möglichkeit über 4 potentialfreie Eingänge zu steuern. Es gibt zwar auch die Möglichkeit sich hierfür ein Modul von Speck zu kaufen und dann mit der App von Speck zu „programmieren“ das wollte ich aber nicht. Erstens ist die Einheit von Speck sehr teuer und dann weiß man auch nicht wie und ob man es in Home Assistant eingebunden bekommt. Da ich ESPHome sowieso schon im Einsatz hatte machte ich mich hier auf die Suche.

Einbinden in HA

Ein ESP32 4 Relais Board das man recht günstig (ca. 20,-€) auf Ali Express bekommt. Dieses Kann man dann in der HA ESPHome Integration recht einfach einbinden. (Link zum ESPHome Projekt mit AliExpress Link)


esphome:
  name: pool-pumpen-steuerung
  friendly_name: Pool-Pumpen-Steuerung

esp32:
  board: esp32dev

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "******"

ota:
  - platform: esphome
    password: "******"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "******"
    password: "******"

captive_portal:

# LED exposed as binary light
#output:
#  - platform: gpio
#    pin: GPIO23
#    id: output_led

#light:
#  - platform: binary
#    id: light_led
#    name: LED
#    output: output_led

# Four relay outputs, exposed as switches in Home Assistant
switch:
  - platform: gpio
    pin: GPIO32 #Relay_01
    name: "Pumpe_Stop"
    icon: "mdi:fan-off"
    id: pumpe_stop
    interlock: [pumpe_speed_1, pumpe_speed_2, pumpe_speed_3]
    interlock_wait_time: 1s
    on_turn_on:
    - delay: 1000ms
    - switch.turn_off: pumpe_stop
  - platform: gpio
    pin: GPIO33 # Relay_02
    name: "Pumpe_Drehzahl_1"
    icon: "mdi:fan-speed-1"
    id: pumpe_speed_1
    interlock: [pumpe_stop, pumpe_speed_2, pumpe_speed_3]
    interlock_wait_time: 1s
    on_turn_on:
    - delay: 1000ms
    - switch.turn_off: pumpe_speed_1
  - platform: gpio
    pin: GPIO25 #Relay_03
    name: "Pumpe_Drehzahl_2"
    icon: "mdi:fan-speed-2"
    id: pumpe_speed_2
    interlock: [pumpe_stop, pumpe_speed_1, pumpe_speed_3]
    interlock_wait_time: 1s
    on_turn_on:
    - delay: 1000ms
    - switch.turn_off: pumpe_speed_2
  - platform: gpio
    pin: GPIO26 #Relay_04
    name: "Pumpe_Drehzahl_3"
    icon: "mdi:fan-speed-3"
    id: pumpe_speed_3
    interlock: [pumpe_stop, pumpe_speed_1, pumpe_speed_2]
    interlock_wait_time: 1s
    on_turn_on:
    - delay: 1000ms
    - switch.turn_off: pumpe_speed_3

Hier kann man dann eine Automation über Zeit, Sonnenaufgang, o.ä. erstellen.

Fazit

Das ganze Projekt ist schon etwas Aufwand und nicht unbedingt für Home Assistant Anfänger geeignet. Aber es ist auch eine schöne Möglichkeit vom Anfänger zum Ambitionierten Home Assistant Nutzer aufzusteigen.
Am nervigsten fand ich tatsächlich die local Tuya IDs und Secrets heraus zu bekommen. Vor allem wenn man schon mal einen Tuya Account hatte und die „Subscription“ abgelaufen ist. Ist am Ende aber alles machbar ;-). Viel Spaß beim nachbauen. Thomas vielleicht machst du ja mal ein YouTube Video dazu :-).

Teile diese Heldentat

WhatsApp
Email
Facebook
LinkedIn

Kommentare

  1. Hey Florian,
    danke für deine HomeAssistant Einbindung via ESP an der Speck Badu Eco Soft Pumpe und deine Wärmepumpe mit Tuya! Das ist absolut top!
    Ich bin bei dir – Tuya ist nicht die schönste Lösung – aber wenigsten Tuya Local mit HACS von HomeAssistant und dem (wiederlichen) Entwickler Konto von Tuya, klappt das alles gut bis sehr gut.
    Ich betreibe das wie du, seit 2025 auch so.
    Tuya steuert meine Wärmepumpen – aktuell laufen quasie alle Poolsana Wärmepumpen mit Tuya – und bei der Speck Badu Eco Soft Pumpe habe ich etwas teuerer die kleinen Shellys zu Ansteuerung der 3-Stufen meiner Poolpume genommen. Dazu hhier ein Beitrag von mir https://youtu.be/auC6a-uXo3U
    Mein Plan ist es, meine HomeAssistant und Shelly Lösungen auf meinem YouTube Kanal zu zeigen.
    Gruß
    Thomas

    1. Hi Thomas,
      für mich gibt es bei deiner Shelly Lösung zwei Punkte die du überdenken solltest.
      – 4x 1Watt Stromverbrauch statt einmal -> Sind bei aktuellen Strompreisen von 40 Cent ca. 10 Euro mehr an Stromkosten bei 24/7 365 Tage
      – Du kannst die Ausgänge nicht gegeneinander sperren, was bei der ESP32-Lösung Software seitig geht. Auch nicht 100% safe aber die Pumpe tut bei doppel Schaltung ja einfach nix.