Kürzlich habe ich einen sehr günstigen Sensor in den weiten des Internets entdeckt, mit dem sich auf einfache Art und Weise die Bodenfeuchtigkeit von Pflanzen am Raspberry messen lässt. Nachdem das sofort bestellte Zehnerpack nach einigen Wochen aus Fernost bei mir eintraf, war ich erstaunt, wie einfach diese einzurichten sind. Dieser kurze Artikel beschreibt das Anschließen sowie das Auslesen dieser Sensoren.
In diesem Artikel verwendetes Zubehör
Einleitung
Der Fühler dieser Sensoren ist eigentlich nichts anderes, als ein günstiger Widerstandsmesser. Die mitgelieferte Logik liefert als Ausgabe wahlweise ein analoges oder digitales Signal am entsprechenden PIN. Wählt man den digitalen Ausgang, wie in diesem Artikel beschrieben, kann über ein Poti die Empfindlichkeit geregelt werden, wann der Feuchtigkeitswert eine 1 oder eine 0 zurückgibt. Es wird allerdings darüber berichtet, dass die Kontakte sehr leicht korrodieren. Aber für knapp über einen Euro für dieses Set wollte ich es gerne selbst ausprobieren.
Anschließen
Das Anschließen verläuft dank der mitgelieferten Jumperkabel sehr einfach. Den PIN „VCC“ versorgen wir mit 3,3V, GND mit GND der Himbeere und DO (Digital Out) verbinden wir mit einem freien GPIO-Port.
Auslesen auf dem Raspberry
Falls noch nicht geschehen, installieren wir der Einfachheit halber die Bibliothek „wiringPi„, was ich in diesem Beitrag ausführlich beschrieben habe. Anschließend definieren wir unseren GPIO-Port in der wiringPi-Zählweise als Eingangsport:
gpio mode 7 in
Dies können wir auch in der Datei „/etc/rc.local“ hinterlegen, so dass dieser Port direkt beim Systemstart als eingehender Port initialisiert wird.
Nun können wir den Messzustand des Sensors einlesen mit
gpio read 7
Eine „0“ bedeutet in unserem Fall, dass der Widerstand zwischen den Kontakten unendlich ist und es Zeit ist, die Pflanze zu gießen. Eine „1“ zeigt einen Stromfluss an, die Erde scheint also noch feucht genug zu sein. Die Empfindlichkeit kann, wie bereits erwähnt, auch noch angepasst werden.
Integration in OpenHAB
Script auf dem OpenHAB-Server
Zunächst erstellen wir ein neues Script, welches mittels SSH eine Verbindung zum jeweiligen Raspberry aufbaut und den angegeben GPIO-Port ausliest. Dieses Script könnte beispielsweise so aussehen:
#!/bin/bash
#Pruefen, ob Suffix angegeben
if [ -z "$1" -o -z "$2" ] ;then
echo "So geht das nicht"
exit 1;
fi
#Prüfen, ob Host erreichbar
ping -c 1 192.168.1.$1 &> /dev/null
if [ "$?" != 0 ] ; then
echo "Offline"
exit 1;
fi
# Wert des Sensors auslesen
INPUT=$(/usr/bin/ssh -i /scripts/.ssh/id_rsa root@192.168.1.$1 "/usr/local/bin/gpio read $2")
# Wert ausgeben
echo $INPUT
Natürlich erlauben wir auch diesmal die Ausführung des neuen Scripts mit
chmod +x /scripts/pflanzen.sh
und übergeben den Besitz an den Nutzer „openhab„:
chown openhab: /scripts/pflanzen.sh
Items definieren
Nun definieren wir für jeden einzelnen Feuchtigkeitssensor ein seperates Item:
Number PFLANZE_1 "Pflanze 1 [%s]" <plant> { exec="<[/scripts/pflanzen.sh 239 7:180000:REGEX((.*?))]" }
Das Icon „plant.png“ habe ich mir übrigens wieder über die Bildersuche einer bekannten Suchmaschine besorgt und in der Größe 32 * 32 Pixel in den Ordner „/usr/share/openhab/webapps/images/“ gespeichert.
Einbindung in die Sitemap
Die Einbindung in die Sitemap ist ebenfalls mit einer Zeile pro Sensor getan:
Text item=PFLANZE_1 valuecolor=[1="red",0="green"] label="Pflanze 1 [MAP(pflanzen.map):%s]"
Wer gerne auf der Hauptseite gewarnt werden möchte, wenn eine Pflanze Wasser benötigt, könnte an entsprechender Stelle eine solche Zeile einbinden:
Text item=PFLANZE_1 valuecolor=[1="red",0="green"] label="Pflanze 1 [MAP(pflanzen.map):%s]" visibility=[PFLANZE_1==1]
Transform-Datei erstellen
Auf unserer Sitemap hätten wir gerne sprechende Zustände, da ich persönlich mit 1 und 0 wenig anfangen kann. Daher erstellen wir im Verzeichnis „/etc/openhab/configurations/transform“ die neue Datei „pflanzen.map“ mit folgendem Inhalt:
1=zu trocken
0=optimal
undefined=unbekannt
-=unbekannt
Und schon erscheinen unsere Pflanzen in der OpenHAB-Sitemap:
Verwandte Beiträge
-
-
Summer am Raspberry PiFür ein neues Projekt wollte ich bei bestimmten Interaktionen mit dem Raspberry eine akustische Rückmeldung…
-
LEDs am RaspberryDas Erste, was wohl fast jeder mit seinen GPIO-Ports anstellt, ist eine LED an diesen…
Pflanzenkontrolle mit dem Raspberry Pi
Kürzlich habe ich einen sehr günstigen Sensor in den weiten des Internets entdeckt, mit dem sich auf einfache Art und Weise die Bodenfeuchtigkeit von Pflanzen am Raspberry messen lässt. Nachdem das sofort bestellte Zehnerpack nach einigen Wochen aus Fernost bei mir eintraf, war ich erstaunt, wie einfach diese einzurichten sind. Dieser kurze Artikel beschreibt das Anschließen sowie das Auslesen dieser Sensoren.
Einleitung
Der Fühler dieser Sensoren ist eigentlich nichts anderes, als ein günstiger Widerstandsmesser. Die mitgelieferte Logik liefert als Ausgabe wahlweise ein analoges oder digitales Signal am entsprechenden PIN. Wählt man den digitalen Ausgang, wie in diesem Artikel beschrieben, kann über ein Poti die Empfindlichkeit geregelt werden, wann der Feuchtigkeitswert eine 1 oder eine 0 zurückgibt. Es wird allerdings darüber berichtet, dass die Kontakte sehr leicht korrodieren. Aber für knapp über einen Euro für dieses Set wollte ich es gerne selbst ausprobieren.
Anschließen
Das Anschließen verläuft dank der mitgelieferten Jumperkabel sehr einfach. Den PIN „VCC“ versorgen wir mit 3,3V, GND mit GND der Himbeere und DO (Digital Out) verbinden wir mit einem freien GPIO-Port.
Auslesen auf dem Raspberry
Falls noch nicht geschehen, installieren wir der Einfachheit halber die Bibliothek „wiringPi„, was ich in diesem Beitrag ausführlich beschrieben habe. Anschließend definieren wir unseren GPIO-Port in der wiringPi-Zählweise als Eingangsport:
Dies können wir auch in der Datei „/etc/rc.local“ hinterlegen, so dass dieser Port direkt beim Systemstart als eingehender Port initialisiert wird.
Nun können wir den Messzustand des Sensors einlesen mit
Eine „0“ bedeutet in unserem Fall, dass der Widerstand zwischen den Kontakten unendlich ist und es Zeit ist, die Pflanze zu gießen. Eine „1“ zeigt einen Stromfluss an, die Erde scheint also noch feucht genug zu sein. Die Empfindlichkeit kann, wie bereits erwähnt, auch noch angepasst werden.
Integration in OpenHAB
Script auf dem OpenHAB-Server
Zunächst erstellen wir ein neues Script, welches mittels SSH eine Verbindung zum jeweiligen Raspberry aufbaut und den angegeben GPIO-Port ausliest. Dieses Script könnte beispielsweise so aussehen:
Natürlich erlauben wir auch diesmal die Ausführung des neuen Scripts mit
und übergeben den Besitz an den Nutzer „openhab„:
Items definieren
Nun definieren wir für jeden einzelnen Feuchtigkeitssensor ein seperates Item:
Das Icon „plant.png“ habe ich mir übrigens wieder über die Bildersuche einer bekannten Suchmaschine besorgt und in der Größe 32 * 32 Pixel in den Ordner „/usr/share/openhab/webapps/images/“ gespeichert.
Einbindung in die Sitemap
Die Einbindung in die Sitemap ist ebenfalls mit einer Zeile pro Sensor getan:
Wer gerne auf der Hauptseite gewarnt werden möchte, wenn eine Pflanze Wasser benötigt, könnte an entsprechender Stelle eine solche Zeile einbinden:
Transform-Datei erstellen
Auf unserer Sitemap hätten wir gerne sprechende Zustände, da ich persönlich mit 1 und 0 wenig anfangen kann. Daher erstellen wir im Verzeichnis „/etc/openhab/configurations/transform“ die neue Datei „pflanzen.map“ mit folgendem Inhalt:
Und schon erscheinen unsere Pflanzen in der OpenHAB-Sitemap:
Verwandte Beiträge
Als ich mich für ein neues Projekt auf die Suche nach der Pin-Belegung der einzelnen…
Es existieren mehrere Möglichkeiten, die GPIO-Ports eines Raspberry Pi zu steuern oder deren Stati auszulesen. Den…
Für ein neues Projekt wollte ich bei bestimmten Interaktionen mit dem Raspberry eine akustische Rückmeldung…
In einem früheren Beitrag habe ich darüber berichtet, wie man den Temperatur- und Luftfeuchtigkeitssensor DHT22…
Das Erste, was wohl fast jeder mit seinen GPIO-Ports anstellt, ist eine LED an diesen…