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
Schon mal das IPCAM Modul angeschaut, ob das mit der Kamera läuft? => https://wiki.fhem.de/wiki/IPCAM
ja läuft. Habe ich auch schon getestet.
Aber hier gibt es doch keine Bewegungserkennung oder?
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
@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
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!
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
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)
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ß
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!
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
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.
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.
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