Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [gelöst] Statusdisplay - wechselnde Werteanzeige

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    200

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

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

[gelöst] Statusdisplay - wechselnde Werteanzeige

[gelöst] Statusdisplay - wechselnde Werteanzeige

Scheduled Pinned Locked Moved Visualisierung
6 Posts 3 Posters 2.1k Views
  • 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.
  • M Offline
    M Offline
    Marcolotti
    wrote on last edited by
    #1

    Hallo,

    ich habe mir ein Statusdisplay gebaut und möchte darin verschiedene Werte anzeigen. Diese sollen z.B. alle 20 Sekunden wechseln. Z.B. 20 Sekunden aktueller Verbrauch, 20 Sekunden Gesamtverbrauch oder eben der aktuelle Anruf.

    Gibt es da schon eine Funktion?

    721_unbenannt.jpg

    Viele Grüße

    Marco

    P.S. Ich wünsche allen einen guten Rutsch ins neue Jahr.

    CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

    1 Reply Last reply
    0
    • P Offline
      P Offline
      pix
      wrote on last edited by
      #2

      Das geht über die View in Widget-Widgets.

      Du baust für jede dieser Anzeigen eine kleine immer gleich große View. In die Hauptview packst du DANACH ein Stateful container View in Widget 8. Stelle die Wertezahl auf die Menge der Views (in deinem o.g. Fall 3) und fülle darunter unter "Views" die Namen der drei Views ein.

      Dann kommt ein Javascript ins Spiel. Für den Wechsel der Viewanzeige wird in einem Javascript mit ceateState eine Steuervariable (typ number) erstellt. Die wechselt nun alle 20s ihren Wert von 0 auf 1, 1 auf 2, 2 auf 3, 3 auf 0.

      Je nach Wert wird die entsprechende View angezeigt, wenn du im Stateful container View in Widget 8 die OID der Variable einträgst.

      Brauchst du Hilfe beim Skript? Mann kann das mit schedule oder mit einer Schleife machen.

      Gruß

      Pix

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Marcolotti
        wrote on last edited by
        #3

        Hallo Pix,

        ich habe schonmal ein Script angefangen und wenns funktionieren würde, wäre dieser Beitrag jetzt nicht da. 😉

        Angelegt habe ich die "Variable" Displayzaehler und Displayanzeige.

        Leider geht bei schedule keine Sekundentaktung ala 15 Sekunden oder so. 😞

        Wenn der Zähler auf 1 steht, möchte ich die Livewerte z.B. vom Modbus.PVleistung anzeigen. D.h. ich müsste im Script auch auf Änderungen der jeweiligen Werte reagieren und diese in die Variable Displayanzeige schreiben.

        schedule("*/1 * * * *",  function () { // jede Minute
        setState("Displayzaehler", getState("Displayzaehler").val + 1);
        }); // end of schedule
        
        if (getState("Displayzaehler").val > 2)
            setState("Displayzaehler",0);
        
        if (getState("Displayzaehler").val === 0)
            setState("Displayanzeige", "Test0");
        
        if (getState("Displayzaehler").val  == 1)
            setState("Displayanzeige", "Test1");
        
        if (getState("Displayzaehler").val  == 2)
            setState("Displayanzeige", "Test2"); 
        

        P.S. Hab mir vom Weihnachtsmann ein Java-Buch gewünscht, hab es auch bekommen….

        CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

        1 Reply Last reply
        0
        • Jey CeeJ Online
          Jey CeeJ Online
          Jey Cee
          Developer
          wrote on last edited by
          #4

          Statt schedule würde ich eine endlosschleife bauen in der alle werte nacheinder gelesen und in ein Objekt geschreiben werden. Und die schleife mit wait für 20 sekunden anhalten. So wechselt alle 20 Sekunden der inhalt vom Objekt. Dann ein widget das den inhalt des Objekts in vis anzeigt und fertig ist die wechselnde anzeige.

          Gesendet von meinem Jolla mit Tapatalk

          Persönlicher Support
          Spenden -> paypal.me/J3YC33

          1 Reply Last reply
          0
          • P Offline
            P Offline
            pix
            wrote on last edited by
            #5

            Hallo Marcolotti,

            du solltest lieber eine Schleife mit Intervall (sekundengenau) verwenden. Ich schlage einfach nur die Variante "Zähler" und "View in Widget 8" vor.

            Skript:

            // Rolle
            createState("VIS.View_Zaehler", {name: 'VIS View Nummer (rotierend)'});
            var x = 0,
                delay = 15, // hier Sekunden bis Wechsel eintragen
                max = 3; // maximaler Zähler, Zahl der verschiedenen Views
            
            setInterval(function () {
                setState("javascript.0.VIS.View_Zaehler", x);
                x++;
                if (x == max+1) { // wenn Maximum erreicht, zurücksetzen
                    x = 0;
                }
            }, parseInt(delay,10) * 1000; // in Millisekunden
            
            

            Das passende Widget:

            [{"tpl":"tplStatefulContainerView8","data":{"oid":"javascript.0.VIS.View_Zaehler","visibility-cond":"==","visibility-val":1,"count":"5","name":"Viewwechsel Anzeige","comment":"Views eintragen"},"style":{"left":"128px","top":"891px","z-index":"20"},"widgetSet":"basic"}]
            

            Das sollte dir helfen 🙂

            –----

            Ich habe sowas ähnliches im Einsatz, um in einem Fenster alle paar Sekunden ein wechselndes Webcambild zu zeigen.

            ! Dazu werden ein paar Variablen angelegt. Webcam_Nummer zählt hoch, Webcam_URL ist ein Array, das die URL der verschiedenen Webcams und DIagramme vorhält, Webcam ist dann schließlich der komplette HTTP-Befehl zum Einbinden. Damit übernimmt das Skript einige Funktionen des o.g. Widgets "View in Widget 8". Es werden vom Skript die Inhalte gewechselt, nicht vom Widget auf die Nummer reagiert.
            ! In VIS wird dann ein HTML Widget angelegt und die Quelle über ein Binding mit geschweiften Klammern definiert.

            [{"tpl":"tplHtmlNav","data":{"visibility-cond":"==","visibility-val":1,"html":"![]({javascript.0.VIS.Webcam_URL})","nav_view":"Kamera","sync":false,"name":"Navigation zu Kameras"},"style":{"left":"743px","top":"590px","width":"268px","height":"124px","z-index":"20"},"widgetSet":"basic"}]
            

            ! Mein Skript mit Berücksichtigung der Anwesenheit:

            /* ******************************************* 
               *  VIS Webcam Anzeige: Alternatives Vorgehen mit Bindings und einer Variable
               ******************************************* */
            createState("VIS.Webcam", {name: 'VIS Webcam (rotierend)'});
            createState("VIS.Webcam_URL", {name: 'VIS Webcam URL (rotierend)'});
            createState("VIS.Webcam_Nummer", {name: 'VIS Webcam Nummer (rotierend)'});
            >! var webcam = [];
            >! webcam[0] = 'http://XXXXXXX';
            webcam[1] = 'http://XXXXXXX'; 
            webcam[2] = 'http://www.boerse-frankfurt.de/daxcam/parkettcam_big.m';
            webcam[3] = 'http://XXXXXXX';
            webcam[4] = 'http://XXXXXXX';
            webcam[5] = 'http://XXXXXXX.jpg';
            webcam[6] = 'http://XXXXXXX.jpg';
            webcam[7] = 'http://www.niederschlagsradar.de/image.ashx?type=regioloop®io=XXXXXXX&j=-3&m=&d=&mi=&uhr=&bliksem=0&voor=&srt=loop1stunde';
            // beliebig viele Weitere möglich
            >! // Rolle
            var x = 0;
            
            setInterval(function () {
                setState("javascript.0.VIS.Webcam_URL", webcam[x]); // URL aus Array einfügen und in globale Variable schreiben.
                setState("javascript.0.VIS.Webcam", "![](" + webcam[x] + ")");
                setState("javascript.0.VIS.Webcam_Nummer", x+1);
                if (getState(idAnwesenheit).val == 1) { // Nur bei Anwesenheit wird rotiert (spart Power)
                    x++;
                } else { // bei Abwesenheit Wetterradar
                    x = 7;
                }
                if (x == webcam.length) {
                    x = 0;
                }
            }, 10000;
            >! ````
            
            Gruß,
            
            Pix

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Reply Last reply
            0
            • P Offline
              P Offline
              pix
              wrote on last edited by
              #6

              Sehe gerade, JeyCee war schneller :lol: Er empfiehlt die zweite Methode. Schleife mit wechselndem Inhalt (beides in Javascript definiert).

              Nimm für den Anfang dennoch lieber nur die Schleife (in Javascript) und definiere den Inhalt in VIS.

              Du kannst diese Schleife natürlich auch an anderen Stellen verwenden. Die läuft ja endlos.

              Gruß,

              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              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

              135

              Online

              32.4k

              Users

              81.3k

              Topics

              1.3m

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

              • Don't have an account? Register

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