Ich habe auch darüber nachgedacht etwas selbst zu bauen, aber dann bin ich über den RainBird ARC6 gestolpert. Der kann bis zu 6 Ventile (24V) ansteuern und lässt sich über Wifi in HomeAssistant integrieren. Man darf nur nicht die aktuellste FW aufspielen. Abgesehen davon funktioniert es wunderbar und hat €119 bei Hornbach gekostet.
Bei mir funktioniert die Bewässerung inzwischen auch grundsätzlich.
Einen Punkt würde ich gern noch schöner regeln:
Ich benutze einen Shelly Plus Plug S, um die Gartenpumpe ein- und auszuschalten.
Der lässt sich über Home Assistant direkt auch problemlos ansteuern.
Allerdings mache ich das im Moment in der Automatisierung getrennt von der Ansteuerung des Bewässerungscomputers und mit einer festen Zeit (Pumpe einschalten, “garten sprinkler” einschalten, Delay von 1h, Pumpe wieder ausschalten).
Aber die “sprinkler” Komponente in ESPHome hat ja eine Pumpensteuerung integriert.
Kann ich dem ESPHome beibringen, als Pumpenschalter keinen GPIO Pin anzusteuern, sondern einen Schalter im Home Assistant?
Ich vermute mal, das geht mit dem “home assistant switch”, aber ganz klar ist mir die Funktionsweise davon noch nicht.
Meine Pumpe hat zwar einen Druckschalter und schaltet sich selbst ab, wenn kein Wasser abgenommen wird, aber ich finde die zusätzliche Sicherheit durch Abschalten der Pumpe bei Nichtgebrauch schon ganz angenehm…
EDIT: Ich hab’s dann einfach mal probiert - war einfacher als gedacht ![]()
Meine Konfiguration stell ich zur allgemeinen Information gern später noch rein.
So, Hier mein ESPHome Code mit einem “externen” Pumpenschalter:
esphome:
name: bewaesserungscomputer
friendly_name: Bewaesserungscomputer
esp32:
board: esp32dev
framework:
type: esp-idf
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "XXXXXXX"
ota:
- platform: esphome
password: "XXXXXXX"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Bewaesserungscomputer"
password: "XXXXXXX"
captive_portal:
# Definition der Schalter:
switch:
- platform: gpio
name: "Relay 1"
pin: 12
# Stellt sicher, dass die Relais beim Neustart des ESPs ausgeschaltet sind
restore_mode: ALWAYS_OFF
id: rasen_hinten_sprinkler_valve
inverted: True
# Schaltet sicherheitshalber den GPIO-Switch nach 60 Minuten aus. Im Bedarfsfall die Dauer anpassen ;)
on_turn_on:
- delay: 3600s
- switch.turn_off: rasen_hinten_sprinkler_valve
- platform: gpio
name: "Relay 2"
pin: 14
restore_mode: ALWAYS_OFF
id: blumenbeet_sprinkler_valve
inverted: True
on_turn_on:
- delay: 7800s
- switch.turn_off: blumenbeet_sprinkler_valve
- platform: gpio
name: "Relay 3"
pin: 27
restore_mode: ALWAYS_OFF
id: hausnah_sprinkler_valve
inverted: True
on_turn_on:
- delay: 3600s
- switch.turn_off: hausnah_sprinkler_valve
####### Hier kommt der externe Schalter (Shelly Plus Plug), der über Home Assistant geschaltet wird #####
- platform: homeassistant
restore_mode: ALWAYS_OFF
id: pumpenschalter
entity_id: switch.shelly_3_garten_switch_0 ##der Name der geschalteten Entität im HA##
on_turn_on:
- delay: 15000s
- switch.turn_off: pumpenschalter
sensor:
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
# der Teil der einen Bewässerungscomputer aus dem Ganzen macht
sprinkler:
- id: bewaesserung_ctrlr
main_switch: "Garten Bewässerung"
auto_advance_switch: "Garten Garten Bewässerung Auto Advance"
reverse_switch: "Garten Garten Bewässerung Reverse"
multiplier_number: "Garten Garten Bewässerung Multiplier"
repeat_number: "Garten Garten Bewässerung Repeat"
valve_overlap: 2s
pump_start_pump_delay: 2s
pump_stop_valve_delay: 2s
valves:
- valve_switch: "Rasen hinten"
enable_switch: "Aktiviere Rasen hinten"
run_duration_number: "Rasen hinten Laufzeit"
valve_switch_id: rasen_hinten_sprinkler_valve
pump_switch_id: pumpenschalter ## <- hierdurch wir die Pumpe zusätzlich aktiviert ##
- valve_switch: "Blumenbeet"
enable_switch: "Aktiviere Blumenbeet"
run_duration_number: "Blumenbeet Laufzeit"
valve_switch_id: blumenbeet_sprinkler_valve
pump_switch_id: pumpenschalter
- valve_switch: "Hausnah"
enable_switch: "Aktiviere Hausnah"
run_duration_number: "Hausnah Laufzeit"
valve_switch_id: hausnah_sprinkler_valve
pump_switch_id: pumpenschalter
button:
- platform: restart
name: "Garten Garten Bewässerung neu starten"
Das funktioniert jetzt problemlos.
Die Pumpe schaltet 2s nach dem Schalten der Ventile ein bzw. 2s vor dem Ausschalten aus, um Druckstöße zu vermeiden.
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
Dazu habe ich dann noch eine Automation, die einmal pro Woche alle Bereiche bewässert, wie schon weiter oben in einem Post gezeigt.
Da der Rasen nur einmal pro Woche gesprengt werden soll, der Tropfschlauch im Blumenbeet aber ggf. jeden Tag, habe ich noch eine zweite Automation, die täglich nur das Blumenbeet bewässert, wenn Bedarf besteht:
alias: "Irrigation: Blumenbeet (daily)"
description: ""
triggers:
- trigger: time
at: "13:00:00"
conditions:
- alias: " Beet Hinten Daily Adjusted Run Time is above 300"
condition: numeric_state
entity_id: sensor.smart_irrigation_beet_hinten
above: 300
actions:
- data:
value: "{{states('sensor.smart_irrigation_beet_hinten')}}"
target:
entity_id: number.bewaesserungscomputer_blumenbeet_laufzeit
action: number.set_value
- delay:
hours: 0
minutes: 0
seconds: 10
milliseconds: 0
enabled: true
- data: {}
enabled: true
action: homeassistant.turn_on
target:
entity_id: switch.bewaesserungscomputer_blumenbeet
## Zur Sicherheit Abschaltung der Pumpe nach 3 Stunden##
- delay:
hours: 3
minutes: 0
seconds: 0
milliseconds: 0
enabled: true
- type: turn_off
device_id: ae0ace1f80baef26cedf32d2a3b13cdf
entity_id: a245d9da10437ec151acba8aa8718204
domain: switch
##---
## "reset bucket" nur für das Blumenbeet durchführen - für die beiden Rasen soll weiter gesammelt werden ##
- action: smart_irrigation.reset_bucket
data: {}
target:
entity_id:
- sensor.smart_irrigation_beet_hinten
mode: single
Hallo zusammen!
Mein letztes Jahr selbst gebauter Bewässerungscomputer mit Esp32 und Sprinkler-Controller funktioniert sehr zuverlässig. Für meine Anzeige auf dem Dashboard von Homeassistant hätte ich gerne eine Timeranzeige für die verbleibende Restzeitlaufzeit der Bewässerung.
Ich würde mir gerne einen Timer bauen, der nur die Zeiten der aktiven Ventile zusammen addiert, und dann als Restlaufzeit anzeigt.
In HA sind ja folgende Entitäten vom Bewässerungscomputer schon vorhanden:
“number.bewaesserungscomputer_laufzeit_v1” bis …v7, zum wählen der Ventillaufzeit “switch.bewaesserungscomputer_v1_aktivieren” bis ..v7, zum aktivieren oder deaktivieren des Ventils
für die einzelnen Ventile habe ich mir schon Helfer und Timeranzeigen für mein Dashboard gebaut, und starte sie dann in einer Automation wenn der Bewässerungsvorgang startet. Das funktioniert gut, und sieht dann z.B. so aus:
target:
entity_id: timer.laufzeit_v7
data_template:
duration: "{{ states('number.bewaesserungscomputer_laufzeit_v7') | int * 60 }}"
action: timer.start
für die gesamte Restlaufzeit sieht es bisher so aus:
target:
entity_id: timer.laufzeit_gesamt
data_template:
duration: >-
{{ states('number.bewaesserungscomputer_laufzeit_v1') | int * 60 +
states('number.bewaesserungscomputer_laufzeit_v2') | int * 60 +
states('number.bewaesserungscomputer_laufzeit_v3') | int * 60 +
states('number.bewaesserungscomputer_laufzeit_v4') | int * 60 +
states('number.bewaesserungscomputer_laufzeit_v5') | int * 60 +
states('number.bewaesserungscomputer_laufzeit_v6') | int * 60 +
states('number.bewaesserungscomputer_laufzeit_v7') | int * 60}}
action: timer.start
dieses berücksichtig allerdings überhaupt nicht, ob die Ventile aktiviert sind oder nicht. Also ist die Anzeige nicht korrekt.
Da ich kein Programmierer bin ist meine Frage natürlich, wie müsste ein Template mit Abfragen ‘Ventil aktiv?’ wenn ja eingestellte Zeit mit den anderen aktivierten Ventilen addieren, aussehen?
hat jemand vielleicht einen Tipp?
Moin zusammen!
Ich habe die Lösung inzwischen mit Hilfe von ChatGPT heraus bekommen.
Wen es interessiert, es sieht folgendermaßen aus:
target:
entity_id: timer.laufzeit_gesamt
data_template:
duration: |-
{{
(states('number.bewaesserungscomputer_laufzeit_v1') | int(0) * 60
if is_state('switch.bewaesserungscomputer_v1_aktivieren', 'on') else 0)
+
(states('number.bewaesserungscomputer_laufzeit_v2') | int(0) * 60
if is_state('switch.bewaesserungscomputer_v2_aktivieren', 'on') else 0)
+
(states('number.bewaesserungscomputer_laufzeit_v3') | int(0) * 60
if is_state('switch.bewaesserungscomputer_v3_aktivieren', 'on') else 0)
+
(states('number.bewaesserungscomputer_laufzeit_v4') | int(0) * 60
if is_state('switch.bewaesserungscomputer_v4_aktivieren', 'on') else 0)
+
(states('number.bewaesserungscomputer_laufzeit_v5') | int(0) * 60
if is_state('switch.bewaesserungscomputer_v5_aktivieren', 'on') else 0)
+
(states('number.bewaesserungscomputer_laufzeit_v6') | int(0) * 60
if is_state('switch.bewaesserungscomputer_v6_aktivieren', 'on') else 0)
+
(states('number.bewaesserungscomputer_laufzeit_v7') | int(0) * 60
if is_state('switch.bewaesserungscomputer_v7_aktivieren', 'on') else 0)
}}
action: timer.start
Hallo Zusammen,
Ich habe eine Frage zur Logik von Simons Schaltung:
Die Schaltung liegt bei mir im Keller unter Strom, also alles Trockenübung und ich meine, am Anfang, vor einer Zeit, als ich die Schaltung nach Simons-Anleitung zusammengebaut habe, war das Verhalten normal. Jetzt sieht es so aus:
Der rot umrandete Schalter ist der Hauptschalter, womit man den ganzen Computer z.B. für den Winter ausschalten kann.
Im Moment ist bei mir im Bild so eine Ruhephase:
Wenn ich jedoch den Schalter betätige, werden alle Zonen scharfgeschaltet (was ja auch OK ist) aber zugleich wird die Berenung Zone 1 Eingeschaltet:
Stoppe ich die Beregnung der Zone durch den Schalter “Rasen” geht somit auch der Hauptschalter aus, die Scharfschaltung der Zonen bleib an, was imho keinen Sinn macht:
Ich meine, früher war das Verhalten anderes: Haupschalter an: alle Zonnen scharfgeschaltet, aber ohne dass eine Zone gleich angeht.
Hier ist der Code:
switch:
- platform: gpio
name: "Relay 1"
pin: D1
# Stellt sicher, dass die Relais beim neustart des ESPs ausgeschaltet sind
restore_mode: ALWAYS_OFF
id: rasen_sprinkler_valve
# Schaltet sicherheitshalber den GPIO-Switch nach 10 Minuten aus. Im Bearfsfall die Dauer anpassen ;)
on_turn_on:
- delay: 600s
- switch.turn_off: rasen_sprinkler_valve
- platform: gpio
name: "Relay 2"
pin: D2
restore_mode: ALWAYS_OFF
id: blumenbeete_tropfrohr_valve
on_turn_on:
- delay: 600s
- switch.turn_off: blumenbeete_tropfrohr_valve
- platform: gpio
name: "Relay 3"
pin: D3
restore_mode: ALWAYS_OFF
id: hecke_tropfrohr_valve
on_turn_on:
- delay: 600s
- switch.turn_off: hecke_tropfrohr_valve
- platform: gpio
name: "Relay 4"
pin: D6
restore_mode: ALWAYS_OFF
id: gemuese_tropfrohr_valve
on_turn_on:
- delay: 600s
- switch.turn_off: gemuese_tropfrohr_valve
- platform: gpio
name: "Relay 5"
pin: D5
restore_mode: ALWAYS_OFF
id: terasse_sprinkler_valve
on_turn_on:
- delay: 600s
- switch.turn_off: terasse_sprinkler_valve
sensor:
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
sprinkler:
- id: garden_bewaesserung_ctrlr
main_switch: "Garten Bewaesserung"
auto_advance_switch: "Garten Bewaesserung Auto Advance"
reverse_switch: "Garten Bewaesserung Reverse"
multiplier_number: "Garten Bewaesserung Multiplier"
repeat_number: "Garten Bewaesserung Repeat"
valve_overlap: 5s
valves:
- valve_switch: "Rasen"
enable_switch: "Aktiviere Rasen"
run_duration_number: "Rasen Laufzeit"
valve_switch_id: rasen_sprinkler_valve
- valve_switch: "Blumenbeete"
enable_switch: "Aktiviere Blumenbeete"
run_duration_number: "Blumenbeete Laufzeit"
valve_switch_id: blumenbeete_tropfrohr_valve
- valve_switch: "Hecke"
enable_switch: "Aktiviere Hecke"
run_duration_number: "Hecke Laufzeit"
valve_switch_id: hecke_tropfrohr_valve
- valve_switch: "Gemüse"
enable_switch: "Aktiviere Gemüse"
run_duration_number: "Gemüse Laufzeit"
valve_switch_id: gemuese_tropfrohr_valve
- valve_switch: "Terrasse"
enable_switch: "Aktiviere Terrasse"
run_duration_number: "Terrassen Laufzeit"
valve_switch_id: terasse_sprinkler_valve
button:
- platform: restart
name: "Garten Bewaesserung neu starten"
Wie verhält sich das bei Euch, und wenn andres, ob Ihr im Code irgendwo einen Fehler sieht?
Danke Euch.
VG
Alex
Der Code sieht im ersten Moment korrekt aus.
Hast du evtl einen Fehler im Dashboard?
Im 2. Bild ist das Ventil gelb dargestellt, der Verlaufsbalken bleibt aber grau.
Wenn da irgendwelche Zuordnungen nicht passen, dann kann es zu solchen unplausiblen Verhalten kommen.
Hallo, der Code sieht eigentlich korrekt aus.
Ist der Schalter auf dem Dashboard die Entität “Garten Bewaesserung” und somit der “main_switch” der Sprinklerintegration? Dann wäre das verhalten normal, der startet dann nämlich den kompletten Sprinklerdurchlauf, das heißt nacheinander laufen alle aktivierten Ventile.
Gurumir hat recht, die Timeranzeige im zweiten Bild läuft nicht.
Das gucke ich mir an.
Meint ihr, dass es nirmal ist, wenn Haupt Schalter “an” ist , dass alle Kreise nacheinander laufen?
Ich hätte erwartet, dass dieser Schalter eine Art Sicherungsautomat im Zählerschrank ist.
Wenn er An ist, läuft der Strom zum Zimmerschalter (Zonnenschalter), aber nicht darüber hinaus, wenn selbiger Aus ist.
Für die Winterperiode würde ich ihn ausschalten und somit die fanze Steurung larm legen.
So hatte ich seine Funktion aus dem Video.
Dem ist es aber scheinbar nicht so.
Dann müsstest Du dem Bewässerungscomputer den Strom abschalten.
Ich habe auch so ein selbstgebauten Bewässerungscomputer, und einen Shelly in der Steckdose davor. Dann kann man den Computer und das 24V Netzteil für die Ventile zusammen an/aus schalten.
Ich muss mir Simons Video noch mal anschauen….
Nachtrag:
Simon hat die Funktion genau so beschrieben wie ich berichtet hatte.
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
Danke Dir, ich kam noch nicht dazu. Also bin ich beruhigt. Jetzt nur noch die Laufzeit im Dashboard prüfen.
BTW. Nutzt Du evtl.. die Smart Irrigation-Integration für die Laufzeit-Berechnung?
EDIT: Den Quelltext hin und her geprüft. Der Verlauf scheint doch mitzulaufen, nur die Einschaltdauer war egmessen am 22Studen Zeitfenster zu kurz:
Nein, die Smart Irrigation-Integration benutze ich nicht.
Der Sprinklercontroller läuft ja nach dem Start autark auf dem Esphome Rechner ab, so wie Du es vorher eingestellt hast. Das funktioniert übrigens sehr zuverlässig!
Eine Rückmeldung der Laufzeitt-Timer an HA erfolgt meines Wissen nicht so wie man es sich denkt. Könnte man zwar einrichten, aber dann würde sekündlich eine Übermittlung stattfinden. Das wollte ich nicht, deswegen habe ich mir Timer-Helfer und eine Automation in HA angelegt. Diese übernehmen jeweils den eingestellten Wert und es wird dann mit einschalten der einzelnen Ventile runtergezählt.
Also getrennt vom Sprinklercontroller eigene Timer in HA.
Ich weiß nicht, ob man das auch einfacher machen könnte, aber es funktioniert!
(das passt dann zwar nicht 100% mit dem Timer des Sprinklercontrollers überein, aber da kann man drüber hinwegsehen wenn man nur die noch verbleibende Laufzeit sehen will)



