Status Motion Detection einer Webcam/IPCam auslesen und Steuerungen auslösen

Begonnen von hoover123, 07 Januar 2017, 22:32:06

Vorheriges Thema - Nächstes Thema

hoover123

Hallo Leute,

modere Webcams/IPCams besitzen häufig eine integrierte Motion Detection (Bewegungserkennung). Ich habe ein wenig mit dieser Funktion herumexperimentiert und habe einigermaßen brauchbare Ergebnisse bekommen, wie man damit Steuerungen auslösen kann. Die Lösung ist zwar nicht elegant, aber sie funktioniert. Nachfolgende Beispiele wurden mit einer Foscam FI9805W und einer Foscam FI9831W getestet.

Als erstes lädt man sich das passende CGI SDK / User Guide vom Kamerahersteller herunter, bei meinem Beispiel:
http://www.foscam.es/descarga/Foscam-IPCamera-CGI-User-Guide-AllPlatforms-2015.11.06.pdf

Dann sucht man sich den Befehl, aus dem man den Status der Motion Detection auslesen kann. Am besten probiert man das erst vorab mit dem Webbrowser aus.

http://192.168.xxx.xxx:YY/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=AAA&pwd=BBB
XXX = IP-Adresse der Webcam
YY = Portnummer
AAA = Username
BBB = Passwort,
die man bei der Einrichtung entsprechend konfiguriert hat. Dann sieht man folgendes Ergebnis im Webbrowser:

<CGI_Result>
    <result>0</result>
    <IOAlarm>0</IOAlarm>
    <motionDetectAlarm>1</motionDetectAlarm>
    <soundAlarm>0</soundAlarm>
    <record>0</record>
    <sdState>0</sdState>
    <sdFreeSpace>0k</sdFreeSpace>
    <sdTotalSpace>0k</sdTotalSpace>
    <ntpState>1</ntpState>
    <ddnsState>1</ddnsState>
    <url>http%3A%2F%blabla.myfoscam.org%3A88</url>
    <upnpState>0</upnpState>
    <isWifiConnected>1</isWifiConnected>
    <wifiConnectedAP>Irgendwas</wifiConnectedAP>
    <infraLedState>0</infraLedState>
</CGI_Result>

Beim Beispiel Foscam gibt es folgende Bedeutungen laut CGI SDK:
<motionDetectAlarm>
--> 1 bedeutet keine MotionDetection
--> 2 bedeutet MotionDetection festgestellt

Man kann dies gut testen, indem man vor der Kamera herumspaziert. Dann ändern sich die Werte zwischen 1 und 2, wenn man die Webpage öfters neu lädt.

Der Parametername kann natürlich bei anderen Herstellern und Modellen völlig anders lauten. Also alles weitere sinngemäß anwenden.

Nun folgenden HTTPMOD konfigurieren (die Platzhalter entsprechend an eure Kamera anpassen).


define ipcam1_status HTTPMOD http://192.168.XXX.XXX:YY/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=AAA&pwd=BBB 5
attr ipcam1_status reading01Name motionDetectAlarm
attr ipcam1_status reading01Regex <motionDetectAlarm>?([\d])


Nun sollte man in FHEM schon sehen, wie sich die Readings entsprechend ändern, wenn man vor der Kamera auf und ab geht.

Nun als Vorlage für weitere Experimente

define house_armed dummy
attr house_armed setList on off

define Alarm DOIF ([house_armed] eq "on" and [ipcam1_status:motionDetectAlarm] == 2) (set Terrassenlicht on-for-timer 20)
attr Alarm do always


Wenn man den Dummy house_armed auf on setzt, funktioniert die Auslösung (in meinem Beispiel das Terrassenlicht) recht gut, wenn man vor der Webcam herumläuft. Man kann sich nun auch über das IPCAM-Modul entsprechende Bilder von der Kamera abholen.
Wermutstropfen: Der HTTPMOD pingt in meinem Beispiel aller 5 Sekunden die Webcam an.


schka17

Ich mache das umgekehrt, ich habe bei der Kamera eine Aktion eingetragen, nämlich beim Auslösen eines Motionalarms wird über einen HTTP request ein Sttaus in einem Dummy gesetzt, den Event kann ich dann weiterverwenden. Damit erspare ich mir das pollen. Das habe ich bei den Foscam webcams und auch bei den Maginon billig dingern vom Hofer(Aldi) in Betrieb, allerdings muss man schon klar sagen, die Erkennungsrate ist in keinem Vergleich zu einem Bewegungsmelder, aber besser als nichts.


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

m8ichael

Hallo zusammen,

habt ihr eine Idee, wie man von FHEM gesteuert auch Aufnahmen triggern kann? Ich habe eine Webcam von D-Link (DCS-2210L) und da ist das mit der Doku der Kommandos so eine Sache...recht dürftig, was D-Link da liefert - zumindest habe ich nichts im Netz gefunden...  :-[

Alternativ könnte man den Stream der Kamera irgendwie wegschreiben. Hat das schon mal jemand gemacht?

Viele Grüße

Michael

Ingo298

Zitat von: schka17 am 09 Januar 2017, 22:33:03
Ich mache das umgekehrt, ich habe bei der Kamera eine Aktion eingetragen, nämlich beim Auslösen eines Motionalarms wird über einen HTTP request ein Sttaus in einem Dummy gesetzt, den Event kann ich dann weiterverwenden. Damit erspare ich mir das pollen. Das habe ich bei den Foscam webcams und auch bei den Maginon billig dingern vom Hofer(Aldi) in Betrieb, allerdings muss man schon klar sagen, die Erkennungsrate ist in keinem Vergleich zu einem Bewegungsmelder, aber besser als nichts.


Sent from my iPad using Tapatalk

Hallo schka17

benutzt du auch eine Foscam?
Kannst du bitte kurz beschreiben wie die den HTTP request bei der Kamera gesetzt hast?

MfG Ingo
RPi4 8GB: Buster FHEM 6.3, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT

schka17

Zitat von: Ingo298 am 28 August 2017, 12:24:38
Hallo schka17

benutzt du auch eine Foscam?
Kannst du bitte kurz beschreiben wie die den HTTP request bei der Kamera gesetzt hast?

MfG Ingo

Habe mittlerweile alles auf Zoneminder umgestellt und fast alle Kameras getauscht.
Bei den Maginon einfach den URL für den "motion-dummy" gesetzt, z.b.:
http://hal9000.homelinux.net:8083/fhem?cmd.Motion_WZ=set%20Motion_WZ%20motion

Bei meinen jetztigen HD Foscams habe ich gerade gesehen dass das so nicht mehr geht, ist mir nicht aufgefallen da ich auf Beweldungsmelder und Zoneminder umgestiegen bin.

M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000