Farm @ Home Assistant
Dieser Artikel beschreibt die Steuerung der Erdbeerfarm mit Home Assistant. Die andere Seite, also die mit den Node Red Flows, läuft bisher ohne Probleme. Die folgenden MQTT-Topic werden von Node Red auf der Farmseite publiziert, bzw. erwarten Steuerbefehle:
farm/giessen/zeit
- Legt die Pumpdauer für die Bewässerung festfarm/reihe1/cmd
- Befehlstopic für Node Redfarm/reihe1/state
- meldet den Status von Node Red zurück an Home Assistant
Für die Reihe 2 bis 4 gibt es entsprechende cmd- und state-Topics.
MQTT Konfiguration
Die gesamte yaml-Konfiguration für die Erdbeerfarm ist ein eine seperate Datei ausgelagert und über ein Package eingebunden. Ich liste hier immer nur die Topic für die Reihe 1 auf. Die Topics für die Reihen 2 bis 4 sind entsprechend.
1mqtt:
2 sensor:
3 - name: "Erdbeerfarm Reihe 1 Status"
4 state_topic: "farm/reihe1/state"
5 icon: "mdi:sprinkler"
6
7 - name: "Erdbeerfarm Pumpe Status"
8 state_topic: "farm/pumpe/state"
9 icon: "mdi:water-pump"
10
11 - name: "Erdbeerfarm Pumpzeit"
12 state_topic: "farm/giessen/state"
13 icon: "mdi:water-pump"
14
15 switch:
16 - name: "Erdbeerfarm Reihe 1 cmd"
17 command_topic: "farm/reihe1/cmd"
18 state_topic: "farm/reihe1/state"
19 payload_on: "on"
20 payload_off: "off"
21 state_on: "on"
22 state_off: "off"
23 retain: true
Die beiden Topics farm/pumpe/state
und farm/giessen/state
werden von Node Red erzeugt. Sie liefern den Status der Pumpe (ein- oder ausgeschaltet) und die Gießzeit zurück an Home Assistant. Home Assistant zeigt diese Informationen zur Kontrolle auf dem Dashboard an.
Die MQTT-Switche sind mit der Payload on
bzw. off
konfiguriert. Außerdem wird der Schaltbefehlt mit dem Retain Flag publiziert.
Control Panel
Für die Bewässerungszeit gibt es einen Helfer bewässerungszeit
, der die Pumpenlaufzeit regelt. Der Helfer wird über eine Automation alle 30 Sekunden auf den MQTT-Topic farm/giessen/zeit
publiziert.
Die extra Anzeige der Pumpzeit, dient mir nur zur Kontrolle, ob der Wert in Node Red angekommen ist. Ich hatte dazu in den Konfigurationsflow (siehe Artikel) ein MQTT-Send-Node mit dem Topic farm/giessen/state
angehängt. Die Bewässerungszeit dreht quasi eine komplette Runde zur Erdbeerfarm und wieder zurück zu Home Assistant. Diese Kontrollfunktion ist nur vorrübergehend und daher nicht weiter im Konfigurationsflow dokumentiert.
Gieß-o-matic
Home Assistant triggert durch eine Automation die selbstständige Bewässerung jeder Reihe gemäß der eingestellten Bewässerungszeit. Ich bewässere entweder frühmorgens um 06:00 Uhr oder abends um 18:00 Uhr.
Für die Gieß-o-matic gibt es zwei Automationen und ein Script. Die Auslöse-Automation ist recht einfach:
06:00 / 18:00 Automation
1alias: Erdbeerfarm gießen 06:00
2description: ""
3mode: single
4triggers:
5 - at: "06:00:00"
6 trigger: time
7conditions: []
8actions:
9 - data: {}
10 action: script.erdbeeren_alle_reihen_giesen
Die 18:00 Uhr Automation ist bis auf die Uhrzeit identisch.
Reihen Script
Das folgende Script löst für jede Reihe, die gegossen werden soll, den Einschalter aus.
1alias: farm alle reihen giessen
2sequence:
3 - metadata: {}
4 data: {}
5 target:
6 entity_id: switch.erdbeerfarm_reihe_1_cmd
7 action: switch.turn_on
8 - delay:
9 hours: 0
10 minutes: 2
11 seconds: 0
12 milliseconds: 0
13 - metadata: {}
14 data: {}
15 target:
16 entity_id: switch.erdbeerfarm_reihe_2_cmd
17 action: switch.turn_on
18 - delay:
19 hours: 0
20 minutes: 2
21 seconds: 0
22 milliseconds: 0
23 - metadata: {}
24 data: {}
25 target:
26 entity_id: switch.erdbeerfarm_reihe_3_cmd
27 action: switch.turn_on
28 - delay:
29 hours: 0
30 minutes: 2
31 seconds: 0
32 milliseconds: 0
33 - metadata: {}
34 data: {}
35 target:
36 entity_id: switch.erdbeerfarm_reihe_4_cmd
37 action: switch.turn_on
38description: ""
39icon: mdi:fruit-cherries
Das Script pausiert zwischen den einzelnen Reihen für zwei Minuten. Das ist meine Sicherheitszeitspanne, die größer ist das die maximal einstellbare Gießzeit. Ich will damit sicherstellen, dass der Bewässerungsvorgang für eine Reihe abgeschlossen ist, bevor der für die nächste Reihe startet.
Ich habe jetzt eine Woche getestet und bisher traten keine Fehler beim Ablauf auf. Weitere Infos folgen…….