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

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.

  • Eingebettet

    Funkmodule, Displays und Analysegeräte für den Raspberry Pi: Auf der Embedded World präsentieren sich zahlreiche Unternehmen interessierten Elektronikbastlern und Entwicklern.