Automatische Gartenbewässerung ist natürlich auch ein Top Thema in der smarten Welt. Diesen Sommer erstmalig in Betrieb genommen bin ich schon ganz zufrieden, obwohl ich nächste Jahr einige Änderungen vornehmen werde. Trotzdem werde ich Euch hier mal mein Projekt vorstellen. Neben der eigentlichen Steuerung werden aber noch weitere Basics angerissen, nämlich Timer, wie kann ich Relais schalten, wenn mir die Pins ausgehen und wie steure ich ein LCD Display am ESP an.
Da ich meinen kleinen Reihenhausgarten sowieso umgestalten wollte habe ich mir aus China Bewässerungsschläuche sowie Magnetventile besorgt. und kreuz und quer im Garten die Schläuche verbuddelt. alle 70cm kommt mittels T-Stück eine Düse raus. Weiterhin gibt es noch zwei große Sprenger.
Gespeist werden die Düsen durch ein Hauswasserwerk welches das Wasser aus der Regenwasser Zisterne zieht.
(siehe auch die Füllstandsmessung zum Thema)
Zum Betrieb wird nämlich ordentlich Druck benötigt sonst tröpfeln die Düsen nur und sprühen nicht.
Relais Steuerung
Wie man erahnen kann benötigen wir einen ganzen Sack voll Relais um die ganzen Ventile und Pumpen zu steuern. Irgendwann gehen uns aber die Pins am ESP aus. Aber auch dafür gibt es eine Lösung, nämlich der Port Extender
PCF8574. Hier nutzen wir nämlich den I2C Bus um weitere Schnittstellen zu bekommen.
Die Module kann man sogar wunderbar in Reihe schalten, denn jedes Modul bekommt eine eigene Busadresse.
In ESPHome sieht das dann so aus :
i2c:
sda: D2
scl: D1
pcf8574:
- id: 'pcf8574_hub'
address: 0x20
pcf8575: False
- platform: gpio
name: "Garten_Relais_1"
id: garten_relais_1
pin:
pcf8574: pcf8574_hub
# Use pin number 0
number: 0
# One of INPUT, INPUT_PULLUP or OUTPUT
mode: OUTPUT
inverted: true
- platform: gpio
name: "Garten_Relais_2"
id: garten_relais_2
pin:
pcf8574: pcf8574_hub
# Use pin number 1
number: 1
# One of INPUT, INPUT_PULLUP or OUTPUT
mode: OUTPUT
inverted: true
...usw
LCD Display
kurz noch etwas zum LCD Display. dieses ist an einen ESP mit externer Antenne angeschlossen. Der Blaue Schalter schaltet die Backpanel Beleuchtung ein. Mit dem Grünen Taster kann ich die Bewässerung manuell schalten.
Auf dem Display wird aktuell nur der Wasserstand der Zisterne angezeigt. Aber ich zeige kurz wie die Ansteuerung prinzipiell funktioniert. Das Display wird auch über I2C Bus angesteuert. Die Besonderheit ist, dass die Füllstandssensoren an einem anderen ESP hängen. so holen wir uns also die Inforamtionen vom HA Server.
i2c:
sda: D2
scl: D1
sensor:
- platform: homeassistant
name: "Tank From Home Assistant"
entity_id: sensor.tank_level
id: tank
display:
- platform: lcd_pcf8574
dimensions: 18x4
address: 0x27
lambda: |-
it.printf("Wasserstand: %8.0f", id(tank).state);
Bewässerungslogik
momentan ist meine Bewässerung eher ein manueller Prozess. Später sollen natürlich Dinge wie Bodenfeuchtigkeit und Regen Einfluss auf die Steuerung haben.
- alias: Timer Duesen
id: 'Timerstart_duesen'
# Timer is start wenn Bewässerung eingeschaltet
trigger:
platform: state
entity_id: input_boolean.man_duesen
to: 'on'
action:
- service: timer.start
entity_id: timer.duesen
- service: switch.turn_on
entity_id: switch.pumpe_bewasserung
- delay: 00:00:05
- service: switch.turn_on
entity_id: switch.dusen
- alias: Timerstop
id: 'Timerstop_duesen'
trigger:
platform: event
event_type: timer.finished
event_data:
entity_id: timer.duesen
action:
- service: switch.turn_off
entity_id: switch.dusen
- service: switch.turn_off
entity_id: switch.pumpe_bewasserung
- service: input_boolean.turn_off
data:
entity_id: input_boolean.man_duesen