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

12/2018
Coole Projekte

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Bytes und Beats

    In Sonic Pi können Sie mit wenigen Codezeilen Klänge manipulieren, Beats zusammenstellen und ganze Songs komponieren.

  • Klein, aber fein

  • Trick or treat

    Das traditionelle RPG-Gruselkabinett glänzt dieses Jahr mit einer innovativen Umsetzung mittels Pneumatik und Elektropneumatik sowie ST-Programmierung.

  • Unter Kontrolle

    Traditionell stellen wir alljährlich ein selbst gebautes Halloween-Gespenst vor. Die pneumatischen und elektronischen Grundlagen erklärt dieser Artikel.

  • Go Pi Go!

    Der Bausatz GoPiGo3 liefert Bauteile und Software für ein kleines Roboterauto. Zusammen mit einem RasPi als Gehirn programmieren Sie den Roboter per Mausklick.

  • Handlicher Helfer

    Während die Folien der Präsentation durchlaufen, liefert ein kleiner Dokumentenserver auf Basis des GL-AR300M-ext zusätzliche Informationen aus.

  • Wiederverwertet

    Mithilfe eines einfachen Python-Programms recyceln Sie ein ausgedientes Smartphone als drahtlos angebundenes RasPi-Display.

  • Herzenssache

    Steigt beim Krimi der Herzschlag bedrohlich an? Mit einem Pulsmesser in Eigenbau ermitteln Sie einfach und kostengünstig, ob der Herzschlag noch in verträglichen Bereichen liegt.

  • Fernbedient

    Mit der Fernbedienung den RasPi steuern. In der Theorie möglich, in der Praxis oft beschwerlich. Die Libcec liefert praktische Tools zur Fehlersuche.

  • Musikwürfel

    Mit Musikcube machen Sie Ihre eigene Sammlung fit fürs Streamen. Der terminalbasierte Audioplayer lässt sich Fernsteuern und bietet eine App für Android-Smartphones.