FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: satprofi am 14 April 2024, 10:11:55

Titel: Frage zu Fenster-Tür status
Beitrag von: satprofi am 14 April 2024, 10:11:55
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
Titel: Aw: Frage zu Fenster-Tür status
Beitrag von: setstate am 14 April 2024, 10:44:38
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"
Titel: Aw: Frage zu Fenster-Tür status
Beitrag von: satprofi am 14 April 2024, 13:07:26
wie muss ich das script anpassen das mir offene fenster anzeigt in meinem fall?
jetzt tut sich nichts.
Titel: Aw: Frage zu Fenster-Tür status
Beitrag von: setstate am 14 April 2024, 20:15:00
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");
Titel: Aw: Frage zu Fenster-Tür status
Beitrag von: satprofi am 15 April 2024, 09:11:06
Hallo.
textausgabe klappt noch nicht, fhem.log zeigt mir Fenster_status:  Fenster noch offen.
aber im icon sehe ich keinen text.

LG

Titel: Aw: Frage zu Fenster-Tür status
Beitrag von: setstate am 15 April 2024, 09:31:23
Den output kannst du in der Kommandozeile im FHEM-Web so testen

{statusFenster()}
Titel: Aw: Frage zu Fenster-Tür status
Beitrag von: satprofi am 15 April 2024, 09:49:28
Irgendwie klappts bei mir nicht. Textausgabe passt aber, Fenster_SZ noch offen
Titel: Aw: Frage zu Fenster-Tür status
Beitrag von: setstate am 15 April 2024, 10:04:33
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
Titel: Aw: Frage zu Fenster-Tür status
Beitrag von: satprofi am 15 April 2024, 10:20:19
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