Es ist nun schon ein paar Jahre her, dass ich dieses Projekt angefangen habe. Daher möchte ich jetzt den Moment nutzen das Ganze auch ein wenig zu dokumentieren.
Ziel des Projektes war es, einen Kleingarten insbesondere im Winter zu überwachen. Problem ist jedoch, dass es hier weder einen Internetzugang, noch irgend ein WLAN Zugang gibt, den man benutzen könnte. Mir kam daher die Idee, die Webcam so zu bauen, dass man Datensparsam die Fotos über eine UMTS Verbindung beziehen kann und die Kamera auch remote steuern und warten kann.
Funktion
Nachdem die Kamera mit Strom versorgt wird, wird für 180 Sekunden ein WLAN AP gestartet um sich mit der Kamera zu verbinden. Sollte sich Niemand verbinden, wird der AP deaktiviert. Nach dem die Kamera hochgefahren ist, wird eine SMS an die hinterlegte Hauptnummer geschickt. Die Software Motion schießt nun jede Stunde ein Bild und lädt dies via SCP auf meinen Server. Sollte Motion eine Bewegung erkennen (und das passiert bei einer Outdoor Kamera leider sehr oft dank des Windes) wird eine E-Mail versendet und das Bild bzw. die Bildfolge via SCP auf meinen Server übertragen. Zusätzlich habe ich noch einen PIR Bewegunsgmelder an die Kamera angeschlossen, das ist allerdings noch in der Erprobung.
Bedienung
Die Bedienung der Kamera erfolgt ausschließlich über SMS. Hierfür sind in meinem Script Rufnummern hinterlegt, die berechtigt sind, die Kamera zu bedienen. Hier eine Liste der SMS Befehle:
- webcam.motionstart - Startet Motion
- webcam.motionstop - Stopt Motion
- webcam.getip - Sendet die aktuelle IP
- webcam.systemhalt - System herunterfahren
- webcam.systemreboot - System neustarten
- webcam.vpnstart - VPN Verbindung aufbauen
- webcam.vpnstop - VPN Verbindung trennen
- webcam.umtsstart - UMTS Datenverbindung aufbauen
- webcam.umtsstop - UMTS Datenverbindung trennen
- webcam.picture - Ein Bild aufnehmen und zum Server schicken
- webcam.wlanon - WLAN AP aktivieren
- webcam.wlanoff - WLAN AP deaktivieren
- webcam.picture:email - Ein Bild and an die angegebene E-Mail Adresse schicken
- webcam.temp:email - Einen 24h Temperatur Plot an die angegebene E-Mail Adresse schicken
- webcam.help - Ausgabe der möglichen SMS Befehle
Fernwartung
Um die Kamera aus der Ferne zu warten habe ich ursprüglich OpenVPN benutzt. Jedoch erschien es mir mittlerweile einacher einen SSH Tunnel mit Remote Port Forwarding zu benutzen. Warum das Ganze? Die Mobile Anbieter benutzen in der Regel Carrier NAT womit man nur eine IP Adresse aus einem privaten Adressraum bekommt. Die IP ist also nicht aus dem Internet erreichbar. Um das zu umgehen bietet sich eben eine VPN Verbindung oder ein SSH Tunnel an. Per SSH wird hier eine Verbindung zu meinem Server hergestellt auf dem ein Container mit einem SSH Server läuft. Die SSH Verbindung wird von der Kamera dauerhaft aufgebaut und gehalten. Auf dem Server wird ein neuer Port xxxxx geöffnet der Kameraseitig auf dem ssh Port 22 landet. Verbinde ich mich jetzt mit einem SSH Client auf meinem Server Port xxxxx lande ich also auf der Kamera.
Hardware
Die Hardware besteht im Grunde genommen aus einem Raspberry Pi und einem Raspberry Kamera Modul mit IR Filter. Für die Steuerung bzw. Internetverbindung ist ein USB UMTS Stick angeschlossen. Als Hardware kann natürlich jede X beliebige Hardware verwendet werden. Es sollte zumindest ein System sein, auf dem ein Linux installiert werden kann. Ob die Kamera nun über USB oder dem Kamera Port eines Raspberry angeschlossen wird ist egal.
Hier eine Liste der von mir verwendeten Komponenten:
- Raspberry Pi 2 Model B
- Huawei E172 UMTS Stick (Achtung, 3G wird bald abgeschaltet in Deutschland!)
- USB WLAN Stick (für die lokale Konfiguration)
- USB Flash (als lokale Ablage für die Bilder)
- Externe Antenne für UMTS/LTE
- 5V Netzteil
- 1-Wire Temperatur Sensor DS18B20
- Kameragehäuse, wetterfest (Bekommt man güstig für unter 20 Euro, Pollin z.B.)
- Ein paar Teile aus dem 3D Drucker
- Kleinkram wie SMA Buchsen und Mini XLR Buchsen für Antennen und PIR Anschluss etc.
Software:
Als Betriebssystem für den Raspberry benutze ich das standard Raspbian. Zusätzlich werden folgende Tools benötigt:
UMTS Stick:
Um dem UMTS Stick zum Laufen zu bekommen habe ich folgende Pakete benötigt:
apt-get install gammu libgammu-i18n libgammu7 libjim0debian2 usb-modeswitch usb-modeswitch-data
Für die Steuerung via SMS wird das folgende Tool benötigt:
apt-get install gnokiil
Für den E-Mail Versand wird Sendmail verwendet:
apt-get install sendemail
Der Upload der Bilder erfolgt mit wput:
apt-get install wput
Die Aufnahme der Bilder und Motion detection übernimmt motion:
apt-get install motion
Für die VPN Verbindung zur Wartung wird OpenVPN verwendet:
apt-get install openvpn
Der WLAN AP wird mit hostapd realisiert:
apt-get install hostapd
Für die Temperaturüberwachung benutzte ich das rrdtool um einen Plot zu erzeugen:
apt-get install rrdtool python-rrdtool
Zusätzlich laufen ein paar Shell Scripte welche die eingehenden SMS auswerten.
Hier ein paar Bilder von der Kamera und dem Innenleben:
| Außenansicht der Kamera | |
| Innenleben der Kamera | |
| Beispiel Foto |
© Daniel Wilhelm, Eintrag erstellt: 07.09.2021, letzte Änderung: 07.09.2021 13:36 Uhr, Seite in 0.00337s generiert