erste Version am 14.02.2016
letzte Änderung am 13.03.2016
IP-Kamera smartwares C704IP.2
Hier dokumentiere ich meine Erfahrungen und Erkenntnisse mit der
IP-Kamera "smartwares
C704IP.2".
Ich habe mir das Teil bei unserem lokalen Saturn-Markt mehr oder
weniger spontan zum Spielen gekauft. Einen konkreten
Einsatzzweck habe ich dafür noch nicht.
Inhalt
- Inbetriebnahme
- Web-GUI
- WLAN
- Debugger
- Einsatz (Ideen)
Einsatz-Idee: Bewegungserkennung und Kamera-Nachführung
Bewegungserkennung
Bewegungslokalisation
Positionen
anfahren und Bildvergleich
Bewegungs-Nachführung
Auto-Justage
Bewegungs-Nachführung
V2
Bewegungs-Nachführung
V3
Weitere
Erkenntnisse
Umstellung
auf np.int8 ?
Bewegungs-Nachführung
V4
Erkennung der
Bewegungsrichtung
Inbetriebnahme
Im ersten Ansatz habe ich die Kamera mit Netzteil und
kabelgebundenem Ethernet verbunden und dann auf dem DHCP-Server der
Fritzbox auf ein neues Gerät gewartet. Nachdem sich die Kamera eine
IP-Adresse geholt hatte, habe ich diese per Webbrowser geöffnet.
Es kam eine Anmelde-Seite, bei der es aber erst mal nicht weiter
ging. Weder mit der Benutzerkennung "admin" noch dem sog. Security
code "000000".
Daraufhin habe ich eine VM mit Windows XP hochgefahren und darin die
mitgelieferte Kamera-Software installiert. Aber damit scheiterte es
ebenfalls an den Zugangsdaten.
Nach weiteren fruchtlosen Versuchen mit diversen
Userid/Passwort-Kombinationen habe ich einen "reset to factory
defaults" mittels Taster an der Geräte-Unterseite durchgeführt. Laut
Doku habe ich den wohl 15 Sekunden lang gedrückt gehalten. Praktisch
habe ich ihn einfach so lange gedrückt, bis die blinkende LED nicht
mehr geblinkt hat. Und siehe da - nun kam ich auch mit der
Benutzerkennung "admin" und leerem Passwort weiter.
Da war ich wohl nicht der Erste, der dieses Kamera-Exemplar in den
Fingern hatte.
Web-GUI
Nach Eingabe der IP-Adresse von der Kamera in die Adresszeile des
Browsers, werden vier Modi angeboten:
- Anmeldung mit Mobiltelefon
Das vollwertige GUI bekomme ich auf meinem Linux-System nur unter
dem "Server Push Modus".
Sieht dann z.B. so aus (Bild anklicken für volle Größe):
Wobei das schon die Anzeige ist, nachdem ich im Firefox die Funktion
Aktueller Frame / Nur diesen Frame anzeigen gewählt hatte.
Um nur das Video angezeigt zu bekommen, reicht ein rechts-Klick auf
das Video-Bild und Auswahl der Funktion Grafik anzeigen.
Das sieht dann so aus:
Wobei das nur klappt, wenn man sich bereits an der Kamera angemeldet
hat.
Um direkt auf dem Video zu landen, lautet die URL
http://camuser:pwd4Cam@192.168.178.36/videostream.cgi
Und damit das wiederum klappt, habe ich mir im WebGUI der Kamera
natürlich erst einen Nutzer "camuser" mit dem Passwort "pwd4Cam"
anlegen müssen.
WLAN
Die Kamera hat einen Ethernet-Port, aber es wird auch eine
WLAN-Antenne mitgeliefert.
Jedoch mag die Kamera drolligerweise kein offenes WLAN.
Man kann ein solches zwar auswählen und einstellen, nachdem die
Kamera dann aber neu gestartet hat, passiert nix.
In einem Anleitungs-Video von der mitgelieferten CD wird dieses
Problem auch gezeigt -> ohne Schlüssel klappts nicht.
Für den ersten Test habe ich das WLAN von der Fritzbox aktiviert und
dafür WPA+WPA2 eingestellt.
Hat geklappt. Allerdings will ich kein WLAN auf der Fritzbox.
Also habe ich auf einem meiner, sowieso immer funkenden, WLAN-Router
ein weiteres Radio angelegt und dies mit WPA2-PSK gesichert.
Klappte damit dann auch - aber irgendwie nur zeitweilig.
Am nächsten morgen, als ich die Kamera wieder an Strom angeschlossen
hatte, hat sich diese keine IP-Adresse geholt.
Hmm.... Der WLAN-Router macht jede Nacht um 03:10 Uhr einen Reboot.
Sollte ich irgendwelche Einstellungen nicht gespeichert haben!?
Irgendwie nicht. Passt alles.
Ein erneuter Test mit WLAN von der Fritzbox ist erfolgreich.
Sonderbar. Warum mag die Kamera den WLAN-Router nicht mehr?
Auf dem Ethernet-Port hat die Kamera die MAC-Adresse
AC:A2:13:78:1E:B8 und die selbe bei WLAN. Das ist ja mal eher
verdächtig...
Auch kann ich den Eintrag für die Kamera aus dem DHCP-Server der
Fritzbox nicht löschen. Das wird ja immer sonderbarer.
Das Löschen klappt erst, nachdem ich WLAN an der Fritzbox wieder
ausgeschaltet habe.
Nun mal wieder einschalten und die Kamera per WLAN reinkommen
lassen. Ergebnis: selbe MAC-Adresse. Na toll.
Nun das WLAN an der Fritzbox wieder aus und das Radio am WLAN-Router
wieder an und deren Gäste ins VLAN42 auf meinen
DHCP-Server@Gateway-VM leiten. Ergebnis: der WLAN-Router sieht einen
Gast mit der MAC-Adresse AC:A2:13:78:1E:B8, auf dem DHCP-Server
kommt aber nix an.
Notgedrungen wird die Kamera wieder per Netzwerkkabel angeschlossen.
Jetzt mal unter den "Basic Network Settings" das Setting "Obtain IP
from DHCP Server" markiert.
....Schon klappts mit dem Radio des WLAN-Routers und meinem
DHCP-Server im VLAN42.
Die MAC-Adresse hier lautet ac:a2:13:78:1e:b8 - also wie oben.
Das lässt sich ja wohl nur so deuten, dass die "Basic Network
Settings" nicht nur für das kabelgebundene Ethernet gelten.
Die 192.168.178.36 wurde gestern allerdings nicht von mir, sondern
vom DHCP-Server der Fritzbox vergeben.
Bedeutet also, dass sich die Kamera eine IP-Adresse von der Fritzbox
geholt und sich diese dann quasi statisch eingetragen hat.
Somit ist das Verhalten durchaus zu erklären: wenn der Lease auf dem
DHCP-Server der Fritzbox abgelaufen ist, gibts keine Route zur
Kamera mehr.
Natürlich will ich die Kamera nicht dauerhaft im offenen
VLAN42 haben. Das würde ja geradezu eine Einladung sein, damit
Schabernack zu treiben.
Also im WLAN-Router wieder zurückstellen auf VLAN1 bzw. den
DHCP-Server der Fritzbox.
Und klappt. Mal sehen, obs jetzt stabil so bleibt.
Debugger
Nun will ich aber spielen.
Will heißen: ich brauche die Kommandos, mit denen ich die Kamera
nicht nur per Mausklick im Web-GUI, sondern auch per eigenem
Programm schwenken kann.
Im ersten Ansatz habe ich mir dazu den Seiten-Quelltext angesehen
(rechts-Klick im Firefox und Auswahl von Seitenquelltext anzeigen).
Das ist zwar schon mal ganz spannend, zeigt aber, dass es da
mindestens noch einen sog. content_frame geben muss.
Also: Debugger öffnen (mit Element untersuchen (Q)) und mal
schauen, was sich dort so findet.
Nachdem der Debugger geöffnet war und ich im Web-GUI der Kamera ein
paar Funktionen genutzt hatte, sah es im Debugger dann so aus:
In live.htm findet sich das Gesuchte.
Es gibt eine decoder_control.cgi,
die einen Parameter und eine camera_control.cgi, die zwei Parameter annimmt.
Wobei die jeweiligen Funktionen m.E. eigentlich eher ins jeweils
andere cgi passen würden.
Also Steuer-Funktionen in camera_control und sowas wie Helligkeit
oder Kontrast in decoder_control. Aber was solls.
Die Parameter für decoder_control.cgi sind diese hier:
var PTZ_STOP=1;
var TILT_UP=0;
var TILT_UP_STOP=1;
var TILT_DOWN=2;
var TILT_DOWN_STOP=3;
var PAN_LEFT=4;
var PAN_LEFT_STOP=5;
var PAN_RIGHT=6;
var PAN_RIGHT_STOP=7;
var PTZ_LEFT_UP=90;
var PTZ_RIGHT_UP=91;
var PTZ_LEFT_DOWN=92;
var PTZ_RIGHT_DOWN=93;
var PTZ_CENTER=25;
var PTZ_VPATROL=26;
var PTZ_VPATROL_STOP=27;
var PTZ_HPATROL=28;
var PTZ_HPATROL_STOP=29;
var PTZ_PELCO_D_HPATROL=20;
var PTZ_PELCO_D_HPATROL_STOP=21;
Mit dem Kommando
curl
camuser:pwd4Cam@192.168.178.36/decoder_control.cgi?command=4
wird die Kamera also angewiesen, einen PAN_LEFT auszuführen.
Die Parameter für das Anfahren gespeicherter Kamera-Positionen
finden sich an anderer Stelle.
Und zwar in IPCameralive.htm unter "div_usepreset". Dort finden sich
16 Zeilen wie diese:
<td width="20"><div align="center"><span
class="curspan3" onclick="use_preset(31);hideprepos('div_usepreset')">
1 </span></div></td>
Die Werte gehen von 31 bis 59 in Zweier-Schritten. Somit lautet z.B.
das Kommando, um die gespeicherte Position 2 anzufahren:
curl
camuser:pwd4Cam@192.168.178.36/decoder_control.cgi?command=33
Offenbar greift da irgendein Timeout. Liegt zwischen der aktuellen
Position und der anzufahrenden Position zu viel Strecke bzw. Zeit,
liefert das Kommando schon mal ein
fail.
statt, wie normalerweise, ein
ok.
Wird das Kommando nach einem "fail." erneut abgesetzt, kommt brav
"ok." zurück.
Zum Speichern von Snapshots gibt es ein eigenes cgi:
curl
camuser:pwd4Cam@192.168.178.36/snapshot.cgi >pic.jpg
Also zusammengefasst:
steuern
|
curl
camuser:pwd4Cam@192.168.178.36/decoder_control.cgi?command=3
[0 - 7, 20, 21, ...s.o.]
|
preset pos anfahren |
curl
camuser:pwd4Cam@192.168.178.36/decoder_control.cgi?command=33
[31, 33, 35, ...., 59]
|
bild speichern
|
curl
camuser:pwd4Cam@192.168.178.36/snapshot.cgi >pic.jpg |
video anzeigen
|
seamonkey
http://camuser:pwd4Cam@192.168.178.36/videostream.cgi |
So weit, so schön.
Nun muss ich mal schauen, wozu ich die Kamera einsetzen kann.
Im Leerlauf zieht das Kamera-Netzteil 2.3 Watt, 2.4 Watt, wenn ein
Video abgegriffen wird, 5.7 Watt, wenn eine andere Position
angefahren und 5.8 Watt, wenn zusätzlich auch das Video abgegriffen
wird.
Nicht gerade wenig, wenn sie 24x7 laufen sollte.
Einsatz (Ideen)
Zwei Ideen bezüglich eines Einsatzes habe ich schon.
Wobei die erste eigentlich kein wirklicher Einsatz, sondern
eher eine interessante Problemstellung ist:
- bei Bewegungserkennung dem sich bewegenden Objekt
(oder auch Subjekt) folgen bzw. die Kamera entsprechend
nachführen.
Die zweite Idee hätte schon etwas mehr praktischen Nutzen (wenn
auch einen minimalen):
- die Anzahl der Autos zählen, die an unserem Haus pro Tag
vorbeifahren. Vielleicht inklusive Geschwindigkeitsmessung.
Das programmgesteuerte Schwenken der Kamera wäre dabei allerdings
nicht nötig.
Mal sehen....eilt ja nicht....vielleicht finde ich auch was
Nützlicheres.
Wäre die Video-Qualität nicht so grottig schlecht, wäre ein
Zeitraffer-Filmchen sicher noch ganz spannend.
Also etwa: ein ganzes Jahr lang den Garten von einer Position aus
aufnehmen. Alle 10 Minuten ein Bild.
Daraus dann eine DVD machen und damit ein persönliches und
selbstgebautes Weihnachtsgeschenk für Eltern und Schwiegereltern
haben.
Erste Spielchen mit
Bewegungserkennung und Python