Neues Modul: 70_ZoneMinder, 71_ZM_Monitor

Begonnen von delMar, 07 Oktober 2018, 18:45:04

Vorheriges Thema - Nächstes Thema

delMar

Zweck: Events zwischen ZoneMinder und FHEM austauschen, außerdem Konfigurieren grundlegender Kamera Einstellungen.

Bisher hier diskutiert: https://forum.fhem.de/index.php/topic,34570.0.html
Ab sofort Fragen bitte hier rein

Kommt heute ins SVN.

Danke

EDIT: wen muss ich fragen, um in "Ankündigungen" posten zu dürfen?
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,

nach einigen Tagen mehr im Testbetrieb habe ich wieder nen Auth Problem:
2018.10.14 15:58:00.537 4: ZM_Monitor (zm) - ChangeMonitorState callback data: {"success":false,"data":{"name":"Not Authenticated","message":"Not Authenticated","url":"\/zm\/api\/monitors\/21.json","exception":{"class":"UnauthorizedException","code":401,"message":"Not Authenticated"}}}, enabled:
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)

n0bbi

Hi!

erstmal danke für das Modul :)

Leider habe ich im Log immer folgende Meldungen:

2018.10.14 16:19:27 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:27 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:27 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:27 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:27 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:26 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:26 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:26 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:26 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:26 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:26 3: ZoneMinder (zm) - reconnect to ZoneMinder successful
2018.10.14 16:19:26 3: ZoneMinder (zm) - reconnect to ZoneMinder successful


Lässt sich das irgendwie beheben?

Danke!

delMar

sorry, dass das noch nicht so rund läuft.
mir selber sind auch ein- zwei komische sachen aufgefallen.
wenn ich zB den Kameramodus ändere, dauert es schon mal 5 minuten, bis ich wieder einen Text für den Timestamp übermitteln kann.
Meldung im ZM-Log ist dann, dass die Kamera mit der ID nicht gefunden wurde (obwohl zB längst schon wieder aufgezeichnet wird).

@Florian:
Kannst du mal schauen, wann das CPU-Load Reading im ZoneMinder device zum letzten Mal aktualisiert wurde?
Function und CPU-Load nutzen die selben Cookies.
Dh wenn CPU-Load holen funktioniert, sollte auch Function setzen funktionieren.
Was liefert 'list'?

@n0bbi:
das ist echt schräg, besonders in dieser häufigkeit.
ich habe mal einen versuchten Fix committed.
Lass mich bitte nach dem nächsten Update wissen, obs nun gelöst ist.

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.

n0bbi


Florian_GT

#5
Zitat von: delmar am 15 Oktober 2018, 01:49:50
sorry, dass das noch nicht so rund läuft.
mir selber sind auch ein- zwei komische sachen aufgefallen.
wenn ich zB den Kameramodus ändere, dauert es schon mal 5 minuten, bis ich wieder einen Text für den Timestamp übermitteln kann.
Meldung im ZM-Log ist dann, dass die Kamera mit der ID nicht gefunden wurde (obwohl zB längst schon wieder aufgezeichnet wird).

@Florian:
Kannst du mal schauen, wann das CPU-Load Reading im ZoneMinder device zum letzten Mal aktualisiert wurde?
Function und CPU-Load nutzen die selben Cookies.
Dh wenn CPU-Load holen funktioniert, sollte auch Function setzen funktionieren.
Was liefert 'list'?

@n0bbi:
das ist echt schräg, besonders in dieser häufigkeit.
ich habe mal einen versuchten Fix committed.
Lass mich bitte nach dem nächsten Update wissen, obs nun gelöst ist.

Danke!

schöne Grüße
Martin

Hi,

seit einem erneuten Restart tut es jetzt wieder, und auch noch, nur hier mal das Reading von zm:
Readings
CPU_Load
error
2018-10-15 19:57:11


Muss ich davon was aktivieren:
AUTH_HASH_IPS Include IP addresses in the authentication hash (?)
AUTH_HASH_LOGINS Allow login by authentication hash (?)
ENABLE_CSRF_MAGIC Enable csrf-magic library (?)
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: Florian_GT am 17 Oktober 2018, 19:53:25
Muss ich davon was aktivieren:
AUTH_HASH_IPS Include IP addresses in the authentication hash (?)
AUTH_HASH_LOGINS Allow login by authentication hash (?)
ENABLE_CSRF_MAGIC Enable csrf-magic library (?)


Nö, nicht unbedingt. AUTH_HASH_LOGINS nur dann, wenn du zB Streaming-URLs auch außerhalb deines LANs verwenden willst, ohne gleichzeitig username und password in der URL zu haben.
Die anderen beiden hab ich selber auch nicht aktiviert.

Frage:
Kommen Requests zu ZoneMinder direkt bei ZM an, oder läuft das hinter zB  nginx, apache, oder was auch immer?
Analog dazu: was ist unter Options -> System bei AUTH_TYPE eingestellt? 'builtin' oder 'remote'?

Das Modul macht alle 60 Minuten einen Login, damit die Cookies nicht ablaufen - und genau der Fehler, der bei dir Auftritt, nicht auftritt.

Meine Vermutung ist, dass du nicht über ZM-intern authentifizierst, sondern eben zB nginx, welches die Session öfter ablaufen lässt und zu diesem Fehler führt.

Falls du meine Vermutung bestätigst, werde ich ein Attribut einführen, welches den auth-intervall festlegt.

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

#7
Zitat von: delmar am 18 Oktober 2018, 03:45:30
Nö, nicht unbedingt. AUTH_HASH_LOGINS nur dann, wenn du zB Streaming-URLs auch außerhalb deines LANs verwenden willst, ohne gleichzeitig username und password in der URL zu haben.
Die anderen beiden hab ich selber auch nicht aktiviert.

Frage:
Kommen Requests zu ZoneMinder direkt bei ZM an, oder läuft das hinter zB  nginx, apache, oder was auch immer?
Analog dazu: was ist unter Options -> System bei AUTH_TYPE eingestellt? 'builtin' oder 'remote'?

Das Modul macht alle 60 Minuten einen Login, damit die Cookies nicht ablaufen - und genau der Fehler, der bei dir Auftritt, nicht auftritt.

Meine Vermutung ist, dass du nicht über ZM-intern authentifizierst, sondern eben zB nginx, welches die Session öfter ablaufen lässt und zu diesem Fehler führt.

Falls du meine Vermutung bestätigst, werde ich ein Attribut einführen, welches den auth-intervall festlegt.

schöne Grüße
Martin

Hi,

so, heute wieder Freitag, und Zoneminder lässt sich nicht mehr ansteuern.

Readings
CPU_Load
error
2018-10-19 00:39:30


Die Requests gehen direkt an den Apache von Zoneminder. Also Standardinstallation. Apache mit PHP. Dazwinschen ist nur LAN.

AUTH_TYPE =  builtin.

Macht das Module alle 60 Minuten einen vollen Login mit Username + Password? Oder macht das Module nur einen Login mit dem Hash, damit er nicht abläuft?

In den Logs habe ich einen ConnectionTimeout beim Login um 2Uhr, 3Uhr und 4Uhr gefunden. :( Das wird wohl Backup sein ;)
Aber warum funktioniert der ReAuth/ ReLogin danach nicht mehr?

Gruß Florian
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

Das macht den vollen Login.
Den Hash verwende ich ausschließlich in den public URLs.

Ich schreib mal ein Set command ins Modul rein, mit dem du manuell ein Login auslösen kannst...
Vielleicht hilft uns das in die richtige Richtung...
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 19 Oktober 2018, 12:52:14
Das macht den vollen Login.
Den Hash verwende ich ausschließlich in den public URLs.

Ich schreib mal ein Set command ins Modul rein, mit dem du manuell ein Login auslösen kannst...
Vielleicht hilft uns das in die richtige Richtung...

Ich habe gerade nochmal probiert, settings zu ändern, mit Erfolg. Scheint als geht es nur manchmal halt nicht, wenn das Login nicht mehr aktuell ist. Also wäre ein manuelles Login bzw. ein Intervall Set perfekt.

Gruß Florian
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

#10
Zitat von: Florian_GT am 19 Oktober 2018, 17:12:51
Ich habe gerade nochmal probiert, settings zu ändern, mit Erfolg. Scheint als geht es nur manchmal halt nicht, wenn das Login nicht mehr aktuell ist. Also wäre ein manuelles Login bzw. ein Intervall Set perfekt.
Ich hab grad mal ein Update auf Github gestellt.
loginInterval Attribute und manuelle login funktion gibts jetzt

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

Zitat von: delmar am 19 Oktober 2018, 21:10:48
Ich hab grad mal ein Update auf Github gestellt.
loginInterval Attribute und manuelle login funktion gibts jetzt

schöne grüße
martin

Danke. Ich habe es heute eingespielt, und einen logininterval von 600 (also alle 10 Minuten) eingestellt. Da bin ich mal gespannt...
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)

td

Hallo zusammen,

sofern ich "attr zmEinfahrt showLiveStreamInDetail 1" aufrufe, erhalte ich ein "Streaming disabled"; der ZM-Benutzer besitzt aber entsprechende Rechte.
Woran kann das liegen?

Definitionen:
defmod zm ZoneMinder 192.168.1.200 fhem <pw>
attr zm alias ZoneMinder
attr zm group ZoneMinder
attr zm room Haus

setstate zm opened
setstate zm 2018-10-23 13:01:34 CPU_Load ersion="1.0" encoding="UTF-8"?>\
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">\
<head>\
<title>Object not found!</title>\
<link rev="made" href="mailto:%5bno%20address%20given%5d" />\
<style type="text/css"><!--/*--><![CDATA[/*><!--*/ \
    body { color: #000000;; background-color: #FFFFFF;; }\
    a:link { color: #0000CC;; }\
    p, address {margin-left: 3em;;}\
    span {font-size: smaller;;}\
/*
setstate zm 2018-10-23 12:59:34 authHash 4f9d4d08f024324be4b7fa8562f0fee3
setstate zm 2018-10-23 12:59:27 state opened


defmod zmEinfahrt ZM_Monitor 1
attr zmEinfahrt alias Einfahrt
attr zmEinfahrt group ZoneMinder
attr zmEinfahrt room Haus

setstate zmEinfahrt idle
setstate zmEinfahrt 2018-10-23 09:22:46 alert off
setstate zmEinfahrt 2018-10-23 09:22:46 lastEventId 446549
setstate zmEinfahrt 2018-10-23 09:22:46 lastEventTimestamp 1540279357
setstate zmEinfahrt 2018-10-23 12:59:27 state idle



Gruß
td

delMar

Zitat von: td am 23 Oktober 2018, 13:23:15
sofern ich "attr zmEinfahrt showLiveStreamInDetail 1" aufrufe, erhalte ich ein "Streaming disabled"; der ZM-Benutzer besitzt aber entsprechende Rechte.
Woran kann das liegen?
Das ist dann der Fall, wenn die monitorFunction auf None gestellt ist.
Dann kriegst du auch in ZoneMinder keinen Livestream.

Trifft das bei dir zu?

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

Hm, allerdings scheint da was beim API login nicht zu passen...
Sorry, ich denke, entweder Doku und/oder Errorhandling meinerseits sind noch nicht optimal.

Die Definition schaut gut aus... aber das du für CPU_Load reingestellt hast, nicht. (Object not found)
Kannst du mal ins ZM-Log schauen? Kannst du im ZoneMinder Web-UI rechts oben ganz komfortabel im Browser öffnen.
Im Zweifel bitte mal ein 'list zm' machen und den Output hier posten.

Und verbose auf 5 könnte auch interessante Hinweise liefern.

Interessant sind vor allem die folgenden Internals:

Internals:
   APILoginStatus 200
   ZM_API_VERSION 1.0
   ZM_VERSION 1.30.4


Falls irgendwo ein Reading oder Internal mit 'error' angezeigt wird, bitte auch reingeben.

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.