Webcamaufzeichnungen am FTP Server automatisch verschieben

Hat man so eine billige WLAN Überwachungskamera (um z.B. ein Haustier zuhause zu überwachen), dann haben diese meisstens auch eine Funktion, um bei Bewegungserkennung automaitsch Bilder auf einen FTP Server zu schreiben.
Das funktioniert einigermassen gut, allerdings wird es ganz schnell unübersichtlich (und bei >10000 Dateien in einem Verzeichnis auch sehr langsam !)

Drum hab ich ein mini-Shellscript geschrieben, welches 1x pro Stunde läuft, und die Dateien in ein Verzichnis nach folgendem Schema einsortiert :
YYYY/MM/TT

So findet man auch was, ohne regelmässig alles löschen zu müssen :

#!/bin/bash
verz="FTP Verzeichnis Kamera"
for v in $verz
do
 echo $v
 cd $v
 ls *.jpg | while read f
 do
  vv=$(ls "$f" -l --time-style=full-iso | cut -d" " -f6 | tr '-' '/')
  mkdir -p $vv
  chmod 777 $(echo $vv | cut -b1-4)
  chmod 777 $(echo $vv | cut -b1-7)
  chmod 777 $vv
  chmod 777 "$f"
  mv "$f" $vv
 done
done

Bewegungserkennung unter OpenWRT

Da meine neue Webcam zwar die Funktion hat, bei Bewegung via FTP aufzuzeichnen, diese aber offensichtlich nicht funktioniert, hab ich kurzerhand sowas nachprogrammiert.
Genau genommen hole ich so ca 1x pro Sekunde ein Bild, und vergleiche die Grösse mit dem vorigen.
Soweit klappt das ganz gut.
Der Grund, warum ich das grade auf einem Router laufen lasse ist ganz einfach:
Die Router verbrauchen bei sowas nur ganz wenig mehr Strom, als im Leerlauf.

Einige extra Pakete werden benötigt :

apt-get update
apt-get install wget wput coreutils-sleep

cat /bin/other/webcam.sh :

#!/bin/sh
o=0
cd /tmp
while(true)
do
out=$(date +“%Y-%m-%d_%H-%M-%S“).jpg
/usr/bin/wget -T 1 -t 1 -O $out „http://IPDERWEBCAM/snapshot.cgi?user=USERNAME&pwd=PASSWORT“ 2>/dev/null
if test „$?“ -eq 0
then
n=$(wc -c < $out) if test $n -gt $o then let d=$n-$o else let d=$o-$n fi if test "$d" -gt 500 then /usr/bin/wput $out ftp://USERNAME:PASSWORT@IPADRESSEFTPSERVER/VERZEICHNIS/$out fi o=$n fi rm $out /usr/bin/sleep 0.4 done cat /etc/init.d/webcam #!/bin/sh /etc/rc.common # Copyright (C) 2006-2011 OpenWrt.org START=99 start () { sleep 1 /bin/other/webcam.sh >/dev/null &
}

Die Dateien müssen natürlich ausführbar sein, und das Startscript muss aktiviert werden :

chmod +x /etc/init.d/webcam
chmod +x /bin/other/webcam.sh

/etc/init.d/webcam enable

reboot

Merkwürdigerweise hängt sich diese Kamera hin-& wieder auf.
Sie ist aber per http noch erreichbar, liefert aber kein Bild mehr.
Evtl. bau ich da noch was ein…

Update : hab die Kamera wieder zurückgeschickt.

Segate Goflex Net mit Debian Linux am USB Stick

Mein neuestes Spielzeug:

Segate Goflex Net mit Debian auf einem USB Stick.
Zum Testen hab ich zwei 2,5″ Festplatten reingesteckt und gespiegelt. (2 „normale“ „USB-“ Festplatten, die ich von ihrem USB-Gehäuse befreit habe. Es ist NICHT nötig, die teuren GoFlex Festplatten von Segate zu kaufen; allerdings stehen „nackte“ Festplatte ein bischen schief drin. Wenn das gut funktioniert, dann betreibe ich das aber sowieso mit 3,5″ Festlpatten.)

Eins vorweg :
Die Verlockung ist gross, das Ding umzuflashen, ohne es zu öffnen. Wg. Garantie u.Ä….
Das ist aber mit derzeit im Internet vorhandenen Anleitungen definitiv NICHT möglich. D.h. ein 3,3 V Pegelwandler für die serielle Schnittstelle ist zwingend erforderlich :

image

Das Schöne dabei :
Selbst dann, wenn man den Bootloader versehentlich löscht (oder mit Müll überschreibt) benötigt man kein JTAG o.ä., sonder man kann einfach (mit einem speziellen Programm) über die Serielle „booten“ und einen neuen Bootloader draufflashen. Das funktioniert wirklich !

Die je drei 12V Leitungen für die beiden SATA Ports nicht beschaltet. D.h. man muss 2 Kabel einlöten, damit man (mit SATA-Verlängerungen) auch 3,5″ Festplatten betreiben kann.
Das Netzteil müsste mit 12V/2A eigentlich bei Weitem genug Leistung dafür liefern:

image

image

image

Ich hab dann noch etwas dünnere Kabel genommen, das Gehäuse geht aber leider trotzdem nicht mehr ganz zu; stört aber nicht :

image

Was bei mir mittlerweile alles funktioniert :
*) Boot vom Stick, obwohl die Platten schon drinstecken
*) Raid (/dev/md0 mit ext4 formatiert)
*) Dateisystem (für die Daten) wird erst mit der boot.local gemountet (damit das System auch mit defektem Raid/fehlenden Festplatten hochkommt)
*) Samba
*) Apache&PHP
*) iftop iotop screen mc
*) Fixe IP Settings
*) MAC Adresse kommt vom BootROM (die korrekte)

Was leider noch NICHT funktioniert :
*) reboot -> Bleibt „hängen“ !!!!

Die Anleitungen im Internet sind recht gut, aber halt leider unvollständig bzw. funktionieren sie nicht immer.
Evtl. werd ich hier nochmal alles Wesentliche zusammenfassen.

image


Was nicht ganz unwesentlich ist :
Hier sind meine Datendurchsatz-Werte :
Lesen : 36MB/s
Schreiben: 26MB/s
Test-Konfiguration :
1 Festplatte WDC WD2500BEVS-22UST0
1 Festplatte TOSHIBA MK5059GSXP
Konfiguriert als Raid 1
Formatiert mit EXT4
Client : Windows7(32Bit)
Switch : TP-Link 4300 (Openwrt ATTITUDE ADJUSTMENT (12.09, r36088))

Tp-link – TL-WR1043ND V2

Hab mir zu Testzwecken auch noch einen neueren Tp-link – TL-WR1043ND V2 gekauft.

Leider musste ich (zuerst) mit Erschrecken feststellen, dass der mit der aktuellen „stable“ von OpenWRT (Aptitude Adjustment) gar nicht geflasht werden darf.

Ich hab dann die Snapshot/Trunk Version geflashed.
War zuerst begeistert, dann kam die Ernüchterung :

WLAN instabil, und zwar so richtig !!

Interessanterweise tritt das Problem (bei mir) aber erst auf, sobald der Router eine 3G-Internet Verbindung aufgebaut hat. Vorher ist das WLAN völlig stabil. (ich dachte zuerst an ein Routing-Problem, aber das ist es NICHT. Auch von meinem Hauptrouter aus geht plötzlich kein Ping mehr durch)

Mittlerweile hab ich aber herausgefunden, dass mehrere Router ähnlichen Typs dieses Problem haben. Abhilfe schafft das Abschalten eines Features :

# Aptitude Adjustment :
echo 1 >/sys/kernel/debug/ieee80211/phy0/ath9k/disable_ani

# in diesem Fall aber Breaking Barrier :
echo 0 >/sys/kernel/debug/ieee80211/phy0/ath9k/ani

(Muss natürlich in die /etc/rc.local siehe tp-link 4300)

Würd mich interessieren, ob dieses ANI was sinnvolles bewirkt ?!?

Update :
Mittlerweile gibt es von der neuesten OpenWRT breaking barrier RC3.
Mit der läuft dieser Router bisher stabil.
Umts, pptp, wlan zeigen keine Auffälligkeiten.