Hauptmenü

IPCAM Modul Motion detect

Begonnen von AET_FHEM, 04 März 2014, 11:44:08

Vorheriges Thema - Nächstes Thema

wmeiners

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
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

AET_FHEM

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 :-)

AET_FHEM

#17
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?

Gernott

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.

hoover123

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

Gernott

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.

tobelix

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

Gernott

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.

tobelix

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

Gernott

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.

tobelix

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