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.
- Shelly Pro 3EM oder ähnliches Produkt von Shelly
- Stromleser.tasmota mit freigehaltenem Digitalen Stromzähler
- Volkszähler auf einem Raspberry Pi Zero oder ähnlichem (sehr technisch und am aufwendigsten)
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 :-).
Kommentare
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
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.