www.FAMILIE-MICHELE.de |
|
Navigation |
WetterstationDruck und Temperatur sind einfach zu machen. Die bisher von mir ausprobierten Luftfeuchtigkeitssensoren haben nach wenigen Wochen Dauerbetrieb leider den Geist aufgegeben. Geplant ist noch, Windgeschwindigkeit, Windrichtung und Regenmenge zu speichern. Die Schaltung ist auch dem folgenden Bild zu entnehmen. Die Trennung der Schaltung bzw. die lange (circa 10 m vieradriges Kabel) Verbindung vom Hauswirtschaftsraum zur Garage ist auf der 5V-Seite, also oberhalb des Level-Shifters in der Schaltung vorgenommen worden.Druck- und Temperatursensor BMP180Dazu gibt es nicht viel zu sagen. Der Sensor wird mit SDA, SCL, GND und +3,3 V angeschlossen. Ich habe tatsächlich einen BMP180 verwendet und nicht einen BMP085 wie auf dem Bild dargestellt.Arduino Mega2560Level-ShifterDa der RaspberryPi an der seriellen Schnittstelle mit 3,3 V und der Arduino Mega mit 5 V arbeitet, ist ein Level-Shifter notwendig. Selber bauen oder Alternativen mit Dioden oder Widerständen kamen für mich nicht unbedingt in Frage, weil solche Bauteile nur circa 1 € kosten.Die Pins sind selbsterklärend, HV ("high voltage", + auf der Arduino-Seite), LV ("low voltage", + auf der Raspberry-Seite), GND bei beiden. RX und TX müssen gekreuzt verbunden werden. Raspberry 2Im Moment läuft im Hauswirtschaftsraum die Version 2 und zum Ausprobieren habe ich noch eine Version 1 auf dem Dachboden.Software ArduinoDie Daten werden gesammelt und mit Semikolons getrennt in einer Zeile über TX3/RX3 gesendet. Auf den ersten TX/RX-Pins liegt beim Hochladen von neuen Programmen auf den Arduino wohl eine höhere Spannung an den Pins, was für den standardmäßig ja verbundenen PaspberryPi unschön sein könnte.Software RaspberryPiEinige Einstellunge müssen vorgenommen werden.
Daten empfangenUm die Daten zu empfangen habe ich ein Python-Skript geschrieben. Es gibt keine Sicherheitsabfragen oder ähnliches, aber es funktioniert erstaunlich gut:RoundRobin-DatenbankCreateDen Befehl zur Erstellung einer RoundRobin-Datenbank habe ich in einem Bash-Skript zusammengefasst. Es werden Druck und Temperatur gespeichert und verschiedene Langzeitmittelwerte definiert. Die Datenbank hat eine Größe von circa 1 MB.Das Bash-Skript zum Erstellen der RRD-Datenbank gibt es hier zum Download. UpdateFür das Einlesen der Werte aus der seriellen Schnittstelle und das Einpflegen der Werte in die RRD-Datenbank habe ich mir einen Cronjob definiert, der den laufenden Prozess abbricht und das Python-Skript (s. o. bei "Daten empfangen") jede Minuten neu aufruft. Das hat den Vorteil, dass man sich auch keine Gedanken über das Verhalten beim Neustart des RaspberryPis machen muss - nach einer Minute läuft das Skript auf jeden Fall.GraphAus den Daten in der RRD-Datenbank werden regelmäßig (Crontab s. u.) Graphen erstellt. Dazu dient für jeden Graph ein Bash-Skript. Es gibt zwei Beispiel-Downloads für Druck und TemperaturFTP-UploadDie erstellten Graphen werden ebenfalls mit einem Python-Skript auf meinen Webspace hochgeladen: Upload-Skript.Alles schön regelmäßig: CrontabDie folgende Ausgabe habe ich mit "crontab - l" erhalten.
*/60 21-6 * * * /home/pi/sketchbook/Wetter01/allegraphen Das Skript "eine_minute_abfragen", das jede Minute gestartet wird, enthält nur drei Zeilen:
killall "Wetter01.py" Regelmäßige BackupsEin regelmäßiges Backup der SD-Karte (am Besten des ganzen Images) empfiehlt sich. Bei mir hat sich schon eine 4GB-Karte eines Markenherstellers im laufenden Betrieb verabschiedet. Für den Raspi ist sie nicht mehr zu gebrauchen. |
31.03.2021 Dr. Oliver Michele |