Neues Modul: 70_ZoneMinder, 71_ZM_Monitor

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

Vorheriges Thema - Nächstes Thema

delMar

Zitat von: Florian_GT am 21 Februar 2019, 22:17:12
Habe im Code in der Login Funktion ein Timeout von 5s gesetzt, nun läuft es prima! Kannst du das überall rein machen, und global konfigurierbar?
Danke für die Info.
Fix mach ich natürlich gern.
Könntest du mir eventuell dein pm File hier anhängen?
Das würde mir sicher etwas Zeit sparen.
Voraussichtlich werd ich Sonntag Abend die Zeit finden, das Update einzuchecken

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 22 Februar 2019, 06:51:53
Danke für die Info.
Fix mach ich natürlich gern.
Könntest du mir eventuell dein pm File hier anhängen?
Das würde mir sicher etwas Zeit sparen.
Voraussichtlich werd ich Sonntag Abend die Zeit finden, das Update einzuchecken

Schöne Grüße
Martin

Hi,

ich habe jetzt kein komplettes Patchfile, aber ein Beispiel:

Log3 $name, 4, "ZoneMinder ($name) - loginUrl: $loginUrl";
  my $apiParam = {
    url => $loginUrl,
    method => "POST",
    timeout => 5,
    callback => \&ZoneMinder_API_Login_Callback,
    hash => $hash
  };
  HttpUtils_NonblockingGet($apiParam);
 
#  Log3 $name, 3, "ZoneMinder ($name) - ZoneMinder_API_Login err: $apiErr, data: $apiParam->{httpheader}";
 
  return undef;
}



Das Timeout könnte man am besten ja noch konfigurierbar machen.

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

Danke Florian, das erleichtert mir das patchen schon sehr - ich muss weniger nachdenken :-)

Ich hab grad Baustelle daheim, werde aber versuchen, mir mal eine Stunde zu nehmen, um das einzubauen.

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.

td

#48
Hallo Martin,

Zitat von: delmar am 28 Oktober 2018, 21:25:51
@td, was mich stutzig macht:
der API login wurde auf port 80 versucht, wo ZoneMinder offenbar nicht läuft.
Trotzdem ist ein HTTP-200 als API-Login Result in den Internals vermerkt.
Gibts dort auch ein index.php?

schöne Grüße
Martin
entschuldige die späte Reaktion. Ich habe heute erst wieder Zeit gefunden, mich damit zu beschäftigen.
Doch, Zoneminder läuft unter http://192.168.1.200/zm/index.php, also Port 80.

An der Situation hat sich auch nichts geändert:
Zitat
Internals:
   APILoginStatus 200
   DEF        192.168.1.200 user pw
   DeviceName 192.168.1.200:6802
   FD         28
   FUUID      5c5c1c3a-f33f-3cd9-d331-e52389766c5cfd3a
   HTTPCookies ZMSESSID=6b82873dcbtooamu0d9gj4ht7k; zmCSS=classic; zmSkin=classic
   NAME       zm
   NOTIFYDEV  global
   NR         200
   PARTIAL
   STATE      opened
   TYPE       ZoneMinder
   ZM_API_VERSION =
   ZM_VERSION ion=
   HTTPCookieHash:
     ZMSESSID:
       Options    path=/; HttpOnly
       Value      6b82873dcbtooamu0d9gj4ht7k
     zmCSS:
       Options    expires=Sun, 07-Jan-2029 14:39:40 GMT; Max-Age=311040000
       Value      classic
     zmSkin:
       Options    expires=Sun, 07-Jan-2029 14:39:40 GMT; Max-Age=311040000
       Value      classic
   READINGS:
     2019-03-01 15:55:14   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;}
/*
     2019-03-01 15:44:26   authHash        c1d274934f0d3ad8281e4e3c4242b1bf
     2019-03-01 15:44:39   state           opened
   helper:
     ZM_AUTH_HASH_SECRET >
<!DOCTYPE html PUBLIC
     ZM_HOST    192.168.1.200
     ZM_PASSWORD zmFhEM19%
     ZM_USERNAME fhem
     apiInitialized 1
Attributes:
   publicAddress https://x.y.de

delMar

Zitat von: Florian_GT am 27 Februar 2019, 01:10:25
Das Timeout könnte man am besten ja noch konfigurierbar machen.
Patch ist committed, sollte morgen mit dem Update kommen.
Timeout ist per default auf 5, es gibt außerdem ein neues Attribut 'apiTimeout', mit dem dieser Default-Wert überschrieben werden kann

Zitat von: td am 01 März 2019, 17:03:14
entschuldige die späte Reaktion. Ich habe heute erst wieder Zeit gefunden, mich damit zu beschäftigen.
Kein Problem, geht uns doch allen so.

Hab ich dich schon nach deiner ZoneMinder Version gefragt?
Derzeit kann das FHEM-Modul leider nur 1.30.x

Ein Update steht ganz oben auf meiner Liste, aber die Zeit ist derzeit bei mir leider auch eng bemessen.

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.

td

Zitat von: delmar am 04 März 2019, 19:08:47
Hab ich dich schon nach deiner ZoneMinder Version gefragt?
Derzeit kann das FHEM-Modul leider nur 1.30.x

Ein Update steht ganz oben auf meiner Liste, aber die Zeit ist derzeit bei mir leider auch eng bemessen.
Seit heute 1.32.3.

Gruß
td

eckibrecki

Hallo,

ich habe mich auch an dem Modul versucht, bin aber gerade an einem Punkt, an dem ich leider nicht alleine weiter komme...  >:(
Ich hoffe jmd. von euch kann mir weiterhelfen.
Ich bekomme als ZM_API_VERSION "on" angezeigt und als ZM_VERSION "rsion"
Anbei die Ausgabe von "list"

Internals:
APILoginStatus 200
CFGFN
DEF 192.168.20.11 xxxx pw_xxxx DeviceName 192.168.20.11:6802
FD 23
FUUID 5c9399b8-f33f-c70b-9b22-1d0f25da27fd22c4
HTTPCookies ZMSESSID=akcn19gej6d9901ptf60ipnnp6;
zmCSS=classic; zmSkin=classic
NAME Aussenanlage_Zoneminder NOTIFYDEV global
NR 658
PARTIAL
STATE opened
TYPE ZoneMinder
ZM_API_VERSION on
ZM_VERSION rsion
HTTPCookieHash:
ZMSESSID:
Options path=/
Value akcn19gej6d9901ptf60ipnnp6
zmCSS:
Options expires=Mon, 05-Feb-2029 12:45:47 GMT; Max-Age=311040000
Value classic
zmSkin:
Options expires=Mon, 05-Feb-2029 12:45:47 GMT; Max-Age=311040000
Value classic
READINGS:
2019-03-21 15:37:53 CPU_Load error
2019-03-30 14:03:43 authHash bba1b31d2ed4835efddd94c7d9805354
2019-03-30 13:44:51 state opened
helper:
ZM_AUTH_HASH_SECRET
ZM_HOST 192.168.20.11
ZM_PASSWORD pw_xxxx
ZM_PATH_ZMS
ZM_USERNAME xxxx
apiInitialized 1
Attributes: room Cam
verbose 5


Beim CPU_LOAD hatte ich teilweise auch schon eine sinnvolle anzeige erhalten. Gerade wenn ich das device neu definiert habe. Meine ZM version ist 1.30.0. ZM und FHEM laufen auf dem gleichen Gerät, ein Raspberry 2 mit Stretch. Aber auch wenn ich von einem Raspberry 3 mit einer anderen FHEM Installation drauf zugreife, erhalte ich die gleiche Meldung.

Für Hinweise an welcher Stelle ich zu doof bin bin ich immer dankbar  :o

Vielen Dank im Voraus und viele Grüße
Carsten

delMar

Hi Carsten,

Das Problem kann ich leider auch nicht festnageln, aber ich werd versuchen, bessere Fehlermeldungen anzuzeigen

Sorry für die Umstände

Lg
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.

eckibrecki

Hey Martin,

erstmal Danke für die schnelle Rückmeldung.
Und vergiß mal lieber das "Sorry" :-X

Wenn sich jemand über sowas beschwert soll er es selbst besser machen! Ich finde es TOP das Leute wie Du und natürlich auch alle anderen "Entwickler" so da reinhängen und das Wissen mit anderen teilen  :)

Klar wäre ich auch froh, gleich eine Masterlösung zu bekommen, aber man sollte sowas nicht erwarten. Daher nochmal vielen Dank für Deine Bemühungen und Weiterentwicklungen

Viele Grüße
Carsten

eckibrecki

Hey Martin,

ich habe alles nochmal auf Anfang gestellt und es mit einer Neuinstallation versucht. Obwohl ich die Anleitung für die 1.30.4 versucht habe, bekomme ich aber keine neuere als die 1.30.0 angezeigt. Sollte aber für Dein Modul glaube ich nicht schadhaft sein.

Ich bekomme immer noch als ZM_API_VERSION "on" angezeigt und als ZM_VERSION "rsion"

Wenn ich im Browser den Befehl http://adresse/zm/api/host/getVersion.json eingebe bekomme ich folgenden Output:

{
"version": "1.30.0",
"apiversion": "1.0"
}


Könnte es sein, dass in meinem Fall, warum auch immer die Versionsnummer aus dem ersten "" Teil des Output verwendet wird? Nach dem Motto nehme den Begriff der in "" steht und schreibe die letzten x Ziffern als Versionsnummer zurück? Evtl. steht bei einer anderen Installation oder Version:

{
"version: 1.30.0",
"apiversion: 1.0"
}

also der komplette Begriff in "".

In diesem Fall wüsste ich zumindest, dass die Installation von ZM richtig wäre und der Fehler irgendwo danach zu suchen ist.

Könnte es sein, dass das Modul erst anfängt zu arbeiten, wenn es die Versionsnummer kennt?


Viele Grüße
Carsten

delMar

Hi Carsten,

Ich arbeite schon an der Lösung des Problems,  leider ist meine Implementierung hier nicht sehr intelligent gewesen.

Ich hoffe, heute Abend zumindest hier drin ein Testupdate reinstellen zu können.
Du machst jedenfalls nix falsch

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

So, liebe Leute.
Versprochen und nicht gebrochen, kommt hier das Test-Release im Anhang.

Ganz wichtig: das Attribut 'apiVersion' muss für 1.32.x auf 'post132' gesetzt werden, denn per Default wird das Modul nach wie vor im 1.30 Modus laufen.

Hintergrund:
Bevor man nicht angemeldet ist, kann man die Version nicht ermitteln.
Aber genau der Login ist das Einzige, das zwischen den Versionen unterschiedlich ist.
Somit beisst sich die Katze leider in den Schwanz, wenns darum geht, die Version automatisch zu ermitteln.

Aber:
in Zukunft wird die ZM-Version ins 'model' Internal geschrieben, dh ich sollte per https://fhem.de/stats/statistics.html sehen, welche Version am meisten genutzt wird.
Sobald 1.32 für sagen wir mal einen Monat in der Überzahl ist, werde ich den default auf 1.32 umstellen.
(Falls ich nicht bis dahin doch einen schmutzigen Umweg gefunden habe, die Version automatisch zu erkennen).

Soviel mal dazu.
Diese Version benötigt noch einiges an Liebe, damit ich sie dann auch wirklich ins SVN stellen kann, zB die Abhängigkeit um den Auth-Hash zu berechnen ist jetzt immer noch verpflichtend, obwohl für 1.32 nicht mehr nötig.
Doku hab ich auch noch nicht um die neuen Attribute aktualisiert, etc.

Ganz wichtig: vielen Dank an Spel für die Unterstützung beim Zugriff auf eine 1.32er. Ohne ihn gäbs das hier jetzt nicht.
Danke!

Freu mich auf euer Feedback

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.

Brause

Guten Morgen

Ich habe die version 1.32.3 vom ZM im Einsatz und habe gerade mal die "Beta" vom Modul ausprobiert.
Funktioniert soweit.
Version und API werden angezeigt
Das Autocreate meiner Kameras hat auch funktioniert.

Doch irgendwas stimmt in der Streaming-URL nicht, da sind irgenwie 12 Leerzeichen zuviel.

http://xxxx/wc-zm%20%20%20%20%20%20%20%20%20%20%20%20?mode=jpeg&scale=100&maxfps=30&buffer=0&monitor=8&user=xxxx&pass=xxxxx


wenn ich diese entferne funktioniert auch der Stream

das list vom ZM


Internals:
   .FhemMetaInternals 1
   APILoginStatus 200
   DEF        192.168.xx.xx xxx xxxx
   DeviceName 192.168.xx.xxx:6802
   FD         40
   FUUID      5c442863-f33f-e180-b60a-93311885c8533edf
   FVERSION   70_ZoneMinder.pm:0.187880/2019-03-04
   HTTPCookies ZMSESSID=tf5fbin20cag293oadjo9tah6m; zmCSS=classic; zmSkin=classic
   NAME       xx.XX.ZM
   NOTIFYDEV  global
   NR         873
   PARTIAL   
   STATE      opened
   TYPE       ZoneMinder
   ZM_API_VERSION 1.0
   ZM_VERSION 1.32.3
   model      1.32.3
   .attraggr:
   .attrminint:
   .clientArray:
     ZM_Monitor
   HTTPCookieHash:
     ZMSESSID:
       Options    path=/; HttpOnly
       Value      tf5fbin20cag293oadjo9tah6m
     zmCSS:
       Options    expires=Tue, 13-Feb-2029 06:43:58 GMT; Max-Age=311040000
       Value      classic
     zmSkin:
       Options    expires=Tue, 13-Feb-2029 06:43:58 GMT; Max-Age=311040000
       Value      classic
   READINGS:
     2019-04-06 00:26:15   CPU_Load        error
     2019-04-07 09:05:15   authHash        81bfb378fb04611c9502de2a1811181a
     2019-04-07 09:20:53   state           opened
   helper:
     ZM_AUTH_HASH_SECRET     
     ZM_HOST    192.168.xx.xxx
     ZM_PASSWORD xxxx
     ZM_PATH_ZMS             
     ZM_USERNAME xxx
     apiInitialized 1
Attributes:
   DbLogExclude .*
   alias      ZoneMinder
   apiVersion post132
   devStateIcon opened:im_eye@#008000 .*:im_eye-blocked@#ff0000
   group      Server
   publicAddress http://xxx/wc-zm
   room       hidden
   usePublicUrlForZmWeb 1


und von der Kamera

Internals:
   DEF        8
   FUUID      5ca99971-f33f-e180-d49d-3e3368e731a2c335
   IODev      xx.XX.ZM
   LASTInputDev xx.XX.ZM
   MSGCNT     4
   NAME       ZM_Monitor_xx.XX.ZM_8
   NOTIFYDEV  TYPE=ZoneMinder
   NR         126027
   NTFY_ORDER 71-ZM_Monitor_xx.XX.ZM_8
   STATE      idle
   TYPE       ZM_Monitor
   xx.XX.ZM_MSGCNT 4
   xx.XX.ZM_TIME 2019-04-07 09:02:38
   .attraggr:
   .attrminint:
   Helper:
     DBLOG:
       monitorFunction:
         logdb:
           TIME       1554619319.5845
           VALUE      Monitor
       motionDetectionEnabled:
         logdb:
           TIME       1554618737.6228
           VALUE      1
       pubImageUrl:
         logdb:
           TIME       1554620715.14181
           VALUE      http://xxx/wc-zm            ?mode=single&scale=100&monitor=8&auth=81bfb378fb04611c9502de2a1811181a
       pubStreamUrl:
         logdb:
           TIME       1554620715.14181
           VALUE      http://xxx/wc-zm            ?mode=jpeg&scale=100&maxfps=30&buffer=0&monitor=8&auth=81bfb378fb04611c9502de2a1811181a
       state:
         logdb:
           TIME       1554619539.43423
           VALUE      text
       streamReplayBuffer:
         logdb:
           TIME       1554618737.6228
           VALUE      0
       streamUrl:
         logdb:
           TIME       1554620715.14181
           VALUE      http://192.168.xx.xxx            ?mode=jpeg&scale=100&maxfps=30&buffer=0&monitor=8&user=xxx&pass=xxxx
   READINGS:
     2019-04-07 08:41:59   monitorFunction Monitor
     2019-04-07 08:32:17   motionDetectionEnabled 1
     2019-04-07 09:05:15   pubImageUrl     http://xxx/wc-zm            ?mode=single&scale=100&monitor=8&auth=81bfb378fb04611c9502de2a1811181a
     2019-04-07 09:05:15   pubStreamUrl    http://xxx/wc-zm            ?mode=jpeg&scale=100&maxfps=30&buffer=0&monitor=8&auth=81bfb378fb04611c9502de2a1811181a
     2019-04-07 08:32:17   state           idle
     2019-04-07 08:32:17   streamReplayBuffer 0
     2019-04-07 09:05:15   streamUrl       http://192.168.xx.xxx            ?mode=jpeg&scale=100&maxfps=30&buffer=0&monitor=8&user=xxx&pass=xxxx
   helper:
     ZM_MONITOR_ID 8
Attributes:
   room       ZM_Monitor
   showLiveStreamInDetail 1


Gruss Brause

Brause

Problem hat sich irgendwie von selbst gelöst.
Habe gerade den Server nochmals neu gestartet und alles war auf einmal gut.


delMar

Danke fürs Feedback, Brause!

Was steht denn bei dir in der ZM-Config beim Wert PATH_ZMS drin?
Das ist genau der, der in ZoneMinder nur als 12 Leerzeichen aufgetaucht ist.

Was hast du neu gestartet? ZoneMinder oder FHEM? (könnte man ja beides irgendwie als 'Server' interpretieren)


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.