Basisinstallation
So nachdem sich jetzt die Hardware materialisiert hat kommt jetzt der mehr spirituelle Teil, die Installation und Konfiguration der Software für die Nistkasten-Kamera.
Als erstes muss ein aktuelles Raspbian installiert werden. Dazu lädt man von der offiziellen Webside unter http://www.raspberrypi.org/downloads ein aktuelles Raspbian Image herunter und speichert es auf dem PC. Beim Erstellen dieser Seite wurde der Raspbian-Release vom 2015-02-16 verwendet.
Danach wird dieses Image entpackt und mit dem “Win32 Disk Imager” auf eine mindestens 4GB große SD-Karte geschrieben. Da auch die Bilder/Filme direkt auf der SD-Karte gespeichert werden, wird mindestens eine 8 oder 16GB große Karte empfohlen!.
Jetzt wird die programmierte SD-Karte in den RaspberryPi gesteckt und der RaspberryPi über den Ethernet-Anschluss mit dem Netzwerk verbunden. Zusätzlich kann auch eine Tastatur/Mouse über USB und ein Monitor über den HDMI-Ausgang angeschlossen werden. Notwendig ist dies aber nicht, da die gesamte Konfiguration über eine SSH-Verbindung mit Putty erfolgt. Jetzt kann der RaspberryPi eingeschaltet werden. Direkt nach dem Einschalten sollte die rote LED (PWR) auf dem RasperryPi leuchten und die grüne LED (ACT) flackern/blinken, dann ist erst alles okay.
Jetzt muss man die IP-Nr, herausfinden, die dem RaspberryPi per DHCP vom Router im Netzwerk zugewiesen bekommen hat. Dazu loggt man sich bei seinem Router ein, sucht dort nach der IP-Nummer des Raspberry Pi und schreibt sich die IP-Nummer auf. Danach kann baut man mit Putty eine Verbindung per SSH zu der IP-Nummer auf. Hinweis: In Putty->Window->Translation den Zeichensatz am besten auf “UTF-8” umstellen. Das Default-Login auf dem RaspberryPi lautet: pi
und das Default Passwort: raspberry
.
Die Konfiguration des RaspberryPi wird mit dem Befehl sudo raspi-config
gestartet. Als erstes wird mit dem Kommando Expand Filesystem
das Filesystem auf die Größe der SD-Karte angepasst. Da die Anpassung des Filesystems erst beim nächsten Reboot ausgeführt wird, sollte das Konfigurationsprogramm jetzt beendet werden und die Frage nach dem Reboot mit “Yes” beantwortet werden.
Nach dem Neustart wird die Konfiguration mit sudo raspi-config
fortgesetzt. Dabei wird als erstes ein neues Passwort für die Anmeldung des Default users unter dem Menüpunkt 2\. Change User Password
gesetzt. Im nächsten Schritt werden die Sprach und Regionalen Einstellungen unter 4\. International Options
durchgeführt. Dort sollte man auf alle Fälle die Zeitzonen einstellung unter Change Timezone
auf Europe->Berlin stellen. Wichtig ist auch unter “5. Enable Camera”, dass der Kamera Support mit Enable eingeschaltet wird. Wenn man mehrere RaspberryPi in seinem Netzwerk verwalten will ist es außerdem sinnvoll unter 9\. Advanced Options -> A2 Hostname
einen neuen Hostname für den Nistkasten RaspberryPi zu vergeben.
Wlan-Konfiguration
Nachdem man den WLAN-Stick an den RaspberryPi angeschlossen hat, sollte der Stick direkt erkannt werden. Um dies zu überprüfen kann man mit dem Befehl
dmesg
das aktuelle Log-File einsehen.
Dort sollte gegen Ende des Logs der erkannte WLAN-Stick und welcher Treiber automatisch geladen wurde angezeigt werden.
Mit dem Befehl
ifconfig
kann man kontrollieren, ob ein neues Netzwerk-Device für den Wlan-Stick angelegt wurde. Im allgemeinen ist das das wlan0-Device. Wenn bis dahin alles geklappt hat, kann jetzt die Wlan0-Schnittstelle konfiguriert werden. Bei der folgenden Konfiguration wird der Wlan0-Schnittstelle eine statische IP-Nummer und Gateway (Internet-Router) aus dem lokalen Netz zugeordnet.
Die Konfiguration der Netzwerkschnittstellen ist in der Datei /etc/network/interfaces gespeichert. Mit dem Aufruf
sudo nano /etc/network/interfaces
wird die Datei im Nano-Editor geöffnet.
Dort müssen folgende Einstellungen vorgenommen werden:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.xxx.xxx \-- Eine freie IP aus ihren Netz eintragen
netmask 255.255.255.0
gateway 192.168.xxx.xxx \-- IP ihres Routers
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid "Ihr WLAN-Name"
wpa-psk "Ihr WLAN-Passwort"
wireless-power off
Anschießend die Änderungen speichern und den Raspberry neu starten durch die Eingabe von:
sudo reboot
Installation der Webcam-Software
Vor der Installation der Webcam-Software werden alle Softwarepakete mit den folgenden Befehlen auf den neusten Stand gebracht:
sudo apt-get update
sudo apt-get dist-upgrade
sudo rpi-update
sudo reboot
Als Webcam-Software kommt das RPi-Cam-Web-Interface in der Version 5.1.3 zum Einsatz, das von Silvan Melchior entwickelt wurde. Zur Installation des Paket wird das Installationsscript mit Git auf den RaspberryPi gecloned und dann das Installationsscript gestartet.
git clone https://github.com/silvanmelchior/RPi\_Cam\_Web\_Interface.git
cd RPi\_Cam\_Web\_Interface
chmod u+x RPi\_Cam\_Web\_Interface\_Installer.sh
./RPi\_Cam\_Web\_Interface\_Installer.sh install
Bei der Installation ist bei mir die Fehlermeldung “cp: cannot stat `/etc/raspimjpeg': No such file or directory” aufgetreten, scheinbar ist dies aber kein Problem. Nach einem Reboot mit “sudo reboot” kann man auf die Webcam unter der IP-Nr über den Webbrowser zugreifen. Das Ergebnis sollte dann in etwa so aussehen.
Was jetzt bei der Webcam noch stört ist die LED auf dem Kamera-Modul, die die ganze Zeit aktiv ist. Die LED kann man aber in der Konfiguration dauerhaft abschalten. Dazu sind folgende Schriite notwendig:
cd /boot
sudo nano config.txt
An Ende einfügen: disable\_camera\_led=1
und speichern.
sudo reboot
Damit ist die Installation der Webcam-Software abgeschlossen.
Status-LED" ansteuern und Shutdown-Kontakt auswerten
Im Verzeichnis “/home/pi” das Script „shutdown.py“ anlegen durch:
cd /home/pi
nano shutdown.py
Im Editor das folgende Script eintragen:
shutdown.py
|
|
Nach dem Speichern muss das Script noch ausführbar gemacht werden:
chmod a+x shutdown.py
Das Skript kann direkt gestartet werden mit:
sudo ./shutdown.py
Die Status-Led sollte jetzt blinken. Wenn man jetzt mit einem Magneten in die Nähe des Reed-Kontaktes Sx kommt sollte sich der Raspberry Pi herunterfahren und stoppen.
Um das Skript als Hintergrund-Process beim Booten zu starten muss es in die rc.local eingetragen werden
sudo nano /etc/rc.local
Am Ende der Datei vor “exit 0” die folgende Zeile einfügen und speichern:
/home/pi/shutdown.py &
Einbinden der Temperatursensoren
Seit Raspbian den 3.18-Kernel verwendet muss zu erst die 1-Wire-Schnittstelle im DeviceTree aktiviert werden. Dazu muss in der Datei “boot/config.txt” eine Zeile hinzugefügt werden:
sudo nano /boot/config.txt
dtoverlay=w1-gpio,gpiopin=4,pullup=on
Damit die Änderungen an der Konfiguration übernommen werden muss der RaspberryPi einmal neu gestartet werden, also ein sudo reboot
durchgeführt werden.
Dann müssen die 1Wire-Treiber und der Treiber für den Temperatursensor geladen werden:
sudo modprobe w1-gpio pullup=1
sudo modprobe w1-therm
Weil die 1-Wire-Sensoren direkt in das Pfadsystem eingebunden werden, kann man sehr leicht überprüfen, ob sie korrekt eingebunden sind.
Pfad der 1-Wire Sensoren auswählen mit:
cd /sys/bus/w1/devices
Anzeige der gefundenen Sensoren mit:
ls
Es sollten drei Verzeichnisse angezeigt werden, zwei 28-???????? und ein w1_bus_master-Verzeichnis. Bei den 28-????????-Verzeichnissen handelt es sich direkt um die beiden Temperatursensoren. Der Name der Verzeichnisse leitet sich direkt aus der Bausteinkennung und der einmaligen Baustein-ID ab.
Die Temperatur eines Sensors anzuzeigen:
cd 28-??????
cat w1\_slave
\->81 01 4b 46 7f ff 0f 10 71 : crc=71 YES
\->81 01 4b 46 7f ff 0f 10 71 t=24062
Die Temperatur ist t in 1/100 °C kodiert. (Die Genauigkeit des Sensors liegt nur bei +/-0.5°C. Die vielen Nachkommastellen sind also nur Show!)
Um die Module automatisch beim nächsten Systemstart zu laden müssen in der “/etc/modules”-Datei die folgenden Zeilen ergängt werden
sudo nano /etc/modules
w1-gpio
w1-therm
Nach dem die Datei gespeichert wurde, kann der Raspberry Pi neu gestartet werden.
Temperatur loggen:
Um die Temperaturwerte mitzuloggen gibt es mindestens eine halbes dutzend Wege. Eine relative einfache Variante ist es die Daten mit Hilfe des Round Robin Datenbank Tools (RRDtool) abzulegen. Bei dieser einfachen Datenbank werden die Daten direkt in ein vorher angelegtes File geschrieben.
Die Installation der RRDTools Datenbank und eines Python-Interfaces dafür erfolgt durch:
sudo apt-get install rrdtool python-rrdtool
Alle Daten & Scripte die für die Temperaturaufzeichnung benötigt werden sollen in den Unterverzeichnis “temperature” liegen. Das Verzeichnis wird angelegt durch:
cd /home/pi
mkdir temperature
cd temperature
Als nächstes wird das Datenbank-File angelegt und die Struktur initialisiert. Dies erfolgt mit dem Befehl:
rrdtool create temperature.rrd --step 300 DS:temp\_inside:GAUGE:3600:-40:80 DS:temp\_outside:GAUGE:3600:-40:80 RRA:AVERAGE:0.5:1:2880 RRA:MIN:0.5:288:3600 RRA:MAX:0.5:288:3600 RRA:AVERAGE:0.5:288:3600
Mit dem Ausführen des oberen Befehls wird eine Datenbank mit dem Filenamen “temperature.rrd” angelegt. In dieser Datenbank werden die Werte von den zwei Temperatursensoren “temp_inside” & “temp_outside” in je 3600 Datensätzen gespeichert. Das Speichern der Werte erfolgt in 300 Sekunden Schritten (=alle 5min). Nach 2880 Messwerten (= 10 Tagen) erfolgt eine Reduzierung des Datensatzes auf den Min-, Max- und Average-Wert, der jeweils aus 288 Einzelwerten (= 1Tag) gebildet wird.
Das Einlesen der Temperaturwerte erfolgt durch ein Python-Script, das ich auf der Seite von Martin Kompf gefunden habe, bei dem nur noch die Seriennummern der Sensoren angepasst werden müssen:
gettemp.py
|
|
Bevor das Skript gestartet werden kann muss es noch als ausführbare Datei markiert werden:
chmod +x gettemp.py
Um das Skript alle 5 Minuten automatisch zu starten wird der Cron Dämon benutzt. Um dort einen neuen Job einzutragen fügt man nach dem Aufruf von crontab -e
die folgende Zeile hinzu:
\*/5 \* \* \* \* $HOME/temperature/gettemp.py >> $HOME/temperature/gettemp.log 2>&1
So jetzt sammelt der Pi fleissig alle 5 Minuten die Temperaturdaten. Was jetzt noch fehlt ist die Visalisierung der Messergebnisse und die Einbindung in die Webseite. Dazu wird im Webserver-Verzeichnis ein neues Verzeichnis mit dem Namen “temperature” angelegt, in dem später die Temperaturgraphen abgelegt werden.
sudo mkdir /var/www/temperature
sudo chmod a+r /var/www/temperature
Die Erzeugung der Graphen mit den Temperaturmesswerten erfolgt über zwei Shell-Scripte, die wiederum zeitgesteuert über Cron-Jobs aufgerufen werden. Das Skript zur Erzeugung des Tages-Graphen “temp_day.sh” wird alle 5 Minuten aufgerufen, während die Graphen für die Wochen- / Monats- und Jahresverlauf mit dem Skript “temp_wmy.sh” nur einmal täglich zur Geisterstunde aktualisiert werden.
temp_day.sh
|
|
temp_day.sh
|
|
Diese beiden Skripte werden im Unterverzeichnis /home/pi/temperature gespeichert und danach mit chmod als ausführbar gekennzeichnet.
chmod +x temp\_day.sh
chmod +x temp\_wmy.sh
Um die beiden Skripte zeitgesteuert auszuführen müssen jetzt noch zwei Jobs in der Crontab getragen werden. Dazu fügt man nach dem Aufruf von crontab -e
die folgenden Zeilen hinzu:
\*/5 \* \* \* \* sudo $HOME/temperature/temp\_day.sh >&1
0 0 \* \* \* sudo $HOME/temperature/temp\_wmy.sh >&1
Das Ergebnis der Skripte liegt dann im /var/www/temperature-Verzeichnis und sieht in etwa so aus:
Um die Graphen zugänglich zu machen wird im Unterverzeichnis /var/www noch eine Webseite mit dem Namen “temperatur.php” angelegt:
sudo nano /var/www/temperatur.php
temperatur.php
|
|
Um diese Webseite jetzt auch von der Hauptseite der Nistkasten-Kamera aus zu erreichen fehlt jetzt nur noch eine kleiner Knopf auf der Seite. Bei der aktuellen Version 5.1.3 des RPi-Cam-Web-Interface erreicht man dies z.B. in dem “index.php”-file in der Div-Section “secondary-buttons” die lila eingefärbten Zeilen mit “sudo nano index.php” einfügt:
Ausschnitt aus index.php
|
|
Nach dem Speichern der “index.php” sollte die Knopfleiste im Browser so aussehen:
So das war’s schon… Ist doch alles gar nicht so kompliziert, wenn es erstmal läuft… 😏