IP Kamera (foscam) als Bewegungsmelder

Begonnen von delta8585, 14 November 2018, 14:06:19

Vorheriges Thema - Nächstes Thema

delta8585

Hallo,

ich habe ein foscam FI9903P. Diese möchte ich gerne als Bewegungsmelder benutzen.
Die Kamera hat eine cgi Schnittstelle. Dies frage ich im Moment mit den HTTPMOD Modul ab und werte das Ergebnis aus.
define foscam HTTPMOD http://192.168.2.192:88/cgi-bin/CGIProxy.fcgi?cmd=getLog&offset=0&count=20&usr=xxx&pwd=xxx 10

Das funktioniert auch ganz gut. Nur leider kann man bei dem HTTPMOD Modul den Intervall nicht kleiner als 10 Sekunden einstellen.
Dadurch kommt es zu Schaltverzögerungen die bis zu 10s dauern kann.

Gibt es hier ein Alternative?

Gruß
Johannes

r00t2

Schon mal das IPCAM Modul angeschaut, ob das mit der Kamera läuft? => https://wiki.fhem.de/wiki/IPCAM
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

delta8585

ja läuft. Habe ich auch schon getestet.
Aber hier gibt es doch keine Bewegungserkennung oder?

delta8585

ich habe einen anderen Lösungsansatz gefunden.

define Status_Kamera dummy
attr Status_Kamera event-on-change-reading .*
attr Status_Kamera room Kamera

define html_aufruf at +*00:00:02 { HttpUtils_NonblockingGet( {\
    url     => "http://192.168.2.192:88/cgi-bin/CGIProxy.fcgi?cmd=getLog&offset=0&count=20&usr=admin&pwd=xxx",\
    timeout => 1, \
    callback=> sub($$$) { my ($hash, $err, $data) = @_;;\
                          foreach ($data) {\
                            if( $_ =~ m"<log0>(.*)<\/log0>") {\
                                my $wert = $1;;\
                            #Log 1, "Status_Kamera: $wert";;\
                            fhem("set Status_Kamera $wert");;\
}}}})}
attr html_aufruf room Kamera
             
define doif.Kamera.Alarm DOIF ([Status_Kamera:state]) (set pushmsg msg 'Kamera' 'Bewegung erkannt' 'Johannes' 0 'pushover')
attr doif.Kamera.Alarm do always
attr doif.Kamera.Alarm room Kamera


hier frage ich alle zwei Sekunden über HttpUtils_NonblockingGet die Url der Kamera ab.
HttpUtils_NonblockingGet damit Fhem nicht blockiert wird falls die Kamera mal nicht antwortet.

Anschließend werte ich das Logfile der Kamera auf den letzten Eintrag aus und wenn sich dieser ändert, setzte ich eine Pushnachricht ab.

Das funktioniert im Moment sehr gut. Allerdings weiß ich nicht wie sich das ständige abfragen auf das System auswirkt.

Oder spricht hier was dagegen?

Gruß
Johannes

Peter_Listig

@delta8585

Hallo Johannes,


leg mal einen "Melder_Dummy" an der auf on / off reagiert

Folgende Zeile im Browser zum Testen ob der Dummy reagiert
für das Auslösen und das Weitergeben eines Alarms eingeben

http://xxx.xxx.xxx.xxx:8083/fhem?cmd.cam1_alarm=set%20Melder_Dummy%20on

Dann

in der Weboberfläche der Cam
bei mir eine 7Links (wie FOSCAM)

unter Sonstiges / Alarm

bei

Alarmierung per Http   Häckchen setzen

und bei

HTTP-URL               obige http:// eingeben


Dann

sich vor der Camera bewegen ;-)

Sollte funktionieren


Greetz

Peter


Raspi4 / Debian Bullseye / FB 7490 / FHEM 6.x / CUL433 / CUL868 / aculfw / FrtizFon / DECT200 / IT / Homematic / ZigBee (Raspbee) /  Rademacher / HE / km200  / DS214+

AET_FHEM

Hey,

an der stelle war ich auch schon mal bin dann von foscam auf instar umgestiegen weil instar alarmserver eingebaut hat damit kann die Cam direkt eine Bewegung melden aktiv nicht proaktiv .....
damit hat man dann nur eine Meldung wenn eine Bewegung statt findet und nicht ständig die frage ob sich was bewegt hat.....!

=> läuft super!

delta8585

Zitat von: Peter_Listig am 15 November 2018, 07:08:44
@delta8585

Hallo Johannes,


leg mal einen "Melder_Dummy" an der auf on / off reagiert

Folgende Zeile im Browser zum Testen ob der Dummy reagiert
für das Auslösen und das Weitergeben eines Alarms eingeben

http://xxx.xxx.xxx.xxx:8083/fhem?cmd.cam1_alarm=set%20Melder_Dummy%20on

Dann

in der Weboberfläche der Cam
bei mir eine 7Links (wie FOSCAM)

unter Sonstiges / Alarm

bei

Alarmierung per Http   Häckchen setzen

und bei

HTTP-URL               obige http:// eingeben


Dann

sich vor der Camera bewegen ;-)

Sollte funktionieren


Greetz

Peter

Hallo Peter,
leider habe ich diese Option bei meiner Kamera nicht.

Gruß
Johannes

Heike4

#7
In meinen Augen wäre es wirklich einfacher, wenn du einen Bewegungsmelder mit Kamera separat kaufst. Denn die Nachrüstung von IP-Kameras ist noch nicht fehlerfrei. Konntest Du das Problem schon lösen??

Edit by Amenophis86:
Link gelöscht. Hinweis auf die Forenregeln

delta8585

Hallo,

so wie ich es vorhin geschrieben habe funktioniert es nur bedingt. Da die Kamera zeitverögert die Bewegung erkennt.
Ja ich muss es über einen Bewegungsmelder lösen.
Das habe ich aber noch nicht umgesetzt.

Gruß

dl2ecg

Bewegungserkennung für ONVIF Kamera direkt an FHEM
Ich bastele schon seit einiger Zeit an der Verbindung der Bewegungserkennung einer Jovision Onvif Kamera an FHEM.
Zuletzt hatte ich die Lösung mit  Programm "motion" realisiert. Von motion aus mit einem webhook auf FHEM.(funktioniert)
Da die Kamera aber bereits eine eingebaute Bewegungserkennung hat, bin ich nun den direkten Weg von der Kamera auf FHEM gegangen.
In der Benutzeroberfläche meiner Onvif Kamera gibt es nicht die Option, dass man direkt einen http Befehl an FHEM senden kann.

Von der Seite justsmarthomes.com habe ich eine Vorlage etwas umgebaut, um diese für meine ONVIF unter FHEM zum Laufen zu bringen.
Die Kamera sendet bei Bewegung  nach dem Aufspielen des obigen codes durch den curl Befehl eigenständig den Befehl an FHEM!!.


1)editiere die Datei motion.xml und passe die IP Adressen und ports der Kamera und des webhook für FHEM an.
192.168.178.83:80 ist hier der ONVIF Port der Kamera und 192.168.178.56:8085 der Port für den FHEM webhook (Achtung,kein https)
Die Authentifizierung von dem webhook 8085 ausschalten.

2)transferiere diese Datei auf die Kamera mit:
curl --header "" --data @motion.xml "http://192.168.178.83:80/onvif/device_service/events"

3)Auf der FHEM Seite die  dummy Variable myalarm anlegen (define myalarm dummy),attr myalarm webcmd on:off   und einen webhook, im Beispiel auf port 8085 anlegen.
4)Auf der Kamera die Bewegungserkennung aktivieren

Man kann auch von Hand testen, ob FHEM den Befehl akzeptiert. Im Browser die Zeile http://192.168.178.56:8085/fhem?cmd=set%20myalarm%20on
eingeben. Der Wert von myalarm sollte auf on wechseln .Den Webhok 8085 auf attr verbose 5 stellen, um die Kommunikation zu sehen.



Ab sofort meldet die Kamera die Bewegung auf die FHEM dummyvariable myalarm (on)
Bei meiner Kamera ist der Pfad http://192.168.178.83:80/onvif/device_service/events, habe aber festgestellt, dass dieser bei anderen Kameras abweicht.Dann muss man die  motion.xml evt. anpassen.
Mit dem "Onvif Device test tool" findet man den Pfad heraus.

Weitere Auswertung des Alarms z.B. mit DOIF und attr doalways.

Vor Manipulationen an der Kamera natürlich Daten und Firmware sichern!

delta8585

Zitat von: dl2ecg am 23 Dezember 2018, 10:55:17
Bewegungserkennung für ONVIF Kamera direkt an FHEM
Ich bastele schon seit einiger Zeit an der Verbindung der Bewegungserkennung einer Jovision Onvif Kamera an FHEM.
Zuletzt hatte ich die Lösung mit  Programm "motion" realisiert. Von motion aus mit einem webhook auf FHEM.(funktioniert)
Da die Kamera aber bereits eine eingebaute Bewegungserkennung hat, bin ich nun den direkten Weg von der Kamera auf FHEM gegangen.
In der Benutzeroberfläche meiner Onvif Kamera gibt es nicht die Option, dass man direkt einen http Befehl an FHEM senden kann.

Von der Seite justsmarthomes.com habe ich eine Vorlage etwas umgebaut, um diese für meine ONVIF unter FHEM zum Laufen zu bringen.
Die Kamera sendet bei Bewegung  nach dem Aufspielen des obigen codes durch den curl Befehl eigenständig den Befehl an FHEM!!.


1)editiere die Datei motion.xml und passe die IP Adressen und ports der Kamera und des webhook für FHEM an.
192.168.178.83:80 ist hier der ONVIF Port der Kamera und 192.168.178.56:8085 der Port für den FHEM webhook (Achtung,kein https)
Die Authentifizierung von dem webhook 8085 ausschalten.

2)transferiere diese Datei auf die Kamera mit:
curl --header "" --data @motion.xml "http://192.168.178.83:80/onvif/device_service/events"

3)Auf der FHEM Seite die  dummy Variable myalarm anlegen (define myalarm dummy),attr myalarm webcmd on:off   und einen webhook, im Beispiel auf port 8085 anlegen.
4)Auf der Kamera die Bewegungserkennung aktivieren

Man kann auch von Hand testen, ob FHEM den Befehl akzeptiert. Im Browser die Zeile http://192.168.178.56:8085/fhem?cmd=set%20myalarm%20on
eingeben. Der Wert von myalarm sollte auf on wechseln .Den Webhok 8085 auf attr verbose 5 stellen, um die Kommunikation zu sehen.



Ab sofort meldet die Kamera die Bewegung auf die FHEM dummyvariable myalarm (on)
Bei meiner Kamera ist der Pfad http://192.168.178.83:80/onvif/device_service/events, habe aber festgestellt, dass dieser bei anderen Kameras abweicht.Dann muss man die  motion.xml evt. anpassen.
Mit dem "Onvif Device test tool" findet man den Pfad heraus.

Weitere Auswertung des Alarms z.B. mit DOIF und attr doalways.

Vor Manipulationen an der Kamera natürlich Daten und Firmware sichern!

Hallo,
danke für deine Antwort.
Das funktioniert bei meiner Foscam leider nicht.
Bekomme immer folgende Antwort:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsdd="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:chan="http://schemas.microsoft.com/ws/2005/02/duplex" xmlns:wsa5="http://www.w3.org/2005/08/addressing" xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:wsc="http://schemas.xmlsoap.org/ws/2005/02/sc" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xmime="http://tempuri.org/xmime.xsd" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsrfbf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:tdn="http://www.onvif.org/ver10/network/wsdl" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl"><SOAP-ENV:Header><wsa5:To SOAP-ENV:mustUnderstand="true">http://192.168.2.192:888/device_service/events</wsa5:To><wsa5:Action SOAP-ENV:mustUnderstand="true">http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest</wsa5:Action></SOAP-ENV:Header><SOAP-ENV:Body><SOAP-ENV:Fault SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><SOAP-ENV:Code><SOAP-ENV:Value>SOAP-ENV:Sender</SOAP-ENV:Value></SOAP-ENV:Code><SOAP-ENV:Reason><SOAP-ENV:Text xml:lang="en">HTTP Error: 401 Unauthorized</SOAP-ENV:Text></SOAP-ENV:Reason></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>


weiß leider nicht welcher Benutzer und welches Passwort

dl2ecg


Vielleicht mit username passwort ?

curl --header "" --data @motion.xml "http://admin:xxxxxx@192.168.178.83:80/onvif/device_service/events"
versuchen. Deine Meldung zeigt ja ein Authorisierungsproblem.

Bei manchen Kameras muss man in der Benutzeroberfläche das Onvif Protokoll aktivieren.

delta8585

Hab ich schon versucht. Leider ohne Erfolg. Ja ich musste es aktivieren. Bei mir ist es der Port 888. Ich habe auch die XML dementsprechend angepasst.

Ich vermute es gibt noch einen Art root User.

steffen83

Auch wenn das Thema schon etwas älter ist,

hier noch ein Hinweis auf 2 meiner Scripte die ich erstellt habe und andere evtl. brauchen:

https://forum.fhem.de/index.php/topic,96014.msg889774.html#msg889774
https://forum.fhem.de/index.php/topic,96245.msg892162.html#msg892162
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM