Hallo Experten,
also seit neustem benutze ich das IPCAM Modul mit meiner FOSCAM um zu sehen wer vor der Türe steht, die Kamera habe ich auch so eingestellt das sie bei bewegung eine Email schickt.
Jetzt wäre es noch schön wenn FHEM eine Bewegung erkennt und Zeitnah eine Meldung ausgibt um es als event zu verwenden, lt. Werner
--> http://www.fischer-net.de/hausautomation/fhem/49-fhem-modul-ipcam-holt-bilder.html
geht das ..... aber wie?
Grüße
AET
Wenn du das meinst :
Zitat
Dieses Device soll bei der Auslösung eines Bewegungsmelders die Aufnahmen holen:
define MOTION.not.01 notify GH.ga.SEC.MD.01:.*on.* get ipcam image
Da wird meines Erachtens per notify auf einen Bewegungsmelder (HM-Sec -----) reagiert und per ipcam-Modul ein snapshot gemacht.
Ein Ansatz ohne extra Melder wäre evtl.:
- meine Cam macht ein snapshot bei Bewegung und legt das Bild auf dem Pi ab
- würde man das Verzeichnis überwachen könnte man darauf reagieren
Ja stimmt wenn man das Verzeichniss checkt würde das klappen, mit extra Bewegungsmelder wollte ich nicht arbeiten
Werner schrieb:
"# Modifikation von IPCAM — Werner 2013-08-24 12:26
Hallo Martin,
ich habe das Modul um eine Pollfunktion erweitert.
In bestimmbaren Intervallen kann man den Status der IpCam abfragen und somit den Motion-Alarm als event verwenden.
Es klappt mit meiner Foscam super.
Falls du Interesse daran hast, die Funktionen auf zu nehmen,
dann bitte ich um eine emailadresse für die Zusendung.
Liebe Grüße
Werner"
----> ich glaub der checkte das direkt an der CAM ab......
Hallo zusammen,
ich müsste den part noch in das IPCAM-Modul sauber einpflegen.
Habe ich bisher leider nicht.
Ich hänge das geänderte Modul an, die Änderungen sollten selbsterklärend sein.
Die Änderungen sind gut kommentiert mit new new1 new2.
Evtl. Fragen beantworte ich gern.
lg, Werner
Motion Detect will bei mir noch nicht so richtig.
get ipcam image
funktioniert so wie es soll unter Nutzung von my_IPCAM,
allerdings bekomme ich Motion Detect ueber notify noch nicht zum Laufen:
define ipcamNotify notify ipcam get ipcam image
Ich denke mal dass es an der Syntax liegt und daran, dass wahrscheinlich noch vorher Variablen definiert werden muessen, damit das Polling ueberhaupt loslaeuft. So ganz bin ich in den Modulcode noch nicht eingestiegen.
Ein kleines simples Beispiel fuer die Nutzung vom Polling und Notify wuerde mir sehr weiterhelfen!
Hallo HH.
Meine notifys sehen so aus:
# bei Alarm Images holen
define nfy_ipcam1_Alarm_on notify ipcam1:Alarm_on { fhem("get ipcam1 image") }
# images versenden WICHTIG: @@ in emailadr. verwenden
# sendmailSnapshots ist eine sub aus my_MailUtils.pm
define nfy_ipcam1_snapshots notify ipcam1:snapshots.* { sendmailSnapshots ("%",'you@@provider.de') }
Ich hänge die aktuellen Dateien an!
Liebe Grüße
Werner
Hallo Werner,
1) sind deine änderungen mitlerweile in das offilzielle IPCAm integriert worden?
2)Wie ist genau die Syntax des Pollings?
"In bestimmbaren Intervallen kann man den Status der IpCam abfragen und somit den Motion-Alarm als event verwenden."
define nfy_ipcam1_Alarm_on notify ipcam1:Alarm_on { fhem("get ipcam1 image") }
a) Wird das Polling automatisch durchgeführt?
b) Verifiziere ich mit "notify ipcam1:Alarm_on" ob das letzte Polling einen aktiven Alarm erkannt hat?
c) Wie oft wird gepollt?
Noch eine weitere Frage,
du schreibst dass es super mit der Foscam funktioniert.
Läuft die Alarmerkennung auch mit der Wansview 625?
Meines Erachtens ist so etwas wier hier zwar sehr interessant, aber erst produktiv einsetzbar, wenn das IPCAM Modul Non-blocking ist. Bei hochauflösenden Bildern von einer 2 MP Kamera blockiert FHEM sogar auf dem schnellsten Server beim Holen der Bilder eine ganze Weile (hängt von der Kamera ab).
Hallo Marvin,
hallo Werner,
gibt es eine Alternative zu IPCAM in fhem?
Ich würe gerne aktuell nur den Bewegungssensor in der Kamera nutzen. Ich denke dass dieses Polling des Alarmbits nicht so blockierend ist;)
Daher nochmal:
a) Ich benötige nur weitere Infos zum Alarmbit-Polling
b) Funktioniert dies auch mit den Wansview Kameras?
Danke,
---> Hallo,
wollte gerade das Modul testen, leider bekomm ich immer die Meldung das meine CAM offline wäre
--> kann mir jemand weiter helfen?
---> Bilder macht sie aber ....
== UPDATE ==
- ich habe fping nach installiert & die Zeile
my $ping_out = qx (fping -t $pingTimeOut -r 0 $host); #used fping, not implemented in fritz.box
zum test abgeändert in
my $ping_out = qx (fping -t $pingTimeOut -r 0 192.168.0.62); #used fping, not implemented in fritz.box
--> jetzt bekomm ich die meldung Status Alarm_undefined => obwohl ich in der Foscam den Alarm definiert habe ...
=> @ Werner so selbst erklärend find ich das Modul jetzt nicht :-)
== UP2Date ==
Also die CAM definiert man im neuen Modul [myIPCAM] nicht mehr mit dem Port sondern ohne!!
# define <name> IPCAM <camip:port> ~~> ALT
# define webcam IPCAM 192.168.1.58:81 = define ipcam my_IPCAM 192.168.1.58 ~~> dann gehts auch
ohne änderung der Zeile $host in der Datei 97_my_IPCAM.pm
=> trotzdem bekomme ich noch Status:Alarm_undefined
_________________________
mit (Foscam)
http://X[IP]X/get_log.cgi?user=XXX&pwd=XXX
=> kann man ja das Log auslesen also kann jemand der sich auskennt auch nach "motion detect" suchen und dann ein Event auslösen ...?
und :-)
attr _CAM_ pathStatus get_status.cgi (Foscam und Instar)
--> dann klappts auch mit dem Alarm :-)
Hallo AET_FHEM,
Hast du deine Fhem-Installation auf einem Raspberry Pi?
Kannst du vom Fhem-host deine cam anpingen?
fping muss mit root-Rechten ausgeführt werden. Ich habe dafür das suid bit gesetzt.
"chmod +s /usr/bin/fping" !
Vorher mal schauen, ob das s-bit (statt x-bit) gesetzt ist: "ls -l /usr/bin/fping"
Auch beim ping-Befehl ist das sogenannte Sticky-bit gesetzt.
Allerdings ist das natürlich auch sicherheitskritisch, wenn jeder diesen Befehl mit root-Rechten ausführen
kann.
Ich hoffe es hilft dir weiter.
Liebe Grüße
Werner
Hallo Werner,
musste das fping installieren außerdem noch ein paar sachen einstekllen und meine CAM´s updaten Firmware und WEB UI jetzt gehts Motion wird Alarm wird angezeigt Super sache ;D
--> ALarm status => attr _CAM_ pathStatus get_status.cgi
und define ipcam my_IPCAM 192.168.1.58 (OHNE PORT)
klappt :-) hier mit Instar und Foscam getestet
SUPER Danke
Grüße
Andy
Hallo,
hab mal wieder ein Problem ...
und zwar kommt meine CAM instar nach ein paar Alarm_on nicht mehr auf den State Alarm_off
obwohl in der get_log.cgi Alarm:0 angezeigt wird ändert sich der status der Kamera nicht mehr außer ich starte FHEM neu danach geht es wieder ...
--> hat jemand eine Idee?
Wie kann ich my_IPCAM_GetUpdate($) ausführen??
Hallo,
die Bewegungserkennung habe ich für meine Foscam IL9900P über HTTPMOD gelöst:
define ipcam0_status HTTPMOD http://192.168.178.24:88/cgi-bin/CGIProxy.fcgi?usr=xxx&pwd=xxx&cmd=getDevState 10
attr ipcam0_status userattr get0Map get0Name get0Regex get0URL get1Map get1Name get1Regex get1URL readingsName_infraLedState readingsName_motionDetectAlarm readingsRegex_infraLedState readingsRegex_motionDetectAlarm set0Data set0Name set0URL set1Name set1URL
attr ipcam0_status get0Map 0:success, -1:fail
attr ipcam0_status get0Name closeInfraLed
attr ipcam0_status get0Regex <ctrlResult>?([\d])
attr ipcam0_status get0URL http://192.168.178.24:88/cgi-bin/CGIProxy.fcgi?usr=xxx&pwd=xxx&cmd=closeInfraLed
attr ipcam0_status get1Map 0:success, -1:fail
attr ipcam0_status get1Name openInfraLed
attr ipcam0_status get1Regex <ctrlResult>?([\d])
attr ipcam0_status get1URL http://192.168.178.24:88/cgi-bin/CGIProxy.fcgi?usr=xxx&pwd=xxx&cmd=openInfraLed
attr ipcam0_status readingsName_infraLedState infraLedState
attr ipcam0_status readingsName_motionDetectAlarm motionDetectAlarm
attr ipcam0_status readingsRegex_infraLedState <infraLedState>?([\d])
attr ipcam0_status readingsRegex_motionDetectAlarm <motionDetectAlarm>?([\d])
attr ipcam0_status room IT
Nach dem selben Muster ist auch die Kontrolle für die IR LED der Kamera gestaltet. Die API ist recht einfach und im Netz zu finden: "Foscam IPCamera CGI User Guide-V1.0.4.pdf"
Was noch nicht recht klappen mag ist die Kontrolle der Kamera internen Bewegungserkennung mit getMotionDetectConfig. Wenn ich es hinbekommen habe stelle ich gerne die komplette Einbindung der Kamera vor.
Hallo Andy,
die Funktion GetUpdate wird über InternalTimer automatisch periodisch aufgerufen. Die Zeit dafür gibt die interne Variable INTERVAL vor. Sie kann über die Attribute "pollIntervalOn" und "pollIntervalOff" angepasst werden. Sonst sind es als default alle 30 Sekunden ein Aufruf der Funktion.
Was da bei dir nicht funktioniert, dafür habe ich keine Erklärung.
Liebe Grüße
Werner
Hallo Robert,
sieht interessant aus, ich versuch mit nebenher auch mal dran :-)
@ Hallo Werner
Danke schon mal denk das ist das was ich gesucht habe, werde mal mit pollIntervalOn und off experimentieren :-)
Also mit dem HTTPMOD klappt das wunderbar außer das ich immer einen Fehler bekomme:
header: HTTP/1.1 200 OK
Server: Netwave IP Camera
Date: Mon, 16 Nov 2015 09:58:54 GMT
Content-Type: text/plain
Content-Length: 382
Cache-Control: no-cache
Connection: close, buffer empty,
Error write to to http://192.168.0.62:80 timed out
--> was sagt das mir ? => also mir nichts aber kann mir das einer übersetzen?
Hallo die Runde
ich hätte noch einen anderen Lösungsansatz zu bieten, den ich mit meinen Hikvision-Außenkameras implementiert habe. Dazu nutze ich den kamerainternen Email-Versand bei Alarmen. Die Mail wird an einen netzwerkinternen User verschickt. Als smtp-Server ist auf einem Raspi Postfix installiert. Mit der dort möglichen Filterung wird auf die Absenderadresse der Kamera getriggert und per Shell-Script in FHEM ein Alarm-dummy gesetzt. Die Mail selbst wird verworfen, man könnte aber noch den Inhalt auswerten, falls man mehrere Alarme definiert hat. Bilder selbst werden nicht mit der Mail verschickt. Das ist zwar möglich, bei diesem Vorgehen aber nicht sinnvoll.
Bei dieser Lösung braucht die Kamera nicht gepollt zu werden. Die Mail/Script-Alarmierung ist ausreichend schnell, um per IPCAM-Modul eine Bilderserie abzuholen.
Das Problem bleibt aber die Empfindlichkeit der kamerainternen Bewegungserkennungen. Da muß man eine Weile probieren, bis man halbwegs passende Einstellungen gefunden hat. FHEM bietet aber weitere Möglichkeiten, die Information zu filtern und erst dann nach extern vorzunehmen. Mein Favorit ist im Moment TelegramBot. Damit kann man z.B. weitere Bilder nachfordern und weiter Aktionen auslösen.
Viele Grüße
G.
Hallo Gernot,
Dein Lösungsansatz gefällt mir sehr gut, weil ich kein Fan von Dauer-Polling bin. Nur habe ich das Ganze selbst nicht zum Laufen gebracht.
Folgendes geht schon mal:
- IPCAM-Modul funktioniert und speichert Bilder bei manueller Auslösung
- meine Foscam versendet immerhin Emails bei Motion Detection probeweise an einen externen SMTP (jedoch logischerweise mit unbrauchbarer Zeitverzögerung)
Soweit so gut. Jedoch möchte ich die Emails direkt auf den Raspi senden, der im gleichen Heimnetzwerk liegt und somit die Zeitverzögerung auf ein Minimum reduzieren.
Postfix habe ich auch installiert. Nun bin ich aber mit meinem Latein am Ende, weil ich bei der Konfiguration kein Profi bin.
Wäre es dir möglich, eine kleine exemplarische Anleitung zur Konfiguration des Postfix, dem Shell Script und des Alarm-Dummy zu schreiben? Die Email soll nur als Auslöser dienen, um beispielsweise das IPCAM zu starten, kann aber selbst sofort verworfen werden, um den Speicher des Raspi zu schonen.
Viele Grüße
Also mal vorweg, ich bin auch kein Profi. Wenn jemand von sich aus eine Anleitung schreibt, freue ich mich und nutze es gerne. Ich würde aber niemals jemanden fragen, ob er eine für mich schreibt.
Hier, wie in vielen anderen technischen Foren wird erwartet, selbst in Vorleistung zu gehen und dann konkrete Fragen zu stellen, wenn man nicht weiterkommt. Ich habe mich übrigens einige Abende hingesetzt und das Internet nach den Konfigurationsschritten durchsucht und solange probiert, bis es dann lief. Ist mühsam, aber lehrreich. Zum Thema Postfix gibt es zahlreiche Anleitungen und Beispiele im Netz.
Nun als Hilfe zur Selbsthilfe ein Arbeitsplan:
- Postfix einrichten, daß er Mails aus dem Netzwerk an einen User auf dem System entgegennimmt (z.B. auf einem Raspberry den Standarduser pi@raspberrypi bzw. pi@wieauchimmeredeinhostnameist). Normalerweise soll Postfix die Mail nach extern verteilen, was aber hier nicht notwendig ist.
- Postfix FILTER-Statement nutzen (Wenn Mail an diesen bestimmten User pi@.... eintrifft, dann führe Aktion aus, z.B. Starten eines Skripts). Lesestoff hier: http://www.postfix.org/FILTER_README.html
- Skript anlegen, um ein dummy-Reading in FHEM zu setzen
- in FHEM auf die Änderung des Readings reagieren (z.B. DOIF)
Vorn anfangen und jeden dieser Schritte einzeln testen. Hilfreich ist dabei auch das Postfix-Log. Wenn es geht, weiter zum nächsten Schritt. Immer aufschreiben, was man gemacht hat, wenn es funktioniert (u.a. falls mal später jemand kommt und eine Anleitung haben will, oder weil man selbst altersbedingt etwas vergeßlich wird).
Wenn es irgendwo klemmt, helfe ich Dir gern, wenn ich kann.
Viele Grüße
G.
Hallo Gernott,
mir gefällt dein Ansatz. Ich habe es bei mir jetzt auch so umgesetzt. Ich habe nur ein Problem. Bei mir dauert es vom Empfang der Mail im Postfix bis zum Anwenden des Filters und somit dem Ausführen des Skriptes etwa 2 Sekunden (laut Postfix Log). Hast du einen Tipp für mich, wie ich diese Verzögerung weg bekomme?
Danke, Tobelix
Hallo tobelix
Habe gerade mal in mein Log geschaut. Sieht so aus:
Nov 5 17:47:35 homeraspi postfix/smtpd[10185]: connect from CAM-Eingang.fritz.box[192.168.1.80]
Nov 5 17:47:35 homeraspi postfix/smtpd[10185]: NOQUEUE: filter: RCPT from CAM-Eingang.fritz.box[192.168.1.80]: <cam1@camraspi.de>: Sender address triggers FILTER my_cam1_alarm:dummy; from=<cam1@camraspi.de> to=<pi@homeras.pi> proto=SMTP helo=<192.168.1.100>
Nov 5 17:47:36 homeraspi postfix/smtpd[10185]: 054543F09F: client=CAM-Eingang.fritz.box[192.168.1.80]
Nov 5 17:47:36 homeraspi postfix/cleanup[10188]: 054543F09F: message-id=<>
Nov 5 17:47:36 homeraspi postfix/qmgr[1083]: 054543F09F: from=<cam1@camraspi.de>, size=748, nrcpt=1 (queue active)
Nov 5 17:47:36 homeraspi postfix/smtpd[10185]: disconnect from CAM-Eingang.fritz.box[192.168.1.80]
Nov 5 17:47:36 homeraspi postfix/pipe[10189]: 054543F09F: to=<pi@homeraspi>, orig_to=<pi@homeras.pi>, relay=my_cam1_alarm, delay=0.38, delays=0.11/0.02/0/0.25, dsn=2.0.0, status=sent (delivered via my_cam1_alarm service)
Nov 5 17:47:36 homeraspi postfix/qmgr[1083]: 054543F09F: removed
Es geht daraus nicht hervor, wann wirklich der Trigger erfolgt (delay=0.38?). Dann werden ja erst noch von FHEM die Bilder von der Kamera geholt. Bei mir ist es insgesamt ausreichend schnell. Wenn Du größere Verzögerungen hast, kann das an verschiedenen Stellen der Kette sein. Dazu müßtest Du möglicherweise die Mail-Logs auf mehr Details stellen.
Gruß
G.
Hallo Gernott,
mein Log sieht so aus:
Nov 9 18:24:15 raspberrypi postfix/smtpd[30799]: connect from OutdoorCam.fritz.box[192.168.173.39]
Nov 9 18:24:15 raspberrypi postfix/smtpd[30799]: 9ACCD3FECC: client=OutdoorCam.fritz.box[192.168.173.39]
Nov 9 18:24:15 raspberrypi postfix/cleanup[30802]: 9ACCD3FECC: message-id=<>
Nov 9 18:24:15 raspberrypi postfix/qmgr[3020]: 9ACCD3FECC: from=<fhem@raspberrypi.local>, size=314052, nrcpt=1 (queue active)
Nov 9 18:24:15 raspberrypi postfix/smtpd[30799]: disconnect from OutdoorCam.fritz.box[192.168.173.39]
Nov 9 18:24:18 raspberrypi postfix/pipe[30803]: 9ACCD3FECC: to=<fhem@raspberrypi>, orig_to=<fhem@raspberrypi.local>, relay=triggerCamAlert, delay=2.5, delays=0.28/0.06/0/2.1, dsn=2.0.0, status=sent (delivered via triggerCamAlert service)
Nov 9 18:24:18 raspberrypi postfix/qmgr[3020]: 9ACCD3FECC: removed
In diesem Beispiel sind es sogar 3 Sekunden Verzögerung. Wenn ich das mit deinen Log anschaue, dann weiß ich vermutlich wo das Problem liegt. Es scheint du hast einen BEFORE-Queue Filter verwendet. Ich einen AFTER-Queue Filter. Die Verzögerung ist dann wahrscheinlich genau die Zeit in der die Mail in der Queue hängt.
Ich habe noch keinen Weg gefunden mein Skript vor der Queue zu triggern. Hättest du dafür vielleicht einen Tipp für mich?
Gruß Tobelix
Zitat von: tobelix am 09 November 2017, 22:50:59
Hättest du dafür vielleicht einen Tipp für mich?
Nun ja, ich habe die postfix-Doku gelesen und diverse Beispiele probiert...
Versuche mal in der master.cf diesen Eintrag:
# Added for IP CAM motion detection reaction via Email to postfix
my_cam1_alarm unix - n n - - pipe
flags=X user=pi argv=/home/pi/cam/cam1_alarm.sh
In der main.cf habe ich das eingetragen:
inet_protocols = ipv4, ipv6
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
sender_canonical_maps = hash:/etc/postfix/sender_canonical
recipient_canonical_maps = hash:/etc/postfix/recipients_canonical
smtp_tls_security_level = encrypt
inet_interfaces = all
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_address, permit_mynetworks
In der sender_address muss das dann stehen:
cam1@camraspi.de FILTER my_cam1_alarm:dummy
Gruß
G.
So, es hat leider eine Weile gedauert bis ich wieder die Zeit gefunden habe hier weiter zu basteln.
Ich habe es jetzt auch geschafft den Filter früher zu triggern. Aber der Delay bleibt weiterhin...
Dec 26 20:53:09 raspberrypi postfix/smtpd[24553]: connect from OutdoorCam.fritz.box[192.168.173.39]
Dec 26 20:53:09 raspberrypi postfix/smtpd[24553]: NOQUEUE: filter: RCPT from OutdoorCam.fritz.box[192.168.173.39]: <fhem@raspberrypi.local>: Sender address triggers FILTER triggerCamAlert:dummy; from=<fhem@raspberrypi.local> to=<fhem@raspberrypi.local> proto=ESMTP helo=<localhost>
Dec 26 20:53:09 raspberrypi postfix/smtpd[24553]: 4B52F3FED0: client=OutdoorCam.fritz.box[192.168.173.39]
Dec 26 20:53:09 raspberrypi postfix/cleanup[24557]: 4B52F3FED0: message-id=<>
Dec 26 20:53:09 raspberrypi postfix/qmgr[24540]: 4B52F3FED0: from=<fhem@raspberrypi.local>, size=468, nrcpt=1 (queue active)
Dec 26 20:53:09 raspberrypi postfix/smtpd[24553]: disconnect from OutdoorCam.fritz.box[192.168.173.39]
Dec 26 20:53:11 raspberrypi postfix/pipe[24558]: 4B52F3FED0: to=<fhem@raspberrypi>, orig_to=<fhem@raspberrypi.local>, relay=triggerCamAlert, delay=2.3, delays=0.13/0.06/0/2.1, dsn=2.0.0, status=sent (delivered via triggerCamAlert service)
Dec 26 20:53:11 raspberrypi postfix/qmgr[24540]: 4B52F3FED0: removed