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