Der Raspberry Pi ist großartig, um im Bereich der Hausautomatisierung eingesetzt zu werden. Dazu gehört auch das Bewässern des eigenen (Gemüse-)Gartens. Mittels verschiedener Sensoren und Pumpen kann die Bewässerung gesteuert werden. Mit Hilfe eines kleinen Skripts können wir außerdem viele Anpassungen vornehmen.
In diesem Tutorial geht es um die Erstellung einer Raspberry Pi Gartenbewässerung inkl. eigener Website, auf der die Daten angezeigt werden. Der Aufbau des Tutorials ist Schritt für Schritt erklärt.
Inhaltsverzeichnis
- Zubehör für die Raspberry Pi Gartenbewässerung
- Allgemeine Software
- Vorbereitung Funksteckdose
- Vorbereitung Webseite
- Vorbereitung Xiaomi Pflanzensensoren
- Bewässerungsskript
- Raspberry Pi App
Zubehör für die Raspberry Pi Gartenbewässerung
Nutze folgendes Zubehör, um dem Tutorial folgen zu können:
- Raspberry Pi inklusive Micro SD Karte und USB Netzstecker
- Funksteckdosen (Set)
- 433 Mhz Sender und Empfänger (gibt es auch auf eBay)
- Jumper Kabel
- Breadboard
- Xiaomi Mi Flora Pflanzensensor
- Knopfbatterie
- Pumpe
- Schläuche
Allgemeine Software
Zunächst einmal aktualisieren wir den Raspi und installieren benötigte Tools:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git python3
Für alle Pythonskripts verwenden wir Python 3.
Klone das folgende Repository auf dem Raspberry Pi:
cd ~/Desktop git clone https://github.com/tutRPi/Raspberry-Pi-Gartenbewaesserung Bewaesserung
Alle hier beschrieben Vorgänge sind darauf ausgelegt, dass das Skript auf dem Desktop vom Raspi liegt.
Falls du das Skript an einem anderen Ort haben möchtest, musst du die jeweiligen Pfade dementsprechend anpassen.
Des weitern wird im Beispiel eine Funksteckdose verwendet. Das Beispiel ist aber mit der Option von einem oder mehrerer Sensoren aufgebaut.
Vorbereitung Funksteckdose – Software
Bevor wir anfangen, benötigen wir zwei Pakete, die wir uns folgendermaßen besorgen:
Pip3 installieren:
sudo apt-get install python3-pip
RPI-RF installieren:
sudo pip3 install rpi-rf
Aufbau Funksteckdose
Um die Codes der Funksteckdosen richtig zu setzen, müssen wir diese zunächst einmal auslesen. Hierzu solltest du diesem Tutorial folgen:
Raspberry Pi Funksteckdosen (433MHz) steuern – Tutorial
Der Aufbau am Raspberry Pi ist dabei wie folgt:
RaspberryPi | Sender | Empfänger |
---|---|---|
Pin 2 (5V) | VCC | VCC |
Pin 6 (GND) | GND | GND |
Pin 11 (GPIO17) – RPi Nr.1 | ATAD | —- |
Pin 13 (GPIO27) – RPi Nr.2 | —- | DATA (links neben GND) |
Funksteckdosenfernbedienung auslesen
Sobald all das gemacht wurde, kann mit dem Skript „Funksteckdosen-Fernbedienung-auslesen.py“ das Auslesen der 433mHz Fernbedienung begonnen werden.
Führe dazu folgenden Befehl in der Konsole aus:
python3 /home/pi/Desktop/Bewaesserung/Funksteckdose/Funksteckdosen-Fernbedienung-auslesen.py
Jetzt muss man auf der vorhin programmierten Taste einschalten drücken.
Wichtig dabei ist, dass die Fernbedienung sehr nahe am Empfänger sein muss.
Nach einigem Drücken wird das etwa so aussehen.
Mit „Strg + C“ kann das Skript abgebrochen werden.
Auf den ersten Blick sieht man sofort, dass das Signal nicht immer dasselbe ist.
In meinem Beispiel habe ich folgende Signale herausgeschrieben:
Das heißt: Signal „an“ = 5510417 mit einer Pulslänge von 302 oder 303
Jetzt wiederholen wir das gleiche mit ausschalten:
Hier sind die Signale mehrheitlich gleich.
In meinem Beispiel habe ich folgende Signale herausgeschrieben:
Das heißt: Signal „aus“ = 5510420 mit einer Pulslänge von 302 oder 303
Diese zwei Signale muss man sich nun aufschrieben:
- Steckdose an: 5510417, Pulslänge: 302 – 303
- Steckdose aus: 5510420, Pulslänge: 302 – 303
Somit kann der Empfänger eigentlich wieder vom Raspi abgebaut werden.
Vorbereitung Webseite – Software
Hier gibt es zwei Optionen:
- Einen eigenen Webserver auf dem Raspi installieren
- Auf einen bestehenden Webserver zurück greifen
Bei der ersten Variante müssen folgende Schritte durchgeführt werden:
Bei der zweiten Variante muss der Hostname, Benutzername, Benutzerpasswort und der Datenbankname von der gewünschten Webseite bekannt sein.
Falls man all das hat und sich auf phpMyAdmin einloggen kann, muss zuerst die neue Tabelle erstellt werden.
Dafür muss in phpMyAdmin die Tabelle importiert werden:
Bei „Datei auswählen“ muss die Datei „bewaesserung.sql“ aus dem Ordner „MySQL“ ausgewählt werden.
Am Ende in der Import Seite mit „OK“ bestätigen. Die leere Tabelle wurde nun erfolgreich angelegt.
Nun müssen wir ein Paket installieren, welches Python 3 eine Verbindung zu einer MySQL-Datenbank ermöglicht herzustellen. Dafür geben wir in der Konsole folgenden Befehl ein:
pip3 install pymysql
Jetzt müssen wir noch die Website Daten anpassen und auf dem Server oder ins richtige Verzeichnis auf dem Pi legen.
Im Ordner „Webseite“ müssen zwei Dateien angepasst werden:
- funktionen.inc.php
- funktionen-pdo-Sensoren.inc.php
Diese können wir mit einem beliebigen Editor öffnen und bearbeiten. Ich verwende dazu Notepad++. Die Dateien können aber auch mit dem normalen „Text Editor“ (bspw gedit) auf dem Raspi bearbeitet werden.
funktionen.inc.php:
Hier muss der ‘localhost‘, ‘Benutzername‘, ‘Passwort‘ und der ‘DB-Name‘ anhand deinen Daten angepasst werden.
funktionen-pdo-Sensoren.inc.php:
Auch hier muss der ‘host‘, ‘dbname‘, ‘Benutzername‘ und das ‘Passwort‘ angepasst werden.
Jetzt muss man alle Dateien vom Ordner „Webseite“ ins Webseitenverzeichnis legen.
Beim Raspi befindet sich das hier:
-
/var/www
Bei einer anderen Website müssen die Daten in das gewünschte Verzeichnis abgelegt werden.
Öffnen der Raspberry Pi Gartenbewässerung-Website
Sobald die PHP Skripte angepasst sind, kann man die Website prinzipiell schon im Browser öffnen. Rufe auf einem Computer oder Smartphone im gleichen Netzwerk folgende URL auf: http://raspberrypi/ (Alternativ nimmst du die lokale IP Adresse 192.168.x.x, wie am Ende des Tutorials beschrieben)
Hier gibt es verschiedene Ansichten:
Ein Klick auf die einzelnen Sensoren, verrät die gemessen Details der letzen zwei Wochen mit grafischer Darstellung als Diagramme:
Vorbereitung der Xiaomi Pflanzensensoren
Damit der Sensor läuft muss die Rückseite, wie in der Bedienungsanleitung des Sensors beschreiben, entfernt werden und die Schutzfolie der Batterie entfernt werden. Danach die Rückseite wieder aufsetzten.
Wenn die Xiaomi Sensor oder Sensoren nun laufen müssen bei diesen die MAC-Adresse ausgelesen werden. Dafür rufen wir die Konsole auf und geben folgendes ein:
sudo hcitool lescan
Nun solltet ihr den „Flower care“ Sensor sehen.
Bei mehreren Sensoren erscheinen mehrere Einträge mit unterschiedlichen MAC-Adressen.
Diese MAC-Adresse müssen wir uns nun merken in diesem Beispiel wäre das:
- 80:EA:CA:89:20:6A
Somit sind wir nun am Ende der Vorbereitung für den Xiaomi Pflanzensensor.
Bewässerungsskript
Nun haben wir alle benötigen Installationen und sonstige Vorbereitungen durchgeführt und können an das eigentliche Bewässerungsskript gehen.
Dieses Skript findest du im Hauptordner „Bewaesserung“:
Nun öffnen wir das Skript „bewaesserung.py“ mit einem beliebigen Editor.
Als erstes geben wir die Steckdosenparameter an die wir vorhin ausgelesen haben.
- gp steht für den GPIO Pin. Hier nehmen wir den 17 Pin wie schon im oberen Bild gezeigt.
- an: hier setzen wir den Wert ein den wir beim Anschalten aufgezeichnet haben.
- aus: hier setzen wir den Wert ein den wir bei Ausschalten aufgezeichnet haben.
- proto: das steht für Protokoll hier setzten wir „1“ ein.
- puls1: hier schreiben wir die erste Pulslänge rein
- puls2: hier schreiben wir die zweite Pulslänge rein
Beim Testen des Skripts ist mir aufgefallen, dass eine Pulslänge nicht ausreichend ist, deswegen nutzen wir zwei Stück und geben den Befehl als Wiederholung beim An- und bei Ausschalten 2-3 Mal aus. Aber dazu später mehr.
Nun kommen wir zu den Zeiten: Hier wird zunächst angegeben an welcher Tageszeit das Skript laufen soll. Wie im Bild beschrieben:
Jetzt müssen wir die Steuer/Warte Zeiten definieren, siehe Bild:
Jetzt ist es genug mit Definieren; nun geht’s zur eigentlichen Aktion.
Bei Sensor1 müssen wir die vorher ermittelte MAC-Adresse des erstens Sensors eingeben.
In diesem Beispiel wäre das „80:EA:CA:89:20:6A“.
Wichtig ist die time.sleep(2) Funktion; damit geben wir dem Skript zwei Sekunden Zeit um den Sensor auszulesen. Diese zwei Sekunden sollten eigentlich immer genügen.
Falls man mehr als einen Sensor verwenden will, muss man folgenden Bereich aktiv setzen und wiederholen, wie im Bild beschrieben: (aktiv setzen bedeutet „#“ vor der Zeile entfernen)
Zum Testen des Skripts hilft meistens „print()“. Dies benötigt aber das fertige Skript nicht mehr, deswegen ist die nächste Zeile als Kommentar geschrieben:
Kommen wir zur Datenbankverbindung, hier musst du deine Daten eintragen:
Nun werden die gesammelten Daten von Sensor1 mithilfe dieser Zeilen in der Datenbank gespeichert:
Falls mehrere Sensoren eingesetzt werden sollen, kann folgender Bereich wiederholt, aktiv gesetzt und angepasst werden.
Wenn du nur einen Sensor verwenden möchtest, musst du nun an dieser Stelle nichts ändern. Falls mehrere Sensoren und eben nur eine Pumpe (Funksteckdose) im Einsatz ist können wir die verschiedenen Feuchtigkeitswerte addieren und dann durch die Summe aller Sensoren teilen.
Im Bild sind zwei Beispiele:
Nun fragen wir die oben ermittelte Feuchtigkeit ab:
Wie vorhin schon beschrieben senden wir das Anschaltsignal mehrmals in verschiedenen Pulslängen.
Danach wird die Zeit bis zum Ausschalten gewartet. Diese Zeit wurde zuoberst im Skript definiert:
- pumpendauer
Danach schalten wir die Steckdose wieder aus. Auch hier senden wir mehrmals das Ausschaltsignal in den verschiedenen Pulslängen.
Falls die Bodenfeuchtigkeit nicht zu trocken ist, folgen diese Zeilen:
Hier schalten wir zusätzlich zum „warten“ die Pumpe als Sicherheit nochmals aus.
Die Wartezeit ist ebenfalls zuoberst im Skript definiert.
Wenn bei der ersten Abfrage, ob es Tag oder Nacht ist, das Resultat Nacht ist, kommen die letzten Zeilen des Skripts zum Einsatz:
An dieser Stelle sind wir nun fertig mit dem Anpassen.
Ausführen des Skripts
Zum Starten des kompletten Skripts muss in der Konsole folgender Befehl eingegeben werden:
python3 /home/pi/Desktop/Bewaesserung/bewaesserung.py
Nun läuft das Skript und die Daten werden geloggt. Dies könnt ihr dann auf der Webseite sehen.
Zusätzliche Funktionen
Wie vielleicht bemerkt sind im Hauptordner noch drei andere Pythonskripte. Diese können ausgeführt werden, wenn die Funksteckdose manuell an oder ausgeschaltet werden soll. Aber auch hier muss zuerst im oberen Bereich des Skripts eure ausgelesenen 433mHz Signale eingetragen werden, analog wie im Skript „bewaesserung.py“.
Zum ausführen dieser Skripte müssen folgende Befehle in der Konsole eingegeben werden:
Funksteckdose an:
python3 /home/pi/Desktop/Bewaesserung/an.py
Funksteckdose aus:
python3 /home/pi/Desktop/Bewaesserung/aus.py
Das letzte Script ermöglicht es euch den oder die Sensoren manuell auszulesen.
Dafür muss die Datei mit der richtigen MAC-Adresse des Sensors versehen werden. Auch hier besteht die Möglichkeit mehrere Sensoren auszulesen.
Das Skript wird mit folgendem Befehl aus der Konsole gestartet:
python3 /home/pi/Desktop/Bewaesserung/datenlesen.py
Raspberry Pi App
Damit ihr nicht einen Rechner oder Laptop für diese zusätzlichen Funktionen benötigt könnt ihr auch eine App auf eurem Smartphone verwenden.
Ich habe die kostenlose App „RaspController“ (für Android) dafür verwendet. Lade dir diese App herunter und stellt sicher dass du dich im gleichen WLAN Netzwerk wie der Raspberry Pi befindest.
Nun kannst du die App starten und ein neues Gerät mit dem Plus-Symbol hinzufügen.
Gib nun einen Gerätename für dein Raspi ein.
Die IP-Adresse findet ihr mit folgendem Befehl in der Konsole heraus:
ifconfig
Der Benutzername und das Kennwort sind die gleichen wie beim Aufsetzen angegeben wurden. Falls du diese nicht geändert hast, lauten diese:
- Benutzername: pi
- Kennwort: raspberry
Wenn die Verbindung erfolgreich hergestellt wurde können unter „Benutzerdefinierte Befehle“ mit dem ( + ) [Plus-Symbol] neue Befehle hinzugefügt werden.
Hier ein Beispiel für die 3 Dateien:
Pumpe anschalten:
- Name: Pumpe an
- Befehl:
python3 /home/pi/Desktop/Bewaesserung/an.py
Pumpe ausschalten:
- Name: Pumpe aus
- Befehl:
python3 /home/pi/Desktop/Bewaesserung/aus.py
Sensoren auslesen:
- Name: Sensoren manuell auslesen
- Befehl:
python3 /home/pi/Desktop/Bewaesserung/datenlesen.py
– Dieses Tutorial ist vom Leser Samuel Ruprecht erstellt und zur Verfügung gestellt. Wenn auch du einen Tutorialvorschlag hast, kannst du dich gerne melden 🙂
39 Kommentare
Hallo
ich finde deine Anleitungen immer sehr anregend. Gegenwärtig veruche ich die Bewässerung nachzubuen.
An folgendem stosse ich kräftig an: das Auslesen und die Ansteuerung der Funksteckdosen. Unglücklicherweise habe ich die Neuen von Brennenstuhl im Viererset gekauft, die man sich selbst konfigurieren lassen kann. Soweit gut.
Mit dem Auslesen am RPI bekomme ich sozusagen nur Müll, erst noch selbst ausgelöst. Mit einem Arduino sehen die Werte seriöser aus, aber beim Ansteuern klappt es nur sporadisch.
Was ich feststellte: beim Auslesen immer nur An kommt immer die gleiche Vierersequenz verschiedener Codes nacheinander, aber welchen der vier ich nehmen soll ist völlig unklar. Der Schalter funktioniert aber mit der Fernedienung problemlos.
Kannst du dir einen Reim darauf machen?
Gruss
Jürg
Hallo Jürg
Hat die Funksteckdose und die Fernbedienung DIP-Schalter, wie in diesem (https://tutorials-raspberrypi.de/raspberry-pi-funksteckdosen-433-mhz-steuern/) Tutorial beschrieben?
Ansonsten könntest du versuchen alle 4 Codes mit den jeweiligen Pulslängen am Stück zu senden. Falls gewünscht kann ich dir dazu ein Script erstellen.
Gruss
Sam
Hallo Sam
entschuldige, war grad einige Zeit anderswo beschäftigt.
Nein, Steckdosen und Fernbedienung haben keine DIP-Schalter.
Das Binden von Tasten und Schalter macht man mit einer Befehlssequenz.
Und das funktioniert auch.
Und ja, wenn du mir zum Senden ein Script erstellen könntest, vielen
Dank!
Gruss
Jürg
Hallo Sam,
ich würde das Script auch brauchen, hast du das auf github?
Hi sam
Hab auch das Problem mit den funksteckdosen ohne dip schalter- kannst du mir bitte ebenfalls das script schicken und erläutern wie ich das im code implementiere?
Danke
Hallo,
Kann man mit dem Script evtl. auch W-Lan Steckdosen für die Bewässerung schalten?
Die Dinger sind ja gerade günstig zu haben.
MfG Martin
Hier findest du ein Tutorial zu Wlan Steckdosen (der Code müsste ein wenig angepasst werden): Sonoff S20 Wifi Steckdose steuern
Hallo,
ich scheitere beim öffnen der Raspberry Pi Gartenbewässerung-Website
Zitat aus dem Tutorial:
Sobald die PHP Skripte angepasst sind, kann man die Website prinzipiell schon im Browser öffnen. Rufe auf einem Computer oder Smartphone im gleichen Netzwerk folgende URL auf: http://raspberrypi/ (Alternativ nimmst du die lokale IP Adresse 192.168.x.x, wie am Ende des Tutorials beschrieben)
Der oben beschriebene Aufruf der Webseite kann nicht stimmen, da muss noch was angehängt werden, aber was?
und wo ist das ziel?
– /home/pi/Desktop/Bewaesserung/Webseite
– /var/www oder
– /var/www/html
Danke!
Hallo Michael
Hast du Apache2 erfolgreich installiert wie in diesem Tutorial beschrieben (https://tutorials-raspberrypi.de/webserver-installation-apache2/)?
Falls http://raspberrypi/ nicht funktioniert versuche http://die-ip-vom-pi/
Die IP von deinem Raspberry findest du in der Konsole mit dem Befehl „ifconfig“ heraus.
Kommt dann beim ersten Aufruf der Seite der Text: „It works!“?
Falls ja musst du die Website Daten ins /var/www Verzeichnis hochladen.
Zum testen ob das das richtige Verzeichnis ist kannst du auch eine einfach HTML Datei zuerst da rein kopieren. Der HTML-Code könnte z.b. so aussehen:
Test Seite
Diese Seite funktioniert
Dieser Code einfach in einer index.html datei abspeichern und im Browser mit http://raspberrypi/index.html öffnen.
Beste Grüsse
Sam
Hallo,
habe das Tutorial bereits mehrfach durch.
Jetzt läuft es, einziges Problem auf der Bewässerungs-Internet- Seite, Reiter Home, sind keine Daten.
In phpMyAdmin, in der Datenbank bewaesserung, schon.
Wenn ich auf der Bewässerungs-Internet- Seit den Bommel Sensor 1 anklicke kommt ganz oben die Meldung
„SQLSTATE[HY000] [1045] Access denied for user ‚Benutzernamen’@’localhost‘ (using password: YES)“.
Ist das mein Problem und wie kann ich es lösen?
Ansonsten gutes Tutorial, bitte um Hilfe
lg
ich hab exakt den gleichen fehler, hast du deinem mittlerweile beheben können?
Hallo
Bitte überprüfe die „funktionen.inc.php“ und „funktionen-pdo-Sensoren.inc.php“. So wie es aussieht hast du da noch nicht den richtigen SQL Benutzer hinterlegt.
Lg
Sam
Das Problem hatte ich auch, du musst nochmals die Eingabe von: host, user, passwort und Datenbank überprüfen.
Ich bin aktuell an dem Problem, dass er mir beim Ausführen von :
python3 /home/pi/Desktop/Bewaesserung/datenlesen.py
folgende Fehlermeldung ausgibt:
Traceback (most recent call last):
File „/home/pi/.local/lib/python3.7/site-packages/btlewrap/bluepy.py“, line 27 , in _func_wrapper
return func(*args, **kwargs)
File „/home/pi/.local/lib/python3.7/site-packages/btlewrap/bluepy.py“, line 56 , in connect
self._peripheral = Peripheral(mac, iface=iface, addrType=self.address_type)
File „/home/pi/.local/lib/python3.7/site-packages/bluepy/btle.py“, line 391, i n __init__
self._connect(deviceAddr, addrType, iface)
File „/home/pi/.local/lib/python3.7/site-packages/bluepy/btle.py“, line 439, i n _connect
raise BTLEDisconnectError(„Failed to connect to peripheral %s, addr type: %s “ % (addr, addrType), rsp)
bluepy.btle.BTLEDisconnectError: Failed to connect to peripheral 80:EA:CA:89:20: 6A, addr type: public
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File „/home/pi/Desktop/Bewaesserung/datenlesen.py“, line 20, in
battery1 = sensor1.parameter_value(‚battery‘)
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 149, in p arameter_value
return self.battery_level()
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 119, in b attery_level
self.firmware_version()
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 127, in f irmware_version
with self._bt_interface.connect(self._mac) as connection:
File „/home/pi/.local/lib/python3.7/site-packages/btlewrap/base.py“, line 47, in __enter__
self._backend.connect(self._mac)
File „/home/pi/.local/lib/python3.7/site-packages/btlewrap/bluepy.py“, line 33 , in _func_wrapper
raise BluetoothBackendException() from last_error
btlewrap.base.BluetoothBackendException
die angezeigte MAC Adresse stimmt nicht mit der von mir ermittelten überein, jedoch weiß ich nicht wie ich sie abändern kann.
Hat jemand eine Idee?
Super Tutorial Felix, Danke
Hallo,
danke für das tolle Tutorial!
Hat schon jemand den Xiaomi Mi Flora Pflanzensensor über einen längeren Zeitraum im Betrieb? Viele Bewertungen schreiben, dass der Sensor sehr schnell kaputt gegangen ist..
Beste Grüße,
TK
Hi TK
Ich habe die Sensoren jetzt seit dem 10.04.2020 im Einsatz. Einmal konnte ich eine Sensor nicht mehr erreichen, habe dann kurz die Batterie entfernt und wieder eingesetzt, lief danach wieder normal.
Beste Güsse
Sam
Hi, ich stoße leider auf ein Problem, bei dem ich nicht weiter komme. Und zwar bei der Datei: bewaesserung.py. Ich bekomme immer folgende Fehlermeldung wenn ich das Skript teste:
Traceback (most recent call last):
File „/home/pi/Desktop/Bewaesserung/bewaesserung.py“, line 8, in
from miflora.miflora_poller import MiFloraPoller
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 10, in
from btlewrap.base import BluetoothInterface, BluetoothBackendException
ModuleNotFoundError: No module named ‚btlewrap‘
>>>
Beim Ausführen von Bewaesserung.py bekomme ich immer folgende Fehlermeldung:
Traceback (most recent call last):
File „/home/pi/Desktop/Bewaesserung/bewaesserung.py“, line 8, in
from miflora.miflora_poller import MiFloraPoller
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 10, in
from btlewrap.base import BluetoothInterface, BluetoothBackendException
ModuleNotFoundError: No module named ‚btlewrap‘
>>>
Hallo Elias,
diesen Fehler spucken die Sensoren aus, wenn Sie nicht erreicht werden können. Bei mir konnte ich das durch eine geringere Entfernung zwischen PI und Sensoren in den Griff bekommen.
Liebe Grüße
Hi Elias – hast du das schon lösen können? ich bekomme exakt dieselbe Fehlermeldung. Wenn ich mit dem too hcitool lescan scanne werden alle 4 sensoren gefunden…
Hi Elias. Kann es sein, dass du den miflora nicht installiert hast? das war bei mir der grund warums nicht gefunkt hat: sudo pip3 install miflora hats bei mir gelöst 🙂
Hi Ihr, ich bekomme die Website einfach nicht zum laufen. Er öffnet mir zwar am PC die Seite mit den Tabellen, diese sind aber leer. Bei einer Überprüfung der Datenbank habe ich die Daten aber gefunden. Der Fehler muss daher in der Kommunikation zwischen Website und der Datenbank liegen. Einen Fehler wird mit auf der Website nicht angezeigt, hat wer eine Idee, wie ich das fixen kann?
Liebe Grüße
Hi Philipp
Erstelle dir bitte eine neue PHP Datei. (z.B. test.php)
Und füge diesen Code ein: (und gib deine richtige Daten an)
Dann teste ob die Verbindung funktioniert.
Grüsse
Sam
Ich habe jetzt eine einfache Website erstellt, die die letzten 10 Daten der Sensoren aus der Datenbank ließt und simpel auf einer Website auflistet. Das funktioniert mit folgendem Code.
Gieslogic
Sensordaten Sensor 1
query($query))
{
while ($row = $result->fetch_row())
{
printf(„%s, %s, %s „, $row[0], $row[1], $row[2], $row[3]);
echo „n
„; //Zeilenumbruch
}
$result->close();
}
$link->close();
?>
Sensordaten Sensor 2
query($query))
{
while ($row = $result->fetch_row())
{
printf(„%s, %s, %s „, $row[0], $row[1], $row[2], $row[3]);
echo „n
„; //Zeilenumbruch
}
$result->close();
}
$link->close();
?>
Sensordaten Sensor 3
query($query))
{
while ($row = $result->fetch_row())
{
printf(„%s, %s, %s „, $row[0], $row[1], $row[2], $row[3]);
echo „n
„; //Zeilenumbruch
}
$result->close();
}
$link->close();
?>
Sensordaten Sensor 4
query($query))
{
while ($row = $result->fetch_row())
{
printf(„%s, %s, %s „, $row[0], $row[1], $row[2], $row[3]);
echo „n
„; //Zeilenumbruch
}
$result->close();
}
$link->close();
?>
Aber ich bekomme es einfach nicht hin, deine schöne Grafik ans laufen zu bekommen. Hast du eine Idee?
Hi Philipp
Hat dein Raspy eine Internetverbindung?
Falls nein musst du dieses Javascript herunterladen:
https://canvasjs.com/assets/script/canvasjs.min.js
Dies wird am Ende der PHP-Datei mit dem Befehl :
https://canvasjs.com/assets/script/canvasjs.min.js
aufgerufen.
Lege dann das gedownloadete Javascript in den Websiteordner „js“.
Danach musst du den oben Pfad anpassen:
http://js/canvasjs.min.js
Vielleicht funktioniert es dann so bei dir.
Beste Grüsse
Sam
Hi Felix,
ich habe dr. google nun schon des öfteren bemüht – finde aber keine Lösung für mein Problem. Wie Elias bekomme ich diese Fehlermeldung File „/home/pi/Desktop/Bewaesserung/bewaesserung.py“, line 8, in
from miflora.miflora_poller import MiFloraPoller
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 10, in
from btlewrap.base import BluetoothInterface, BluetoothBackendException
ModuleNotFoundError: No module named ‚btlewrap‘
kannst Du vielleicht hier unterstützen?
Achja das reduzieren der Distanz brachte bei mir keinen Erfolg – ich habe die MiFloras testweise 5 – 10 centimer rund um den pi verteilt mit demselben ergebnis
Hallo an Alle.
Ich habe mich vor einigen Tagen an dieses Projekt gewagt, da ich neben der automatischen Bewässerung auch die Darstellung auf der Website sehr schön fand. Nun bin ich jedoch an eine Grenze gestoßen. Das Auslesen der Sensoren funktioniert (habe keine MiFlora, sondern verschiedene Sensoren für alle Daten), das speichern in die Datenbank auch. Nur die Webseite funktioniert nicht. Ich bekomme nur den ersten blauen Header angezeigt (bei Home, Sensor 1 und Sensor 2).
Ich kenne mich leider wenig mit der Programmierung aus und nach einigen Recherchen habe ich herausgefunden, dass es vermutlich an der PHP Version liegt. Ich kann momentan nur 7.3 installieren, aber die genutzten mysql-Befehle werden nicht mehr unterstützt.
Hat jemand das gleiche Problem oder eine Lösung, wie ich das Skript für PHP7.3 zum Laufen bringe oder aber wie ich PHP 5.6 installieren kann? Habe ein paar Anleitungen probiert, es hätte jedoch nie geklappt.
Vielen Dank im Voraus
Grüße Sebastian
Hi,
erstmal vielen Dank für das Tutorial! Ich habe mich durch das Projekt gearbeitet, allerdings werden auch bei mir die Ergebnisse nicht auf der Website angezeigt. Die Website lädt ohne Fehlermeldungen und die Datenbank ist mit Werten gefüllt, aber wie bei meinen Vorrednern sind keine Werte auf der Website zu sehen. Die Verbindung zur Datenbank kann nicht erfolgen. Das liegt wohl an der neueren PHP Version 7.x… Es haben sich dadurch einige Befehle (z.B. mysql_query zu mysqli_query) geändert und die Skripte müssen überarbeitet werden. Ich habe mich daran versucht, bin aber leider gescheitert (Bin leider ein Anfänger…). Sehr schade, denn so ist das Projekt für mich nicht anständig zu nutzen. Vielleicht kann der Autor des Tutorials hier nochmal helfen? Oder zumindest zu Beginn des Artikels darauf hinweisen um Anderen eine langwierige Fehlersuche zu ersparen.
Dieses Projekt ist auch sehr schön:
thomas-geers.de/gewaechshaus.html
Warum wurde eigentlich kein „Giesomat“ verwendet?
https://tutorials-raspberrypi.de/raspberry-pi-giessomat-kapazitiver-erdfeuchtigkeitssensor/
Muss immer alles aus China kommen?
Hallo zusammen, erst einmal danke für diese Anleitung.
Ich habe mich ebenfalls an dieses Projekt gemacht, die Webseite läuft und kann ich aufrufen.
Jedoch habe ich ein Problem beim Ausführen des Bewaeserungs Skriptes, da bekomme ich die Fehlermeldung das „bluepy“ nicht gefunden wird.
Es liegt aber in diesem Pfad.
/usr/local/lib/python3.7/dist-packages/btlewrap
Kann mir da jemadn bei Helfen?
Hier einmal die Fehlerbeschreibung.
Stört euch nicht an der GPIO 17 Zuweisung, ich schalte ein Relais keine Funksteckdose.
/home/pi/Desktop/Bewaesserung/bewaesserung.py:11: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(17, GPIO.OUT) # GPIO Modus zuweisen
bluepy not found: No module named ‚bluepy‘
Traceback (most recent call last):
File „/home/pi/Desktop/Bewaesserung/bewaesserung.py“, line 82, in
battery1 = sensor1.parameter_value(‚battery‘)
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 149, in parameter_value
return self.battery_level()
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 119, in battery_level
self.firmware_version()
File „/home/pi/Desktop/Bewaesserung/miflora/miflora_poller.py“, line 127, in firmware_version
with self._bt_interface.connect(self._mac) as connection:
File „/usr/local/lib/python3.7/dist-packages/btlewrap/base.py“, line 47, in __enter__
self._backend.connect(self._mac)
File „/usr/local/lib/python3.7/dist-packages/btlewrap/bluepy.py“, line 49, in connect
from bluepy.btle import Peripheral
ModuleNotFoundError: No module named ‚bluepy‘
MFG Dominic
Hallo an alle 🙂 Vielen Dank für das Tutorial – war für mich als Einsteiger super zu machen!
Leider verzweifle ich etwas an der Webseite. Die Webseite kann aufgerufen werden, allerdings werden keine Daten angezeigt, obwohl ich via phpmyadmin sehen kann, dass die Datenbank durchaus gefüllt wird. Eine SQL Fehlermeldung wird beim Aufrufen der Webseite nicht angezeigt.
Wenn ich mir unter Safari (macOS) die Webseiteninformationen (Quellen) anzeigen lasse, wird mir ein Fehler in Zeile 20 von s1.php angezeigt „Can´t find variable: CanvasJS“. Habe bereits versucht das Problem zu googeln, bin aber leider nicht fündig geworden :-(. Hat jemand eine Idee wo das Problem liegt? Bin für alle Anregungen dankbar – bin allerdings frischer Einsteiger.
Viele Grüße an alle und schon einmal vielen Dank :),
Jan.
Hallo,
könntest Du das eventuell mal auf die KASA HS100 übertragen?
Hallo,
Sorry, war irgendwie weg plötzlich.
zum Thema:
Könntest Du das Script nicht mal auf die KASA HS100 übertragen?
Über WLAN macht das alles eventuell noch mehr Sinn. Und die Teile sind über Python ansteuerbar.
Das wäre toll!
Danke
Frank
Hammer! Softwar schön und gut, etwas Werkzeug und Baumaterial braucht man aber dann auch…:). Wo kauft ihr die Pumpen und Schläuche?
Here you go:
https://www.berrybase.de/en/components/electromagnetic-components/pumps/
https://just-handel.de/handwerkzeuge-7
Hallo Sam,
ich nutze einen Raspberry Pi 5. Zunächst hatte ich Probleme die GPIOs anzusteuern, was mir eine Fehlermeldung bescherte. Diese konnte ich mithilfe des Befehls:
sudo apt remove python3-rpi.gpio
pip3 install rpi-lgpio
beheben und das Programm sagt mir:“Listening for Signals on GPIO 27″
Jedoch empfange ich keine Signale von verschiedenen Fernbedienungen. Die Steckdosen haben keine DIP Schalter, weshalb ich grundsätzlich auch an deinem Skript interessiert wäre, sollte sich das Problem mit dem Siganlempfang beheben lassen.
Ich habe auch gelesen, dass an die GPIOs keine 5V sondern lediglich 3,3 V angeschlossen werden sollen. Könnte das zu einem Problem geführt haben? Habe alles so wie beschrieben aufgebaut.
Für Hilfe wäre ich sehr dankbar.
Hallo kann mir wer helfen. Ich habe mir die größeren Max Sensoren gekauft die per USB geladen werden.
Ich finde 2 von 3 Sensoren übers hcitool namens Grow Care inkl. Mac Adresse . Die App findet auch nur 2 von 3 obwohl ich gestern 3 gefunden hatte per hcitool . App besagt Firmware 3.6.6
Bullseye legacy installiert alles gemäß Anleitung gemacht. Nur leider bekomme ich bei python3 datenlesen.py folgende Meldung wenn er die Temperatur einer Variablen zuweisen soll. Also line 21 von Datenlesen.py und line 168 von mipoller could not read data from Mi Flora sensor MAC Adressse
Echt zum verzweifeln hat wer eine Idee ?
Wenn ich alle Variablen ab Temperatur ausmakiere bekomme ich das Ergebnis zur Batterie fein angezeigt mit 99% . Alle anderen einzeln probiert und dann bekomme ich immer die Fehlermeldung.
Danke vorab