Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. VIS -> Allgemein -> Skripte

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.5k

VIS -> Allgemein -> Skripte

Scheduled Pinned Locked Moved Visualisierung
vis
16 Posts 4 Posters 5.6k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B ben1984

    Hallo Forum,

    ich bin IOBroker Neuling und habe eine Frage.

    Ich baue mir gerade eine Visualisierung auf wie auf smarthome-tricks.de vorgestellt.

    Ich habe ein Bar-Widget welches mir die Auslastung der CPU anzeigt.
    Bis 30 % grün, bis 60 % gelb und dann rot

    Damit das funktioniert habe ich im Reiter "Skripte" ein Script eingefügt.

    Jetzt frage ich mich gerade warum das Script in jedem Widget zu sehen ist und nicht nur in meinem eingefügten "Bar-Widget".

    Kann mir jemand auf die Sprünge helfen?

    Grüße
    Ben

    RöstkartoffelR Offline
    RöstkartoffelR Offline
    Röstkartoffel
    wrote on last edited by Röstkartoffel
    #2

    @ben1984

    Ich habe zwar keine Glaskugel für dein Problem, da die Infos doch etwas spärlich sind, aber ich würde das mit Binding machen. Dann brauchst du auch kein Skript:

    {v:dein_Datenpunkt;v < 30 ? "#FDEE00" :: v < 60 ? "#FFA500" :: "#FF0000"}
    

    das trägst du einfach im Widget unter "Farbe" ein.

    PS: du siehst das aber nur in der RunTime, nicht im Editor.

    NUC7i3BNH mit Proxmox und ioBroker (VM Debian Buster), Raspi3 (Slave Smartmeter für eHZ easymeter), Hardware CCU2, SMA SB5000TL-21

    B werner2000xW 2 Replies Last reply
    1
    • RöstkartoffelR Röstkartoffel

      @ben1984

      Ich habe zwar keine Glaskugel für dein Problem, da die Infos doch etwas spärlich sind, aber ich würde das mit Binding machen. Dann brauchst du auch kein Skript:

      {v:dein_Datenpunkt;v < 30 ? "#FDEE00" :: v < 60 ? "#FFA500" :: "#FF0000"}
      

      das trägst du einfach im Widget unter "Farbe" ein.

      PS: du siehst das aber nur in der RunTime, nicht im Editor.

      B Offline
      B Offline
      ben1984
      wrote on last edited by
      #3

      @Röstkartoffel
      Super, das mit dem Binding funktioniert wunderbar - wusse ich nicht.

      Trotzdem wüssen ich gerne warum ein Skript in jedem Reiter "Skripte" angezeigt wird, wenn ich es nur bei einem Widegts hinzufüge.

      Folgender Code habe ich im "Basic Bar"-Widgets im Reiter "Skripte" in View "A" eingefügt:

      function numberToRgbColor(i)
      {
          var rgb = [61,153,63];
      
          if ( i <= 30 ) 
          {
              rgb = [61,153,63]; // Grün
          }
          else
          {
              if ( i <= 60 ) 
              {
                  rgb = [255,204,0]; // Gelb
              }
              else
              {
                  rgb = [217,22,22]; // Rot
              }
          }
          
          return 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')'; 
      }
      

      Bei Farbe dann folgendes:

      {n:info.0.sysinfo.cpu.currentLoad.currentload;numberToRgbColor(n)}
      

      Wenn ich jetzt in View "B" gehe und ein Widgets anklicke und dann in den Reiter "Skripte" wechsle, sehe ich den gleichen Code den ich in View A dem Widgets "Basic-Bar" hinzugefügt habe.

      Warum ist das so? Würde denken das dass Skript nur für das jeweilige Widgets zu sehen ist.

      Grüße und Danke

      Ben

      RöstkartoffelR 1 Reply Last reply
      0
      • B ben1984

        @Röstkartoffel
        Super, das mit dem Binding funktioniert wunderbar - wusse ich nicht.

        Trotzdem wüssen ich gerne warum ein Skript in jedem Reiter "Skripte" angezeigt wird, wenn ich es nur bei einem Widegts hinzufüge.

        Folgender Code habe ich im "Basic Bar"-Widgets im Reiter "Skripte" in View "A" eingefügt:

        function numberToRgbColor(i)
        {
            var rgb = [61,153,63];
        
            if ( i <= 30 ) 
            {
                rgb = [61,153,63]; // Grün
            }
            else
            {
                if ( i <= 60 ) 
                {
                    rgb = [255,204,0]; // Gelb
                }
                else
                {
                    rgb = [217,22,22]; // Rot
                }
            }
            
            return 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')'; 
        }
        

        Bei Farbe dann folgendes:

        {n:info.0.sysinfo.cpu.currentLoad.currentload;numberToRgbColor(n)}
        

        Wenn ich jetzt in View "B" gehe und ein Widgets anklicke und dann in den Reiter "Skripte" wechsle, sehe ich den gleichen Code den ich in View A dem Widgets "Basic-Bar" hinzugefügt habe.

        Warum ist das so? Würde denken das dass Skript nur für das jeweilige Widgets zu sehen ist.

        Grüße und Danke

        Ben

        RöstkartoffelR Offline
        RöstkartoffelR Offline
        Röstkartoffel
        wrote on last edited by
        #4

        @ben1984

        Die Skripte im Reiter "Skripte" gelten nicht nur für das eine Widget, sondern für das gesamte Projekt.
        Ich finde dieses auch etwas verwirrend, denn ich habe in der Vergangenheit mal so ein Skript in einem anderen View gelöscht und dann waren alle weg.
        Diese Skripte sind für VIS gedacht und genauso wie die CSS im gesamten Projekt gültig.

        NUC7i3BNH mit Proxmox und ioBroker (VM Debian Buster), Raspi3 (Slave Smartmeter für eHZ easymeter), Hardware CCU2, SMA SB5000TL-21

        1 Reply Last reply
        0
        • Karel PuhliK Offline
          Karel PuhliK Offline
          Karel Puhli
          wrote on last edited by Karel Puhli
          #5

          Hi zusammen,

          ich antworte jetzt einfach mal hier mit mehreren Fragen... :-) Passt halt zur Überschrift.

          Ich würde gerne mit meinem hqwidget Checkbox Hue Szenen schalten.

          hqwidgetCheckbox.png

          Hue Szenen lassen sich in diesem Zusammenhang bekanntlich nicht "ausschalten". Daher würde ich gerne den Schalter nach 5 Sekunden wieder auf false springen lassen. Ich habe das jetzt folgendermaßen gelöst. Ich habe einen Datenpunkt erstellt und dazu ein BlocklySkript geschrieben. Das funktioniert auch so. Allerdings finde ich das sehr umständlich. Daher die Frage, wie ich das ganze direkt in der Vis über "Skripte" lösen kann. Vielleicht ohne zusätzliche Datenpunkte / Blocklies. Bin in Sachen JavaScript allerdings noch ganz am Anfang. Die entscheidende Idee fehlt mir noch. Vielleicht habt ihr dazu Lösungen für mich?

          Darüber hinaus habe ich nun folgenden Code in Vis unter Skripte eingefügt.

          on ({
          
          id: "0_userdata.0.Meine_Geräte.Nordlichter",
          
          change: 'ne',
          
          val: true
          },
          
          function(){
          
             setStateDelayed('0_userdata.0.Meine_Geräte.Nordlichter', false, 5000, true);
          
                      }
          

          Es tut sich aber nichts. Wenn ich den selben Code im JavaScript Adapter ausführen lasse, funktioniert alles. Wo ist mein Denkfehler?

          Über ein Feedback von Euch wäre ich sehr dankbar!

          Gruß Karel

          1 Reply Last reply
          0
          • RöstkartoffelR Röstkartoffel

            @ben1984

            Ich habe zwar keine Glaskugel für dein Problem, da die Infos doch etwas spärlich sind, aber ich würde das mit Binding machen. Dann brauchst du auch kein Skript:

            {v:dein_Datenpunkt;v < 30 ? "#FDEE00" :: v < 60 ? "#FFA500" :: "#FF0000"}
            

            das trägst du einfach im Widget unter "Farbe" ein.

            PS: du siehst das aber nur in der RunTime, nicht im Editor.

            werner2000xW Offline
            werner2000xW Offline
            werner2000x
            wrote on last edited by
            #6

            @Röstkartoffel Ich habe auch ein Problem mit Scripten.
            Wie kann ich in VIS eine Variable umrechnen so dass ich z.B. eine Temperatur von Kelvin in Grad Celsius anzeigen lasse?14b90591-b874-43c2-8b99-36346f0f59ec-image.png
            Hier im Bild müsste ich von dem Wert 273 abziehen damit der Wert in 18,6 °C angezeigt wird. Ich weiß nicht wie das geht?

            Raspi4 8 GB mit Aqara Zigbee USB, iob und PI-hole
            Innogy Smarthome
            Bosch Bridge 2
            HUE Bridge
            OpenWB Wallbox mit EVU Kit
            Google Nest Pro Hub

            Karel PuhliK 1 Reply Last reply
            0
            • werner2000xW werner2000x

              @Röstkartoffel Ich habe auch ein Problem mit Scripten.
              Wie kann ich in VIS eine Variable umrechnen so dass ich z.B. eine Temperatur von Kelvin in Grad Celsius anzeigen lasse?14b90591-b874-43c2-8b99-36346f0f59ec-image.png
              Hier im Bild müsste ich von dem Wert 273 abziehen damit der Wert in 18,6 °C angezeigt wird. Ich weiß nicht wie das geht?

              Karel PuhliK Offline
              Karel PuhliK Offline
              Karel Puhli
              wrote on last edited by Karel Puhli
              #7

              @werner2000x

              var x = getState('Objekt-ID').val -273;
              

              damit könntest du dir z.B. eine Variable x ausgeben lassen.

              werner2000xW 1 Reply Last reply
              0
              • Karel PuhliK Karel Puhli

                @werner2000x

                var x = getState('Objekt-ID').val -273;
                

                damit könntest du dir z.B. eine Variable x ausgeben lassen.

                werner2000xW Offline
                werner2000xW Offline
                werner2000x
                wrote on last edited by
                #8

                @Karel-Puhli said in VIS -> Allgemein -> Skripte:

                var x = getState('Objekt-ID').val -273;

                Danke. Und wie bekomme ich die Variable x nun in VIS?

                Raspi4 8 GB mit Aqara Zigbee USB, iob und PI-hole
                Innogy Smarthome
                Bosch Bridge 2
                HUE Bridge
                OpenWB Wallbox mit EVU Kit
                Google Nest Pro Hub

                Karel PuhliK 1 Reply Last reply
                0
                • werner2000xW werner2000x

                  @Karel-Puhli said in VIS -> Allgemein -> Skripte:

                  var x = getState('Objekt-ID').val -273;

                  Danke. Und wie bekomme ich die Variable x nun in VIS?

                  Karel PuhliK Offline
                  Karel PuhliK Offline
                  Karel Puhli
                  wrote on last edited by
                  #9

                  @werner2000x

                  Vorschlag:
                  Du legst dir einen neuen Datenpunkt an (hier: "deinneuerDatenpunkt"). Baust dir ein Blockly oder folgendes JavaScript.

                  on({id: "deinThermometer", change: "any"}, async function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true);
                  });
                  

                  Dann noch dein Vis Widget auf deinen neuen Datenpunkt zugreifen lassen, nicht mehr auf das "alte" Thermometer.

                  werner2000xW 1 Reply Last reply
                  0
                  • Karel PuhliK Karel Puhli

                    @werner2000x

                    Vorschlag:
                    Du legst dir einen neuen Datenpunkt an (hier: "deinneuerDatenpunkt"). Baust dir ein Blockly oder folgendes JavaScript.

                    on({id: "deinThermometer", change: "any"}, async function (obj) {
                      var value = obj.state.val;
                      var oldValue = obj.oldState.val;
                      setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true);
                    });
                    

                    Dann noch dein Vis Widget auf deinen neuen Datenpunkt zugreifen lassen, nicht mehr auf das "alte" Thermometer.

                    werner2000xW Offline
                    werner2000xW Offline
                    werner2000x
                    wrote on last edited by
                    #10

                    @Karel-Puhli said in VIS -> Allgemein -> Skripte:

                                                                                                                                                on({id: "deinThermometer", change: "any"}, async function (obj) {                                                                                                                                                                              var value = obj.state.val;                                                                                                                                                                              var oldValue = obj.oldState.val;                                                                                                                                                                              setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true);                                                                                                                                                                            });                                            
                    

                    Das klappt leider auch noch nicht:
                    78433d03-83c4-4a3e-9764-0122b913c52a-image.png
                    Die Variable "Temperatur" steht nirgends in den VIS Objekten und es kommt eine Klammerfehlermeldung.

                    Raspi4 8 GB mit Aqara Zigbee USB, iob und PI-hole
                    Innogy Smarthome
                    Bosch Bridge 2
                    HUE Bridge
                    OpenWB Wallbox mit EVU Kit
                    Google Nest Pro Hub

                    werner2000xW 1 Reply Last reply
                    0
                    • werner2000xW werner2000x

                      @Karel-Puhli said in VIS -> Allgemein -> Skripte:

                                                                                                                                                  on({id: "deinThermometer", change: "any"}, async function (obj) {                                                                                                                                                                              var value = obj.state.val;                                                                                                                                                                              var oldValue = obj.oldState.val;                                                                                                                                                                              setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true);                                                                                                                                                                            });                                            
                      

                      Das klappt leider auch noch nicht:
                      78433d03-83c4-4a3e-9764-0122b913c52a-image.png
                      Die Variable "Temperatur" steht nirgends in den VIS Objekten und es kommt eine Klammerfehlermeldung.

                      werner2000xW Offline
                      werner2000xW Offline
                      werner2000x
                      wrote on last edited by werner2000x
                      #11

                      @werner2000x said in VIS -> Allgemein -> Skripte:

                      on({id: "deinThermometer", change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true); });

                      Jetzt habe ich die Variable gefunden in Javascipt.0
                      a021f217-2f27-4261-bbb8-2f5b15d38d52-image.png

                      Das Script sieht jetzt so aus:
                      on({id: "vw-connect.0.WVGZZZ5NZHW882376.status.data07.field01.value", change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("scriptEnabled.common.Temperatur", ((obj.state ? obj.state.val : "") - 273), true); });

                      läuft aber noch nicht s.Bild;
                      36917eca-412d-4664-b019-87b9768aa25c-image.png

                      Raspi4 8 GB mit Aqara Zigbee USB, iob und PI-hole
                      Innogy Smarthome
                      Bosch Bridge 2
                      HUE Bridge
                      OpenWB Wallbox mit EVU Kit
                      Google Nest Pro Hub

                      werner2000xW 1 Reply Last reply
                      0
                      • werner2000xW werner2000x

                        @werner2000x said in VIS -> Allgemein -> Skripte:

                        on({id: "deinThermometer", change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true); });

                        Jetzt habe ich die Variable gefunden in Javascipt.0
                        a021f217-2f27-4261-bbb8-2f5b15d38d52-image.png

                        Das Script sieht jetzt so aus:
                        on({id: "vw-connect.0.WVGZZZ5NZHW882376.status.data07.field01.value", change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("scriptEnabled.common.Temperatur", ((obj.state ? obj.state.val : "") - 273), true); });

                        läuft aber noch nicht s.Bild;
                        36917eca-412d-4664-b019-87b9768aa25c-image.png

                        werner2000xW Offline
                        werner2000xW Offline
                        werner2000x
                        wrote on last edited by
                        #12

                        @werner2000x
                        oder hier ein neuer Versuch:
                        12e38397-d261-4b10-8bc1-bfedd6a44c75-image.png

                        Raspi4 8 GB mit Aqara Zigbee USB, iob und PI-hole
                        Innogy Smarthome
                        Bosch Bridge 2
                        HUE Bridge
                        OpenWB Wallbox mit EVU Kit
                        Google Nest Pro Hub

                        Karel PuhliK 1 Reply Last reply
                        0
                        • werner2000xW werner2000x

                          @werner2000x
                          oder hier ein neuer Versuch:
                          12e38397-d261-4b10-8bc1-bfedd6a44c75-image.png

                          Karel PuhliK Offline
                          Karel PuhliK Offline
                          Karel Puhli
                          wrote on last edited by Karel Puhli
                          #13

                          @werner2000x

                          Das Skript ist nicht für den Reiter Skripte in VIS, sondern für deine Skripte im JS Adapter.

                          Hast du denn mal im VW Connect Adapter geschaut? Kannst du dort nicht die Einheit in Celsius ändern?

                          werner2000xW 1 Reply Last reply
                          0
                          • Karel PuhliK Karel Puhli

                            @werner2000x

                            Das Skript ist nicht für den Reiter Skripte in VIS, sondern für deine Skripte im JS Adapter.

                            Hast du denn mal im VW Connect Adapter geschaut? Kannst du dort nicht die Einheit in Celsius ändern?

                            werner2000xW Offline
                            werner2000xW Offline
                            werner2000x
                            wrote on last edited by
                            #14

                            @Karel-Puhli Ok, das wusste ich nicht.
                            Habe das Skript nun in IOBroker gebracht - trotzdem Fehler:
                            edb23149-3924-40f9-9e24-e40db6491d3a-image.png

                            Raspi4 8 GB mit Aqara Zigbee USB, iob und PI-hole
                            Innogy Smarthome
                            Bosch Bridge 2
                            HUE Bridge
                            OpenWB Wallbox mit EVU Kit
                            Google Nest Pro Hub

                            Karel PuhliK 1 Reply Last reply
                            0
                            • werner2000xW werner2000x

                              @Karel-Puhli Ok, das wusste ich nicht.
                              Habe das Skript nun in IOBroker gebracht - trotzdem Fehler:
                              edb23149-3924-40f9-9e24-e40db6491d3a-image.png

                              Karel PuhliK Offline
                              Karel PuhliK Offline
                              Karel Puhli
                              wrote on last edited by Karel Puhli
                              #15

                              @werner2000x

                              Schick mal einen kompletten Code vom JS oder einen Screenshot. Steht bei dir alles in einer Zeile (sieht oben so aus, nur Zeile 1)? Womöglich beim Kopieren einen Dreher drin?

                              Der Datenpunkt ist korrekt angelegt? Als Zahl? min -50 max 100? Also für gängige Temperaturen?

                              Am bestern da auch nochmal einen Screenshot.

                              werner2000xW 1 Reply Last reply
                              0
                              • Karel PuhliK Karel Puhli

                                @werner2000x

                                Schick mal einen kompletten Code vom JS oder einen Screenshot. Steht bei dir alles in einer Zeile (sieht oben so aus, nur Zeile 1)? Womöglich beim Kopieren einen Dreher drin?

                                Der Datenpunkt ist korrekt angelegt? Als Zahl? min -50 max 100? Also für gängige Temperaturen?

                                Am bestern da auch nochmal einen Screenshot.

                                werner2000xW Offline
                                werner2000xW Offline
                                werner2000x
                                wrote on last edited by
                                #16

                                @Karel-Puhli Danke für das Angebot.
                                Die Temperatur liegt als dK, also dezi Kelvin vor - hier ist der Werte jetzt 2861.
                                Wenn man den Wert durch zehn teilt und 273 abzieht hat man den richtigen Wert, also 13,1 °C.
                                Die Temperatur ist konstant, der Wert ändert sich also nicht. Nur wenn das Fahrzeug fährt. Jetzt steht es.

                                Raspi4 8 GB mit Aqara Zigbee USB, iob und PI-hole
                                Innogy Smarthome
                                Bosch Bridge 2
                                HUE Bridge
                                OpenWB Wallbox mit EVU Kit
                                Google Nest Pro Hub

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                755

                                Online

                                32.4k

                                Users

                                81.6k

                                Topics

                                1.3m

                                Posts
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Home
                                • Recent
                                • Tags
                                • Unread 0
                                • Categories
                                • Unreplied
                                • Popular
                                • GitHub
                                • Docu
                                • Hilfe