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

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.