xfer2([1, (8+channel)<<4, 0])
data = ((adc[1]&3) << 8) + adc[2]
return data
while True:
print("Feuchtigkeit: "+str(analogEingang(1)))
(0. 2)
Das Programm funktioniert ähnlich wie der Photowiderstand. Ein analoger Wert wird ausgelesen und wiedergegeben. Auch hier können die Messwerte sich unterscheiden. Raspberry pi bodenfeuchtigkeitssensor 2. Bei einer vertrockneten/sehr trockenen Pflanze kommen wir auf einen Wert von über 900, während wir bei unserer gut gewässerten Topfpflanze einen Wert von ca. 400 messen können. Diese Wert sind natürlich von Pflanze zu Pflanze unterschiedlich.
- Raspberry pi bodenfeuchtigkeitssensor 7
- Raspberry pi bodenfeuchtigkeitssensor 1
- Raspberry pi bodenfeuchtigkeitssensor 2
- Raspberry pi bodenfeuchtigkeitssensor 6
Raspberry Pi Bodenfeuchtigkeitssensor 7
Messung fehlgeschlagen. Nächste Messung in 3 Sec. " z=z+1
sleep(3)
else:
print "Bodenfeuchtigkeit: ", messwert, "%"
sensorname = "R"+str(i[1])+"BF"+str(i[2])
cursor. execute("select wert from log where datum='%s' and sensor='%s' order by zeit desc"% (tag, sensorname))
wert=cursor. fetchone()
if not wert or wert[0]! = messwert:
cursor. Bodenfeuchtigkeit mit Raspberry Pi. execute("insert into log(datum, zeit, sensor, wert) values('%s', '%s', '%s', '%s')"% (tag, zeit, sensorname, messwert))
break
cursor. execute("SELECT COUNT(*) FROM log")
anzahl = cursor. fetchone()
print " "
print "%s Zeilen in Tabelle log"% anzahl[0]
()
Das Script kann von Hand ausgeführt werden und gibt die Daten als Text aus oder per Cronjob und schreit die Daten in die Datenbank. Allerdings erst wenn sie die Werte verändert haben. Zum automatischen ausführen als Cronjob, zB alle 20 Minuten: crontab -e
*/20 * * * * /usr/bin/python /home/pi/grow/
Raspberry Pi Bodenfeuchtigkeitssensor 1
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. Raspberry pi bodenfeuchtigkeitssensor 1. $1 &> /dev/null
if [ "$? "! = 0]; then
echo "Offline"
# Wert des Sensors auslesen
INPUT=$(/usr/bin/ssh -i /scripts/ root@192. $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/
und übergeben den Besitz an den Nutzer " openhab ":
chown openhab: /scripts/
Items definieren
Nun definieren wir für jeden einzelnen Feuchtigkeitssensor ein seperates Item:
Number PFLANZE_1 "Pflanze 1 [%s]" { exec="<[/scripts/ 239 7:180000:REGEX((. *? ))]"} Das Icon " " 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.
Raspberry Pi Bodenfeuchtigkeitssensor 2
Das ist für die GPIOs des Raspberry zu viel. Die vertragen max. 3, 3V. Die können dabei drauf gehen - also genau genommen der ganze Raspberry. Für die notwendigen Infos brauchst Du die genaue Type und zugehöriges Datenblatt bzw. eine Bedienungsanleitung dieser Schaltung. #7
ja? ich habe es so angeschlossen wie es im mitgelieferten Datenblatt steht.. wie soll ich es denn sonst machen? lg ivan
#8
Hallo, ohne den Sensor zu kennen, kann man Dir nur Allgemeinheiten bezüglich Raspi sagen. Schicke bitte einen Link zum Sensor (das ist das Ketten-Symbol im schwarzen Balken) Schönen Gruß, kle
#9
das ist der Sensor den ich gekauft habe und benutze os=2&_sid=488096755&_ss=r im Anhang ist noch die Beschreibung lg Ivan
#10
Input 5V an 3. 3V GND an GND DO -- an einen freien GPIO, der noch nicht zerstört ist. Raspberry Pi: Temperatur und Luftfeuchtigkeitssensor DHT22. AO -- nicht verwenden
#11
SeiberIvan: Stimmt, die Anleitung stimmt mit Deinem Sensor überein. Auch wird D0 verwendet - also der mit dem einstellbaren Schwellwert. ABER: Der DO schaltet höchstwahrscheinlich auf die Versorgungsspannung - und bei dem Anschluss laut Datenblatt sind dies 5V.
Raspberry Pi Bodenfeuchtigkeitssensor 6
Zum Messen der Bodenfeuchtigkeit benutzen wir den kapazitiven Bodenfeuchtesensor VH400. Versuche mit günstigeren Sensoren fürten sehr schnell zur Auflösung der selbigen. Der VH400 ist ziemlich teuer, aber unterliegt keiner Korrosion und ist sehr langlebig. Der Sensor liefert einen Strom von 0-3 Volt und muss an einen Analog/Digital Wandler angeschlossen werden. Das Script zum messen und speichern:
/grow/
# -*- coding: UTF-8 -*-
import spidev
import MySQLdb
import time
from time import *
#spi vorbereiten (channel 0)
spi = ()
(0, 0)
# aktuelle, lokale Zeit als Tupel
lt = localtime()
# Entpacken des Tupels, Datum
jahr, monat, tag, stunde, minute, sekunde = lt[0:6]
tag = "%04i-%02i-%02i"% (jahr, monat, tag)
zeit = "%02i:%02i:%02i"% (stunde, minute, sekunde)
nnect("127. DFRobot Kapazitiver Bodenfeuchtesensor - Bastelgarage Elektronik Online Shop. 0. 1", "pi", "f6g7h8", "grow")
cursor = ()
print tag, zeit
# sensorarray = channel, raum, sensornummer
sensor=[[ 0, 1, 1]]
# wenn ein senseor dazukommt, muss die zahl höher
for i in sensor:
print"------------------------------------------------------------"
print "A/D-Channel: ", i[0], " - Raum: ", i[1], " - Sensornnummer: ", i[2]
z=1
while z < 10:
spiantwort = ([1, (8+i[0]) << 4, 0])
# print "wert1: ", spiantwort[1], " wert2: ", spiantwort[2]
messwert = round( ( ( spiantwort[1] * 256) + spiantwort[2]) /6)
if messwert < 1:
print z, ".
Statt "Ja"/"Nein" könnte hier genauso gut "Der Sensor ist trocken"/"Der Sensor ist nass" stehen. Genauso wie die Variable istTrocken nur einen der beiden Wert haben kann, wird auch hier nur eine der beiden Möglichkeiten angezeigt. Anmerkung: In meinem Beispiel ist istTrocken eine Variable vom Datentyp Integer. Raspberry pi bodenfeuchtigkeitssensor 7. Stattdessen könnte man auch Boolean verwenden, weil der digitale Output (DO) von YL-38 sowieso nur 1 oder 0 ausgibt…
Im Seriellen Monitor sieht die verschönerte Basisversion folgendermaßen aus:
Feuchtigkeitssensor: Eigentlich könnte die gemessene "Feuchtigkeit" auch gemessene "Trockenheit" sein. So viel zur absoluten Basis-Version. Wie ihr aus dem Feuchtigkeits-/Trockenheitswert eine Prozentangabe machen und zur verbesserten Genauigkeit einen Mittelwert berechnen könnt, zeige ich euch in Teil 2.