Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Farbe vom Text in VIS

    NEWS

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    Farbe vom Text in VIS

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

      Servus

      Ich steh gerade auf dem Schlauch

      Ich würde gerne Werte in von Sensoren anzeigen lassen, die je nach Wert die passende Farbe haben.

      Im Forum hab ich folgende Beschreibung gefunden:

      {v:ble.0.c4:7c:8d:66:xx:xx.fertility;v < 350 ? "#FF0000" :: v < 2000 ? "#00FF00" :: "#FFFF00"}
      

      Das einfach bei Farbe eintragen.

      Komischerweise wird aber immer nur der letzte Wert verwendet egal wie groß der Wert ist.

      Es sollte aber unter 350 = rot, zwischen 350 und 2000 = grün und bei über 2000 = gelb

      Wo liegt der Denkfehler?

      Wird hie noch ein andere Script benötigt?

      Gruß Peer

      1 Reply Last reply Reply Quote 0
      • R
        RappiRN Most Active last edited by

        Bei mir siehts so aus. Liegt es vielleicht am Leerzeichen zwischen Zeichen und Wert? Oder doppelter Doppelpunkt?

        {a:javascript.0.Erzeugung; a <=1000 ? "#DF0101" : a <=2500 ? "#ffff00" : "#2EFE2E"}
        

        Enrico

        1 Reply Last reply Reply Quote 0
        • D
          dtp last edited by

          Oh. Geht das so auch für Hintergründe? Dann kann ich mir ja alle Javaskripte sparen, mit denen ich extra entsprechende Datenpunkte befülle. Probier ich mal damit aus:

          {a:Datenpunkt; a == 0 ? "green" : a <= 90 ? "orange" : a <= 100 ? "royalblue" : "green"}
          
          1 Reply Last reply Reply Quote 0
          • R
            RappiRN Most Active last edited by

            Sollte auch funktionieren!

            Enrico

            1 Reply Last reply Reply Quote 0
            • C
              C1500 last edited by

              Servus

              Danke für die Hilfe

              Leider klappt es bei mir immer noch nicht.

              {v:ble.0.c4:7c:8d:66:xx:xx.fertility; v < 350 ? "#FF0000" :: v < 2000 ? "#00FF00" :: "#FFFF00"}
              

              Das Leerzeichen zwischen ; und v hat nix gebracht.

              Könnte es an den Doppelpunkten im Datenpunkt liegen?

              Würde es was bringen, den Datenpunkt in Anführungszeichen zu setzen? Also so: {v:"ble.0.c4:7c:8d:66:xx:xx.fertility"; …"

              Ist es richtig, dass hinten doppelte Doppelpunkte verwendet werden müssen?

              Hab noch eine Idee, könnte es so klappen?

              {v:ble.0.c4::7c::8d::66::xx::xx.fertility; v < 350 ? "#FF0000" : v < 2000 ? "#00FF00" : "#FFFF00"}
              

              Das also die doppelten Doppelpunkte als echter Doppelpunkt gesehen wird und nicht als Trennzeichen bzw "oder"?

              Kann leider erst heute Abend weiter testen

              Und direkt noch die nächste Idee:

              Wie kann ich Werte wie z.B. 2,4 bewerten?

              Muss ich den Wert mit "." oder "," abfragen?````
              {a: SENSOR.battery; a < 2,4 ? "red" : a < 2,6 ? "orange" : "green"}
              oder
              {a: SENSOR.battery; a < 2.4 ? "red" : a < 2.6 ? "orange" : "green"}

              
              Gruß Peer
              
              Tante Edit hatte Zeit zum testen
              
              Egal ob Komma oder Punkt, der Balken bleibt grün
               ![3443_batterien.png](/assets/uploads/files/3443_batterien.png) 
              Auch was den Doppelpunkt angeht, die Farben wird nicht dem Wert angepasst
              
              Hat noch jemand eine Idee?
              1 Reply Last reply Reply Quote 0
              • R
                RappiRN Most Active last edited by

                Heißt dein Datenpunkt "SENSOR.Battery"? Da muss der ganze Pfad rein!

                Enrico

                1 Reply Last reply Reply Quote 0
                • D
                  dtp last edited by

                  Also, mit

                  {a:hm-rpc.0.OEQ1300422.1.LEVEL; a == 0 ? "green" : a <= 90 ? "orange" : a <= 100 ? "royalblue" : "green"}
                  

                  funktioniert es wunderbar für mein Rollladen-Widget.

                  Wenn allerdings direkt gerechnet werden muss, dann scheint es nicht zu klappen. Mit

                  {a:hm-rpc.0.LEQ0003550.2.SET_TEMPERATURE - hm-rpc.0.LEQ0003550.2.ACTUAL_TEMPERATURE; Math.abs(a) <= 2.5 ? "green" : a > 2.5 ? "royalblue" : a < -2.5 ? "orange" : "green"}
                  

                  bekomme ich jedenfalls immer nur einen grünen Hintergrund angezeigt. Ziel ist es, einen orangen Hintergrund anzuzeigen, wenn die Ist-Temperatur um mehr als 2,5°C oberhalb der Soll-Temperatur liegt, einen blauen Hintergrund anzuzeigen, wenn die Ist-Temperatur 2,5 °C unterhalb der Soll-Temperatur liegt, und einen grünen Hintergrund anzuzeigen, wenn die Soll- und die Ist-Temperatur sich um weniger als 2,5 °C unterscheiden.

                  Mit dem folgenden Javaskript funktioniert das sehr gut:

                  var visBackground  = 'HTMLBackgroundDGSchlafzimmerTemperatur';
                  var idDevice = 'hm-rpc.0.LEQ0003550.2';
                  var diff, i;
                  
                  createState('vis.'+visBackground, 'green', {
                    def: 'green',
                    type: 'string',
                    name: 'Hintergrund für Temperatur-Widget',
                    role: 'text'
                  });
                  on(idDevice+'.SET_TEMPERATURE', function(obj){
                    diff = getState(idDevice+".SET_TEMPERATURE").val - getState(idDevice+".ACTUAL_TEMPERATURE").val;
                    log('DG Schlafzimmer'); log(diff);
                    if(Math.abs(diff) <= 2.5) setState('vis.'+visBackground, 'green');
                    else if(diff > 2.5) setState('vis.'+visBackground, 'royalblue');
                    else if(diff < -2.5) setState('vis.'+visBackground, 'orange');
                  });
                  on(idDevice+'.ACTUAL_TEMPERATURE', function(obj){
                    diff = getState(idDevice+".SET_TEMPERATURE").val - getState(idDevice+".ACTUAL_TEMPERATURE").val;
                    log('DG Schlafzimmer'); log(diff);
                    if(Math.abs(diff) <= 2.5) setState('vis.'+visBackground, 'green');
                    else if(diff > 2.5) setState('vis.'+visBackground, 'royalblue');
                    else if(diff < -2.5) setState('vis.'+visBackground, 'orange');
                  });
                  

                  Gruß,

                  Thorsten

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  833
                  Online

                  32.1k
                  Users

                  80.7k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  1421
                  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