jemu75 / fhemApp

Web-App zur Steuerung deiner Smarthome Umgebung in Verbindung mit FHEM.
MIT License
29 stars 7 forks source link

Ausgabe eines anderen Readings als das, in der Bedingung verwendete. #61

Open benni1972 opened 6 months ago

benni1972 commented 6 months ago

Ich hatte jetzt schon ein paar mal den Fall, wo ich gerne, statt des Readings aus der Bedingung, den Wert ein anderes Anzeigen würde.

Ganz einfaches Beispiel Info-Text auf einem Panel:

"text": [
    "device-state:off:aus",
    "device-state:on:an"
],

Ich prüfe hier auf den state des Device (on oder off) und gebe entsprechend Text aus. Handelt es sich aber hier um einen Dimmer und ich möchte die aktuelle Dim-Einstellung (dim [%]) des Device anzeigen, muss ich entweder alles auf dem Reading dim aufbauen, (was aber nur funktionieren kann, wenn im Falle "aus" dim gleichzeitig auch auf 0% geht). Alternativ muss ich mir eine Bedingungsreihenfolge ausdenken mit der das dann wie gewünscht funktionier (im o.g. Beispiel sehr einfach, in anderen Situationen beliebig komplex)

Praktisch wäre jetzt sowas:

"text": [
    "device-state:off:aus",
    "device-state:on:%r(device-dim)"
],

%r ist jetzt eine von mir willkürlich gewählte Ersetzung für die Referenz auf einen anderen Device-Wert.

Wenn ich hier Reading schreibe meine ich übrigens immer auch die Internals (i-) und Attribute (a-) von den, mit dem Panel verknüpften Devices.

Also auch sowas hier:

"text": [
    "device-state:off:%r(device-a-OffState"),
    "device-state:on:%r(dim-dim)"
],

Die Königsklasse hier wäre jetzt die Schachtelung von Ersetzungen, denn evtl. soll der anzuzeigende Wert noch (bspw. numerisch) formatiert werden %n(%r(<ref>),0,2) oder auf Basis des Wertes ein Sprachtext angezeigt werden %t(%r(<ref>)))

Auch zu bedenken: Was passiert, wenn die angegebene Referenz gar nicht da ist? Ist dann die gesamte Bedingung fehlerhaft und wird nicht ausgewertet oder wird stattdessen ein Fehlerwert angezeigt?

marvin78 commented 3 weeks ago

Diesen Wunsch unterstütze ich sehr. Ich löse das aktuell über diverse Dummys, da ich mein FHEM aber eigentlich schlank halten möchte (ich habe gerade erst ausgemistet), würde ich es bevorzugen, wenn es direkt im Frontend lösbar wäre.