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.
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}} </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
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.
Du brauchst eben nur EINE Popup-Definition. Schau dir mal das Beispiel an.
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.
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.
Danke für deinen Input.
Das ist aber für mich nicht die optimale Lösung.