Frage zu Fenster-Tür status

Begonnen von satprofi, 14 April 2024, 10:11:55

Vorheriges Thema - Nächstes Thema

satprofi

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
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

setstate

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"

satprofi

wie muss ich das script anpassen das mir offene fenster anzeigt in meinem fall?
jetzt tut sich nichts.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

setstate

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");

satprofi

#4
Hallo.
textausgabe klappt noch nicht, fhem.log zeigt mir Fenster_status:  Fenster noch offen.
aber im icon sehe ich keinen text.

LG

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

setstate

Den output kannst du in der Kommandozeile im FHEM-Web so testen

{statusFenster()}

satprofi

Irgendwie klappts bei mir nicht. Textausgabe passt aber, Fenster_SZ noch offen
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

setstate

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

satprofi

#8
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
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram