Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. vis-Skript - CSS-Klassen in Abhängikeit von DP zuschalten

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    216

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    216

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    890

vis-Skript - CSS-Klassen in Abhängikeit von DP zuschalten

Geplant Angeheftet Gesperrt Verschoben Visualisierung
10 Beiträge 3 Kommentatoren 693 Aufrufe 3 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    prorun
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,

    aktuell schalte ich in meiner vis einen Nachtmodus über ein Skript ein, dass mir ab einer bestimmten Uhrzeit bestimmte CSS-Klassen aktiviert.

    if((hour >= 21) || (hour <= 6)) {
        $("#vis_container").addClass("nightmode");
    }
    

    Anstatt der Uhrzeit würde ich gerne einen DP nutzen mit dem ich den Nachtmodus aktivieren kann: 0_userdata.0.Eigene_Objekte.vis.Nachtmodus

    Folgendes habe ich bereits ausprobiert, jedoch ohne Erfolg:

      if (getState("0_userdata.0.Eigene_Objekte.vis.Nachtmodus").val === true) {
        $("#vis_container").addClass("nightmode");
    }
    
    //ODER
    
      if (("0_userdata.0.Eigene_Objekte.vis.Nachtmodus").val === true) {
        $("#vis_container").addClass("nightmode");
    }
    

    Kann mir bitte jemand auf die Sprünge helfen?

    liv-in-skyL 1 Antwort Letzte Antwort
    0
    • P prorun

      Hallo Zusammen,

      aktuell schalte ich in meiner vis einen Nachtmodus über ein Skript ein, dass mir ab einer bestimmten Uhrzeit bestimmte CSS-Klassen aktiviert.

      if((hour >= 21) || (hour <= 6)) {
          $("#vis_container").addClass("nightmode");
      }
      

      Anstatt der Uhrzeit würde ich gerne einen DP nutzen mit dem ich den Nachtmodus aktivieren kann: 0_userdata.0.Eigene_Objekte.vis.Nachtmodus

      Folgendes habe ich bereits ausprobiert, jedoch ohne Erfolg:

        if (getState("0_userdata.0.Eigene_Objekte.vis.Nachtmodus").val === true) {
          $("#vis_container").addClass("nightmode");
      }
      
      //ODER
      
        if (("0_userdata.0.Eigene_Objekte.vis.Nachtmodus").val === true) {
          $("#vis_container").addClass("nightmode");
      }
      

      Kann mir bitte jemand auf die Sprünge helfen?

      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von
      #2

      @prorun

      ein beispiel für das abfragen eines dp und auch für das setzen:

      
      setInterval(function(){
            Self.servConn.getStates(['0_userdata.0.CONTROL-OWN.ECHO8.Echo2Player-PP','javascript.0.YouTube.whichDevice'], (error, states) => {  /*console.log(states); */
      
        if (states['javascript.0.YouTube.whichDevice'].val != 2) {
      if (x.duration > 0 && !x.paused) {
         vis.setValue('0_userdata.0.CONTROL-OWN.ECHO8.Echo2PlayerStatus',true);
         isRunning=true;
      
      
      } else {
         vis.setValue('0_userdata.0.CONTROL-OWN.ECHO8.Echo2PlayerStatus',false);
         isRunning=false;
        
        /*  console.log("paused")*/}
      
      ....
      ....
      
      
      }
      
      } );       /* ende getState*/
      }, 5000)   /* ende Interval*/
      
        }, timeout12); 
        
      

      das gibt es nicht in der vis:

       if (("0_userdata.0.Eigene_Objekte.vis.Nachtmodus").val
      

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      1 Antwort Letzte Antwort
      0
      • OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von
        #3

        @prorun

        warum machst du das nicht per binding direkt in vis?
        du klickst in vis irgendwo hin, so das kein widget selektiert ist
        dann siehst du rechts die Eigenschaften.
        Dort öffnest du den Abschnitt CSS-Allgemein i welchem sich das Feld css klasse befindet
        dort könntest du dann den folgenden Text eintragen

        {value:javascript.0.hintergrundmodus;value=="night"?"night":"day"}
        

        was bedeutet, wenn im datenpunkt das wort night drin steht, wird dem iobroker container die css klasse night hinzugefügt, sonst day

        danach kannst du deine css klassen wie gehabt im css-reiter definieren

        https://forum.iobroker.net/topic/12320/gelöst-css-für-widget-background/3

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        P 1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @prorun

          warum machst du das nicht per binding direkt in vis?
          du klickst in vis irgendwo hin, so das kein widget selektiert ist
          dann siehst du rechts die Eigenschaften.
          Dort öffnest du den Abschnitt CSS-Allgemein i welchem sich das Feld css klasse befindet
          dort könntest du dann den folgenden Text eintragen

          {value:javascript.0.hintergrundmodus;value=="night"?"night":"day"}
          

          was bedeutet, wenn im datenpunkt das wort night drin steht, wird dem iobroker container die css klasse night hinzugefügt, sonst day

          danach kannst du deine css klassen wie gehabt im css-reiter definieren

          https://forum.iobroker.net/topic/12320/gelöst-css-für-widget-background/3

          P Offline
          P Offline
          prorun
          schrieb am zuletzt editiert von prorun
          #4

          @oliverio

          Vielen Dank für den Hinweis, jedoch passt das nicht ganz zu meiner Architektur. Ich verwende zu fast jedem Widget andere Werte im Nachtmodus. Mit dem Skript überschreibe ich dann ab einer bestimmten Uhrzeit die Werte aus den eigentlichen CSS-Klassen mit den Werten aus den .nightmode CSS-Klassen. Anbei ein Beispiel:

          .textbox {
              font-size: 10px; 
              padding: 10px 15px 30px; 
              box-shadow: 0px 0px 20px #cfcfcf;
              border-radius: 8px; 
              z-index: 5; 
              background: #fff;
              border: 0px;
          }
          
          .nightmode .textbox {
              background: #000;
              box-shadow: 0px 0px 0px #333;
          }
          

          @liv-in-sky
          Ich bin dank deines Beispiels mit meinem Skript zwar etwas weiter gekommen sodass ich jetzt entsprechend den Uhrzeiten (ohne ein zusätzliches Java-Skript) einen Datenpunkt direkt aus dem vis-Skript geschalten bekomme

          var date = new Date(); 
          var hour = date.getHours(); 
          setTimeout("document.location.reload();",600000);
          if((hour >= 19) || (hour <= 18)) {
              $("#vis_container").addClass("nightmode");
              vis.setValue('0_userdata.0.Eigene_Objekte.vis.Nachtmodus',true);
          }
          else {
              vis.setValue('0_userdata.0.Eigene_Objekte.vis.Nachtmodus',false);
          }
          

          Somit bekomme ich mein Problem jetzt über einen Umweg gelöst.
          Dennoch wäre es für mich sehr interessant wie der Code aussehen würde wenn die Wenn-Bedingung nicht die Uhrzeit sondern der Wert eines Datenpunktes wäre. Das habe ich jetzt trotz des Beispiels leider nicht abgeleitet bekommen.

          Hintergrund: ich würde gerne je nach dem ob der Nachtmodus aktiviert ist einige Widgets anzeigen oder nicht (das bekomme ich jetzt mit der o.g. Anpassung hin) und außerdem wäre es schön den Nachtmodus zusätzlich zur Zeit auch per DP ein- und ausschalten zu können (das fehlt mir noch, dazu würde ich die if-Abfrage bezogen auf einen DP im vis-skript benötigen)

          Folgendes habe ich ausprobiert, jedoch ohne Erfolgt:

          if (states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val == true) {
              $("#vis_container").addClass("nightmode");
          }
          
          

          Wenn das funktionieren würde hätte ich zum einen meine nightmode-Klassen bei DP=true und zusätzlich würde ich diesen DP par Java-Skript über die Uhrzeit steuern.

          liv-in-skyL 1 Antwort Letzte Antwort
          0
          • P prorun

            @oliverio

            Vielen Dank für den Hinweis, jedoch passt das nicht ganz zu meiner Architektur. Ich verwende zu fast jedem Widget andere Werte im Nachtmodus. Mit dem Skript überschreibe ich dann ab einer bestimmten Uhrzeit die Werte aus den eigentlichen CSS-Klassen mit den Werten aus den .nightmode CSS-Klassen. Anbei ein Beispiel:

            .textbox {
                font-size: 10px; 
                padding: 10px 15px 30px; 
                box-shadow: 0px 0px 20px #cfcfcf;
                border-radius: 8px; 
                z-index: 5; 
                background: #fff;
                border: 0px;
            }
            
            .nightmode .textbox {
                background: #000;
                box-shadow: 0px 0px 0px #333;
            }
            

            @liv-in-sky
            Ich bin dank deines Beispiels mit meinem Skript zwar etwas weiter gekommen sodass ich jetzt entsprechend den Uhrzeiten (ohne ein zusätzliches Java-Skript) einen Datenpunkt direkt aus dem vis-Skript geschalten bekomme

            var date = new Date(); 
            var hour = date.getHours(); 
            setTimeout("document.location.reload();",600000);
            if((hour >= 19) || (hour <= 18)) {
                $("#vis_container").addClass("nightmode");
                vis.setValue('0_userdata.0.Eigene_Objekte.vis.Nachtmodus',true);
            }
            else {
                vis.setValue('0_userdata.0.Eigene_Objekte.vis.Nachtmodus',false);
            }
            

            Somit bekomme ich mein Problem jetzt über einen Umweg gelöst.
            Dennoch wäre es für mich sehr interessant wie der Code aussehen würde wenn die Wenn-Bedingung nicht die Uhrzeit sondern der Wert eines Datenpunktes wäre. Das habe ich jetzt trotz des Beispiels leider nicht abgeleitet bekommen.

            Hintergrund: ich würde gerne je nach dem ob der Nachtmodus aktiviert ist einige Widgets anzeigen oder nicht (das bekomme ich jetzt mit der o.g. Anpassung hin) und außerdem wäre es schön den Nachtmodus zusätzlich zur Zeit auch per DP ein- und ausschalten zu können (das fehlt mir noch, dazu würde ich die if-Abfrage bezogen auf einen DP im vis-skript benötigen)

            Folgendes habe ich ausprobiert, jedoch ohne Erfolgt:

            if (states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val == true) {
                $("#vis_container").addClass("nightmode");
            }
            
            

            Wenn das funktionieren würde hätte ich zum einen meine nightmode-Klassen bei DP=true und zusätzlich würde ich diesen DP par Java-Skript über die Uhrzeit steuern.

            liv-in-skyL Offline
            liv-in-skyL Offline
            liv-in-sky
            schrieb am zuletzt editiert von liv-in-sky
            #5

            @prorun

            denke, es müßte so aussehen

             Self.servConn.getStates(['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'], (error, states) => {  /*console.log(states); */
             if (states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val == true) { 
                $("#vis_container").addClass("nightmode");
                           }
            } );       /* ende getState*/
            

            damit das ganze aber auch wirklich getriggert wird, muss du eine interval function außenrum machen - so wird alle 15 sek gecheckt, wie der dp steht.

             setInterval(function(){
            
             Self.servConn.getStates(['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'], (error, states) => {  /*console.log(states); */
             if (states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val == true) { 
                $("#vis_container").addClass("nightmode");
                           }
            } );       /* ende getState*/
            
            
            }, 15000)   /* ende Interval*
            
            

            habe das ganze nicht getestet - das überlasse ich dir

            nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

            P 1 Antwort Letzte Antwort
            0
            • liv-in-skyL liv-in-sky

              @prorun

              denke, es müßte so aussehen

               Self.servConn.getStates(['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'], (error, states) => {  /*console.log(states); */
               if (states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val == true) { 
                  $("#vis_container").addClass("nightmode");
                             }
              } );       /* ende getState*/
              

              damit das ganze aber auch wirklich getriggert wird, muss du eine interval function außenrum machen - so wird alle 15 sek gecheckt, wie der dp steht.

               setInterval(function(){
              
               Self.servConn.getStates(['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'], (error, states) => {  /*console.log(states); */
               if (states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val == true) { 
                  $("#vis_container").addClass("nightmode");
                             }
              } );       /* ende getState*/
              
              
              }, 15000)   /* ende Interval*
              
              

              habe das ganze nicht getestet - das überlasse ich dir

              P Offline
              P Offline
              prorun
              schrieb am zuletzt editiert von prorun
              #6

              @liv-in-sky

              funktioniert leider nicht. im ioB-Log wird leider auch nichts ausgegeben.

              wollte den vis.adapter mal zur Überprüfung auf debug stellen aber das kennt er anscheinend nicht
              "State "system.adapter.vis.0.logLevel" has no existing object, this might lead to an error in future versions"

              Aber trotzdem vielen Dank für die Mühe!

              OliverIOO liv-in-skyL 2 Antworten Letzte Antwort
              0
              • P prorun

                @liv-in-sky

                funktioniert leider nicht. im ioB-Log wird leider auch nichts ausgegeben.

                wollte den vis.adapter mal zur Überprüfung auf debug stellen aber das kennt er anscheinend nicht
                "State "system.adapter.vis.0.logLevel" has no existing object, this might lead to an error in future versions"

                Aber trotzdem vielen Dank für die Mühe!

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von
                #7

                @prorun
                dann könntest du noch ein html widget anlegen,
                dort ein scriptblock rein
                dann per binding einer variable den wert des datenpunkts zuweisen,
                auswerten und mit jquery addClass den entsprechenden Knoten seine Klasse zuweisen

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                1 Antwort Letzte Antwort
                0
                • P prorun

                  @liv-in-sky

                  funktioniert leider nicht. im ioB-Log wird leider auch nichts ausgegeben.

                  wollte den vis.adapter mal zur Überprüfung auf debug stellen aber das kennt er anscheinend nicht
                  "State "system.adapter.vis.0.logLevel" has no existing object, this might lead to an error in future versions"

                  Aber trotzdem vielen Dank für die Mühe!

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  schrieb am zuletzt editiert von
                  #8

                  @prorun

                  console.log wird z.b. in chrome in den entwicklertools unter konsole angezeigt !

                  wenn du in den entwicklertools bist, kannst du die seite refreshen und unter konsole wirden dir auch alle fehler angezeigt - sonst wüßte ich nicht, wie man debugggen könnte

                  lass dir mal die states ausgeben - innerhalb der getStaetes function

                  z.b.

                  console.log(states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val);
                  

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  P 1 Antwort Letzte Antwort
                  0
                  • liv-in-skyL liv-in-sky

                    @prorun

                    console.log wird z.b. in chrome in den entwicklertools unter konsole angezeigt !

                    wenn du in den entwicklertools bist, kannst du die seite refreshen und unter konsole wirden dir auch alle fehler angezeigt - sonst wüßte ich nicht, wie man debugggen könnte

                    lass dir mal die states ausgeben - innerhalb der getStaetes function

                    z.b.

                    console.log(states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val);
                    
                    P Offline
                    P Offline
                    prorun
                    schrieb am zuletzt editiert von
                    #9

                    @OliverIO
                    Vielen Dank für die guten Tipps. Würde es aber gerne vorerst über das Skript versuchen wollen.

                    @liv-in-sky
                    da kommt im Log nix an. nutze zwar firefox aber der hat ebenfalls die Entwicklerkonsole an bord. sehe alle möglichen state-initialisierungen da drin und auch einen "ws connection error" der mich etwas stutzig macht aber keine Log-Ausgabe die zu unserem Skript passen könnte.

                    habe es jetzt wie folgt im skript stehen:

                     Self.servConn.getStates(['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'], (error, states) => {  
                    
                     console.log(states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val);
                    
                     if (states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val == true) { 
                        $("#vis_container").addClass("nightmode");
                                   }
                    
                         
                     } );       /* ende getState*/
                    
                    liv-in-skyL 1 Antwort Letzte Antwort
                    0
                    • P prorun

                      @OliverIO
                      Vielen Dank für die guten Tipps. Würde es aber gerne vorerst über das Skript versuchen wollen.

                      @liv-in-sky
                      da kommt im Log nix an. nutze zwar firefox aber der hat ebenfalls die Entwicklerkonsole an bord. sehe alle möglichen state-initialisierungen da drin und auch einen "ws connection error" der mich etwas stutzig macht aber keine Log-Ausgabe die zu unserem Skript passen könnte.

                      habe es jetzt wie folgt im skript stehen:

                       Self.servConn.getStates(['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'], (error, states) => {  
                      
                       console.log(states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val);
                      
                       if (states['0_userdata.0.Eigene_Objekte.vis.Nachtmodus'].val == true) { 
                          $("#vis_container").addClass("nightmode");
                                     }
                      
                           
                       } );       /* ende getState*/
                      
                      liv-in-skyL Offline
                      liv-in-skyL Offline
                      liv-in-sky
                      schrieb am zuletzt editiert von
                      #10

                      @prorun

                      habe nochmal getestet mit einem dp von mir:

                      
                       setInterval( () => {
                       Self.servConn.getStates(['0_userdata.0.CONTROL-OWN.AAATEST.TestLogic2'], (error, states) => {  
                      var date = new Date(); 
                      var sek = date.getSeconds(); 
                      
                       console.log('der dp ist: '+states['0_userdata.0.CONTROL-OWN.AAATEST.TestLogic2'].val +' Sekunde: '+sek);
                        
                       if (states['0_userdata.0.CONTROL-OWN.AAATEST.TestLogic2'].val == true) { 
                      
                          console.log("jetzt im Script in if - true");    } else  {console.log("jetzt im Script in if - false");}
                          
                          vis.setValue('0_userdata.0.CONTROL-OWN.AAATEST.TestLogic2',!states['0_userdata.0.CONTROL-OWN.AAATEST.TestLogic2'].val)
                      
                       } );       /* ende getState*/
                      
                      }, 5000)
                      
                      

                      hier die logs im entwicklertool in chrome:

                      script-vis.gif

                      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                      1 Antwort Letzte Antwort
                      0

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      478

                      Online

                      32.8k

                      Benutzer

                      82.8k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe