Webcam mit Raspberry Pi

Webcam mit Raspberry Pi

Rainer Kembügler (onki)

Allgemein

Es ist schon ungemein praktisch, sich vor dem Flugtag ein „Bild“ von den aktuellen Gegebenheiten am Fluggelände machen zu können. Besonders dann, wenn der Fluggelände einige Kilometer vom Wohnort entfernt ist, kann es passieren, dass das Wetter am Platz nicht so ist wie daheim. Hierzu leistet eine Webcam am Fluggelände gute Dienste, da man sich vor dem Fliegen nicht nur das Wetter am Platz anschauen kann.

Genau dies war der Grund für unseren Verein, eine Webcam zu realisieren. Nun gibt es zahlreiche käufliche Fertiglösungen, die sind jedoch zum Teil recht teuer und haben in der Regel auch nur VGA-Auflösung (640 x 480 Pixel). Als Modellbauer unterliegt man zudem einem gewissen Trieb, solche Dinge selbst zu bauen, weshalb die Entscheidung zum Selbstbau schnell getroffen war.
Für dieses Vorhaben ist der im Augenblick sehr populäre und preiswerte Raspberry Pi Minicomputer (RPi) mehr als gut geeignet. Zudem wird für den RPi auch ein günstiges Kameramodul angeboten, das Bilder bis 5 Megapixel Auflösung erlaubt. Aufgrund einer gewissen „Linux-Kommandozeilen-Allergie“ war der Drang zunächst gering, den RPi als Kandidaten zu verwenden, aber man sollte seinen Horizont ja erweitern und daher war der Entschluss schnell gefasst.

Im Folgenden möchte ich die Realisierung beschreiben und so die Möglichkeit bieten, das Projekt nachzuahmen. Diese Anleitung soll nur einen Weg aufzeigen, die Aufgabenstellung zu lösen und erhebt einerseits keinen Anspruch, fehlerfrei zu sein, oder andererseits, das Optimum darzustellen. Auch hier führen viele Wege nach Rom von denen ich nur einen etwas genauer beschreiben möchte.
Es ist aber darauf hinzuweisen, dass schon ein paar Linux-Grundkenntnisse nötig sind, um das Projekt zu einem erfolgreichen Ende zu bringen. Dinge wie CHMOD zum setzen von Dateiberechtigungen und die Linux-Dateistruktur sollten einigermaßen bekannt sein. Damit es auch klappt, sollten alle Skripte ausführbar gemacht werden (chmod 0755).


Rechtliches
Der Betrieb einer Webcam ist ein relativ heißes Eisen in Zeiten von NSA & Co., kann es doch als Überwachungskamera angesehen werden. Persönlichkeitsrechte sind unbedingt zu wahren. Wird eine Webcam hingegen mit dem Zweck eingesetzt, die lokale Wettersituation zu erfassen, können nach üblicher Rechtsauffassung dort möglicherweise abgebildete Personen als „Beiwerk“ betrachtet werden. Es ist ratsam, sich vor der Inbetriebnahme der Webcam rechtskundig zu machen und das Projekt gegebenenfalls mit den Mitgliedern abzustimmen. Um Personen unkenntlich zu machen, wurde bei meiner Webcam, ein Teil des unteren Bildbereiches zusätzlich unkenntlich gemacht, damit keine eventuell am Platz befindlichen Personen erkannt werden können.


Stromversorgung
Der Raspberry Pi benötigt eine 5 V-Betriebsspannung. Diese wird üblicherweise dem Board über den Micro-USB Stecker zugeführt. Da der Platz im Webcam-Gehäuse jedoch begrenzt ist, wird diese Lösung etwas „sperrig“, da der Stecker recht viel Platz benötigt. Ein Blick auf die Pinbelegung des 26-poligen GPIO Steckers zeigt, dass auch hier 5 V eingespeist werden können:

Abb-01.jpg

Der 4,7 kOhm Widerstand ist der Pullup-Widerstand für den 1-Wire-Sensor. Die Betriebsspannung wird an Pin 2 (+5 V) und Pin 9 (GND) angelegt.


Gehäuseeinbau
Da eine Webcam meistens im Freien betrieben wird, ist ein entsprechend geeignetes Gehäuse notwendig. In meinem Fall fiel die Wahl auf ein Dummy-Webcam-Gehäuse, das sehr günstig ist, den Zweck gut erfüllt und entsprechend modifiziert werden kann.

Abb-02_720.jpg

Das Kameramodul wurde in die vordere Abdeckung eingebaut. Die eigentliche Kamera schaut durch ein kleines Loch, damit der Rest der Elektronik verborgen bleibt. Sollte die bei der Aufnahme rot leuchtende LED stören, kann dies durch den Eintrag „disable_camera_led=1“ in der Datei config.txt im Hauptpfad abgeschaltet werden.
Die Kabeldurchführungen sind in die hintere Abdeckung integriert und steckbar. Der Raspberry Pi hingegen befindet sich im Inneren des Gehäuses. Das Gehäuse ist mit Nuten versehen, in das üblicherweise Platinen eingeschoben werden. Mit einer Basisplatte werden diese Nuten genutzt und der RPi mit Abstandshaltern auf dieser Platte befestigt. Somit lässt sich alles leicht entnehmen. Die Anbindung an das Internet wird über einen kleinen WLAN-Dongle (im Bild das schwarze Teil mit kleiner Taste) und einen mobilen WLAN-Router (Huawei E5331) erledigt. Hier sind die örtlichen Gegebenheiten für die beste Internet-Anbindung ausschlagebend.

Abb-03_720.jpg


Raspberry Pi vorbereiten
Als Betriebssystem kommt „Raspbian Wheezy“ zum Einsatz, ein auf den Einsatz im Raspberry Pi optimiertes Debian Linux. Ein entsprechendes, aktuelles Image für die SD-Karte kann hier heruntergeladen werden:

http://downloads.raspberrypi.org/raspbian_latest

Mit einem geeigneten Programm muss dieses Image nun den Weg auf die SD-Karte finden (mind. 4GB). Hier ist unter Windows der Win32DiskImager das Tool meiner Wahl. Danach kann die Karte in den RPi und es kann losgehen.

Je nach Netzwerkanbindung bekommt der RPi nun üblicherweise eine IP-Adresse zugewiesen (DHCP). Diese gilt es herauszufinden. Entweder man schaut in das Webinterface seines Routers oder man nutzt einen IP-Scanner. Mit einem SSH-Tool kann man nun Verbindung mit dem RPi aufnehmen. Meine Wahl ist hier WinSCP mit PuTTY.

Da der RPi aber auch über einen HDMI-Ausgang verfügt, kann man alternativ einen geeigneten Monitor sowie eine USB-Taststur anschließen und die grafische Benutzeroberflache verwenden. Da die Webcam aber üblicherweise ohne Monitor betrieben wird, ist es ratsam, von vorneherein über SSH mit dem RPi zu kommunizieren.

Zuerst muss man den Raspberry einrichten und die Zeitzone etc. festlegen. Dies erreicht man durch Eingabe von
Code:
[I]sudo raspi-config[/I]
in der PuTTY Konsole (als Standardbenutzer „pi“ mit dem Standardpasswort „raspberry“)

Hier kann das Dateisystem expandiert werden (SD-Card komplett nutzen) sowie die Sprache eingestellt werden. Zudem wird damit die Kamera aktiviert (Punkt 5: „Enable Camera“).

Danach sollte alles noch auf den aktuellen Stand gebracht werden:
Code:
[I]sudo apt-get update
sudo apt-get upgrade
sudo rpi-update[/I]
Hierzu ist natürlich ein Internetzugang vom RPi aus erforderlich. Es ist zweckmäßig, dies über den Ethernetanschluss zu erledigen. Alternativ ist auch der Internetzugang über einen WLAN-Dongle möglich. Hierzu gibt es im Netz zahlreiche Anleitungen, weshalb ich hier nicht weiter darauf eingehen möchte.

Folgende zusätzliche Pakete werden für die Webcam benötigt:
Code:
[I]sudo apt-get install ftp (FTP-Übertragung zum Webserver)
sudo apt-get install bc (Berechnung der Temperatur
sudo apt-get imagemagick (Text in das Bild einstempeln)[/I]


Temperaturmessung

Neben dem Wetterbild selbst, sollte die aktuelle Lufttemperatur am Platz noch in das Bild eingefügt werden, damit man einen Anhaltspunkt über die lokalen Bedingungen bekommt und seine Kleidung entsprechend aussuchen kann (Pulli oder T-Shirt). Weitere Wetterdaten wie Windstärke und –richtung, Luftfeuchte etc. sind zwar auch darstellbar, aber wegen unserer Platzlage in einer Waldlichtung nicht sinnvoll und daher nicht realisiert.
Zur Temperaturmessung wird ein sogenannter 1-Wire-Sensor verwendet, da er mit geringstem Aufwand einzubinden ist und sehr präzise misst. Der Sensor ist als diskretes Bauteil in Transistorbauform oder als komplett vergossenes Bauteil mit 3-poligem Anschlusskabel erhältlich. Diese 3 Anschlüsse verteilen sich auf die 3,3 V Betriebsspannung (Pin 1), Masse (Pin 6) und dem Datenport GPIO4 (Pin7).

Der verwendete 1-Wire Temperatursensor DS18S20 wird durch die folgenden Einträge in die Datei /etc/modules dauerhaft aktiviert:
Code:
[I]w1-gpio pullup=1
w1-therm[/I]
Wegen eines Bugs in der Software (das hat mir ziemlich Kopfzerbrechen bereitet) muss die Reihenfolge der Einträge genau stimmen, da es sonst zu einer nicht funktionierenden Kamera kommt. Meine modules-Datei sieht wie folgt aus und damit klappt es:
Code:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
w1-gpio pullup=1
w1-therm
w1-gpio
i2c-dev
i2c-bcm2708
spi-bcm2708
lirc_dev
lirc_rpi gpio_out_pin=7


Zusätzlich dazu muss noch die Datei „raspi-blacklist.conf“ im Verzeichnis /etc/modprobe.d modifiziert werden (ersten Eintrag auskommentieren).
Code:
# blacklist spi and i2c by default (many users don't need them)

#blacklist spi-bcm2708
blacklist i2c-bcm2708

Damit wird eine friedliche Koexistenz zwischen Raspberry Kamera und 1-Wire-Temperatursensor gewährleistet.

Zur Ermittlung und Umrechnung der Sensortemperatur kommt folgendes Skript (temp) zum Einsatz, das ins Verzeichnis /usr/bin kopiert wird und 0755 Rechte (Besitzer „root“) hat:
Code:
#! /bin/bash

# Temperatur des Sensors auslesen
tempread=`cat /sys/bus/w1/devices/[highlight]Sensorverzeichnis[/highlight]/w1_slave`
temp=`echo $tempread | egrep -o 't=[\-]?[0-9]+$' | cut -d= -f2`
temp2=`echo "scale=1; $temp / 1000" | bc`

# Wert ausgeben
echo ".........Temperatur" $temp2 "°C"

Der gelb unterlegte Teil muss auf die jeweils vorhandene, einzigartige Sensoradresse geändert werden, in der sich die Datei mit dem Temperaturwert befindet. Dieser Pfad muss über den Dateiexplorer ermittelt werden (in meinem Fall beispielsweise „10-000802c2ca6f“).
Die Ermittlung und Umrechnung erscheint etwas umständlich, ist aber wegen der Außentemperaturen und der damit verbundenen Varianz der Stellen nötig.
Die Eingabe von „temp“ sollte nun eine gültige Temperatur auf der Konsole ausgeben.


Bild aufnehmen und verarbeiten

Die Pi Kamera hat die Aufgabe, das Bild aufzunehmen. Hierzu wird der Befehl „raspistill“ verwendet. Das Skript „takeimage“ erledigt diese Aufgabe und speichert das Bild (Format 1024x768 Pixel) unter dem Namen „wc_image.jpg“. Dieses Bild wird dann noch verarbeitet, indem der untere Bereich weichgezeichnet wird, damit keine Personen zu erkennen sind (der Schritt kann gegebenenfalls entfallen). Das daraus resultierende Bild wird unter“ wc_image_sft.jpg“ zwischengespeichert.

Schließlich wird noch ein schwarzer Balken eingefügt, in den ein Text mit der Bezeichnung, das aktuelle Datum und die aktuell ausgelesene Temperatur eingestempelt wird. Dieses Bild wird als „wc_image_mod.jpg“ gespeichert (alle in /home/pi). Entfällt das Weichzeichnen, muss der Eingangs-Dateiname „wc_image_sft.jpg“ im Skript auf „wc_image.jpg“ angepasst werden.

Abschließend wird das finale Bild noch via FTP auf den Webserver übertragen, damit es auf der Vereinshomepage angezeigt werden kann.
Code:
#!/bin/bash

#Kamerabild aufnehmen und speichern
raspistill -w 1024 -h 768 -q 70 -t 3000 -sh 10 -ex auto -awb auto -vf -hf -o /home/pi/wc_image.jpg

#Kamerabild weichzeichnen
convert /home/pi/wc_image.jpg -region 1024x88+0+680 -blur 0x8 /home/pi/wc_image_sft.jpg

#aufgenommenes Bild mit Textstring versehen
convert /home/pi/wc_image_sft.jpg -geometry 1024x768 -quality 80 -gravity North -background black -extent 1024x788 -gravity SouthEast -fill white -pointsize 16 -draw "text 0,0 'Webcam Beschreibung und Ort                          
`echo $(date)`................................`echo $(temp)`
 '" /home/pi/wc_image_mod.jpg

#modifiziertes Bild via FTP hochladen
/usr/bin/ftpupload /home/pi/wc_image_mod.jpg /

Die entsprechenden FTP-Zugangsdaten sind in der Datei „.netrc“ in /home/pi vorab eingetragen:
Code:
machine ihredomain.de
login ihrlogin
password ihrpasswort

Wichtig ist, dass die „.netrc“-Datei die Rechte 0600 bekommt (Besitzer „pi“).

Ebenso muss der Zielserver in die oberen Zeilen des Skript “ ftpupload“ eingetragen werden, das zum Upload im Hauptskript verwendet wird. Dieses Skript ist wie die Temperaturabfrage in /usr/bin beheimatet und ausführbar (0755; Besitzer „root“).

Code:
#!/bin/bash
#
# login infos saved to ~/.netrc
#
srvIP="ihredomain.de"
srvPORT="21"


Automatisierung

Nun ist es recht schwierig, das Bild jedes mal von Hand aufzunehmen. Hier muss also ein Automatismus her, der in einem geregelten Zeitabstand diese Aufgabe durchführt. Diese Aufgabe übernimmt der Linux Daemon „Cron“, der genau für solche Aufgaben existiert. Über die sogenannte „Crontab“ wird ihm eine Aufgabenliste unterbreitet, die der Cron brav abarbeitet.

Durch die Eingabe (eingeloggt als „pi“) von
Code:
crontab –e
wird die Aufgabenliste angezeigt und kann entsprechend ergänzt werden. In meinem Fall soll im Zeitraum von 6 – 21 Uhr alle 20 Minuten ein Bild aufgenommen und hochgeladen werden. Als Crontab-Eintrag sieht das wie folgt aus:
Code:
*/20 06-20 * * * sh /home/pi/takeimage
00 21 * * * sh /home/pi/takeimage

Die neu erstellte Liste wird mit STRG + O gespeichert bzw. der Editor mit STRG + X beendet.

Nun müsste die Webcam alle 20 Minuten ein Bild, wie etwa dieses, aufnehmen, bearbeiten und hochladen. Die Einbindung in die Homepage erfolgte als eingebettetes Bild auf einer nur für Mitglieder zugänglichen Seite.

Abb-04_720.jpg

Die endgültige Position der Webcam ist auch bereits gefunden. Ein geschützter Platz unter dem Dachvorsprung ist ideal, da Regen und Schnee der Kamera nicht zu nahe kommen können. Probleme durch Kondensation sind bisher nicht aufgetreten.

Abb-05_720.jpg

Das graue Kabel stellt die Stromversorgung dar (Netzteil und WLAN/GSM Modem in der Hütte), das schwarze Kabel gehört zum Temperatursensor.

Referenzen:

http://sourceforge.net/projects/win32diskimager/
http://winscp.net/eng/docs/lang:de
http://jankarres.de/2012/08/raspberry-pi-raspbian-installieren/
http://downloads.raspberrypi.org/raspbian_latest
https://www.raspiprojekt.de/anleitu...emperatursensor-ds18b20.html?showall=&start=4
http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
http://www.watterott.com/de/Temperatur-Sensor-Wasserdicht-DS18B20
 
Webcam

Webcam

Hallo mich würde es auch interessieren.
Und auch bei mir´: Habe leider überhaupt keine Ahnung.
Ich besitze in Italien ein kleines Grundstück mit einer Fischerhütte drauf und da würde
ich gern hin und wieder mal visuell vorbeischauen.
Internet über Wind vorhanden und sehr gut. Kleiner W-Lan Router der eine Sim Karte hat.
Strom auch aber den schalte ich gern ab da ich ja immer lange weg bin. Wär aber möglich.
Computer möchte ich keinen laufen lassen. Aber ich hätte gern 2 Webcams. Eine fürs Grundstück
und eine die aufs Meer rausschaut ob an meinem Boot alles O.K. ist.
Gibt's hier jemand der mir sagen kann was so was kostet und wie man es als Laie realisieren kann?

Gruß Frank
Irgendwie funktioniert bei mir der ftp upload auf meinen Server nicht, Adress ist richtig eingegeben, Pfad auch und benutzername auch. Der Raspi macht brav seine Bilder, läd sie aber nicht hoch. Momentan noch über Lan Kabel angeschlossen. die .netrc einfach in /home/pi speicher mit chmod 0600 ?
 
Webcam mit Raspberry Pi

Rainer Kembügler (onki)

Allgemein

Es ist schon ungemein praktisch, sich vor dem Flugtag ein „Bild“ von den aktuellen Gegebenheiten am Fluggelände machen zu können. Besonders dann, wenn der Fluggelände einige Kilometer vom Wohnort entfernt ist, kann es passieren, dass das Wetter am Platz nicht so ist wie daheim. Hierzu leistet eine Webcam am Fluggelände gute Dienste, da man sich vor dem Fliegen nicht nur das Wetter am Platz anschauen kann.

Genau dies war der Grund für unseren Verein, eine Webcam zu realisieren. Nun gibt es zahlreiche käufliche Fertiglösungen, die sind jedoch zum Teil recht teuer und haben in der Regel auch nur VGA-Auflösung (640 x 480 Pixel). Als Modellbauer unterliegt man zudem einem gewissen Trieb, solche Dinge selbst zu bauen, weshalb die Entscheidung zum Selbstbau schnell getroffen war.
Für dieses Vorhaben ist der im Augenblick sehr populäre und preiswerte Raspberry Pi Minicomputer (RPi) mehr als gut geeignet. Zudem wird für den RPi auch ein günstiges Kameramodul angeboten, das Bilder bis 5 Megapixel Auflösung erlaubt. Aufgrund einer gewissen „Linux-Kommandozeilen-Allergie“ war der Drang zunächst gering, den RPi als Kandidaten zu verwenden, aber man sollte seinen Horizont ja erweitern und daher war der Entschluss schnell gefasst.

Im Folgenden möchte ich die Realisierung beschreiben und so die Möglichkeit bieten, das Projekt nachzuahmen. Diese Anleitung soll nur einen Weg aufzeigen, die Aufgabenstellung zu lösen und erhebt einerseits keinen Anspruch, fehlerfrei zu sein, oder andererseits, das Optimum darzustellen. Auch hier führen viele Wege nach Rom von denen ich nur einen etwas genauer beschreiben möchte.
Es ist aber darauf hinzuweisen, dass schon ein paar Linux-Grundkenntnisse nötig sind, um das Projekt zu einem erfolgreichen Ende zu bringen. Dinge wie CHMOD zum setzen von Dateiberechtigungen und die Linux-Dateistruktur sollten einigermaßen bekannt sein. Damit es auch klappt, sollten alle Skripte ausführbar gemacht werden (chmod 0755).


Rechtliches
Der Betrieb einer Webcam ist ein relativ heißes Eisen in Zeiten von NSA & Co., kann es doch als Überwachungskamera angesehen werden. Persönlichkeitsrechte sind unbedingt zu wahren. Wird eine Webcam hingegen mit dem Zweck eingesetzt, die lokale Wettersituation zu erfassen, können nach üblicher Rechtsauffassung dort möglicherweise abgebildete Personen als „Beiwerk“ betrachtet werden. Es ist ratsam, sich vor der Inbetriebnahme der Webcam rechtskundig zu machen und das Projekt gegebenenfalls mit den Mitgliedern abzustimmen. Um Personen unkenntlich zu machen, wurde bei meiner Webcam, ein Teil des unteren Bildbereiches zusätzlich unkenntlich gemacht, damit keine eventuell am Platz befindlichen Personen erkannt werden können.


Stromversorgung
Der Raspberry Pi benötigt eine 5 V-Betriebsspannung. Diese wird üblicherweise dem Board über den Micro-USB Stecker zugeführt. Da der Platz im Webcam-Gehäuse jedoch begrenzt ist, wird diese Lösung etwas „sperrig“, da der Stecker recht viel Platz benötigt. Ein Blick auf die Pinbelegung des 26-poligen GPIO Steckers zeigt, dass auch hier 5 V eingespeist werden können:

Anhang anzeigen 11783306

Der 4,7 kOhm Widerstand ist der Pullup-Widerstand für den 1-Wire-Sensor. Die Betriebsspannung wird an Pin 2 (+5 V) und Pin 9 (GND) angelegt.


Gehäuseeinbau
Da eine Webcam meistens im Freien betrieben wird, ist ein entsprechend geeignetes Gehäuse notwendig. In meinem Fall fiel die Wahl auf ein Dummy-Webcam-Gehäuse, das sehr günstig ist, den Zweck gut erfüllt und entsprechend modifiziert werden kann.

Anhang anzeigen 11783307

Das Kameramodul wurde in die vordere Abdeckung eingebaut. Die eigentliche Kamera schaut durch ein kleines Loch, damit der Rest der Elektronik verborgen bleibt. Sollte die bei der Aufnahme rot leuchtende LED stören, kann dies durch den Eintrag „disable_camera_led=1“ in der Datei config.txt im Hauptpfad abgeschaltet werden.
Die Kabeldurchführungen sind in die hintere Abdeckung integriert und steckbar. Der Raspberry Pi hingegen befindet sich im Inneren des Gehäuses. Das Gehäuse ist mit Nuten versehen, in das üblicherweise Platinen eingeschoben werden. Mit einer Basisplatte werden diese Nuten genutzt und der RPi mit Abstandshaltern auf dieser Platte befestigt. Somit lässt sich alles leicht entnehmen. Die Anbindung an das Internet wird über einen kleinen WLAN-Dongle (im Bild das schwarze Teil mit kleiner Taste) und einen mobilen WLAN-Router (Huawei E5331) erledigt. Hier sind die örtlichen Gegebenheiten für die beste Internet-Anbindung ausschlagebend.

Anhang anzeigen 11783305


Raspberry Pi vorbereiten
Als Betriebssystem kommt „Raspbian Wheezy“ zum Einsatz, ein auf den Einsatz im Raspberry Pi optimiertes Debian Linux. Ein entsprechendes, aktuelles Image für die SD-Karte kann hier heruntergeladen werden:

http://downloads.raspberrypi.org/raspbian_latest

Mit einem geeigneten Programm muss dieses Image nun den Weg auf die SD-Karte finden (mind. 4GB). Hier ist unter Windows der Win32DiskImager das Tool meiner Wahl. Danach kann die Karte in den RPi und es kann losgehen.

Je nach Netzwerkanbindung bekommt der RPi nun üblicherweise eine IP-Adresse zugewiesen (DHCP). Diese gilt es herauszufinden. Entweder man schaut in das Webinterface seines Routers oder man nutzt einen IP-Scanner. Mit einem SSH-Tool kann man nun Verbindung mit dem RPi aufnehmen. Meine Wahl ist hier WinSCP mit PuTTY.

Da der RPi aber auch über einen HDMI-Ausgang verfügt, kann man alternativ einen geeigneten Monitor sowie eine USB-Taststur anschließen und die grafische Benutzeroberflache verwenden. Da die Webcam aber üblicherweise ohne Monitor betrieben wird, ist es ratsam, von vorneherein über SSH mit dem RPi zu kommunizieren.

Zuerst muss man den Raspberry einrichten und die Zeitzone etc. festlegen. Dies erreicht man durch Eingabe von
Code:
[I]sudo raspi-config[/I]
in der PuTTY Konsole (als Standardbenutzer „pi“ mit dem Standardpasswort „raspberry“)

Hier kann das Dateisystem expandiert werden (SD-Card komplett nutzen) sowie die Sprache eingestellt werden. Zudem wird damit die Kamera aktiviert (Punkt 5: „Enable Camera“).

Danach sollte alles noch auf den aktuellen Stand gebracht werden:
Code:
[I]sudo apt-get update[/INDENT]
[INDENT]sudo apt-get upgrade[/INDENT]
[INDENT]sudo rpi-update[/I]
Hierzu ist natürlich ein Internetzugang vom RPi aus erforderlich. Es ist zweckmäßig, dies über den Ethernetanschluss zu erledigen. Alternativ ist auch der Internetzugang über einen WLAN-Dongle möglich. Hierzu gibt es im Netz zahlreiche Anleitungen, weshalb ich hier nicht weiter darauf eingehen möchte.

Folgende zusätzliche Pakete werden für die Webcam benötigt:
Code:
[I]sudo apt-get install ftp (FTP-Übertragung zum Webserver)[/INDENT]
[INDENT]sudo apt-get install bc (Berechnung der Temperatur[/INDENT]
[INDENT]sudo apt-get imagemagick (Text in das Bild einstempeln)[/I]

Temperaturmessung
Neben dem Wetterbild selbst, sollte die aktuelle Lufttemperatur am Platz noch in das Bild eingefügt werden, damit man einen Anhaltspunkt über die lokalen Bedingungen bekommt und seine Kleidung entsprechend aussuchen kann (Pulli oder T-Shirt). Weitere Wetterdaten wie Windstärke und –richtung, Luftfeuchte etc. sind zwar auch darstellbar, aber wegen unserer Platzlage in einer Waldlichtung nicht sinnvoll und daher nicht realisiert.
Zur Temperaturmessung wird ein sogenannter 1-Wire-Sensor verwendet, da er mit geringstem Aufwand einzubinden ist und sehr präzise misst. Der Sensor ist als diskretes Bauteil in Transistorbauform oder als komplett vergossenes Bauteil mit 3-poligem Anschlusskabel erhältlich. Diese 3 Anschlüsse verteilen sich auf die 3,3 V Betriebsspannung (Pin 1), Masse (Pin 6) und dem Datenport GPIO4 (Pin7).

Der verwendete 1-Wire Temperatursensor DS18S20 wird durch die folgenden Einträge in die Datei /etc/modules dauerhaft aktiviert:
Code:
[I]w1-gpio pullup=1[/INDENT]
[INDENT]w1-therm[/I]
Wegen eines Bugs in der Software (das hat mir ziemlich Kopfzerbrechen bereitet) muss die Reihenfolge der Einträge genau stimmen, da es sonst zu einer nicht funktionierenden Kamera kommt. Meine modules-Datei sieht wie folgt aus und damit klappt es:
Code:
# /etc/modules: kernel modules to load at boot time.[/I][/INDENT]
[I][INDENT]#[/INDENT]
[INDENT]# This file contains the names of kernel modules that should be loaded[/INDENT]
[INDENT]# at boot time, one per line. Lines beginning with "#" are ignored.[/INDENT]
[INDENT]# Parameters can be specified after the module name.[/INDENT]
[INDENT][/INDENT]
[INDENT]snd-bcm2835[/INDENT]
[INDENT]w1-gpio pullup=1[/INDENT]
[INDENT]w1-therm[/INDENT]
[INDENT]w1-gpio[/INDENT]
[INDENT]i2c-dev[/INDENT]
[INDENT]i2c-bcm2708[/INDENT]
[INDENT]spi-bcm2708[/INDENT]
[INDENT]lirc_dev[/INDENT]
[INDENT]lirc_rpi gpio_out_pin=7



Zusätzlich dazu muss noch die Datei „raspi-blacklist.conf“ im Verzeichnis /etc/modprobe.d modifiziert werden (ersten Eintrag auskommentieren).
Code:
# blacklist spi and i2c by default (many users don't need them)[/I][/INDENT]
[I][INDENT][/INDENT]
[INDENT]#blacklist spi-bcm2708[/INDENT]
[INDENT]blacklist i2c-bcm2708


Damit wird eine friedliche Koexistenz zwischen Raspberry Kamera und 1-Wire-Temperatursensor gewährleistet.

Zur Ermittlung und Umrechnung der Sensortemperatur kommt folgendes Skript (temp) zum Einsatz, das ins Verzeichnis /usr/bin kopiert wird und 0755 Rechte (Besitzer „root“) hat:
Code:
#! /bin/bash[/I][/INDENT]
[I][INDENT][/INDENT]
[INDENT]# Temperatur des Sensors auslesen[/INDENT]
[INDENT]tempread=`cat /sys/bus/w1/devices/[highlight]Sensorverzeichnis[/highlight]/w1_slave`[/INDENT]
[INDENT]temp=`echo $tempread | egrep -o 't=[\-]?[0-9]+$' | cut -d= -f2`[/INDENT]
[INDENT]temp2=`echo "scale=1; $temp / 1000" | bc`[/INDENT]
[INDENT][/INDENT]
[INDENT]# Wert ausgeben[/INDENT]
[INDENT]echo ".........Temperatur" $temp2 "°C"


Der gelb unterlegte Teil muss auf die jeweils vorhandene, einzigartige Sensoradresse geändert werden, in der sich die Datei mit dem Temperaturwert befindet. Dieser Pfad muss über den Dateiexplorer ermittelt werden (in meinem Fall beispielsweise „10-000802c2ca6f“).
Die Ermittlung und Umrechnung erscheint etwas umständlich, ist aber wegen der Außentemperaturen und der damit verbundenen Varianz der Stellen nötig.
Die Eingabe von „temp“ sollte nun eine gültige Temperatur auf der Konsole ausgeben.


Bild aufnehmen und verarbeiten
Die Pi Kamera hat die Aufgabe, das Bild aufzunehmen. Hierzu wird der Befehl „raspistill“ verwendet. Das Skript „takeimage“ erledigt diese Aufgabe und speichert das Bild (Format 1024x768 Pixel) unter dem Namen „wc_image.jpg“. Dieses Bild wird dann noch verarbeitet, indem der untere Bereich weichgezeichnet wird, damit keine Personen zu erkennen sind (der Schritt kann gegebenenfalls entfallen). Das daraus resultierende Bild wird unter“ wc_image_sft.jpg“ zwischengespeichert.

Schließlich wird noch ein schwarzer Balken eingefügt, in den ein Text mit der Bezeichnung, das aktuelle Datum und die aktuell ausgelesene Temperatur eingestempelt wird. Dieses Bild wird als „wc_image_mod.jpg“ gespeichert (alle in /home/pi). Entfällt das Weichzeichnen, muss der Eingangs-Dateiname „wc_image_sft.jpg“ im Skript auf „wc_image.jpg“ angepasst werden.

Abschließend wird das finale Bild noch via FTP auf den Webserver übertragen, damit es auf der Vereinshomepage angezeigt werden kann.
Code:
#!/bin/bash[/I][/INDENT]
[I][INDENT][/INDENT]
[INDENT]#Kamerabild aufnehmen und speichern[/INDENT]
[INDENT]raspistill -w 1024 -h 768 -q 70 -t 3000 -sh 10 -ex auto -awb auto -vf -hf -o /home/pi/wc_image.jpg[/INDENT]
[INDENT][/INDENT]
[INDENT]#Kamerabild weichzeichnen[/INDENT]
[INDENT]convert /home/pi/wc_image.jpg -region 1024x88+0+680 -blur 0x8 /home/pi/wc_image_sft.jpg[/INDENT]
[INDENT][/INDENT]
[INDENT]#aufgenommenes Bild mit Textstring versehen[/INDENT]
[INDENT]convert /home/pi/wc_image_sft.jpg -geometry 1024x768 -quality 80 -gravity North -background black -extent 1024x788 -gravity SouthEast -fill white -pointsize 16 -draw "text 0,0 'Webcam Beschreibung und Ort                          [/INDENT]
[INDENT]`echo $(date)`................................`echo $(temp)`[/INDENT]
[INDENT]'" /home/pi/wc_image_mod.jpg[/INDENT]
[INDENT][/INDENT]
[INDENT]#modifiziertes Bild via FTP hochladen[/INDENT]
[INDENT]/usr/bin/ftpupload /home/pi/wc_image_mod.jpg /


Die entsprechenden FTP-Zugangsdaten sind in der Datei „.netrc“ in /home/pi vorab eingetragen:
Code:
machine ihredomain.de[/I][/INDENT]
[I][INDENT]login ihrlogin[/INDENT]
[INDENT]password ihrpasswort


Wichtig ist, dass die „.netrc“-Datei die Rechte 0600 bekommt (Besitzer „pi“).

Ebenso muss der Zielserver in die oberen Zeilen des Skript “ ftpupload“ eingetragen werden, das zum Upload im Hauptskript verwendet wird. Dieses Skript ist wie die Temperaturabfrage in /usr/bin beheimatet und ausführbar (0755; Besitzer „root“).
Code:
#!/bin/bash[/I][/INDENT]
[I][INDENT]#[/INDENT]
[INDENT]# login infos saved to ~/.netrc[/INDENT]
[INDENT]#[/INDENT]
[INDENT]srvIP="ihredomain.de"[/INDENT]
[INDENT]srvPORT="21"



Automatisierung
Nun ist es recht schwierig, das Bild jedes mal von Hand aufzunehmen. Hier muss also ein Automatismus her, der in einem geregelten Zeitabstand diese Aufgabe durchführt. Diese Aufgabe übernimmt der Linux Daemon „Cron“, der genau für solche Aufgaben existiert. Über die sogenannte „Crontab“ wird ihm eine Aufgabenliste unterbreitet, die der Cron brav abarbeitet.

Durch die Eingabe (eingeloggt als „pi“) von
Code:
crontab –e
wird die Aufgabenliste angezeigt und kann entsprechend ergänzt werden. In meinem Fall soll im Zeitraum von 6 – 21 Uhr alle 20 Minuten ein Bild aufgenommen und hochgeladen werden. Als Crontab-Eintrag sieht das wie folgt aus:
Code:
*/20 06-20 * * * sh /home/pi/takeimage[/I][/INDENT]
[I][INDENT]00 21 * * * sh /home/pi/takeimage


Die neu erstellte Liste wird mit STRG + O gespeichert bzw. der Editor mit STRG + X beendet.

Nun müsste die Webcam alle 20 Minuten ein Bild, wie etwa dieses, aufnehmen, bearbeiten und hochladen. Die Einbindung in die Homepage erfolgte als eingebettetes Bild auf einer nur für Mitglieder zugänglichen Seite.

Anhang anzeigen 11783304

Die endgültige Position der Webcam ist auch bereits gefunden. Ein geschützter Platz unter dem Dachvorsprung ist ideal, da Regen und Schnee der Kamera nicht zu nahe kommen können. Probleme durch Kondensation sind bisher nicht aufgetreten.

Anhang anzeigen 11783303

Das graue Kabel stellt die Stromversorgung dar (Netzteil und WLAN/GSM Modem in der Hütte), das schwarze Kabel gehört zum Temperatursensor.

Referenzen:

http://sourceforge.net/projects/win32diskimager/
http://winscp.net/eng/docs/lang:de
http://jankarres.de/2012/08/raspberry-pi-raspbian-installieren/
http://downloads.raspberrypi.org/raspbian_latest
https://www.raspiprojekt.de/anleitu...emperatursensor-ds18b20.html?showall=&start=4
http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
http://www.watterott.com/de/Temperatur-Sensor-Wasserdicht-DS18B20
Interessant, abe wie kann man ein dauer Video anzeigen wenn ich mich mit ein (oder mehre PCs) anmelden?
 

News

Ansicht hell / dunkel umschalten
Oben Unten