Frage: Einbindung zoneminder

Begonnen von deune, 02 März 2015, 17:41:16

Vorheriges Thema - Nächstes Thema

delMar

Zitat von: Braakhekke am 20 September 2018, 07:35:11
wenn ich "ZM_Monitor_zm_2" aus dem Notify entfern und Zoneminder neu gestartet habe, erscheinen die richtige Werte in  "ZM_Monitor_zm_1" und  "ZM_Monitor_zm_3".
"%Q" ist somit richtig eingetragen
Moment, jetzt vermischen wir hier 2 unterschiedliche Dinge.

Das Weglassen von Kamera 2 hatte den Sinn, herauszufinden, ob 3 Requests in kurzer Zeit zu viel sind.
Wenn Kamera 3 den Text nun immer richtig anzeigt, bedeutet das, dass 3 Requests offenbar wirklich zu viele sind (mit %Q hat das aber garnix zu tun).
Eine mögliche Lösung wäre, den Text für Kamera 3 erst zB 2 Sekunden später zu schicken.

fhem("set ZM_Monitor_zm_1 Text Temp.$temp"."C $rain");;
fhem("set ZM_Monitor_zm_2 Text Temp.$temp"."C $rain");;
fhem("defmod atMon3TextDelay at +00:00:02  set ZM_Monitor_zm_3 Text Temp.$temp"."C $rain")


%Q könnte aber für die '3' bei Kamera 2 verantwortlich sein.
%Q ist in ZoneMinder für jede Kamera extra konfiguriert.
Da es nur bei Kamera 2 auftaucht, ist es für die Kameras 1 und 3 natürlich richtig konfiguriert.
Die Frage wäre nun, wie die Timestamp konfiguration in ZoneMinder für Kamera 2 aussieht. Ich bin mir fast sicher, dass dort '%Q 3' drinsteht.

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Braakhekke

#121
Hallo Martin,

in alle Monitore steht nur "%Q" drin, aber das Problem ist gelöst. Ein Delay, allerdings für ZM_Monitor_zm_2, und das Problem ist gelöst.

nochmals vielen Dank,

Grüße und ein schönes Wochenende,

Ben
1 x NUC mit PROXMOX (ct FHEM mit Tablet UI, ct Zoneminder v1.30.4, ct habridge) 2 x Raspberry Pi Modell 3, WLAN, HMLAN, V 1.67 nanoCUL868, nodemcu esp8266, viele HM-Komponenten, KS300, HUEDevice

delMar

Zitat von: Braakhekke am 21 September 2018, 04:16:34
in alle Monitore steht nur "%Q" drin, aber das roblem ist gelöst. Ein Delay, allerdings für ZM_Monitor_zm_2, und das Problem ist gelöst.
Freut mich!
Die '3' ist auch verschwunden?

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Braakhekke

Hallo Martin,

ja, der "3-er" ist auch verschwunden.

Grüße,

Ben
1 x NUC mit PROXMOX (ct FHEM mit Tablet UI, ct Zoneminder v1.30.4, ct habridge) 2 x Raspberry Pi Modell 3, WLAN, HMLAN, V 1.67 nanoCUL868, nodemcu esp8266, viele HM-Komponenten, KS300, HUEDevice

Florian_GT

#124
Hallo delmar,

ich bin gerade dabei, dein Module statt meiner MQTT Eigenentwicklung einzubinden.

Mir ist dabei schon mal ein Punkt aufgefallen:
HTTP/HTTPS.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

delMar

#125
Hi,

ZitatMir ist dabei schon mal ein Punkt aufgefallen:
HTTP/HTTPS.
Hm.
Genau.

:-D

Edit:
es gibt zwei Möglichkeiten, was du meinen könntest:
Um https streaming urls rauszugeben, kannst du beim ZoneMinder device das Attribut 'pubStreamUrl' setzen.
Dort schreibst du rein, was du gerne vor den Pfad, der in PATH_ZMS hinterlegt ist, stehen haben würdest.
zB https://meine.eigene.domain.de/
Wenn PATH_ZMS in ZoneMinder dann noch /zm/cgi-bin/nph-zms liefert, sollte das zusammen eine gültige streaming URL ergeben (alles was nach PATH_ZMS noch rein muss, hängt das Modul selber dran).
Aber du hast recht: die privaten streaming URLs werden immer noch nur mit HTTP geliefert. Da werde ich eine Konfigurationsmöglichkeit nachliefern.

Falls du beim define an username und passwort noch eine URL drangehängt hast, dann bezieht sich das nur auf den Link, der dann zum ZM Web UI gezeigt wird.

Und hier hast du wieder recht: das ist sehr verwirrend.
Ich werde das noch nachbessern.

Übrigens: den SVN Zugriff hab ich gestern Abend erhalten, ich werde das Wochenende noch mit dem Text für die commandref und besserer Konfiguration verbringen.
Dann überarbeite ich noch das Wiki und wenn alles glatt läuft, gibts ab nächster Woche das Modul offiziell als Teil von FHEM.
Inklusive Ankündigung im richtigen Forum, etc natürlich.

Falls du noch mehr Input hast, bitte immer nur her damit

Danke!
schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Florian_GT

Hi,

ich bekomms nicht zum laufen. Ich hab die cmdref so:
# Define ZoneMinder server
define zm ZoneMinder 192.168.0.12 fhem supergeheimespw http://192.168.0.12/zm

# Define ZoneMinder camera: 18
define zoneminder_arbeitszimmer ZM_Monitor 18


Verbose auf 5 liefert nix im Log.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

delMar

Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Florian_GT

Zitat von: delmar am 26 September 2018, 19:18:40
Ich kaufe bitte ein list zm

Internals:
   APILoginStatus 200
   CFGFN      ./conf/sub_configuration/fhem.cfg-ZONEMINDER
   DEF        192.168.0.12 fhem fhem http://192.168.0.12/zm
   DeviceName 192.168.0.12:6802
   FD         13
   HTTPCookies ZMSESSID=dcqj9l27v2me7n9vfjr20mmal2; zmCSS=flat; zmSkin=classic
   NAME       zm
   NR         112
   PARTIAL   
   STATE      opened
   TYPE       ZoneMinder
   ZM_API_VERSION 1.0
   ZM_VERSION 1.30.4
   HTTPCookieHash:
     ZMSESSID:
       Options    path=/; HttpOnly
       Value      dcqj9l27v2me7n9vfjr20mmal2
     zmCSS:
       Options    expires=Fri, 04-Aug-2028 17:09:44 GMT; Max-Age=311040000
       Value      flat
     zmSkin:
       Options    expires=Fri, 04-Aug-2028 17:09:44 GMT; Max-Age=311040000
       Value      classic
   Helper:
     DBLOG:
       state:
         DbLog:
           TIME       1537981789.23631
           VALUE      CPU_Load:
   READINGS:
     2018-09-26 19:09:49   CPU_Load       
     2018-09-26 19:09:22   ZMConsoleUrl    http://192.168.0.12/zm/index.php?username=fhem&password=fhem&action=login&view=console
     2018-09-26 19:09:22   state           opened
   helper:
     ZM_HOST    192.168.0.12
     ZM_LOGIN_METHOD old
     ZM_PASSWORD fhem
     ZM_USERNAME fhem
     ZM_WEB_URL http://192.168.0.12/zm
Attributes:


Die Streamurl im Device stimmt nicht: http://192.168.0.12/:?mode=jpeg&scale=100&maxfps=30&buffer=1000&monitor=18&user=fhem&pass=fhem

Und die Einstellungen der jeweiligen Kameras lassen sich nicht ändern.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

delMar

Also:

STATE opened
das sagt, dass die Connection auf TCP 6802 offen ist. (dh du solltest events reinkriegen)

APILoginStatus 200
das sagt, dass der Login an der API OK geliefert hat (theoretisch hats also funktioniert)

ZM_API_VERSION 1.0
ZM_VERSION 1.30.4

fhem konnte deine ZoneMinder version auslesen (API login hat also auch praktisch funktioniert)

Das verbose 5 nix ins Log schreibt, ist seltsam. Eigentlich sollte das Log auf diesem Level komplett absaufen.

Im zm Device hast du oben einen Link, der auf das ZM Web-UI verlinkt.
Funktioniert der?
Wenn ja, dann kann nicht mehr soviel fehlen

Außerdem kannst du im zm Device auf 'get updateMonitors' klicken.
Das sollte eigentlich *alle* Monitore, die definiert sind, als ZM_Monitor devices anlegen.

Wenn nicht, dann erzwinge mal ein event in ZoneMinder.
Wenn es das ZM_Monitor device dazu nicht gibt, sollte es ebenfalls automatisch angelegt werden.

Hast du autocreate aktiv?
(such einfach nach autoload_undefined_devices in der commandref)

Ja, und das im Log nix steht, finde ich sehr verwirrend...

Hoffe, irgendwas davon hilft.

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

Sorry, ich hatte deine Antwort nicht ganz gelesen.
In deiner Stream-URL fehlt eindeutig der Wert aus PATH_ZMS, der per API geholt wird.

In ZoneMinder müssen folgende Optionen aktiv sein:
OPT_USE_API
OPT_USE_TRIGGERS

Liegts vielleicht daran?

Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Florian_GT

Zitat von: delmar am 26 September 2018, 19:36:40
Sorry, ich hatte deine Antwort nicht ganz gelesen.
In deiner Stream-URL fehlt eindeutig der Wert aus PATH_ZMS, der per API geholt wird.

In ZoneMinder müssen folgende Optionen aktiv sein:
OPT_USE_API
OPT_USE_TRIGGERS

Liegts vielleicht daran?

Hi,

die sind beide bei mir gesetzt, wenn auch der Name der zweiten Variable bei mir nur "OPT_TRIGGERS" ist.

Das Setzen von Modes funktioniert jetzt, ich hatte das Verbose Logging nur im Device, nicht in der für den Zoneminder Server gesetzt. Danach konnte ich sehen, dass der User fhem nicht genug Rechte hat und das korrigieren. Jetzt hat der Fhem User genau so viele Rechte, wie der admin User, ob das so super ist, ich weiß ja nicht...

Die Fehler würde ich mir vorstellen, sollten direkt als Fehler ausgegeben werden, sodass man dort nicht auf Verbose angewiesen sein muss.

Jetzt passt nur noch die StreamingURL nicht. Wobei ich da auch eigentlich nur die Variable korrekt haben möchte, der Stream soll in FHEM nicht gezeigt werden, dafür habe ich gesonderte iFrames.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

delMar

Zitat von: afloria am 26 September 2018, 19:48:18
Jetzt passt nur noch die StreamingURL nicht.
Liefert 'list zm' unter Internals --> Helper einen Eintrag für ZM_PATH_ZMS?
Das Log sollte auf 'verbose 4' die wichtigsten Infos liefern, ohne das Logfile komplett zu spammen.
Falls wir das hier nicht hinkriegen, werd ich das Modul um weitere Debug-Log Einträge speziell bei diesem Wert erweitern...

Zitat von: afloria am 26 September 2018, 19:48:18
Jetzt hat der Fhem User genau so viele Rechte, wie der admin User, ob das so super ist, ich weiß ja nicht...
Nö, isses nicht. Eigentlich hatte ich schon das Ziel, mit einem API-User mit minimalen Rechten arbeiten zu können.
Kommt mit auf die Liste fürs Wochenende.

Zitat von: afloria am 26 September 2018, 19:48:18
Die Fehler würde ich mir vorstellen, sollten direkt als Fehler ausgegeben werden, sodass man dort nicht auf Verbose angewiesen sein muss.
Ja, Fehler sollten auf loglevel 0 stehen. Ist notiert.

Zitat von: afloria am 26 September 2018, 19:48:18
Wobei ich da auch eigentlich nur die Variable korrekt haben möchte, der Stream soll in FHEM nicht gezeigt werden, dafür habe ich gesonderte iFrames.
Das der Stream im Device gleich angezeigt wird, war quasi meine Marketing-Masche, um zu zeigen, dass die Integration funktioniert.
Und ist super fürs debugging :-)
Ich werde das per default ausschalten und per Attribut einschaltbar machen.

Dank dir fürs Feedback!
So macht das Spaß :-)
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Florian_GT

#133
Zitat von: delmar am 26 September 2018, 20:00:30
Liefert 'list zm' unter Internals --> Helper einen Eintrag für ZM_PATH_ZMS?
Das Log sollte auf 'verbose 4' die wichtigsten Infos liefern, ohne das Logfile komplett zu spammen.
Falls wir das hier nicht hinkriegen, werd ich das Modul um weitere Debug-Log Einträge speziell bei diesem Wert erweitern...
Nö, isses nicht. Eigentlich hatte ich schon das Ziel, mit einem API-User mit minimalen Rechten arbeiten zu können.
Kommt mit auf die Liste fürs Wochenende.
Ja, Fehler sollten auf loglevel 0 stehen. Ist notiert.
Das der Stream im Device gleich angezeigt wird, war quasi meine Marketing-Masche, um zu zeigen, dass die Integration funktioniert.
Und ist super fürs debugging :-)
Ich werde das per default ausschalten und per Attribut einschaltbar machen.

Dank dir fürs Feedback!
So macht das Spaß :-)

Einen "ZM_PATH_ZMS" bekomme ich nicht geliefert. In Zoneminder finde ich ein "PATH_ZMS" mit der Value "/zm/cgi-bin/nph-zms".

Den Stream in der Übersicht nutzt halt so kaum jemand, der nerft nur, wenn man auf die Config zugreifen will, bzw. wenn ich ein Kommando absetzt sorgt es für einen zusätzlichen Aufruf am Webserver, dem gefällt das in der selben Sekunde auch nicht.

Wie lange planst du noch in der Beta Phase zu bleiben, bevor das Module im SVN landet? Ein Update Kontrollfile wäre nicht schlecht, wenn es noch länger im Git verbleibt.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

Florian_GT

#134
Mache vars. werden erst nach einem Event erstellt. Wenn ich das richtig gesehen habe: eventImageUrl und eventStreamUrl. Ich finde beide überflüssig. Lieber nur die EventID schreiben, und dann später funktionen bereitstellen, um die URL zu bauen. So wenig Daten wie möglich erzeugen. Sonst ist die Datenbank so voll...

Auf der anderen Seite fehlen mir dann auch wieder einige Daten. Ich würde mir wünschen, das Original State von Zoneminder auch irgendwo übergeben zu bekommen. Dann kann man z.B. zwischen Trigger (Force Alarm) und echter Alamierung unterscheiden.

STATE 0 = all ok
STATE 1
STATE 2 = ALARM (== FORCED ALARM)
STATE 3 = ALERT


Und "trigger_data:trigger_state". Über die TCP API werden auch noch andere Stati übergeben, z.B. den Status des ZM Monitors: shared_data:active. Wenn ich deinen Code richtig gelesen habe, machst du nach dem setzen ja eine Abfrage per http, besser wäre nach meiner Erfahrung weniger HTTP-Calls. Sonst wird der Zoneminder immer langsamer zu erreichen sein.

Den Namen könntest du auch mit auslesen, und ggf. beim anlegen der Devices verwenden.

In der Dokumentation sollten zwei Tabellen sein, welche Daten nur nach Intervall und welche über die TCP-Api geliefert werden.

Bei den URLs, also bei allen habe ich ein Backslash zu viel: http://192.168.0.12//zm/.

Und ich weiß nicht, ob ich da jetzt zu pingelig bin, aber nen Funktionsaufruf, also Function oder Enable oder Alarm wird normalerweise immer klein geschrieben.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)