Ankündigung

Einklappen
Keine Ankündigung bisher.

print Bool-Wert als Text mit Farbe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    print Bool-Wert als Text mit Farbe

    Ich möchte mit 'print' den Wert einer Bool-Variable aus smarthomeng als Text mit Farbe anzeigen. Der Eintrag mit Text sieht wie folgt aus:

    Code:
    {{ basic.print('','eC.Sueden.Auto','','(VAR1 == 0) ? "aus" : "ein"') }}
    Für einen Test habe ich die Bool-Variable als Zahl mit Farben versehen:

    Code:
    {{ basic.print('','eC.Sueden.Auto','','',[1],['red','green']) }}
    Das klappt wie ich erwartet habe.

    Wenn ich nun die Version mit Text mit diesen Farben kombiniere, dann passiert nichts und der Text ist immer grün:

    Code:
    {{ basic.print('','eC.Sueden.Auto','','(VAR1 == 0) ? "aus" : "ein"',[1],['red','green']) }}
    Wie muss das aussehen, damit der angezeigte Text die Farbe ändert ?
    Zuletzt geändert von wvhn; 14.06.2022, 19:46. Grund: Status gelöst gesetzt

    #2
    Hier ein funktionierendes Beispiel mit aktuellem Screenshot aus der Kopf-/Menüzeile meiner Visu:
    Code:
    {{ basic.print('', 'heizung.sensoren.af1', '%d °C', 'math.round(VAR)', [0,15,25], ['blue','lightblue','green','orange']) }}
    1.png

    Viel Erfolg!

    /tom

    Kommentar


      #3
      Das Beispiel mit den Zahlen hat bei mir auch funktioniert. Wenn ich die Variante mit dem Text nehmen, dann reagiert der Text nicht auf Farben. Ich vermute, dass ich ein Script einsetzen muss. Aus den Beispielen in der Doku bin ich aber nicht schlau geworden.

      Kommentar


        #4
        Ohne Garantie - hast Du mal

        Code:
        {{ basic.print('','eC.Sueden.Auto','','(VAR1 == 0) ? "aus" : "ein"',['aus','ein'],['red','green']) }}
        versucht? Das eingehende Value (bzw. VAR1) wird ja doch an einigen Stellen 'zurechtgerückt' und bleibt somit nicht zwingend 0/1 bzw. False/True.

        Ansonsten: Das Widget scheint nach schnellem Überfliegen beim threshold-Check offensichtlich einen rein numerischen Vergleich zu machen (über parsefloat - das Argument wird in ein float umgewandelt). Alphanumerischer Vergleich kann vielleicht, muss aber nicht klappen ...

        /tom

        Kommentar


          #5
          Zitat von Tom Bombadil Beitrag anzeigen
          Ohne Garantie - hast Du mal

          Code:
          {{ basic.print('','eC.Sueden.Auto','','(VAR1 == 0) ? "aus" : "ein"',['aus','ein'],['red','green']) }}
          versucht? Das eingehende Value (bzw. VAR1) wird ja doch an einigen Stellen 'zurechtgerückt' und bleibt somit nicht zwingend 0/1 bzw. False/True.

          /tom
          Es hat geklappt. Ich musste den Code nur leicht anpassen:

          Code:
          {{ basic.print('','eC.Sueden.Auto','','(VAR1 == 0) ? "aus" : "ein"',['aus','ein'],['red','red','green']) }}
          In der Doku ist erwähnt, dass es für 2 Grenzen 3 Farben braucht.

          Kommentar


            #6
            Code:
            {{ basic.print('', 'eC.Sueden.Auto', '', 'VAR1 == 0 ? "aus" : "ein"', 'ein', ['red', 'green']) }}
            tut es auch. Wichtig zu wissen: die Schwellwerte gelten für das Ergebnis der Formel. Sonst würde die ja keinen Sinn machen. Strings sind hier nicht explizit erlaubt, funktionieren aber teilweise. Im vorliegenden Fall hat man Glück, dass "ein" größer ist als "aus".

            Gruß
            Wolfram

            Kommentar

            Lädt...
            X