Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [gelöst] Statusdisplay - wechselnde Werteanzeige

NEWS

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

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

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

[gelöst] Statusdisplay - wechselnde Werteanzeige

Geplant Angeheftet Gesperrt Verschoben Visualisierung
6 Beiträge 3 Kommentatoren 2.1k Aufrufe
  • Ä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.
  • M Offline
    M Offline
    Marcolotti
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        Marcolotti
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • Jey CeeJ Online
          Jey CeeJ Online
          Jey Cee
          Developer
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            pix
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              814

              Online

              32.4k

              Benutzer

              81.5k

              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