Neues Modul: 70_ZoneMinder, 71_ZM_Monitor

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

Vorheriges Thema - Nächstes Thema

delMar

Hallo,

um ein Bild zu verschicken kommts drauf an, wie du es verschicken möchtest.
Die Optionen die ich kenne sind PushOver und TelgramBot

Bei PushOver gehts zb so:
set pushmsg msg Haustür Es hat geläutet! attachment="www/snapshot/ipcam_frontdoor_snapshot.jpg" expire=3600
Es ist dazu wichtig, dass das Bild in einem lokalen Pfad verfügbar ist.
In diesem Beispiel wurde es vom IPCAM Modul gespeichert, nicht von ZoneMinder

Beim Versenden des Links zur Kamera kommts auch wieder drauf an, welches Modul man zum Versenden verwenden will.
Manche Module erkennen zb [gerät:reading] als Verweis auf einen Wert und setzen ihn dann ein.

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.

kamp

#286
Also ich verwende für das Versenden mein eigenes HTTPMOD mit dem ich mein Nextcloud Talk anspreche (ich verwende keine Dienste bei denen man mit seinen Daten fürs Verwenden bezahlt). Fürs erste wäre ich daher schon zufrieden, wenn ich den Link (zum Stream und Bild) auslesen und als Nachricht schicken könnte. Das hier geht mal leider nicht:
AlarmStatus wird korrekt ausgelesen und die Nachricht nur bei eingeschalteter Alarmanlage gesendet. Allerdings nur der erste Teil der Nachricht, $stream ist immer leer...

ZM_Monitor_zm_3:alert:.on {
my $alarm = Value("AlarmStatus");;
my $stream = Value("ZM_Monitor_zm_3:pubStreamUrl");;
if ($alarm eq "on") {
fhem("set Talk msg Kamerabewegung im Büro!\\n$stream");;
}
}

Ich komme mit dem Bild ohnehin nicht klar, wenn eine Auslösung erfolgt (=Kamerabewegung), dann ist anscheinend die Verzögerung bis FHEM das kneisst derart groß, dass das Bild welches er schicken würde, ein paar Sekunden neuer ist und nicht das vom Auslösezeitpunkt. Also wenn ich zum Testen durchs Bild gehe, wird ausgelöst, aber ankommen würde einige Sekunden später ein Bild nur vom leeren Kamerabereich - also das funktioniert nicht wie erwartet, daher werde ich aufs Bild verschicken (und auch Link dazu) eher verzichten - außer es gibt eine Möglichkeit tatsächlich das Auslösebild zu erhalten.

kamp

scheinbar sind die Profis im Urlaub, daher musste ich selbst unzählige Stunden in die Lösung investieren. Falls jemand anderes das brauchen sollte:


ZM_Monitor_zm_3:alert:.on {
my $alarm = Value("AlarmStatus");;
my $stream = ReadingsVal("ZM_Monitor_zm_3","pubEventStreamUrl","https://video.kmpr.at");;
if ($alarm eq "on") {
fhem("set Talk msg Kamerabewegung im Büro!\\n$stream");;
}
}

presskopf

#288
Hallo zusammen,
ich bin gerade dabei mich mit ZM zu beschäftigen und habe die Anwendung in einer Docker-Umgebung installiert.
Das war erst mal nicht ganz trivial, da ZM dort wenig gepflegt wird. Dennoch habe ich nun ein Setup auf Basis von
ghcr.io/zoneminder-containers/zoneminder-base:latest
laufen.

Was mich nun vor ein Problem stellt, ist dass in diesem Paket der Pfad ohne /zm angegeben wird.
Das betrifft das Webinterface als auch die API.

Die Option webConsoleContext hilft mir schon mal weiter beim WI, nur bei der API weiß ich nicht, wie ich da die Verbindung hinkriegen kann.
Stehe ich auf dem Schlauch und es ist trivial oder ist das mit diesem Modul wirklich nicht lösbar?

So funktioniert's:
curl -X POST -d "user=fhemuser&pass=secret" http://192.168.0.143:8099/api/host/getVersion.json
{"version":"1.36.33","apiversion":"2.0"}

LG Matthias


Hat sich erledigt.
Das Docker-Repo. von dlandon (v1.34) macht doch was es soll. :)

kamp

#289
Hallo,
ich habe das Modul bislang noch immer nicht vernünftig zum laufen bekommen, folgende massive funktionsblockierende Probleme habe ich:

1) Wenn ich das ZoneMinder Device anlege, dauert es bis zu 24 Stunden bis die ZM_Monitore alle automatisch angelegt werden. Ein Neustart von FHEM und/oder ZoneMinder hilft nicht, im Gegenteil, dadurch entstehen neue Probleme (siehe weitere Punkte). Damit könnte man grundsätzlich leben, wenn das Modul dann einwandfrei funktioniert, aber zur Fehlersuche, wenn man Geräte immer wieder löschen und anlegen möchte, ein Horror! In den Logs sind keine Fehlermeldungen vorhanden, es geht einfach nicht schneller scheint es.

2) Ich habe bei meinen ZM_Monitor Devices überall showLiveStreamInDetail=1 eingetragen. Das funktioniert aber nur, bis der Zoneminder-Server neu gestartet wird. Dann gibt es nur noch das Broken-Image Symbol statt des Livestreams. Kein erneutes Starten des Zoneminder oder FHEM hilft. Keine Fehlermeldung in FHEM Logs. Bereinigt sich auch nach 2 Tagen nicht von selbst. Mit diesem Fehler ist das Modul schon zu 90% unbrauchbar.

3) Im ZoneMinder-Device geht das Reading CPU_Load wenige Stunden nach Erstellung auf error und funktioniert dann nie wieder, auch nicht nach 2 Wochen. Wie man schön erkennt, liest er das nie wieder mit neuem Status aus (error noch vom 6.6., andere Readings werden regelmäßig aktualisiert):
CPU_Load
error
2023-06-06 10:00:45
authHash
8763810dff90ea376410a5dd6227836c
2023-06-07 07:54:41
state
Trigger-Port: opened, API: opened
2023-06-07 07:54:41
Jetzt kein Drama, aber schön ist es trotzdem nicht, wenn es auf error geht und nie wieder funktioniert.

4) Der generierte Link in den ZM_Monitor Devices zu pubEventStreamUrl führt immer zu einem 403er. Verwende ich hingegen pubStreamUrl, funktioniert es. Es hat also nichts mit Zoneminder, Reverseproxy etc. zu tun, sondern wie dieses Modul den pubEventStreamUrl falsch erstellt. Mit diesem Fehler ist das Modul endgültig unbrauchbar, denn diesen Link sende ich per Benachrichtigungen aus, damit man prüfen kann was los ist. Wenn dann nicht via Link das Auslöseevent angesehen werden kann, ist es nutzlos.

Hat jemand ZoneMinder aktuell ohne diese Fehler in FHEM am Laufen? So ist es ja nicht brauchbar...? Ich verwende übrigens Zoneminder v1.37.40

JudgeDredd

Hallo kamp,

bei mir läuft das Zoneminder-Modul.
Ich hatte aber zu Testzwecken mal mehrere Zoneminder-Server definiert und dabei kam es zu einem ähnlichen Fehlerbild wie bei Dir.
Hast Du evtl. auch mehrere Server definiert ?

Zitat von: kamp am 07 Juni 2023, 08:01:25Der generierte Link in den ZM_Monitor Devices zu pubEventStreamUrl führt immer zu einem 403er. Verwende ich hingegen pubStreamUrl, funktioniert es. Es hat also nichts mit Zoneminder, Reverseproxy etc. zu tun, sondern wie dieses Modul den pubEventStreamUrl falsch erstellt. Mit diesem Fehler ist das Modul endgültig unbrauchbar, denn diesen Link sende ich per Benachrichtigungen aus, damit man prüfen kann was los ist. Wenn dann nicht via Link das Auslöseevent angesehen werden kann, ist es nutzlos.
pubStreamUrl und pubEventStreamUrl sind für verschiedene Dinge gedacht.
Den Fehler 403 bekommst Du wenn der User keine Berechtigung hat. Der Link den das Modul erstellt stimmt sehr wohl, kontrolliere lieber mal Deine Berechtigungen.

Gruß,
JudgeDredd
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

delMar

Zitat von: kamp am 07 Juni 2023, 08:01:25Ich verwende übrigens Zoneminder v1.37.40
Hallo,

die ungeraden Minor-Versionen bei ZoneMinder sind immer die Entwicklungs-Zweige.
Dh 1.32, 1.34, 1.36 sind die stabilen Zweige und das sind auch die einzigen Versionen, die getestet wurden.

Mit 1.37 ist somit nie getestet worden.

Davon abgesehen ist es leider so, dass die ZoneMinder API selber nicht das Gelbe vom Ei ist.
Zwischen den Versionen gibt es immer wieder maßgebliche unterschiede, so dass es mich eher überraschen würde, wenn 1.37 funktionieren würde.
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.

Eckat

Hallo  :)

Ich nutze ZoneMinder seit ca. Anfang des Jahres und seit ca. 1/2 Jahr in Verbindung mit fhem.

Bei einer Kamera habe ich die "Erkennung in ZoneMinder auf NoDect gestellt, da Außen zu viele "Fehlalarme" aufgezeichnet werden und nutze stattdessen die Alarmierung über fhem (über angeschlossene Bewegungsmelder).
Nun ist seit Samstag 28.10.2023 die Alarmierung nicht mehr funktional.

In fhem hat das zm device folgende Daten:
Internals:
APILoginStatus 200
DEF 192.168.2.88 fhem pwd
DeviceName 192.168.2.88:6802
FD 116
FUUID 40afba64-f66f-aee1-48ef-b015c00d2388cb0b
HTTPCookies
NAME zm
NOTIFYDEV global
NR 614
PARTIAL STATE
Trigger-Port: opened, API: opened
TYPE ZoneMinder
ZM_API_VERSION 2.0
ZM_VERSION 1.36.33
eventCount 417
model 1.36.33

Readings:
CPU_Load 0.5810546875,0.58935546875,0.58642578125 2023-10-30 20:27:51
authHash 1 2023-10-30 20:20:08
state Trigger-Port: opened, API: opened 2023-10-30 20:19:05

Attributes:
apiVersion post132
verbose 5

Der authHash war alt (glaube von Juli 2023). Daher habe ich das Reading testweise mal gelöscht und danach auf 1 gesetzt. Jeweils nach einem Schritt mit "calcAuthHash" versucht einen neuen zu generieren.

Als Versuch der Fehlerbehebung habe ich auch beide Systeme (virtuelle Ubuntu Maschinen) upgedatet, was aber keinerlei Änderung gebracht hat.
ZoneMinder hat, seit ich es einsetze, die Version 1.36.33.

Im Log steht auch nur, das der Login mit 200 OK war.

Einzig folgendes scheint nicht richtig zu sein:
2023.10.30 20:18:59 4: ZoneMinder (zm) - calling calcAuthHash
2023.10.30 20:18:59 0: ZoneMinder (zm) - calcAuthHash was called, but no hash secret was found. This shouldn't happen. Please contact the module maintainer.
Das taucht aber nur nach den heutigen Tests mit "calcAuthHash" auf.

Hat jemand eine Idee?

Danke und Gruß
Carsten

JudgeDredd

Zitat von: Eckat am 30 Oktober 2023, 20:36:03Als Versuch der Fehlerbehebung habe ich auch beide Systeme (virtuelle Ubuntu Maschinen) upgedatet
Was genau hast Du denn "geupdated" ? FHEM und den ZM-Server ?
Das FHEM Modul hat sich seit 09/2021 nicht mehr geändert.
Mein ZM-Server hat ebenfalls die Version 1.36.33 und funktioniert.

Hast Du eventuell auf dem ZM-Server die PHP Version geändert ?
z.B. von php-7.4 auf php-8.1 oder php-8.2 ?
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Eckat

Upgedatet habe ich alles was ging, aber erst nachdem ich die Nicht-Funktion bemerkt habe 8) Die Ursache dafür kann das updaten also nicht sein.
Also Systempakete, fhem etc..

PHP Version habe ich nicht bewusst geändert, wie gesagt, wenn dann auch erst nach dem Bemerken des Fehlers.
Die genaue Version kann ich erst heute Abend nachschauen wenn ich wieder Zuhause bin.


delMar

Zitat von: Eckat am 30 Oktober 2023, 20:36:03Einzig folgendes scheint nicht richtig zu sein:
2023.10.30 20:18:59 4: ZoneMinder (zm) - calling calcAuthHash
2023.10.30 20:18:59 0: ZoneMinder (zm) - calcAuthHash was called, but no hash secret was found. This shouldn't happen. Please contact the module maintainer.
Das taucht aber nur nach den heutigen Tests mit "calcAuthHash" auf.

Ist denn in den Einstellungen von ZoneMinder ein secret hash hinterlegt?
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.

kamp

Hallo,

ich habe gelegentlich mal einen Event mit der lastEventId 0:

2024-01-21_08:55:57 ZM_Monitor_zm_5 alert: on
2024-01-21_08:55:57 ZM_Monitor_zm_5 lastEventTimestamp: 1705823757
2024-01-21_08:55:57 ZM_Monitor_zm_5 lastEventId: 0
2024-01-21_08:55:57 ZM_Monitor_zm_5 lastEventNotes:
...
2024-01-21_08:55:57 ZM_Monitor_zm_5 idle
2024-01-21_08:55:57 ZM_Monitor_zm_5 alert: off
2024-01-21_08:55:57 ZM_Monitor_zm_5 lastEventTimestamp: 1705823757
2024-01-21_08:55:57 ZM_Monitor_zm_5 lastEventId: 0
2024-01-21_08:55:57 ZM_Monitor_zm_5 lastEventNotes:

Da ich notifies auf alert auf meine Monitor-Devices habe und mir da den pubEventStreamUrl per Nachricht aufs Smartphone schicke, bekomme ich öfters ungültige solche Links, die ins Nirvana führen:

https://some.domain//zm/cgi-bin/nph-zms?source=event&mode=jpeg&event=0&frame=1&scale=100&rate=100&maxfps=30&auth=someauthcode
Zoneminder beklagt sich dann mit FATAL ERROR (und gibt im Browser 502 zurück):
Can't view an event without specifying an event_id.
Könnte man einen Filter einbauen, dass Events mit ID 0 nicht aufscheinen?