Hallo.
Ich verstehe die syntax nicht.
<ftui-label [text]="Fenster_Tuer:state
| replace('alle Fenster sind geschlossen.','alle geschlossen')
| replace('Terrasse','Kind-')
| replace('Kuechen','Küche')
| replace('Wohnzimmer','WZ-')
| replace(/Fenster/g,'')
| replace('noch offen','')" width="80%"></ftui-label>
wie werte ich den status aus, damit ich sehe was evt. offen ist? was trage ich wo ein?
meine structure lautet
room FTS14EM_5_1 FTS14EM_5_2 FTS14EM_5_3 FTS14EM_5_4 FTS14EM_5_5 FTS14EM_13_2 FTS14EM_13_3 FTS14EM_13_4 FTS14EM_13_5 FTS14EM_13_6 FTS14EM_13_7 FTS14EM_13_8 FTS14EM_13_9 FTS14EM_13_10
Grundsätzlich ist es nur ein Label, was den Text aus einem Reading anzeigt und etwas "bearbeitet", damit es nicht zu lang ist und sinnvoll in eine Kachel passt.
Ohne die vielen replace sehe es so aus:
<ftui-label [text]="Fenster_Tuer:state></ftui-label>
Die eigentliche Logik, die du vermutlich suchst, passiert im BE als UserReading an der Structure.
text {statusFenster()}
Die Funktion statusFenster() sieht so aus:
sub statusFenster {
my @windows = devspec2array("comment=SingleWindow");
my @wopen = ();
foreach (@windows) {
my $state = ReadingsVal( $_, "state", "na" );
push( @wopen, AttrVal( $_, 'alias', $_ ) ) if ( $state eq "open" );
}
my $num_wopen = @wopen;
my $resultstring = '';
if ( $num_wopen gt 0 ) {
foreach (@wopen) {
$resultstring .= $_ . " ";
Log 1, "Fenster_status: " . $_ . " noch offen";
}
$resultstring .= " noch offen";
}
else {
$resultstring = "alle Fenster sind geschlossen.";
}
return $resultstring;
}
Ein üblicher Text, der daraus entsteht ist sowas:
"KinderzimmerFensterLinks KinderzimmerFensterRechts KuechenFenster SchlafzimmerFenster noch offen"
Das benutze ich zum Beispiel als Ansagetext, wenn man beim Rausgehen, auf "Abwesend" am Tablet klickt.
Für das Label wird der Text auch verwendet, aber mit replace() "zusammengedampft"
wie muss ich das script anpassen das mir offene fenster anzeigt in meinem fall?
jetzt tut sich nichts.
du kannst jedem Fenster einen Kommentar "SingleWindow" vergeben, dann funktioniert diese Variante
devspec2array("comment=SingleWindow");
Oder, wenn alle Fenster in einem Fhem-Raum sind, das devspec2array etwa so ändern
devspec2array("room=Fenster");
Hallo.
textausgabe klappt noch nicht, fhem.log zeigt mir Fenster_status: Fenster noch offen.
aber im icon sehe ich keinen text.
LG
Den output kannst du in der Kommandozeile im FHEM-Web so testen
{statusFenster()}
Irgendwie klappts bei mir nicht. Textausgabe passt aber, Fenster_SZ noch offen
Was geht nicht? Du hast
text {statusFenster()}
als UserReading in deiner Structure angelegt?
Dann musst du eine Änderung auslösen -> Fenster auf/zu machen.
Dann müsste das neue Reading sich ändern
Achsoooo! Dann ist es klar, ich dachte der Text wird über die {statusFenster()} generiert.
Jetzt mit userReading klappts.
Danke, und sorry.
Eine Frage noch, wie bekomm ich den Zeilenumbruch hin?
LG