Modul 98_monitoring zur Überwachung von Geräten

Begonnen von igami, 09 März 2017, 22:12:42

Vorheriges Thema - Nächstes Thema

Wolle02

Also ich habe in meinem Testsystem mal folgendes konfiguriert:

defmod Activity_monitoring monitoring .*:.*
attr Activity_monitoring errorReturn {return unless(@errors);;\
$_ = AttrVal($_, "alias", $_) foreach(@errors);;\
return("Das Gerät \"$errors[0]\" hat sich seit mehr als 24 Stunden nicht mehr gemeldet.") if(int(@errors) == 1);;\
@errors = sort {lc($a) cmp lc($b)} @errors;;\
return(join("\n - ", "Die folgenden ".@errors." Geräten haben sich seit mehr als 24 Stunden nicht mehr gemeldet:", @errors))\
}
attr Activity_monitoring errorWait 60*60*24
attr Activity_monitoring warningReturn {return unless(@warnings);;\
$_ = AttrVal($_, "alias", $_) foreach(@warnings);;\
return("Das Gerät \"$warnings[0]\" hat sich seit mehr als 12 Stunden nicht mehr gemeldet.") if(int(@warnings) == 1);;\
@warnings = sort {lc($a) cmp lc($b)} @warnings;;\
return(join("\n - ", "Die folgenden ".@warnings." Geräten haben sich seit mehr als 12 Stunden nicht mehr gemeldet:", @warnings))\
}
attr Activity_monitoring warningWait 60*60*0.1
attr Activity_monitoring whitelist HMIPW_Fenstereingang_Modul:state HMIPW_Rollladenaktor_3_Modul:state HMIPW_Schaltaktor_Modul:state F_UG_Gaestezimmer:state

setstate Activity_monitoring warning add: HMIPW_Rollladenaktor_3_Modul
setstate Activity_monitoring 2020-09-24 15:53:07 allCount 2
setstate Activity_monitoring 2020-09-24 15:32:02 error
setstate Activity_monitoring 2020-09-24 15:46:45 errorAdd_F_UG_Gaestezimmer 2020-09-25 15:46:45
setstate Activity_monitoring 2020-09-24 15:50:46 errorAdd_HMIPW_Fenstereingang_Modul 2020-09-25 15:50:46
setstate Activity_monitoring 2020-09-24 15:47:07 errorAdd_HMIPW_Rollladenaktor_3_Modul 2020-09-25 15:47:07
setstate Activity_monitoring 2020-09-24 15:32:02 errorCount 0
setstate Activity_monitoring 2020-09-24 15:53:07 state warning add: HMIPW_Rollladenaktor_3_Modul
setstate Activity_monitoring 2020-09-24 15:53:07 warning F_UG_Gaestezimmer,HMIPW_Rollladenaktor_3_Modul
setstate Activity_monitoring 2020-09-24 15:50:46 warningAdd_HMIPW_Fenstereingang_Modul 2020-09-24 15:56:46
setstate Activity_monitoring 2020-09-24 15:53:07 warningCount 2


Funktioniert einwandfrei. Auch mit whitelist läuft alles wie es soll.

Hast du folgenden Passus aus der CommandRef berücksichtigt?

ZitatGeräte werden erst überwacht, wenn sie mindestens ein Event ausgelöst haben.

Ich habe in diesem Test bei den überwachten Geräten manuell ein Update ausgelöst so dass sie Events generiert haben und dann hat es 6 Minuten gedauert bis sie auf die Warning-Liste gesetzt wurden. Ein Device hat trotz manuellem Update keine Events produziert und dieses Device ist auch nicht auf die Warnin-Liste gestzt worden, weil das Monitoring-Modul dieses Device deshalb gar nicht überwacht.

sn0000py

Ja die Devices die ich hier habe, die senden alle 10 sekunden  bis maximal 60 sekunden ein Alive Ping.

Und bei mir funktioniert immer der erste in der Whitelist also den ich vorne stehen habe, der wird aus der error und warning liste gelöscht die anderen 3 kommen in die warning/Error liste rein.
Stelle ich die whitelist wieder um dann wechselt das.

Starte ich FHEM neu, dann kommen alle 4 aus der Liste raus, bis ich wieder was ändere, dann falle alle bis auf den ersten wieder in die warning liste rein.

Aber in deinem Fall ist ja komischer weise auch nur der erste aktiv die anderen 2 sind schon in der warning Liste  - zufall oder gleiches Verhalten wie bei mir?

Wolle02

Zitat von: sn0000py am 24 September 2020, 16:04:57
Aber in deinem Fall ist ja komischer weise auch nur der erste aktiv die anderen 2 sind schon in der warning Liste  - zufall oder gleiches Verhalten wie bei mir?

Ich versteh dich grade nicht so wirklich.
In der Whitelist sind diese Devices:

  • HMIPW_Fenstereingang_Modul
  • HMIPW_Rollladenaktor_3_Modul
  • HMIPW_Schaltaktor_Modul
  • F_UG_Gaestezimmer

F_UG_Gaestezimmer HMIPW_Rollladenaktor_3_Modul haben ein Event gesendet und werden deshalb überwacht. Da sie danach 6 Minuten kein Event mehr gesendet haben landen sie auf der Warning-Liste

HMIPW_Fenstereingang_Modul hat ein Event gesendet und wird deshalb überwacht. Da es aber innerhalb der 6 Minuten ein weiteres Event gesendet hat landet es nicht auf der Warning-Liste.

HMIPW_Schaltaktor_Modul hat bislang überhaupt kein Event gesendet (auch das initiale nicht) und wird deshalb vom Modul überhaupt nicht überwacht.

sn0000py

Okay bei mir senden alle 4 devices events, aber nur das erste wird aktualisiert, deswegen sieht es bei mir gleich aus wie bei dir (nur das eben die anderen 3 devices Events generieren aber ignoriert werden)

Gerald

Hallo,
Ich frage das reading "error" in einem DOIF ab zwecks email benachrichtigung.
Das funktioniert wunderbar, nur nach Stromausfall sind anscheinend alle überwachten Geräte im error-reading vorhanden. ich bekommen dann zig mails....
Weiss jemand warum dad so ist
Lg Gerald

Superposchi

Ich beschäftige mich mit dem Modul weil ich eine regelmäßige Erinnerung fürs Blumen gießen erstellen möchte, die ich dann per PushMSG auf meine Handys verteilen lassen will. Dazu habe ich mir das Beispiel "regelmäßige Wartungsarbeiten (z.B. Tischwasserfilter wechseln)" angeschaut.

Nun will ich keine extra Hardware nutzen und würde daher lieber in meinem FTUI einen Button einbauten, der das gießen als erledigt markiert.
Soweit ich das verstehe, müsste ich dann einen Dummy erstellen, dessen state über diesen Button gesetzt wird. Richtig?

Oder hat jemand eine bessere Idee wie es ohne Dummy geht?

Ice81

Moin zusammen,
Ich verzweile gerade an dem DoIf :-(

Ich habe mich an diesem hier Orientiert:

Zitat von: igami am 11 März 2017, 08:18:33
Ich habe ein DOIF das inetwa so aussieht:

defmod ServiceNotifications_DI DOIF ([16:30-21:00|8]\
&& (   [":^error add:"]\
     || [$SELF:cmd_nr] == 2\
)\
)(\
  set TelegramBot message {(fhem("get TYPE=monitoring default"))}\
)\
DOELSEIF\
([":^error add:"])

attr ServiceNotifications_DI cmdState send notifications|notifications pending
attr ServiceNotifications_DI cmdpause 60*15
attr ServiceNotifications_DI do always
attr ServiceNotifications_DI icon time_automatic
attr ServiceNotifications_DI wait 60*15

Trifft ein "error add:" event ein wird 15 Minuten gewartet, dann bekomme ich eine Nachricht mit allen Sammelmeldungen. Passiert das außerhalb des Zeitraums wird es in die Warteschlange gepackt.

Leider bekomme Ich keine Meldung. Ich habe es mal von Error add auf Warning add geänder, aber leider auch keine Meldung. Hat jemand evtl. die Muse um mir zu helfen. Ich finde so ein Monitoring super Klasse, da Ich leider schon mehr als 1 x die Batterien vom Heizkörper leer hatte und Ich ein glühendes Zimmer vorfand, da die Thermostate sich immer nur ausschalten wenn das Ventil gerade voll geöffnet ist

VG
Ralf

mdescher

Hallo!

Ich habe versucht das Attribut "blacklist" im monitoring Modul zu nutzen und stolpere darüber, dass die Devspecs zu viel ausfiltern. Das ganze lässt sich leicht reproduzieren.

Gebe ich z.B. "x_test_dummy_x" in der Blacklist an, dann werden auch Events des Device "test_dummy" ausgefiltert. Das ist doch vermutlich ein Bug und nicht so gedacht oder?

Gruß
Michael

Beta-User

Zitat von: mdescher am 29 November 2022, 15:02:07
Gebe ich z.B. "x_test_dummy_x" in der Blacklist an, dann werden auch Events des Device "test_dummy" ausgefiltert. Das ist doch vermutlich ein Bug und nicht so gedacht oder?
Neuer support-Thread für das Modul wäre hier zu finden (siehe MAINTAINER.txt): https://forum.fhem.de/index.php/topic,126515.0.html.

Soweit erkennbar, war das schon immer so, ich würde es aber auch als bug ansehen...

Kannst du zum Testen bitte mal #325 so ändern:
return if @blacklist && grep { m{\A${name}\z}x } @blacklist;
(in #332 gibt es dann zumindest auf den ersten Blick nochmal was vergleichbares).

Feedback bitte möglichst im neuen Thread.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Mucki

Guten Abend zusammen,

funktioniert das Monitoring-Modul auch dann, wenn ein Device den Wert 0 erhält?

Ich möchte mit dem monitoring-Modul zählen,
  • wie viele Rollläden offen (state 100) sind
  • und mit einem zweiten Modul zählen, wie wiele Rollläden geschlossen (state 0) sind.

Hierzu habe ich zwei Monitoring-Devices erstellt. (Ich kann nicht durch die Gesamtanzahl der Rollläden minus Anzahl der offenen Rollläden auf die Anzahl der geschlossenen Rollläden schließen, da es auch Zwischenstände gibt.)

Nun zu meinem Problem. Meine Rolladen Devices werden bei allen beliebigen Werten in die warning/error Liste aufgenommen bzw. aus ihr gelöscht - ABER NICHT, wenn der Wert 0 ist.

Zum Testen habe ich ein einfaches Dummy erstellt,
define r11 dummy
attr r11 userattr rolllaeden rolllaeden_map structexclude
attr r11 room TestRollladen
#   FUUID      65a64e2f-f33f-3989-0701-4cd43d71d97947e2
#   NAME       r11
#   NR         266
#   STATE      0
#   TYPE       dummy
#   eventCount 33
#   READINGS:
#     2024-02-05 21:22:12   state           0
#
setstate r11 0
setstate r11 2024-02-05 21:22:12 state 0

roll_zu soll die geschlossenen Läden zählen. Die Aufnahme in die Warning Liste bei r11=0 funktioniert nicht. Löschen funktioniert bei jedem beliebigen Wert !=0.
define roll_zu monitoring r11:0|r12:0|r13:0 r11:.*|r12:.*|r13:.*
attr roll_zu errorWait 5
attr roll_zu room TestRollladen
#   CFGFN     
#   DEF        r11:0|r12:0|r13:0 r11:.*|r12:.*|r13:.*
#   FUUID      65c12fba-f33f-3989-edce-ea8961d0ebd547de
#   NAME       roll_zu
#   NOTIFYDEV  r12,r11,global,r13
#   NR         302
#   NTFY_ORDER 50-roll_zu
#   STATE      active
#   TYPE       monitoring
#   eventCount 16
#   READINGS:
#     2024-02-05 21:20:41   allCount        0
#     2024-02-05 21:20:41   error          
#     2024-02-05 21:20:41   errorCount      0
#     2024-02-05 21:21:07   state           active
#     2024-02-05 21:19:55   warning        
#     2024-02-05 21:19:55   warningCount    0
#
setstate roll_zu active
setstate roll_zu 2024-02-05 21:20:41 allCount 0
setstate roll_zu 2024-02-05 21:20:41 error
setstate roll_zu 2024-02-05 21:20:41 errorCount 0
setstate roll_zu 2024-02-05 21:21:07 state active
setstate roll_zu 2024-02-05 21:19:55 warning
setstate roll_zu 2024-02-05 21:19:55 warningCount 0

roll_offen soll die geschlossenen Läden zählen. Die Aufnahme in die Warning Liste bei r11=100 funktioniert, Löschen funktioniert bei jeden Wert von r11, aber nicht bei r11=0
define roll_offen monitoring r11:100|r12:100|r13:100 r11:.*|r12:.*|r13:.*
attr roll_offen errorWait 5
attr roll_offen room TestRollladen
#   DEF        r11:100|r12:100|r13:100 r11:.*|r12:.*|r13:.*
#   FUUID      65c107a1-f33f-3989-83a2-d68c271edae6eb47
#   NAME       roll_offen
#   NOTIFYDEV  r13,r11,global,r12
#   NR         301
#   NTFY_ORDER 50-roll_offen
#   STATE      error add: r11
#   TYPE       monitoring
#   eventCount 62
#   READINGS:
#     2024-02-05 21:22:10   allCount        1
#     2024-02-05 21:22:10   error           r11
#     2024-02-05 21:22:10   errorCount      1
#     2024-02-05 21:22:10   state           error add: r11
#     2024-02-05 21:22:09   warning        
#     2024-02-05 21:22:09   warningCount    0
#
setstate roll_offen error add: r11
setstate roll_offen 2024-02-05 21:22:10 allCount 1
setstate roll_offen 2024-02-05 21:22:10 error r11
setstate roll_offen 2024-02-05 21:22:10 errorCount 1
setstate roll_offen 2024-02-05 21:22:10 state error add: r11
setstate roll_offen 2024-02-05 21:22:09 warning
setstate roll_offen 2024-02-05 21:22:09 warningCount 0


Hat jemand eine Idee für mich?
Vielen Dank und viele Grüße

Beta-User

Zitat von: Beta-User am 29 November 2022, 15:21:58Neuer support-Thread für das Modul wäre hier zu finden (siehe MAINTAINER.txt): https://forum.fhem.de/index.php/topic,126515.0.html..
[...]
Feedback bitte möglichst im neuen Thread.
Gilt immer noch...

Eigentlich sind das keine Zahlenvergleiche, die monitoring da macht, sondern reine regex-Operationen. Von daher sollte das schon klappen, ich habe aber grade kein geeignetes Testsystem, um das nachzustellen.
Im anderen Thread dann bitte noch ausführen, wie du den state setzt, es gibt bei deinem dummy ja keine readingList/setList.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files