FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Reinerlein am 29 Dezember 2014, 14:45:48

Titel: Umstellung von "CommandDeleteReading" und evt. Anpassung von fhem.save?
Beitrag von: Reinerlein am 29 Dezember 2014, 14:45:48
Hallo Rudi,

ich habe gerade einen Fhem-Absturz hinbekommen, indem ich versucht habe mittels des Befehls "deletereading" ein Reading zu löschen.
Das Reading hat den Namen "(00:24". Diese Art Readings werden bei mir immer an meinem Uptime-Dummy erzeugt, wo im State mittels "stateFormat" die Startzeit von Fhem und in Klammern dahinter die Laufzeit steht.

Als Übeltäter für den Absturz habe ich die Zeile 1848 in der fhem.pl ausgemacht.
Dort steht:

foreach my $reading (grep { /$readingspec/ } keys %{$defs{$sdev}{READINGS}} ) {

Das funktioniert nicht, wenn die Readingsnamen eine Klammer enthalten, da dann der reguläre Ausdruck ungültig ist.

Könntest du die Variable $readingspec "sicher" machen, sprich alle Sonderzeichen, die für reguläre Ausdrücke eine besondere Bedeutung haben, vorher maskieren?
Oder das ganze so anpassen, dass gar kein regulärer Ausdruck für den Vergleich verwendet wird?

Außerdem wäre eine Anpassung des Savestate/Readstate-Zyklus super.
Mein oben genannter STATE-String hat dann z.B. das Format

2014-12-29 14:05:10 (00:24 Std.)


Das erzeugt dann folgenden Eintrag in der fhem.save:

setstate Uptime 2014-12-29 14:05:10 (00:24 Std.)

Das wiederrum wird dann als Reading mit Zeitstempel interpretiert, und verursacht die oben beschrieben Readings-Problematik.
Kann man das nicht irgendwie maskieren, sodass der lesende Teil dabei nicht mehr der Meinung ist, einen Zeitstempel für ein reading vor sich zu haben, sondern deutlich erkennen kann, dass es der String des STATE ist?

Danke schon mal für deine Mühen...

Grüße
Reinerlein
Titel: Antw:Umstellung von "CommandDeleteReading" und evt. Anpassung von fhem.save?
Beitrag von: rudolfkoenig am 29 Dezember 2014, 17:06:02
deletereading habe ich gefixt, das Regexp bleibt, wird aber vorher geprueft.

Fuer setstate habe ich keine Idee ohne Nebenwirkungen, als Workaround koenntest du das Datumsformat in deinem Uptime-Dummy aendern. Oder sie mit einem Prefix versehen.
Titel: Antw:Umstellung von "CommandDeleteReading" und evt. Anpassung von fhem.save?
Beitrag von: Reinerlein am 29 Dezember 2014, 17:40:39
Hi Rudi,

danke, dann kann ich diese Readings wenigstens wieder loswerden :-)

Könntest du beim Speichern des STATE-Wertes nicht einfach das Wort STATE mit in die Datei schreiben?
Das ist doch Case-sensitive, und es dürfte ja kein Reading STATE geben (state gibt es ja auch), oder?

Grüße
Reinerlein