Raspberry + MotionEye

Folgende Aufgabenstellung sollte zufriedenstellend erfüllt werden.

Eine stromsparende Überwachungskamera, die minütlich ein Bild macht und dann über ein ausgedientes älteres Smartphone via Wifi Hotspot und dünner 64kbit Leitung (1und1 Karte die zum Nulltarif bei jedem DSL Vertrag mit dabei ist) via VPN Einwahl zu meiner Fritzbox die erstellten Bilder auch auf dieser (USB Stick) ablegt. Der dazu verwendete Raspberry und das Samsung S2 erhalten die nötige Energie aus einer Solarinselanlage via 12V auf 2x USB 5V 3.5A Adapter.

Was sich im obigen Satz eigentlich als nicht soooo aufwendig als Aufgabenstellung ließt, hat dann doch verhältnismäßig viel Zeit gekostet, bis das Ganze dann einigermaßen zufriedenstellend lief. Eines der Hauptprobleme war die ständig abbrechende Internetverbindung, die dann auch nie wieder selbstständig vom Pi neu aufgebaut wurde. Desweiteren wollte Motioneye auch keine Daten mehr zur Fritzbox hochladen, wenn die Verbindung mal weg war. So musste ich entsprechende scripte basteln, die periodisch liefen und im Falle einer nicht bestehenden Verbindung VPN reconnect machen und den motioneye service kurz durchstarten. Das Hauptproblem scheinen die eher wackligen 64kbit Mobiledata zu sein, da alle Tests über’s normale WLAN sowie mit einer schnellen 4G Mobildata Verbindung ohne Probleme verliefen. Dennoch entschied ich mich für diese Anwendung nicht extra einen Zusatztarif abzuschließen, der mich mind. 5€/Monat kosten würde. Die Nulltarif-Lösung sollte einfach ausreichend sein. Die Bilder mit einer Auflösung von 800×600 Pixeln haben je nach Helligkeit zwischen 10 und 80 kbyte. Bei 8kbyte/sec Tansfergeschwindigkeit genug Bandbreite also um die Bilder hochzuladen.

Materialliste:

Raspberry Pi 3 Modell B – Full Starterkit „Official“ weiß + 32GB Class 10 SD Card

Raspberry Pi NoIR Camera Module 8MP v2.1

Netzteilmodul 6 – 40V (3A) Schraubklemme – 12V vom Solarcontroller

Nexus 5 von LG mit 1&1 SIM 100MB/64kbit

2x USB Ladekabel – Stromversorgung für’s Smartphone und Pi3

 

 

 

 

Intallation:

Ideal wäre motioneyeos…habe ich aber wieder verworfen, da mir zu wenig Dokumentation auf OS Level vorhanden war. So entschied ich mich für Raspberry Pi OS – Release date: December 2nd 2020 – Kernel version: 5.4. Images schreibe ich i.d.R. mit Winimage.

Nach dem 1st Start und der Grundeinrichtung wurde zuerst mal der X-Start deaktiviert, Kamera, Wifi, root SSH logon aktiviert. Außerdem habe ich in die config.txt noch meine beiden MPEG2 und VIC-1 lizenzen eingetragen. Ursprünglich sollte der 3er Pi auch DVB-T2 abspielen, was aber mangels H265 Unterstützung (nötig für T2) nicht wirklich umsetzbar war. Für diesen Zweck schaffte ich mir dann noch den günstigsten 4er Pi an, der dann auch mit Libreelec OS einwandfrei T2 Programme abspielt. So blieb es für den Pi 3 als Kameraüberwachungssystem.

Doch nun Schritt für Schritt meine Vorgehensweise mit den einsprechenden Konsole Kommandos. Ich arbeitete natürlich nur über SSH (root) das erspart einem „sudo“. Über WINSCP wurden Daten transferiert.

Geht die Kamera auch wirklich? Test -> „raspistill -o test.jpg“ 

Hier holte ich mir die aktuellste Motion Version „pi_buster_motion_4.3.2-1_armhf.deb“ die wurde dann via winscp auf den Pi übertragen und installiert.

Vorher aber noch: „apt install libmicrohttpd12“

dann weiter mit: „sudo dpkg -i /home/pi/pi_buster_motion_4.3.2-1_armhf.deb“

weiter mit:

ggf. anpassen der config: „sudo nano /etc/motion/motion.conf“

Service starten: „service motion start“

Web access Kamera testen, wenn alles geht Service stoppen: „service motion stop“

Ziel von mir war es motioneye zu verwenden, da sehr viel einfacher zu bedienen. Irgendwie habe ich bis heute nicht verstanden, warum bei allen im Web zu findenden Lösungen immer Motion + Motioneye installiert wird. Die Motion Version wird ja auch in der Motioneye Webansicht gelistet….grübel….Kopfkratz….

also nun weiter mit Motioneye Installation. Hier sollte in jedem Fall auch die aktuelle Version installiert werden. Mit „apt install….“ wird Motioneye aber nicht installiert.

Vorher aber in jedem Fall: „pip2 install –upgrade setuptools“ + „apt install python-pycurl“ + „mkdir -p /var/lib/motioneye“ erst dann lief „pip2 install –no-cache-dir motioneye“ durch. Das Setup mit pip oder pip3 funktionierte nicht.

config kopieren mit: „cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service“

Service enable: „systemctl daemon-reload“ + „systemctl enable motioneye“ + „systemctl start motioneye“ + „systemctl status motioneye“

weil natürlich nur EIN Service die Kamera bedienen kann: „systemctl disable motion“ + „systemctl stop motion“

In Pi „buster“ scheint es in Kombination mit der NoIR Kamera ein Problem zu geben, da die Bilder sehr rot-stichig sind. Abhilfe ist ein Configeintrag: „nano /etc/motioneye/motion.conf“

mmalcam_control_params -awb greyworld
mmalcam_name vc.ril.camera

Test: Das Bild hat immer noch einen leichten Rotstich ist aber sehr viel besser als ohne „-awb greyworld“. Hier sieht man auch schon, dass ich die Bilder nicht nur lokal sondern auch auf meine Fritzbox via FTP transferiere. Die Bilder lassen sich so auch gut vom Samrtphone via MyFritz App abgreifen.

Nach einigen Tagen Test scheint alles stabil zu laufen. Etwas Problematisch ist die IP Verbindung zum Smartphone device. Da musste ich mittels script, welches alle 3 min läuft (in chrontab eingetragen) einen workaround nutzen. Man sieht auch noch sehr schön meine erweiterten Versuche mit VPNC. Es wäre nett, wenn sich der Pi via VPN noch einwählt, damit ich den wie bei mir zu Hause administrieren könnte und gar Livebilder schauen könnte. Leider hat das nicht zufriedenstellend funktioniert. Liegt wahrscheinlich an der gemeinsam genutzten IP via LTE und an der sehr dünnen 64k Leitung. Meine FB hat die VPN Verbindung als aktiv angezeigt obwohl diese längst aus Pi-Sicht nicht mehr bestand. Ein reconnect ging dann nicht mehr. Versuche übers Haus-WiFi hingegen funktionierten sehr zufriedenstellend. Abhilfe dürfte hier eine LTE Verbindung mit öffentlicher nicht gesharten IP bringen….lohnt sich für meinen use case aber nicht.

Außerdem lasse ich alle 5min den motioneye service neu starten, da ich bei den Tests feststellen musste, dass manchmal keine Daten mehr zum FTP Server übertragen werden. Mit einem Service restart aber keine Probleme mehr.

Vielleicht bastelt jemand an einer ähnlichen Lösung und freut sich über diese Anleitung. Was sich hier in eben 1-2 min ließt hat in der Praxis mehrerer Tage arbeit mit probieren, testen, suchen gedauert. Mit dieser Anleitung sollte es fixer gehen.