Nochmal zur Nestcam

Nochmal zur Nestcam

Da immer mal wieder Anfragen kommen, wie ich die Knipserei mit der Nestcam gelöst habe, hier nochmal ein paar Details.

Wie schon beschrieben läuft das ganze auf einem RaspberryPi Modell B. Dort habe ich an die GPIOs über Schalttransistoren vier Infrarot-LEDs angeschlossen.
Als Kamera kommt die orginale NOIR-Kamera für den Raspberry zum Einsatz. Die normale Kamera tuts im Dunklen nicht, weil die einen Infrarotfilter eingbaut hat, der, wie es der Name schon sagt, bei der NoIR-Kamera fehlt. Deshalb klappt die Beleuchtung per IR-LEDs da super.
Um die SD-Speicherkarte des Raspi zu schonen, habe ich eine Ramdisk mit 8MB Größe eingerichtet. Das reicht aus, um das aufgenommene Bild temporär zu speichern und zu bearbeiten.
Das Script nutzt Imagemagick, um eine Statuszeile in das fertige Bild zu schreiben, ggfs. müsst ihr das installieren, wenn ihr das Script 1:1 nutzen möchtet.
Zum Schluß wird das fertige Bild mittels curl auf den Webserver kopiert.

Ein Cronjob ruft jede Minute das Shellscript auf. Soll der Aufnahmeintervall kürzer werden, geht das per Cronjob nicht mehr, dann müsse man das Script in einer Zeitschleife laufen lassen.

#!/bin/bash

#Ins RAM wechseln - schont die SD-Karte
cd /mnt/
#Die Bilder werden nach Minuten durchnummeriert (1 Tag= 24*60=1440 Bilder)
#aus der laufenden Uhrzeit wird hier die aktuelle Minute für den Dateinamen berechnet
#das ist für das spätere Erzeugen des Videos nötig

$(date +"%y-%m-%d")
time_now=$(date +%s)
time_mid=$(date -d "00:00" +%s)
mins=$((($time_now-$time_mid)/60))
timestamp=`printf "%04d" $mins`

#GPIO auf Ausgang setzen und einschalten

/usr/local/bin/gpio export 23 out
/usr/local/bin/gpio export 24 out
/usr/local/bin/gpio -g write 23 1
/usr/local/bin/gpio -g write 24 1

#Foto machen, Exifdaten einbetten

raspistill -o /mnt/ram/pic.jpg -w 640 -h 480 -t 100  -ifx  denoise -sh 50 --exif


#Aufnahmedatum aus Exifdaten ermitteln und mit Copyright in die Statuszeile ins Bild einbetten
convert pic.jpg  -pointsize 12 -fill  blue -annotate +20+20 %[exif:DateTimeOriginal]' Portitzers NestCam' "pic-up.jpg"

#Bild für Upload erzeugen (für das Video)
cp pic-up.jpg img_$timestamp.jpg

#LEDs wieder abschalten

gpio -g write 23 0
gpio -g write 24 0

#Webcamfoto hochladen

curl -T pic-up.jpg -u Username:Passwort ftp://mein.server.de/mein_Verzeichnis/

#durchnummeriertes Foto für das Video hochladen

curl -T img_$timestamp.jpg -u Username:Passwort ftp://mein.server.de/meinverzeichnis/

#Bild für Video löschen (das Bild für die Webcam wird immer wieder überschrieben)
rm img_$timestamp.jpg

#fertig :-)

exit 0

Weil der Raspi für das Rendern des Zeitraffervideos aus den Einzelbildern etwas zu lahm ist, passiert das per Cronjob auf dem Webserver. Doch dazu später mehr. Jetzt bauche ich erstmal einen Kaffee… 😉

Kommentare sind geschlossen.