Autor Thema: Frage: Einbindung zoneminder  (Gelesen 13325 mal)

Offline Florian_GT

  • Developer
  • Full Member
  • ****
  • Beiträge: 241
    • Florian-Asche
Antw:Frage: Einbindung zoneminder
« Antwort #30 am: 08 Juni 2018, 19:40:22 »
Danke!!

Wie kann ich einzelne Alerts abfragen?

Möchte, wenn Zoneminder zB Bewegung erkannt hat, zB eine Telegram Nachricht verschicken!

Die würde ich nicht per Web-API abfragen. Das macht man so nicht. Ich arbeite gerade noch an einer besseren Alternative. Ein Perl Deamon der auf dem Zoneminder Server mit läuft, und den Alarm Status per MQTT meldet. Sprich wann Alarm und wann Ende. Ich könnte mir auch vorstellen, dass dann später so zu erweitern, dass man alles darüber machen kann.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), SONOFF, SONOFF POW, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera)

Development: Luftdaten - 60_airquality.pm (non-commit)

Offline clumsy

  • Jr. Member
  • **
  • Beiträge: 84
Antw:Frage: Einbindung zoneminder
« Antwort #31 am: 08 Juni 2018, 19:44:34 »
du kannst sonst auch das perl-script von hier https://forum.fhem.de/index.php/topic,34570.msg612182.html#msg612182 nehmen, das benutzt den Zoneminder Eventdeamon und meldet ereignise in echtzeit direkt dem FHEM...

Offline Florian_GT

  • Developer
  • Full Member
  • ****
  • Beiträge: 241
    • Florian-Asche
Antw:Frage: Einbindung zoneminder
« Antwort #32 am: 09 Juni 2018, 16:36:02 »
du kannst sonst auch das perl-script von hier https://forum.fhem.de/index.php/topic,34570.msg612182.html#msg612182 nehmen, das benutzt den Zoneminder Eventdeamon und meldet ereignise in echtzeit direkt dem FHEM...

Ich habe eine erste Beta, siehe Anhang. Die sendet schon mal, was uns so interessiert. Wenn jemand Zeit hat, ein Empfang Teil wäre nice, würde ich dann nach meinem Urlaub weiter dran arbeiten.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), SONOFF, SONOFF POW, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera)

Development: Luftdaten - 60_airquality.pm (non-commit)

Offline Spezialtrick

  • Sr. Member
  • ****
  • Beiträge: 965
Antw:Frage: Einbindung zoneminder
« Antwort #33 am: 12 Juni 2018, 17:45:11 »
Ich habe eine erste Beta, siehe Anhang. Die sendet schon mal, was uns so interessiert. Wenn jemand Zeit hat, ein Empfang Teil wäre nice, würde ich dann nach meinem Urlaub weiter dran arbeiten.

Kannst du mir ein paar Informationen geben, wie es zu testen ist. Habe großes Interesse an der Zoneminder Einbindung in Fhem.  :)
FHEM - ZBox - Homematic - Sonos - MiLight -Homekit

Offline Florian_GT

  • Developer
  • Full Member
  • ****
  • Beiträge: 241
    • Florian-Asche
Antw:Frage: Einbindung zoneminder
« Antwort #34 am: 28 Juni 2018, 21:28:02 »
Kannst du mir ein paar Informationen geben, wie es zu testen ist. Habe großes Interesse an der Zoneminder Einbindung in Fhem.  :)

Ich werde die kommenden Tage wenn Zeit ist, eine Anleitung im Wiki Schreiben. Echt klasse, der MQTT Client gibt eine Info an FHEM und dann läd FHEM das Bild runter und schickt es mir per Telegram :D
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), SONOFF, SONOFF POW, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera)

Development: Luftdaten - 60_airquality.pm (non-commit)

Offline inesa394

  • Full Member
  • ***
  • Beiträge: 209
Antw:Frage: Einbindung zoneminder
« Antwort #35 am: 02 Juli 2018, 04:17:09 »
Würde mich auch brennend interessieren suche schon lang eine Möglichkeit Zoneminder in Fhem zu integrieren.

Offline delmar

  • Developer
  • Full Member
  • ****
  • Beiträge: 148
Antw:Frage: Einbindung zoneminder
« Antwort #36 am: 20 August 2018, 22:57:24 »
Hallo zusammen,

ich bin wohl nicht der Einzige, der ZM events gerne in fhem auswerten würde.
Hier mein Ansatz:
fhem selber kann auf den event port 6802 horchen, es ist kein eigenständiger prozess dafür nötig.

Im Anhang meine Implementierung.
zb per define zm ZoneMinder 192.168.4.200 wird die Verbindung zu ZoneMinder als physisches device angelegt.
Wird ein event empfangen, wird automatisch ein logisches device angelegt (ZM_Monitor).

Auf diesem gibt's dann drei readings:
  • alert: on|off
  • lastEventId: event ID aus Zoneminder
  • lastEventTimestamp: timestamp des letzten events
Auf alert:.on kann man dann ganz einfach ein notify setzen.

Weitere (zum Teil schon getestete) Features, die ich einbauen werde:
  • wenn username und passwort vergeben werden, kann man auch zB Kamera Modi ändern (modect, ...) oder enable/disable setzen
  • wenn auth_hash_secret in ZoneMinder gesetzt ist, kann auch der auth hash berechnet werden, mit dem Kamera-Stream URLs nach außen gegeben werden können, ohne username und passwort preiszugeben und die auch max 2 h gültig ist
  • Am Kamera-Device screen in FHEM kann direkt in FHEM das Bild gestreamt werden. Auf Wunsch auch in der Room-View (nützlich, um mehrere Bilder gleichzeitig zu zeigen)

Ich hab in diesem Thread viel gelernt und bedanke mich somit herzlich bei allen Vor-Postern.

Feedback und Fragen sind natürlich willkommen!

schöne Grüße
Martin
Baut am ZoneMinder Modul
Und am TA_CMI_JSON Modul

Offline clumsy

  • Jr. Member
  • **
  • Beiträge: 84
Antw:Frage: Einbindung zoneminder
« Antwort #37 am: 21 August 2018, 09:32:34 »
@delmar: tönt gut, sobald die features da sind und ich etwas zeit habe, werde ich gerne mal mittesten!

Offline Florian_GT

  • Developer
  • Full Member
  • ****
  • Beiträge: 241
    • Florian-Asche
Antw:Frage: Einbindung zoneminder
« Antwort #38 am: 24 August 2018, 19:10:31 »
Nette Lösung, deutlich besser als mein Daemon, der dann die Nachrichten an MQTT schickt und dann erst weiter an FHEM.

Wenn Zoneminder mal Down ist, wie reagiert das Module dann? Keine waitings in Fhem?

Es gibt noch weitere Nette Daten, die man da von FHEM bekommen kann, z.B. state active oder trigger_state, falls getriggert worden ist.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), SONOFF, SONOFF POW, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera)

Development: Luftdaten - 60_airquality.pm (non-commit)

Offline delmar

  • Developer
  • Full Member
  • ****
  • Beiträge: 148
Antw:Frage: Einbindung zoneminder
« Antwort #39 am: 24 August 2018, 19:23:24 »
Nette Lösung, deutlich besser als mein Daemon, der dann die Nachrichten an MQTT schickt und dann erst weiter an FHEM.

Wenn Zoneminder mal Down ist, wie reagiert das Module dann? Keine waitings in Fhem?

Es gibt noch weitere Nette Daten, die man da von FHEM bekommen kann, z.B. state active oder trigger_state, falls getriggert worden ist.
Danke. MQTT find ich trotzdem sehr spannend; speziell wenn man von einem System Infos an mehrere andere weitergeben möchte.

Wenn ZoneMinder down ist, hat das grundsätzlich keinen Einfluss, weil fhem ja nicht aktiv nach events pollt.
Ich arbeite aber auch schon an der Abfrage einiger ZM APIs.
Das könnte theoretisch ein Problem sein, ich arbeite aber ausschließlich mit non-blocking calls.

Ja, es gibt noch jede Menge interessante Daten. Ganz richtig.
Ich hoffe, übers Wochenende ein Update bringen zu können.
Baut am ZoneMinder Modul
Und am TA_CMI_JSON Modul

Offline delmar

  • Developer
  • Full Member
  • ****
  • Beiträge: 148
Antw:Frage: Einbindung zoneminder
« Antwort #40 am: 24 August 2018, 19:30:26 »
Bitte kurz um euren Input:
Bei mir ist das ZM Web UI über /zm erreichbar, Streaming aber über /zoneminder (der Wert kommt aus PATH_ZMS im Tab 'Paths' in den Settings).
Wie ist das bei euch?
Gleich oder auch unterschiedlich, wie bei mir?

Danke!
schöne grüße
martin
Baut am ZoneMinder Modul
Und am TA_CMI_JSON Modul

Offline Florian_GT

  • Developer
  • Full Member
  • ****
  • Beiträge: 241
    • Florian-Asche
Antw:Frage: Einbindung zoneminder
« Antwort #41 am: 24 August 2018, 22:06:59 »
Bitte kurz um euren Input:
Bei mir ist das ZM Web UI über /zm erreichbar, Streaming aber über /zoneminder (der Wert kommt aus PATH_ZMS im Tab 'Paths' in den Settings).
Wie ist das bei euch?
Gleich oder auch unterschiedlich, wie bei mir?

Danke!
schöne grüße
martin

Bei mir ist Zoneminder auch über /zm/ erreichbar. Der Stream über http://192...../zm/cgi-bin/nph-zms?mode=jpeg&scale=100&maxfps=30&buffer=1000&monitor=15&connkey=573935&rand=1535140873

Ich habe dir mal meine Zoneminder to MQTT Lösung im Anhang hinzugefügt, kannst du ja gut als Informationsquelle nutzen, ich habe viele Datenpunkte später auskommentiert, weil es diese zwar gibt, aber am ende nicht verfügbar sind.

Bei der Abfrage der ZM Api meinst du damit den offenen Port oder die Web Api? Von einer Nutzung der Web Api kann ich nur abraten, das Zonemindersystem kommt damit nicht zurecht. Das hatte ich mal hier im Thread gezeigt: https://forum.fhem.de/index.php/topic,34570.15.html

Hier wie ich den Stream in FHEM einbinde:

# 20 - Flur
define SecurityCAM_flur weblink iframe http://192....../zm/cgi-bin/nph-zms?mode=jpeg&scale=100&maxfps=30&buffer=1000&monitor=20
attr SecurityCAM_flur htmlattr width="1300" height="740"
attr SecurityCAM_flur room SecurityCAM

IPCAM Module verwende ich dann, damit ich das Bild herunterladen, und mir per Telegram schicken lassen kann:
define zoneminder_ipcam_21 IPCAM 192.1.....
attr zoneminder_ipcam_21 snapshots 1
attr zoneminder_ipcam_21 path /zm/cgi-bin/nph-zms?mode=single&monitor=21
attr zoneminder_ipcam_21 storage /opt/fhem/data/IPCAM

Hier der Auslöser, der das Bild dann verschickt:
define notify_zoneminder_alert notify zoneminder_mqtt_.*:(STATE_ALARM) {\
  my $ipcam_id = ReadingsVal($NAME, "id", "none");;\
  fhem "get zoneminder_ipcam_$ipcam_id image";;\
  fhem "set telegram message security camera detected motion: $NAME - [$NAME:name] ($EVENT)";;\
  fhem "set telegram sendImage /opt/fhem/data/IPCAM/zoneminder_ipcam_[$NAME:id]_snapshot.jpg Roter-Alarm:";;\
}

Deine Lösung ist insofern besser, weil mein Perl Daemon nur alle Sekunde auf einen neuen Alarm pollt. Dein lauschen geht somit um ca. 1s schneller und belastet die CPU weniger, auch wenn das Auslesen nur im RAM stattfindet. Beide Lösungen sind jedenfalls besser als das Pollen der Webapi. Dann hat die CPU richtig zu tun...
« Letzte Änderung: 24 August 2018, 22:23:12 von afloria »
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), SONOFF, SONOFF POW, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera)

Development: Luftdaten - 60_airquality.pm (non-commit)

Offline Wetterhexe

  • Jr. Member
  • **
  • Beiträge: 70
  • FHEMinistin
Antw:Frage: Einbindung zoneminder
« Antwort #42 am: 24 August 2018, 23:45:38 »
mein ZM WebUI ist über /zm erreichbar (default)
streaming entsprechend PATH_ZMS (default): /zm/cgi-bin/nph-zms

@delmar: Danke Martin für die beiden Module, laufen bei mir problemlos! Stehe jederzeit für Tests etc. zur Verfügung :)

Offline Florian_GT

  • Developer
  • Full Member
  • ****
  • Beiträge: 241
    • Florian-Asche
Antw:Frage: Einbindung zoneminder
« Antwort #43 am: 25 August 2018, 00:21:56 »
mein ZM WebUI ist über /zm erreichbar (default)
streaming entsprechend PATH_ZMS (default): /zm/cgi-bin/nph-zms

@delmar: Danke Martin für die beiden Module, laufen bei mir problemlos! Stehe jederzeit für Tests etc. zur Verfügung :)

Ich schließe mich an. Teste gerne. Schreibe auch gerne an Module mit, dafür müsste man aber erstmal Ideen für Funktionen sammeln. Ein Github Repo dafür wäre für den Anfang aber sicherlich gut, nach 1-2 Monaten Testzeit dann ins SVN?
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), SONOFF, SONOFF POW, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera)

Development: Luftdaten - 60_airquality.pm (non-commit)

Offline delmar

  • Developer
  • Full Member
  • ****
  • Beiträge: 148
Antw:Frage: Einbindung zoneminder
« Antwort #44 am: 25 August 2018, 10:47:10 »
Das rege Interesse freut mich sehr, danke!

Update:

Zusätzlich zur bisherigen Definition können nun <username> <passwort> für ZM hinterlegt werden.
Damit kann sich fhem an der API anmelden, um weitere parameter wie ZM_AUTH_HASH_SECRET oder ZMS_PATH auszulesen.
define zm ZoneMinder 192.168.4.200 zmuser zmpassDas ZoneMinder device hat in der Detail-Ansicht oben nun einen Link zum direkten Öffnen des ZoneMinder UI.

Außerdem kann man danach noch optional einen weitern Parameter für die Web-URL eintragen, sollte das ZM-Web-UI nicht über http://hostname/zm erreichbar sein. Beispiel:
define zm ZoneMinder 192.168.4.200 zmuser zmpass https://192.168.4.200/myzoneminderDas ist wichtig, damit sich das Modul an der ZoneMinder API anmelden kann.
Falls es nicht funktioniert, sollte in den Internals ein HTTP-Code stehen.

Im ZM_Monitor Device sollte nun außerdem der live-stream sichtbar sein.
Wahrscheinlich wird dieser aber nur im LAN verfügbar sein (außer, man hätte beim Anlegen des devices eine public IP angegeben). Deshalb kann man hier nun ein Attribut definieren.
Beispiel:
attr ZM_Monitor_5 streamUrl https://my.comain.com:8443/Daran wird dann der Wert aus ZMS_PATH angehängt.
Außerdem wird der Live-Stream mit dem auth-hash gebildet, nicht mit username und passwort. kann also eigentlich ohne bedenken auch nach außen gegeben werden, ohne dass credentials sichtbar wären. somit ist diese URL maximal 2h gültig.

Das ganze sollte funktionieren, wenn username und passwort vergeben werden.
Hab's ohne jetzt offen gestanden noch nicht getestet. Könnte sein, dass da noch ein- zwei Fehlermeldungen im Log auftauchen.
Die drei hier dokumentierten zusätzlichen Parameter funktionieren bei mir aber soweit ganz gut.
Aber wie gesagt: rechnet damit, dass die Fallbacks bei falschen Parametern noch nicht ganz so einwandfrei arbeiten :-)

bei Problemen bitte Log-outputs bzw list <zm-device-name> oder list zm_monitor-device-name posten.

Achja: und man benötigt jetzt zwei Crypto libs, damit die Hashes für den Auth-Hash direkt berechnet werden können.
Eine, um den mysql-passwort hash aus dem passwort zu berechnen. der fließt in den auth-hash ein.
und die zweite crypto-lib berechnet den auth-hash selber.

Der Code ist jetzt noch sehr unordentlich, ich hab noch weitere halb-fertige Dinge drin und haufenweise auskommentierten Code.
Mir ist es jetzt aber wichtiger, schnelles Feedback zu kriegen, als super sauber zu arbeiten.
Wenn ich wieder ein paar Stunden am Stück Zeit habe, lege ich das dann in GitHub ab, ganz klar.

schöne grüße
martin
« Letzte Änderung: 25 August 2018, 10:49:08 von delmar »
Baut am ZoneMinder Modul
Und am TA_CMI_JSON Modul