:: fischer-net.de

Im Artikel FHEM Modul IPCAM holt Bilder habe ich im August 2012 mein neues Modul IPCAM vorgestellt. Dieses Modul habe ich nun etwas überarbeitet und um neue Funktionen erweitert.

Dieser Artikel beschreibt die neuen Funktionen des Moduls IPCAM etwas näher. Bei den hier aufgeführten Befehlen beziehe ich mich auf IP-Kameras von INSTAR, die ich zum Teil im Einsatz habe. Siehe dazu auch den Artikel Surveillance - Video-Hardware, wobei ich dort die Kameras mit Pan / Tilt Funktionen nicht aufgezählt habe. Dies können z.B. die Modelle IN-3005, IN-3010, IN-3011, IN-4009, IN-4010, IN-4011 sowie IN-6011 von INSTAR.

 

HTTP Basic Authentication URL

Ein FHEM Anwender kam mit der Bitte auf mich zu, eine Basic Authentication in dem Modul IPCAM zu realisieren. Idealerweise lieferte er gleich den passenden Patch mit. Nach einer kurzen Prüfung habe ich diese Funktion soweit in das Modul IPCAM übernommen.

Man hat nun die Möglichkeit sich an einer beliebigen Quelle via http://user:pass[at]foo.bar anzumelden. Dazu muss das Attribut basicauth für das jeweilige IPCAM Device in FHEM gesetzt sein:

attr ipcam basicauth myUsername:myPassword

Da es nicht sinnvoll erscheint diese Informationen im Klartext in der FHEM Konfiguration abzulegen (dieses Attribut ist dann auch für alle Anwender in der WebGUI sichtbar), ist es auch wie bereits zuvor möglich, diese Credentials in einer separaten Datei abzulegen. Siehe dazu auch den obigen Artikel, bzw. die Dokumentation zu IPCAM. Wählt man diesen (empfohlenen) Weg, dann muß das Attribut die entsprechenden Platzhalter beinhalten:

attr ipcam basicauth {USERNAME}:{PASSWORD}

Verwendet man das Attribut basicauth, so sollte man darauf achten, das in dem Attribut path die Credentials nicht mehr auftauchen sollten. Nimmt man das Beispiel aus dem Eingangs erwähnten Artikel, würde sonst die URI wie folgt aussehen:

http://foo:bar[at]192.168.1.205/snapshot.cgi?user=foo&pwd=bar

Das wäre nicht sinnvoll. Also bitte vorher prüfen, was die Kamera möchte: basicauth oder username, password als Parameter.

 

Steuerung der Kamera

War es bisher mit dem Modul IPCAM nur möglich Bilder zu holen, so kann ab die Kamera nun auch gesteuert werden. Dazu habe ich IPCAM um einige set Befehle erweitert. Diese Befehle setzen voraus, das die Kamera diese Funktionen auch unterstützt.

 

Pan, Tilt und sonstige Positionierung

Über die set-Funtktionen pan, tilt und pos kann die Kamera (sofern unterstützt) in eine beliebige Position gefahren werden. Dabei unterstützt pan die Richtungsangaben left und right und tilt die Richtungsangaben up und down. Optional kann noch eine Schrittweite angegeben werden:

set ipcam pan left 1

Darüber hinaus können bis zu 15 vordefinierte Positionen definiert und angefahren werden. Zusätzlich zu diesen Positionen gibt es auch noch die "Home" Position. Diese sollte die Kamera in die Ausgangsstellung positionieren:

set ipcam pos 3
set ipcam pos home

Da sich bei den meisten Kameras der Pfad zum Holen von Bildern (z.B. snpashot.cgi) von dem Pfad zur Positionierung (z.B. decoder_control.cgi) unterscheidet, kann ein abweichender Pfad für die Positionierung über das Attribut pathPanTilt gesetzt werden:

attr ipcam pathPanTilt decoder_control.cgi?

bzw.

attr ipcam pathPanTilt decoder_control.cgi?user={USERNAME}&pwd={PASSWORD}

sofern eine Anmeldung notwendig ist. Auch hier gilt wieder zu beachten: Wurde die Eingangs beschriebene HTTP Authentification via basicauth gesetzt, so sollten an dieser Stelle keine Credentials im Pfad gesetzt werden.

Die je Kameratyp unterschiedlichen Befehle für die set-Funktionen pan, tilt, pos sowie die Schrittweite werden über entsprechende Attribute vorgegeben. Diese Attribute haben in der Regel die gleiche Bezeichnung wie der set-Befehl, zusätzlich mit dem Präfix cmd. Hier ein paar Beispiele für oben erwähnte INSTAR Kameras:

attr ipcam cmdTiltUp command=0
attr ipcam cmdTiltDown command=2
attr ipcam cmdPanLeft command=4
attr ipcam cmdPanRight command=6
attr ipcam cmdStep onstep

Benutzerdefinierte Positionen, sowie die 'Home' Position werden wie folgt gesetzt:

attr ipcam cmdPosHome command=25
attr ipcam cmdPos01 command=31
attr ipcam cmdPos02 command=33

 

Benutzerdefinierte Befehle

Das Modul IPCAM unterstützt auch benutzerdefinierte Befehle. Hierzu wurde die set-Funktion cmd implementiert. Auch hier ist es wieder möglich, bis zu 15 freiwählbare Kamerabefehle zu definieren:

attr ipcam cmd01 led_mode=0
attr ipcam cmd02 resolution=8

Da auch hier der Pfad zum Setzen der Befehle in der Regel von dem Positionierungspfad sowie dem Snapshotpfad abweicht, gibt es zusätzlich das Attribut pathCmd. Ist dieses gesetzt, so wird der Pfad den Befehlen vorangestellt:

attr ipcam3 pathCmd set_misc.cgi

 

Rohbefehl senden 

Reichen die obigen set-Funktionen für die Positionierungen sowie benutzerdefinierten Befehle nicht aus oder weichen die möglichen Kamerabefehle komplett von diesen Funktionen ab, so kann die set-Funktion raw genutzt werden.

Damit ist es möglich jede beliebige Zeichenkette an die Kamera zu senden. Auch hier gilt wieder: die Schlüsselwörter {USERNAME} und {PASSWORD} werden automatisch ersetzt, sofern das Attribut credentials gesetzt ist. Beispiel:

set ipcam raw misc_cmd.cgi?foo=bar

 

Zusammenfassung

Durch die neuen set-Funktionen habe ich das Modul IPCAM zu einer (hoffentlich) vollständigen und universellen Kamerasteuerung erweitert. So kann z.B. eine Kamera aus FHEM heraus zu einer definierten Position geschwenkt werden und in dieser Position Bilder "schiessen", wenn ein Bewegungsmelder auslöst. Im Anschluß kann die Kamera über den pos home Befehl in die Ausgangstellung gefahren werden.

Nicht zu vergessen: Mit dem Modul IPCAM können nicht nur Bilder von einer Netzwerk-Kamera geholt werden, sondern auch von einer beliebigen WebSite. So können z.B. regelmäßig Wetterkarten geholt werden. Der Phantasie sind hier keine Grenzen gesetzt.

Ich hoffe, "der Eine oder die Andere" findet für die neuen Funktionen eine Verwendung. Das erweiterte Modul IPCAM wird ab dem 02.02.2013 über den FHEM internen Update-Prozess verteilt.

Viel Spaß damit...

Powered by ...

 

 

reichelt elektronik – Elektronik und PC-Technik