Nistkästen mit der Pi-Cam ins Internet bringen

Temperaturmessung

Die Temperaturmessung erfolgt mit einem preiswerten Temperatursensor DS1820, der gleich eine serielle Schnittstelle mitbringt. Sie schließen ihn wie in Abbildung 4 gezeigt an den GPIO des Raspberry Pi an. Danach fügen Sie in der Konfigurationsdatei /boot/config.txt folgende Zeile hinzu:

dtoverlay=w1-gpio,gpiopin=4

Anschließend starten Sie das System neu. Nun wechseln Sie ins Verzeichnis /sys/bus/w1/devices/ und geben den Befehl dir ein, um eine Übersicht über den oder die Temperatursensoren zu bekommen (Listing 10, Zeile 2). Es sollte so viele Ordner geben, wie Sie Temperatursensoren angeschlossen haben, dazu noch den Eintrag w1_bus_master1. In den Ordnern mit den Zahlenkolonnen stehen die Messwerte der Temperatursensoren. Die Daten lassen sich manuell auslesen (Zeile 6), die Temperaturen sind in Tausendstel Grad Celsius angegeben.

Listing 10

 

$ cd /sys/bus/w1/devices
$ dir
28-0000074b2995
28-0000074b2e47
w1_bus_master1
$ cat 28-0000074b2e47/w1_slave
aa 00 4b 46 7f ff 06 10 b9 : crc=b9 YES
aa 00 4b 46 7f ff 06 10 b9 t=10625

Mit einem kleinen Python-Skript automatisieren Sie nun das Auslesen der Temperatur. Dazu erzeugen Sie im Programmordner die Datei temptest.py und fügen dort den Inhalt von Listing 11 ein. Passen Sie dabei die Adresse des Temperatursensors an. Dann machen Sie die Datei mit chmod +x temptest.py ausführbar und testen das Programm mit dem Aufruf ./temptest.py.

Listing 11

 

#!/usr/bin/python
tempfile = open("/sys/bus/w1/devices/28-0000074b2e47/w1_slave")
inhalt = tempfile.read()
tempfile.close()
tempdata = inhalt.split("\n")[1].split(" ")[9]
temperatur = float(tempdata[2:])
temperatur = temperatur/1000print "Temperatur betraegt: " + str(temperatur) + " Grad"

Auf der Heft-DVD finden Sie in der Datei temperatur.py ein Python-Skript, mit dem Sie die Temperatursensoren auslesen und die Daten an einen Webservice übertragen. Dort liegt auch das Skript für den zugehörigen Webservice temperaturloggerWS.php, der die Temperaturdaten entgegennimmt und in einer CSV-Datei speichert, sowie der PHP-Webservice für die Anzeige der aktuellen Temperaturen gettemperaturWS.php. Letzterer kommuniziert mit dem Javascript-Programm der Anzeigeseite und liefert die aktuellen Temperaturen aus der CSV-Datei aus.

Spielen Sie die beiden PHP-Skripte von der Heft-DVD auf den Webserver. Rufen Sie danach das Python-Skript temperatur.py von Hand auf, sollte das System die Temperaturdaten an den Webserver übertragen und die Anzeigeseite die aktuellen Temperaturen auflisten.

Automatisierung

Bislang müssen Sie die Skripte für die Bildaufnahme und die Temperaturmessung noch manuell aufrufen. Spannend wird der Raspberry-Nistkasten aber erst, wenn die Prozesse automatisch ablaufen. Zur Automatisierung kommt der Cron-Dienst zum Einsatz, der die einzelnen Skripte in definierten Intervallen aufruft – zum Beispiel alle 5 Sekunden das Programm für die Bildaufnahme und jede Minute das Skript für die Temperaturmessung.

Das kürzeste Zeitintervall von Cron liegt normalerweise bei einer Minute: Mit einem kleinen Trick, indem Sie denselben Prozess mehrfach, aber mit einer fünfsekündigen Verzögerung aufrufen, gelingen mit Cron jedoch auch Aufruffrequenzen unter einer Minute. Für die Aufnahmen der Bilder legen Sie daher eine Cron-Tabelle mit zwölf Einträgen an, die alle zur selben Minute starten, die Sie jedoch mit sleep Sekunden um ein paar Sekunden verzögern.

Der zyklische Aufruf des Skripts durch Cron hat sich in vielen Experimenten als stabilere Lösung erwiesen als etwa eine zeitgesteuerte Endlosschleife direkt im Python-Skript. Erzeugen Sie also die Steuerung über Cron mittels crontab -e und tragen Sie die Zeilen aus Listing 12 ein. Der Ausdruck >/dev/null 2>&1 am Ende sorgt jeweils dafür, dass kein Log geschrieben wird, und entlastet so die SD-Karte.

Für das manuelle Schalten der Beleuchtung verwenden Sie das Python-Skript aus Listing 13 als Basis. Zum Ausschalten kommentieren Sie die entsprechenden Bereiche aus beziehungsweise ein.

Listing 12

 

# Alle 5 Sekunden ein Bild aufnehmen und hochladen
* * * * * sleep 0; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 5; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 10; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 15; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 20; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 25; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 30; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 35; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 40; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 45; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 50; /home/pi/meisencam.py >/dev/null 2>&1
* * * * * sleep 55; /home/pi/meisencam.py >/dev/null 2>&1
# Jede Minute die aktuellen Temperaturen hochladen
* * * * * sleep 0; /home/pi/temperatur.py >/dev/null 2>&1
K@E:

Listing 13

 

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.OUT)
# Auskommentieren für Ausschalten
GPIO.output(11,GPIO.HIGH)
print("LED an")
## Einkommentieren für Ausschalten
# GPIO.output(11,GPIO.LOW)
# print("LED aus")

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 9 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

02/2019
Neue Energien

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Scheibchenweise

    Zu den Stärken von Sonic Pi gehört es, mit wenigen Zeilen Code Samples dynamisch auszuwählen und zu zerlegen.

  • Unter Strom

    Für einen kleinen Spannungsmesser wie den INA3221 gibt es viele Einsatzmöglichkeiten. Wir zeigen, wie Sie den flexiblen Baustein richtig verdrahten.

  • Vermittlungsstelle

    Fischertechnik-Modelle bieten sich zum Fernsteuern an. Mit dem Ftduino schlagen Sie die Brücke zwischen dem RasPi und dem Technik-Spielzeug.

  • Durchgeschlängelt

    Mit den M0-Boards steigen Sie unkompliziert in die Welt der Mikrocontroller ein – ganz ohne C-Kenntnisse.

  • Gesiebt und gefiltert

    Filter und Werbeblocker einzurichten ist besonders auf Smartphones aufwendig. Den eBlocker hingegen schließen Sie einfach nur an Ihren Router an.

  • Es werde Licht

    Wollen Sie bei beginnender Dämmerung nicht ständig die Helligkeit der heimischen Beleuchtung nachregeln, überlassen Sie das einfach einem RasPi – der macht es automatisch.

  • Energiekontrolle

    Der Gesetzgeber erschwert das Direktvermarkten von Strom durch technische Hürden: So muss sich die Einspeisung etwa aus der Ferne abschalten lassen. Der RasPi löst das Problem.

  • H<->2<->-Power

    Gilt es, Energie aus einer regenerativen Quelle zu speichern, erweist sich die Kombi aus einer Brennstoffzelle und dem RasPi als ideale Lösung.

  • Kleine Wolke

    Lokale Cloud-Lösungen im Heimnetz finden immer mehr Nutzer. Mit dem RasPi und Seafile haben Sie eine Lösung zur Hand, die selbst professionellen Ansprüchen genügt.

  • Planvoll verdrahtet

    Die Leiterplattendesign-Software KiCad leistet trotz einer etwas umständlichen Bedienung auch Hobbybastlern gute Dienste.