FHEM-Plugin für checkMK

Begonnen von erdo_king, 30 Dezember 2016, 17:35:26

Vorheriges Thema - Nächstes Thema

f-zappa

Moin erdo,
Zitat von: erdo_king am 12 Juni 2018, 08:43:19
Hab's jetzt eingebaut - und als default wird der Wert "ok" verlangt (natürlich anpassbar ;) )
wow, das war schnell :) Ich habe gerade die Updates eingespielt und warte auf das erste Ticket - gerade gestern habe ich zwei schlappe Batteriesätze getauscht, aber die nächsten werden sicher bald kommen.
Danke für die schnelle Umsetzung!
Gruß, Uli

mab

Hallo erdo_king,

kannst du dein mk_fhem Plugin im Github um bzw. für den Type LUXTRONIK2 erweitern? (https://wiki.fhem.de/wiki/Luxtronik_2.0)

der DUMP (Debug) dazu ging bereits per PM raus.

Danke & LG

erdo_king

Hi mab,

mhmm aufnehmen ist kein Problem, ich tue mich aktuell schwer damit noch weitere Konfigurations-Parameter im WATO aufzunehmen.
Derzeit 21, mit dem neuem Geräte-Typ locker die doppelte Menge wie ich aus dem DUMP ersehe ...

Muss mir mal ein paar Gedanken dazu machen.
Meine Ansätze:

  • Gruppierung der Konfigurationsparameter (soweit ich weiß nicht möglich, aber das Team von CheckMK überrascht mich immer wieder ;) )
  • Nach FHEM-Gerätetypen zu unterscheiden, dabei wird aber die korrekte Zuordnung der Konfigurationsmögichkeiten eine händische Angelegenheit
    - Beispiel: Welche Geräte haben ein Reading: presence?? mir nur bei TYPE ESPEasy  bekannt, muss aber nichts heißen

MarkusN

Super Sache dieses Plugin, habe ich damals wohl total übersehen. Bin auch großer Fan von check_mk und habe in der Vergangenheit auch viele checks für FHEM von Hand geschrieben. Gerade was alarmierung angeht finde ich diesen Weg besser als alles in FHEM abzufangen, wenn man schon ein sauberes Monitoring System hat.

erdo_king

Geht mir genau so :)

ich werde (heute?) ein erstes mkp uploaden, ist bereits gebaut, muss nur noch den build-Process "optimieren".
Damit laufen  wir dann mehr in den Standards ...

erdo_king

#20
Damit ihr etwas habt worauf ihr euch freuen könnt:
Ich bin dabei das Konfigurations-Menu umzubauen!

Siehe Screenshot ...

Das Ganze zieht (leider) einen größeren Code-Rewrite mit sich, also Geduld bewahren!
Aber ich denke, das Ergebnis wird sich sehen lassen können  8) 8)

P.s.: Das ist natürlich nur ein erster Entwurf! Formatiertung folgt ...

erdo_king

Sooo neue Version ist im Github:
https://github.com/erdoking/mk_fhem

Fleißige Tester gesucht!
ACHTUNG! In Version v0.9 hat sich die WATO Konfiguration massiv geändert, ältere WATO-Konfigurationen funktionieren nicht mehr und müssen neu erstellt werden!

Ab sofort liefere ich mkp's! Bitte alte Dateien löschen und mkp benutzen.
Der Agent hat sich nicht geändert, hier ist kein Update notwendig.

Hinweis: Das mkp ist ungetestet, wüsste aber nicht warum das nicht gehen sollte ...


@mab: LUXTRONIK2 ist noch kein Bestandteil dieser Version! folgt ...

MarkusN

#22
Habe es mal installiert auf cmk raw 1.4.0p33, und es laeuft!
Auf github solltest Du evtl. beim Punkt "Installation" noch ein "chmod +x /usr/lib/check_mk_agent/plugins/mk_fhem" ergaenzen.
Habe bei mir zwei Devices des Typs OWCOUNT definiert, die werden in cmk als UNKNOWN (UNKNOWN - invalid output from agent or error in check implementation) gemeldet.
Beispielhafter state von einem OWCOUNT device ist "A: 15805828.00 cts A_r: 300.00 cts/h B: 0.00 cts B_r: 0.00 cts/h".

edit:
Ich wuerde mich zusaetzlich ueber einen konfigurierbaren Parameter fuer "activity" bei Homematic devices freuen. Bei einem HM Device habe ich den actiondetector absichtlich auf "switchedOff" gesetzt. Der wird mir aktuell als CRITICAL gezeigt (CRIT - contact: open, battery: ok, activity: switchedOff (expected: alive) CRIT, state: open).

edit2:
Habe ein device welches aktuell keinen Humidity sensor an board hat, aber trotzdem humidity und dewpoint im state enthaelt. Habe ueber parameter "ignore humidity (r: humidity+dewpoint)" auf true gesetzt, es wird jedoch immer noch eine Warning erzeugt. Ist das ein erwartetes Verhalten?
WARN - temperature: 25.8°C, humidity: 100%, dewpoint: 23.4°C (warn/crit at 22.8°C/24.8°C) WARN, battery: ok, brightness: 2525.240%, state: T:

erdo_king

#23
Freut mich zu hören das es läuft :)

  • hast du die mkp installiert oder die Dateien manuell ausgetauscht?
  • GitHub-Doku habe ich ergänzt (guter Tipp!)
  • OWCOUNT habe ich selbst nicht im Einsatz, kannst du mir den entsprechenden RAW Output des Devices per PN schicken? dann schau ich mir das an.
  • 'activity' kommt, stimmt sollte konfigurierbar sein, hier nur die Frage: ist 'activity' HomeMatic spezifisch oder gibt es das auch bei anderen Geräte-Typen? Dann würde ich das unter "Common -> Device state" einfügen

Zu deinem edit2:
Kennst du den Hilfe-butten in CheckMK ;) wenn du den aktivierst steht da:
"don't alert humidity if dewpoint given. (default: true)"

Sprich der Taupunkt wird trotzdem bemängelt ... nur eben die Luftfuchtigkeit nicht mehr ...
Setz Taupunkt auf 100/100, damit sollte das deaktivert sein (oder 0/0) verdammt, Mathe ist grade nicht meine Stärke ...
Ich denke "ignore" ist hier überflüssig und nur für einzelfälle oder irre ich mich?

MarkusN

Zitat von: erdo_king am 20 Juni 2018, 14:21:14
hast du die mkp installiert oder die Dateien manuell ausgetauscht?

Installiert per mkp

Zitat von: erdo_king am 20 Juni 2018, 14:21:14
OWCOUNT habe ich selbst nicht im Einsatz, kannst du mir den entsprechenden RAW Output des Devices per PN schicken? dann schau ich mir das an.

Lasse ich dir zukommen!

Zitat von: erdo_king am 20 Juni 2018, 14:21:14
'activity' kommt, stimmt sollte konfigurierbar sein, hier nur die Frage: ist 'activity' HomeMatic spezifisch oder gibt es das auch bei anderen Geräte-Typen? Dann würde ich das unter "Common -> Device state" einfügen

Das Modul MOBILEALERTS scheint ein aehnliches feature zu haben

Zitat von: erdo_king am 20 Juni 2018, 14:21:14
Zu deinem edit2:
Kennst du den Hilfe-butten in CheckMK ;) wenn du den aktivierst steht da:
"don't alert humidity if dewpoint given. (default: true)"

Sprich der Taupunkt wird trotzdem bemängelt ... nur eben die Luftfuchtigkeit nicht mehr ...
Setz Taupunkt auf 100/100, damit sollte das deaktivert sein (oder 0/0) verdammt, Mathe ist grade nicht meine Stärke ...
Ich denke "ignore" ist hier überflüssig und nur für einzelfälle oder irre ich mich?

Okay, habe das mit 0/0 in den Griff bekommen.

Danke!

erdo_king

#25
Ich habe grad festgestellt, dass sich bei mir Regeln in der Selben Gruppe KOMPLETT überschreiben ...
Das ist ein heftiger Bug, kann mir jemand das Verhalten bestätigen?

Edit:
Einigen schnellen Test's nach ist das ein Anzeigefehler vom Wato! Die Konfiguration wird hierbei offenbar trotzdem sauber gelesen ...
Ich denke ich schreib dem Kettner mal und meld einen Bug ;)

MarkusN

#26
Habe aktuell nur eine Regel aktiv, daher kann ich das nicht bestaetigen.

Ich habe mal eine andere Frage, die nicht direkt was mit deinem Plugin zu tun hat, aber vielleicht hast du ja eine Idee:
Auf check_mk nutze ich fuer notifications Telegram (mit diesem Script), was auch immer wunderbar funktioniert hat. Allerdings ist mir aufgefallen dass viele meine FHEM checks keine notifications ausloesen wenn sie critical werden.
Nach viel hin und her stellt sich heraus dass offenbar das Grad Zeichen (°) dafuer verantwortlich ist. Konkret sieht die Fehlermeldung in cmk so aus:

2018-06-21 09:20:40   * notifying omdadmin via telegram, parameters: (no parameters), bulk: no
2018-06-21 09:20:40      executing /omd/sites/prod/share/check_mk/notifications/telegram
2018-06-21 09:20:40      Output: Traceback (most recent call last):
2018-06-21 09:20:40      Output:   File "/omd/sites/prod/share/check_mk/notifications/telegram", line 109, in <module>
2018-06-21 09:20:40      Output:     main()
2018-06-21 09:20:40      Output:   File "/omd/sites/prod/share/check_mk/notifications/telegram", line 107, in main
2018-06-21 09:20:40      Output:     send_telegram_message(telegram_bot_token, telegram_chatid, text)
2018-06-21 09:20:40      Output:   File "/omd/sites/prod/share/check_mk/notifications/telegram", line 92, in send_telegram_message
2018-06-21 09:20:40      Output:     data = urllib.urlencode({'chat_id':chat_id, 'text':text, 'parse_mode':'Markdown'})
2018-06-21 09:20:40      Output:   File "/usr/lib/python2.7/urllib.py", line 1343, in urlencode
2018-06-21 09:20:40      Output:     v = quote_plus(str(v))
2018-06-21 09:20:40      Output: UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 176: ordinal not in range(128)
2018-06-21 09:20:40      Plugin exited with code 1


So wie ich das sehe liegt das Problem an dem von mir verlinkten telegram script, und nicht an deinem cmk plugin. Hast Du evtl trotzdem eine Idee wie man das Problem loesen kann? Vielleicht betrifft das auch andere Wege der notification.

edit:
Hier der Plugin Output der betroffenen notification:
CRIT - temperature: 17.4°C, humidity: 100%, dewpoint: 23.4°C (warn/crit at 17.4°C/17.4°C) CRIT, battery: ok, brightness: 758.280%, state: T:

MarkusN

Zitat von: MarkusN am 21 Juni 2018, 09:34:19
Habe aktuell nur eine Regel aktiv, daher kann ich das nicht bestaetigen.

Ich habe mal eine andere Frage, die nicht direkt was mit deinem Plugin zu tun hat, aber vielleicht hast du ja eine Idee:
Auf check_mk nutze ich fuer notifications Telegram (mit diesem Script), was auch immer wunderbar funktioniert hat. Allerdings ist mir aufgefallen dass viele meine FHEM checks keine notifications ausloesen wenn sie critical werden.
Nach viel hin und her stellt sich heraus dass offenbar das Grad Zeichen (°) dafuer verantwortlich ist. Konkret sieht die Fehlermeldung in cmk so aus:

2018-06-21 09:20:40   * notifying omdadmin via telegram, parameters: (no parameters), bulk: no
2018-06-21 09:20:40      executing /omd/sites/prod/share/check_mk/notifications/telegram
2018-06-21 09:20:40      Output: Traceback (most recent call last):
2018-06-21 09:20:40      Output:   File "/omd/sites/prod/share/check_mk/notifications/telegram", line 109, in <module>
2018-06-21 09:20:40      Output:     main()
2018-06-21 09:20:40      Output:   File "/omd/sites/prod/share/check_mk/notifications/telegram", line 107, in main
2018-06-21 09:20:40      Output:     send_telegram_message(telegram_bot_token, telegram_chatid, text)
2018-06-21 09:20:40      Output:   File "/omd/sites/prod/share/check_mk/notifications/telegram", line 92, in send_telegram_message
2018-06-21 09:20:40      Output:     data = urllib.urlencode({'chat_id':chat_id, 'text':text, 'parse_mode':'Markdown'})
2018-06-21 09:20:40      Output:   File "/usr/lib/python2.7/urllib.py", line 1343, in urlencode
2018-06-21 09:20:40      Output:     v = quote_plus(str(v))
2018-06-21 09:20:40      Output: UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 176: ordinal not in range(128)
2018-06-21 09:20:40      Plugin exited with code 1


So wie ich das sehe liegt das Problem an dem von mir verlinkten telegram script, und nicht an deinem cmk plugin. Hast Du evtl trotzdem eine Idee wie man das Problem loesen kann? Vielleicht betrifft das auch andere Wege der notification.

edit:
Hier der Plugin Output der betroffenen notification:
CRIT - temperature: 17.4°C, humidity: 100%, dewpoint: 23.4°C (warn/crit at 17.4°C/17.4°C) CRIT, battery: ok, brightness: 758.280%, state: T:


Habe es hinbekommen!
Zwischen Zeile 91 und 92 habe ich folgende Line eingefuegt:
text = unicode(text).encode('utf-8')

Habe kein Plan von Python, aber manchmal hilft google und ein bisschen Trial and Error doch noch weiter!

erdo_king

#28
Zitat von: MarkusN am 22 Juni 2018, 12:12:58
Habe es hinbekommen!
Zwischen Zeile 91 und 92 habe ich folgende Line eingefuegt:
text = unicode(text).encode('utf-8')

Habe kein Plan von Python, aber manchmal hilft google und ein bisschen Trial and Error doch noch weiter!

Verrätst du uns noch die Datei die du angepasst hast ;)
ich benutze die Variable "text" nicht, und Zeile 91-92 in meinem check ergibt keinen Sinnn für mich ...

Edit:
ok habe es selbst herausgefunden:
"telegram notification script"  -> https://metzlog.srcbox.net/2016/01/monitoring-notifications-via-telegram/telegram

erdo_king

Zitat von: MarkusN am 20 Juni 2018, 13:57:34

Habe bei mir zwei Devices des Typs OWCOUNT definiert, die werden in cmk als UNKNOWN (UNKNOWN - invalid output from agent or error in check implementation) gemeldet.
Beispielhafter state von einem OWCOUNT device ist "A: 15805828.00 cts A_r: 300.00 cts/h B: 0.00 cts B_r: 0.00 cts/h".

@MarkusN : Ich habe mal einen angepassten agent hochgeladen, welcher leere Readings ignorieren sollte.
Kannst du den bitte testen. Ich habe keine leeren Readings und wüsste auch nicht wie ich FHEM dazu bringe mir so eins anzulegen :D

Dein "memory"-Reading sollte damit rausfliegen.