FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Wiesenfreund am 21 Dezember 2019, 10:16:06

Titel: [gelöst] userReadings mit regex funktioniert nicht
Beitrag von: Wiesenfreund am 21 Dezember 2019, 10:16:06
Aus dem Gerät SYSMON und dem Reading root benötige ich den Wert für Used. Im userReading soll dann nur die Zahl angezeigt werden.

Total: 14891 MB, Used: 2829 MB, 20 %, Available: 11562 MB at /

Mit diesem regulären Ausdruck

^.*Used:\s(.*)\sMB,.*

funktioniert es, getestet mit dem Online regex tester.

Die Umsetzung bzw. Zuweisung in einem userReading kenne ich nicht. Ich habe es wie folgt probiert:

speicher {my $v = ReadingsVal($name,"root","0");; $v =~ /^.*Used:\s(.*)\sMB,.*/;; $v}

Das funktioniet aber nicht und ausgegeben wird der gesamte Inhalt von root.

Ich habe leider keine Hinweise im Forum, Wiki, commandref gefunden. Kann mir jemand weiterhelfen??

Danke,
Eberhard


Titel: Antw:userReadings mit regex funktioniert nicht
Beitrag von: Otto123 am 21 Dezember 2019, 10:19:42
Moin,

UsedReadingsVal - wie kommst Du auf diese Funktion? Klar die kennt Perl so nicht.
Du meinst ReadingsVal ?

Edit: Aber funktionieren tut das so noch nicht, Das regEx trifft zwar, aber Du gibst den ganzen Wert zurück und nicht die "Extraktion"

Das geht mit $1 anstatt v$ - so kannst Du es in der Komamndozeile testen.
{my $v = ReadingsVal("sysmon","root","0");; $v =~ /^.*Used:\s(.*)\sMB,.*/;; return $1}

Und anschließend tauschst Du "sysmon" wieder gegen $name. ;)

Gruß Otto
Titel: Antw:userReadings mit regex funktioniert nicht
Beitrag von: Wiesenfreund am 21 Dezember 2019, 10:49:16
Danke, ich hab es korrigiert. Beim hin und her kopieren und probieren hatte ich den falschen Wert erwischt.
Gruß Eberhard
Titel: Antw:userReadings mit regex funktioniert nicht
Beitrag von: Otto123 am 21 Dezember 2019, 10:52:52
Ich habe oben noch was ergänzt :)
Titel: Antw:userReadings mit regex funktioniert nicht
Beitrag von: Wiesenfreund am 21 Dezember 2019, 11:11:47
Danke, hat leider nicht funktioniert. in der Kommandozeile kommt leider keine Ergebnis. Im Reading hat es auch nicht funktioniert. Dort konnte ich jetzt auch keine Aktualisierung mir auslösen. Nach einem reboot melde ich mich.
Titel: Antw:userReadings mit regex funktioniert nicht
Beitrag von: Wiesenfreund am 21 Dezember 2019, 11:16:54
Mit folgendem Eintrag funktioniert es leider nicht. Das userReading wird auch nicht angelgt:

speicher {my $v = ReadingsVal($name,"root","0");; $v =~ /s#^.*Used:\s(.*)\sMB,.*/;; return $1}
Titel: Antw:userReadings mit regex funktioniert nicht
Beitrag von: Wiesenfreund am 21 Dezember 2019, 11:39:52
Danke für die Hilfe, nach erneutem reboot hat es dann doch noch funktioniert. Das Reading lautet jetzt:

speicher {my $v = ReadingsVal($name,"root","0");; $v =~ /^.*Used:\s(.*)\sMB,.*/;; return $1}

Warum das nach dem ersten Neustart von fhem nicht richtig funktioniert hat, entzieht sich meiner Kenntnis. Gehe ich recht in der Annahme, dass erst durch die Einfassung des regex mit Schrägstrichen die Substitution möglich war?

Nochmals Danke
Titel: Antw:[gelöst] userReadings mit regex funktioniert nicht
Beitrag von: Otto123 am 21 Dezember 2019, 12:17:44
Hallo Eberhard,

Ich verstehe es nicht. Man braucht keinen Reboot für einen funktionierenden Code.

In deinem "Bilderrätsel" in Beitrag #5 ist ein Fehler -> /s#^ da ist ein s# zuviel - was das dort soll? Da ist klar das es nicht funktioniert.

Ein UserReading wird erst angelegt wenn die Readings in dem Gerät aktualisiert werden. Solange musst Du warten. Ein neues Reading sieht man in der Weboberfläche auch nicht sofort, da muss man Refresh im Browser machen.

Gruß Otto
Titel: Antw:[gelöst] userReadings mit regex funktioniert nicht
Beitrag von: Wiesenfreund am 21 Dezember 2019, 12:58:06
Hallo Otto,
ganz einfach, das Problem saß vor dem Bildschirm. Ich hatte das was probiert und gespeichert. Dann war natürlich der Fehler nach dem Neustart weiter eingebaut und ich hab es nicht gleich gemerkt. Also nochmals deine Lösung kopiert und eingefügt, dann hats natürlich funktioniert, mein Mist wurde ja dabei überschrieben.
Der 2. Neustart war sicher nicht notwendig.

Das mit der Readingsaktualisierung ist mit klar.

Nochmals Danke und schöne Feiertage,
Eberhard