FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: delta8585 am 14 November 2018, 14:06:19

Titel: IP Kamera (foscam) als Bewegungsmelder
Beitrag von: delta8585 am 14 November 2018, 14:06:19
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
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: r00t2 am 14 November 2018, 14:13:09
Schon mal das IPCAM Modul angeschaut, ob das mit der Kamera läuft? => https://wiki.fhem.de/wiki/IPCAM
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: delta8585 am 14 November 2018, 19:16:55
ja läuft. Habe ich auch schon getestet.
Aber hier gibt es doch keine Bewegungserkennung oder?
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: delta8585 am 14 November 2018, 19:37:13
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
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag 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


Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: AET_FHEM am 15 November 2018, 08:40:33
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!
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: delta8585 am 15 November 2018, 10:12:12
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
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: Heike4 am 12 Dezember 2018, 12:36:36
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 (https://forum.fhem.de/index.php/topic,60272.0.HTML)
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: delta8585 am 12 Dezember 2018, 13:58:08
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ß
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag 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!
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: delta8585 am 23 Dezember 2018, 21:23:56
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
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: dl2ecg am 24 Dezember 2018, 08:23:09

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.
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: delta8585 am 25 Dezember 2018, 14:06:20
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.
Titel: Antw:IP Kamera (foscam) als Bewegungsmelder
Beitrag von: steffen83 am 21 Januar 2019, 09:21:07
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