Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Binding: Textfarbe nach Wert

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Binding: Textfarbe nach Wert

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gluecksmann last edited by gluecksmann

      Hallo, ich möchte die Angabe der Luftfeuchtigkeit in verschiedenen Farben anzeigen lassen... 0-50% soll grün sein..50-60% dann gelb...alles über 60% dann rot. Ich habe bislang keine schöne Erklärung gefunden wie man so etwas macht...

      Ich muß dazu sagen das ich ein DAU bin... am schönsten wäre es das konkrete Beispiel aufzugreifen...

      Ich weiß, ist viel verlangt...

      Glasfaser 1 Reply Last reply Reply Quote 0
      • Glasfaser
        Glasfaser @gluecksmann last edited by Glasfaser

        @gluecksmann sagte in Binding: Textfarbe nach Wert:

        am schönsten wäre es das konkrete Beispiel aufzugreifen..

        https://forum.iobroker.net/topic/14224/textfarbe-für-bestimmtes-level-definieren/2?_=1637858753354

        oder

        https://forum.iobroker.net/topic/48168/gelöst-hintergrund-farbe-automatisch-ändern?_=1637860692959

        G 1 Reply Last reply Reply Quote 0
        • G
          gluecksmann @Glasfaser last edited by

          @glasfaser

          Sorry...schon das verstehe ich nicht...

          938d8b44-cf64-4919-b266-955ad6dfff5c-grafik.png

          steht der Wert den der Datenpunkt haben soll nicht direkt VOR der Farbe?

          Demnach wäre es so das > 70 Farbe 1 wäre...

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @gluecksmann last edited by

            @gluecksmann sagte: Demnach wäre es so das > 70 Farbe 1 wäre...

            Richtig.

            G 1 Reply Last reply Reply Quote 0
            • G
              gluecksmann @paul53 last edited by

              @paul53

              Danke... möchte ja nicht nur einfach kopieren, sondern es irgendwann auch verstehen...

              1 Reply Last reply Reply Quote 0
              • G
                gammler2003 last edited by

                Hallo zusammen,

                auch ich nutze binding um die Textfarbe in einem Basic String Widget in meiner VIS zu ändern. In VIS Edit ändert sich die Farbe auch genau so wie sie soll - in der VIS Anzeige (egal ob Iphone-App oder wie Browser) ist die Textfarbe einfach nur schwarz. Refresh der VIS-Anzeige hilft nicht.

                Wenn ich die Textfarbe statisch ändere (also einfach einen Hex-Code eingebe und nicht über binding) wird die Farbe in der Anzeige korrekt angezeigt.

                Hat jemand eine Idee? Vielen Dank euch.

                SBorg 1 Reply Last reply Reply Quote 0
                • SBorg
                  SBorg Forum Testing Most Active @gammler2003 last edited by

                  @gammler2003 sagte in Binding: Textfarbe nach Wert:

                  In VIS Edit ändert sich die Farbe auch genau so wie sie soll

                  Hi, da scheint schon der Fehler zu sein. Bindings werden nur zur Laufzeit ausgeführt (Runtime), nie im Editor.
                  Da aber mein "Glaskugelmodus" ( 😉 ) leider offline ist, wäre, um besser helfen zu können, mehr Infos nötig wie zB. mal dein Binding.
                  Bindings funktionieren mit unter auch nicht im verwendeten Widget. Zum testen eignet sich das einfache "HTML-Widget". Dort kann man sich dann auch zuerst mal das Ergebnis des Bindings als Text ausgeben lassen.

                  G 1 Reply Last reply Reply Quote 0
                  • G
                    gammler2003 @SBorg last edited by

                    @sborg Sorry, doof von mir 😉 Vielen Dank für deine Hilfe.

                    Das Binding sieht wie folgt aus:

                    {wert:alexa2.0.Smart-Home-Devices.xxx.thermostatMode; wert == cool ? "#1874CD" : "#ff0000"}
                    

                    Eingetragen unter CSS Font & Text/ color

                    OliverIO SBorg 2 Replies Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @gammler2003 last edited by

                      @gammler2003 sagte in Binding: Textfarbe nach Wert:

                      {wert:alexa2.0.Smart-Home-Devices.xxx.thermostatMode; wert == cool ? "#1874CD" : "#ff0000"}

                      im Beispiel von eben, denke ich, hat sich noch ein Fehler eingeschlichen, da um das cool sicherlich auch Anführungsstriche gehören.

                      {wert:alexa2.0.Smart-Home-Devices.xxx.thermostatMode; wert == "cool" ? "#1874CD" : "#ff0000"}
                      

                      Damit die Funktionsweiße genau verstanden wird, hier nochmal eine Detailerklärung
                      Bei Binding können mehrere Befehle hintereinander geschrieben werden. Die einzelnen Befehle werden mit einem ; getrennt.
                      Zur Unterscheidung von anderen Angaben in den jeweiligen Felders müssen Binding-Anweisungen mit geschweiften Klammern eingeschlossen werden. Davor und danach können troztdem gültige Angaben gemacht werden.
                      Anhand des Beispiels:

                      wert:alexa2.0.Smart-Home-Devices.xxx.thermostatMode
                      Der Inhalt des Datenpunkts wird in die Variable wert gepseichert und kann unter diesem namen weiter verwendet werden

                      wert == "cool" ? "#1874CD" : "#ff0000"
                      

                      Diese Anweisung ist meist etwas schwer zu lesen, gibt es aber in mehrere Programmiersprachen und nennt sich ternärer Operator. Der Operator hat 3 Teile, die jeweils durch das ? und den : getrennt wird.

                      Der erste Teil (vor dem Fragezeichen) ist eine Vergleichsoperation, bei der Wahr oder Falsch herauskommen muss (allerdings hat javascript da so seine besonderheiten. Bei Interesse kann man mal unter falsy und truthy nachschlagen).
                      Hier wird der Inhalt von Wert mit dem Text "cool" verglichen. Wenn cool drin steht ist die Prüfung wahr, ansonsten falsch.

                      Der nächste Teil nach dem Fragezeichen und vor dem Doppelpunkt ist die Anweisung, die ausgeführt wird, wenn die Prüfung im ersten Teil wahr ist.

                      Der Teil nach dem Doppelpunkt ist die Anweisung, die ausgeführt wird, wenn die Prüfung falsch ergibt.

                      Jetzt kann man das auch noch ineinander verschachteln, so das da sehr komplexe Anweisungen herauskommen, die kaum noch lesbar sind, aber durchaus funktionieren.

                      Das Ergebnis dieses ternären Operators kann entweder in einer nachfolgenden Anweisung (nach einem weiteren Strichpunkt weiterverarbeitet werden. Gibt es keine weitere Anweisung, dann wird das Ergebnis einfach mit dem Inhalt der geschweiften Klammern ersetzt.

                      bspw in einem html-Feld kann man folgendes machen

                      der wert im datenpunk ist {val:wert:javascript.0.test1;val=="1"?"eins":"nicht eins"}
                      

                      wenn der datenpunkt 1 enthält, dann wird
                      der wert im datenpunk ist eins
                      ausgegeben, ansonsten
                      der wert im datenpunk ist nicht eins
                      ausgegeben.

                      weitere infos zu binding hier
                      https://github.com/ioBroker/ioBroker.vis

                      1 Reply Last reply Reply Quote 2
                      • SBorg
                        SBorg Forum Testing Most Active @gammler2003 last edited by

                        @gammler2003 gibt eigentlich nichts zu ergänzen, @OliverIO hat es schon ausführlich erklärt, bis auf das C&P-Monster (oder auch einfach C&P-Fehler) beim Beispiel:

                        der wert im datenpunk ist {val:javascript.0.test1;val=="1"?"eins":"nicht eins"} 
                        

                        funktioniert besser 😀

                        Bei deinem Binding passiert folgendes:

                        {wert:alexa2.0.Smart-Home-Devices.xxx.thermostatMode; wert == cool ? "#1874CD" : "#ff0000"} 
                        

                        Es wird die Variable wert (=der Inhalt des vorher definierten Datenpunktes) mit der Variablen cool verglichen ob sie gleich ist. cool hast du aber nicht als Variable definiert, sondern willst wohl eher vergleichen ob der Inhalt deines Datenpunktes "cool" ist.
                        Deswegen

                        {wert:alexa2.0.Smart-Home-Devices.xxx.thermostatMode; wert == "cool" ? "#1874CD" : "#ff0000"} 
                        

                        Wenn du dies nun in ein HTM-Widget als "Inhalt" einträgst, wirst du sehen, dass die Ausgabe sich je nach Inhalt deines abgefragten Datenpunktes ändert. Beim falschen Binding dagegen wird sie immer "#ff0000" lauten.

                        Die Farbe des Textes im Editor wird sich auch nicht in Abhängigkeit des Datenpunktes ändern. Das ist mehr Zufall, denn wenn du wie hier in den Eigenschaften (text-color) ein Binding einträgst, interpretiert der Editor einfach den ersten Farbwert (bei dir dann #1874CD) den er im Binding findet ohne das Binding wirklich auszuführen 😉

                        OliverIO 1 Reply Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @SBorg last edited by

                          @sborg sagte in Binding: Textfarbe nach Wert:

                          funktioniert besser

                          stimmt

                          G 1 Reply Last reply Reply Quote 0
                          • G
                            gammler2003 @OliverIO last edited by

                            @oliverio @SBorg
                            Ich verneige mich und sage ganz herzlichen Dank für eure Hilfe. Es funktioniert!

                            1 Reply Last reply Reply Quote 0
                            • G
                              G.Hawk last edited by

                              Hallo

                              Ich habe eine kurze Frage dazu:

                              Wenn ich mehrere Bedingunggen einfüge, also wenn dann, wenn dann, sonst.
                              Wie muss ich das schreiben?

                              Das funktioniert nicht:

                              {wert:yamaha.0.Realtime.MAIN.PWR; wert == "Standby" ? "#B5B5B5" : "#FF0000"; wert == "On" ? "#00FF00" : "#0000CD" }
                              

                              Also Z.B: Wenn "Standby" dann grau, Wenn "on" dann grün usw........ sonst rot.

                              Er soll die Textfarbe ändern bei "Standby" und "on".
                              Das möchte ich später noch erweitern, deshalb möchte ich gern verstehen, wie das funktioniert.

                              Nächste Frage wäre ob ich den Datenpunkt immer reinschreiben muss oder ob er sich den von der ObjektID automatisch holt, das habe ich oben nicht ganz vertanden.

                              Gruß

                              bahnuhr 1 Reply Last reply Reply Quote 0
                              • bahnuhr
                                bahnuhr Forum Testing Most Active @G.Hawk last edited by

                                @g-hawk sagte in Binding: Textfarbe nach Wert:

                                deshalb möchte ich gern verstehen, wie das funktioniert.

                                Es funktioniert so wie jede andere if then Abfrage.

                                {wert:yamaha.0.Realtime.MAIN.PWR; wert == "Standby" ? "grau" : wert == "on" ? "grün" : "rot" }
                                

                                Die Farben noch ersetzen durch deine #..

                                Du schreibt in der Bedingung on groß; aber im Text klein.
                                Was ist nun richtig ?

                                @g-hawk sagte in Binding: Textfarbe nach Wert:

                                ob ich den Datenpunkt immer reinschreiben muss

                                ja, du musst ja der Variablen "wert" etwas zuweisen (kann ja auch was anderes sein).

                                G 1 Reply Last reply Reply Quote 1
                                • G
                                  G.Hawk @bahnuhr last edited by

                                  @bahnuhr

                                  Super danke es klappt einwandrei.

                                  1 Reply Last reply Reply Quote 0
                                  • G
                                    G.Hawk last edited by

                                    Eine Frage habe ich noch.
                                    Kann soetwas irgendwie klappen wenn ich das bei Box Shaddow unter CSS Schatten und Abstand eintrage?

                                    {wert:0_userdata.0.VIS.Werte_Test; wert == "true" ? "box-shadow:inset 0px 0px 10px #FFFFFF" : "box-shadow:inset 0px 0px 10px #39db00" }
                                    
                                    G 1 Reply Last reply Reply Quote 0
                                    • G
                                      G.Hawk @G.Hawk last edited by

                                      @g-hawk

                                      Frage selbst beantwortet.

                                      {wert:0_userdata.0.VIS.Werte_Test; wert == "true" ? "inset 0px 0px 10px #FFFFFF" : "inset 0px 0px 10px #39db00" }
                                      

                                      Klappt!

                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      962
                                      Online

                                      31.7k
                                      Users

                                      79.7k
                                      Topics

                                      1.3m
                                      Posts

                                      8
                                      17
                                      1943
                                      Loading More Posts
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                      The ioBroker Community 2014-2023
                                      logo