[FTUI3] Reading auf device mappen?

Begonnen von DocCyber, 18 Dezember 2023, 13:26:05

Vorheriges Thema - Nächstes Thema

DocCyber

Wie könnte ich (variabel) auf ein Device zugreifen, dessen Name sich aus dem Reading eines anderen Device ergibt?
Im konkreten Fall wird ein ein Popup durch die Steuervariable popup_ctrl_heating aktiviert, dessen Reading (beispw. `OG2`) der Name eines anderen Device ist.
<ftui-popup id="pop_heating" [active]="popup_ctrl_heating | map('OG2: true, none: false')">
  <ftui-label [text]="`OG2`:temp"></ftui-label>
</ftui-popup>
Ich brauche also so etwas wie (popup_ctrl_heating:state):temp.
Oder anders ausgedrückt:
my $dev = Value(popup_ctrl_heating);
my $ftui_label_text = ReadingsVal($dev, "temp", "");

Ich hoffe, dass ich mich verständlich ausdrücken konnte und bitte um Hilfe.
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

fz55

Hallo DocCyber,

das kann man eventuell mit ftui-content verwirklichen. Dazu musst eine File (z.B. popup_heating.html) mit folgendem Inhalt anlegt werden:
<ftui-popup id="pop_heating_{{device}}" [active]="popup_ctrl_heating | map('{{device}}: true, .*: false')" timeout="0">
    <ftui-label [text]="{{device}}:temp">{{device}}&nbsp;</ftui-label>
</ftui-popup>

Für jede Device benötigt man einen Include der File. Ich habe das testweise so gemacht:

<ftui-grid base-width="78" base-height="70" margin="5" shape="round">

    <ftui-grid-tile row="2" col="2" height="3" width="2">
        <header>Heating</header>
        <ftui-dropdown
          list=",EG1,EG2,OG1,OG2"
          [(value)]="popup_ctrl_heating">
        </ftui-dropdown>
    </ftui-grid-tile>
</ftui-grid>

<ftui-content file="popup_heating.html" device="EG1"></ftui-content>
<ftui-content file="popup_heating.html" device="EG2"></ftui-content>
<ftui-content file="popup_heating.html" device="OG1"></ftui-content>
<ftui-content file="popup_heating.html" device="OG2"></ftui-content>

Grüsse
fz55

DocCyber

Zitat von: fz55 am 20 Dezember 2023, 14:27:33Für jede Device benötigt man einen Include

Das würde aber bedeuten, dass ich mehrere Popups brauche, und genau DAS will ich vermeiden.
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

fz55

Du brauchst eben nur EINE Popup-Definition. Schau dir mal das Beispiel an.

DocCyber

Ich denke, dass das nicht funktionieren KANN, denn die id muss doch eine Konstante sein, und das kann bei einer Konstruktion wie
<ftui-popup id="pop_heating_{{device}}"...>nicht gegeben sein, weil mit {{device}} variable Werte verwendet werden.

Ich habe es dennoch ausprobiert, mit dem erwarteten Ergebnis.
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

fz55

Zitat von: DocCyber am 26 Dezember 2023, 10:44:50nicht gegeben sein, weil mit {{device}} variable Werte verwendet werden.

Deshalb muss für jede Device ein
<ftui-content file="popup_heating.html" device="...."></ftui-content>eingefügt werden.

DocCyber

Danke für deinen Input.
Das ist aber für mich nicht die optimale Lösung.
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.