readingsGroup mit FILTER - Wie aktualisieren?

Begonnen von Elektrolurch, 17 Juni 2016, 11:07:20

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo Andre und fhem-Gemeinde,

Wenn ich folgendes definiere:

define rg readingsGroup Lampe.*:FILTER=state=on:state

Werden mir alle eingeschalteten Lampen angezeigt. Wird nun eine Lampe ausgeschaltet, so wird diese trotzdem weiterhin in der readingsGroup angezeigt, mit dem state off.
Dabei spielt es keine Rolle, ob ich die Seite neu aufbaue (mit F5) oder in einem neuen Fenster anzeigen lasse.
Lediglich das Setzen von
attr rg disable 3
und anschliessend
attr rg disable 0
berechnet wohl den Filterausdruck neu.

Offensichtlich wird der Filterausdruck nur einmal beim Anlegen der rg ausgewertet.
Kann man es bewerkstelligen, dass der Filter-Ausdruck jedesmal beim Bildschirmaufruf neu ausgewertet wird? Und somit den jeweiligen echten Status der Geräte anzeigt?

Elektrolurch
configDB und Windows befreite Zone!

marvin78

Probiere mal

attr RG valueFormat {$VALUE !~ m/(on)/?$VALUE:undef;}

justme1968

das define wird nur ein mal ausgewertet. es gibt noch einen refresh in bestimmten zeitabständen, aber für alles das dynamisch sein soll musst du über valueFormat oder valueStyle gehen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Elektrolurch

Dann war meine Beobachtung ja korrekt. Ich hatte das mit valueFormat gelöst, wenn aber die Zeilen mehrere readings enthalten, wird das schon etwas unübersichtlicher mit den ganzen perl-Funktionen, die da aufzurufen sind...
Daher wollte ich die Anzeige für eingeschaltete/ausgeschaltete/alle per modify und FILTER ändern. Das klappt auch. Nur bleibt die Anzeige dann ja so eingefroren, egal ob da nun sich der state ändert.

Könnte man nicht per Attribut das so erweitern, dass man eine Neuberechnung des Ausdrucks bei jeder html-Generierung nach Bedarf vorschaltet?

Die commandref schreibt bei devspec von einem Filter. In der readingsgroup steht "at least". Wie werden denn mehrere Filterausdrücke hintereinander geschrieben?
Für das list-Kommando habe ich
das nicht hinbekommen.

list group=Beleuchtung,state=on ?
configDB und Windows befreite Zone!

marvin78


justme1968

mit set <rg> refresh wird die interne device liste neu aufgebaut.

mehrere filter werden mit : aneinander gehängt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Elektrolurch

Hallo,

hab da jetzt mal zwei kleine Ergänzungen eingebaut:

Mit dem Attribut "dynamic-filter" = 1 wird bei jeder html-Generierung der Filterausdruck (enthält ein = - Zeichen in der Definition) aktualisiert. Bisher erfolgte dies alle 600 s.

Hier hatte ich in #1532 https://forum.fhem.de/index.php/topic,14425.1530.html beschrieben, dass es Fälle gibt, bei denen per valueFormat mit Ergebnis undef leider Ausklapplisten nicht unterdrückt werden können.
Ich habe daher für commands auch die Auswertung von perl-Code mit eingebaut, wie es auch für valueFormat, valueStyle etc erfolgt.
Beispiel:
commands {'channel' => '{(ReadingsVal($DEVICE,"state","appeared") eq "appeared")?"channel:":undef}', 'input' => '{(ReadingsVal($DEVICE,"state","appeared") eq "appeared")?"input:":undef}'  }
Damit verschwinden die Auswahllisten des Sat-Receivers (Enigma) für Sender und Input, wenn das Teil aus ist.

Ich hänge mal die geänderte Version an.

Elektrolurch
configDB und Windows befreite Zone!