FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Gisbert am 27 Juli 2019, 16:41:57

Titel: [Gelöst] Komma+Leerzeichen-separierte Liste mit 98_monitoring.pm bei error?
Beitrag von: Gisbert am 27 Juli 2019, 16:41:57
Hallo igami,

ich nutze dein Modul 98_monitoring.pm.
Wenn man warning und error als stateformat ausgibt, kann es sein, dass man eine längere Zeile bekommt, z.B. so:
Buienradar,RollladenSchlafzimmerSebastian,Wassermelder
Auf kleinen Handybildschirmen ist dann der Zeilenumbruch willkürlich in einem Device und nicht beim Komma.
Könnte man statt des Kommas nicht ein Leerzeichen aus geben oder ein Komma gefolgt von einem Leerzeichen?

Viele Grüße Gisbert
Titel: Antw:Komma+Leerzeichen-separierte Liste mit 98_monitoring bei warning und error?
Beitrag von: Gisbert am 02 August 2019, 20:22:29
Hallo,

wenn ich in dieser Zeile im Modul:
readingsBulkUpdate($hash, $list, join(",", sort(keys %readings)));
"," durch ", " (also Komma und Leerzeichen) ersetze, dann bekomme ich eine Komma + Leerzeichen getrennte Ausgabe.

Das Problem ist jetzt, dass diese Liste nicht mehr gelöscht wird, wenn die errors und warnings nicht mehr zutreffen.

Gibt es jemand der sich den Code von 98_monitoring.pm anschauen und mir helfen kann?

Viele​ Grüße​ Gisbert​

Edit:
Der händische Befehl
set <monitoringdevice> clear all
löscht alle Einträge, immerhin.
Titel: Antw:Komma+Leerzeichen-separierte Liste mit 98_monitoring.pm bei warning und error?
Beitrag von: igami am 04 August 2019, 14:10:37
Zitat von: igami am 23 Juli 2019, 20:12:29
Für die menschen lesbare Form gibt es das Attribut errorReturn bzw. warningReturn. Beispiele zur Nutzung finden sich in der Commandref und hier im Thread. Falls du dennoch schwierigkeiten bei der Umsetzung hast melde dich noch mal. Falls du es alleine hinbekommst teile deine Lösung hier mit anderen.
Titel: Antw:[Gelöst] Komma+Leerzeichen-separierte Liste mit 98_monitoring.pm bei error?
Beitrag von: Gisbert am 06 August 2019, 12:50:52
Hallo igami,

durch Suchen mit den Stichworten "split fhem" bin ich auf diesen Beitrag von dir gestoßen, der mich zur Lösung geführt hat:
https://forum.fhem.de/index.php/topic,58059.msg494877.html#msg494877 (https://forum.fhem.de/index.php/topic,58059.msg494877.html#msg494877)
{my $ret = AttrVal(...); $ret =~ s/<suchen>/<ersetzen>/g; return $ret}

In meinem konkreten Fall lautet das Attribut für ein userReading, bei dem aus dem Reading "error" durch einen Zeilenumbruch statt eines Kommas ein userReading erstellt wird, wie folgt:
attr device userReadings myFehler {my $ret = ReadingsVal("device","error","");; $ret =~ s/,/\n/g;; return $ret}

Viele Grüße Gisbert

Noch eine Ergänzung:
Falls man das Attribut stateformat benuzten möchte, um die Liste auszugeben, dann muss man den html code für einen Zeilenumbruch nehmen: also statt "\n" "<br>".