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. [Frage] Widget-Inhalte im zeitlichen Wechsel anzeigen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    994

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

[Frage] Widget-Inhalte im zeitlichen Wechsel anzeigen

Geplant Angeheftet Gesperrt Verschoben Visualisierung
21 Beiträge 5 Kommentatoren 3.6k 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.
  • HomoranH Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von
    #11

    @dtp:

    Was muss ich denn eingeben, wenn ich gar keine Dezimalstelle haben möchte `
    @dtp:

    toFixed(0) `
    :!:

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #12

      Richtig Homoran und dtp, habe den Skriptkommentar oben editiert, danke für den Hinweis.

      http://www.w3schools.com/jsref/jsref_tofixed.asp

      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
      • D Offline
        D Offline
        dtp
        schrieb am zuletzt editiert von
        #13

        Öh, bin ich jetzt plemplem? Stand da nicht vorhin noch was von zwei Dezimalstellen? :roll: :?

        Egal, nun macht's Sinn.

        EDIT: Puh, doch nicht plemplem. :ugeek:

        ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

        1 Antwort Letzte Antwort
        0
        • Alex1808A Offline
          Alex1808A Offline
          Alex1808
          schrieb am zuletzt editiert von
          #14

          @pix:

            1. bei jeder Änderung der Wetterwerte, die Variable mit den Wetterdaten neu beschrieben wird:

            ! createState('Wetter', { type: 'string', name: 'Wetteranzeige (rotierend)', def: 'leer' }); ! var idLuftfeuchte = 'hier den HM-Datenpunkt eintragen'; var idWindspeed = 'hier den HM-Datenpunkt eintragen'; ! var wetter = []; ! on(idLuftfeuchte, function(data) { wetter[0] = 'Wetter: ' + data.state.val.toFixed(1) + '% Luftfeuchte'; // eine Dezimalstelle }); ! on(idWindspeed, function(data) { wetter[1] = 'Wetter: ' + data.state.val.toFixed(0) + 'km/h Geschwindigkeit'; // keine Dezimalstellen }); ! var x=0; // Zähler auf 0 ! setInterval(function () { setState("javascript."+ instance + ".Wetter", wetter[x]); // rotierende Anzeige in Variable schreiben x++; // hochzählen if (x == wetter.length) x = 0; // wenn zahl der verschiedenen Anzeigen erreicht, wieder nullen. }, 10 * 1000); // alle zehn Sekunden ! `

          Bei der zweite Variante bekomme ich folgendes:

          ! ````
          javascript-0 2016-06-27 15:18:05.716 warn Wrong type of javascript.0.Wetter: "undefined". Please fix, while deprecated and will not work in next versions.
          javascript-0 2016-06-27 15:17:55.689 warn Wrong type of javascript.0.Wetter: "undefined". Please fix, while deprecated and will not work in next versions.
          javascript-0 2016-06-27 15:17:45.662 warn Wrong type of javascript.0.Wetter: "undefined". Please fix, while deprecated and will not work in next versions.
          javascript-0 2016-06-27 15:17:35.644 warn Wrong type of javascript.0.Wetter: "undefined". Please fix, while deprecated and will not work in next versions.
          javascript-0 2016-06-27 15:17:25.618 warn Wrong type of javascript.0.Wetter: "undefined". Please fix, while deprecated and will not work in next versions.
          javascript-0 2016-06-27 15:17:15.593 warn Wrong type of javascript.0.Wetter: "undefined". Please fix, while deprecated and will not work in next versions

          
          Mein angepasste script:
          
          >! ````
          createState('Wetter', {
              type: 'string',
              name: 'Wetteranzeige (rotierend)',
              def: 'leer'
          });
          >! var idLuftfeuchte = 'hm-rpc.0.HEQMEINEHM.1.HUMIDITY';
          var idTemperatur = 'hm-rpc.0.HEQMEINEHM.1.TEMPERATURE';
          >! var wetter = [];
          >! on(idLuftfeuchte, function(data) {
              wetter[0] = 'Wetter: ' + data.state.val.toFixed(0) + '% Luftfeuchte';
          });
          >! on(idTemperatur, function(data) {
              wetter[1] = 'Wetter: ' + data.state.val.toFixed(1) + '°C Lufttemperatur';
          });
          >! var x=0; // Zähler auf 0
          >! setInterval(function () {
              setState("javascript."+ instance + ".Wetter", wetter[x]); // rotierende Anzeige in Variable schreiben
              x++; // hochzählen
              if (x == wetter.length) x = 0; // wenn zahl der verschiedenen Anzeigen erreicht, wieder nullen.
          }, 10 * 1000); // alle zehn Sekunden
          

          MfG

          Alex

          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            dtp
            schrieb am zuletzt editiert von
            #15

            Dummerweise bin ich noch nicht wieder zum Testen des Skripts gekommen. War die letzten Tage mit dem Einrichten meines neuen Surface 3 beschäftigt, das mein iPad Air 2 ablösen soll. Melde mich, sobald ich neue Erkenntnisse gewonnen habe.

            Gruß,

            Thorsten

            ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              dtp
              schrieb am zuletzt editiert von
              #16

              So, funktioniert super.

              Hier mal ein kleines animiertes GIF (einfach drauf klicken, um die Animation zu sehen):

              filename="2016-06-29 20h42_56.gif" index="0">~~

              Danke,

              Thorsten

              ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

              1 Antwort Letzte Antwort
              0
              • Alex1808A Offline
                Alex1808A Offline
                Alex1808
                schrieb am zuletzt editiert von
                #17

                @dtp:

                So, funktioniert super. `

                Welche Variante hast du jetzt benutzt, bei jedem Interval oder bei jeder Änderung der Werte?

                1 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  dtp
                  schrieb am zuletzt editiert von
                  #18

                  Die mit dem Intervall. Allerdings habe ich 3 Sekunden verwendet.

                  ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                  1 Antwort Letzte Antwort
                  0
                  • Alex1808A Offline
                    Alex1808A Offline
                    Alex1808
                    schrieb am zuletzt editiert von
                    #19

                    @dtp:

                    Die mit dem Intervall. Allerdings habe ich 3 Sekunden verwendet. `

                    Alles klar!

                    Danke für die info.

                    1 Antwort Letzte Antwort
                    0
                    • D Offline
                      D Offline
                      dtp
                      schrieb am zuletzt editiert von
                      #20

                      Hi,

                      ich bin's noch mal. Das obige Skript von @Pix funktioniert bei mir absolut ohne Probleme. Nochmals vielen Dank dafür.

                      Jetzt habe ich aber eine Situation, wo ich doch eher den periodischen Wechsel zweier übereinander gelegter Widgets benötige. Es geht um folgendes:

                      Ich lasse mir mit einem Widget den Zustand des Haustürschlosses (verriegelt -> grün, entriegelt -> rot) anzeigen. Nun habe ich das noch um die Zustandsanzeige des Tagesriegels (siehe https://homematic-forum.de/forum/viewtopic.php?f=19&t=36961) erweitert. Aus Platzgründen möchte ich beides an derselben Stelle im View anzeigen. Und zwar derart, dass bei entriegeltem Tagesriegel dessen Widget mit rotem Hintergrund im sekündlichen Wechsel mit dem Haustürschloss-Widget angezeigt wird. Ist der Tagesriegel dagegen verriegelt, soll nur das Haustürschloss-Widget angezeigt werden.

                      Gibt es eine Möglichkeit, per Javaskript direkt auf die Sichtbarkeit eines Widgets Einfluss zu nehmen?

                      Gruß,

                      Thorsten

                      ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                      1 Antwort Letzte Antwort
                      0
                      • D Offline
                        D Offline
                        dtp
                        schrieb am zuletzt editiert von
                        #21

                        So,

                        hab eine Lösung gefunden:

                        // Wechselnde Widget-Anzeige für Tagesriegel und Haustürschloss
                        
                        createState('vis.HaustuerSwitch', {
                          read: true,
                          write: true,
                          desc: 'vis.HaustuerSwitch',
                          type: 'number',
                          name: 'rotierende Haustüranzeige',
                          min: 0,
                          max: 1,
                          def: 0,
                        });
                        
                        var count = 0; // Zähler auf 0
                        var IntervalId;
                        
                        on("hm-rega.0.4038", function(obj){ // HomeMatic Systemvariable "EG Haustür SV Tagesriegel"
                          if(obj.state.val === 0){
                            clearInterval(IntervalId);
                            setState("javascript."+ instance + ".vis.HaustuerSwitch", 0);
                          }
                          else if(obj.state.val === 1){
                            IntervalId = setInterval(function(){
                              setState("javascript."+ instance + ".vis.HaustuerSwitch", count); // rotierende Anzeige in Variable schreiben
                              count++; // hoch zählen
                              if(count == 2) count = 0; // wenn Zahl der verschiedenen Anzeigen erreicht, wieder nullen.
                            }, 2 * 1000); // alle zwei Sekunden
                          }
                        });
                        

                        Das obige Skript macht nichts anderes, als bei Änderung der HomeMatic-Systemvariablen "EG Haustür SV Tagesriegel" die Variable "javascript.0.vis.HaustuerSwitch" im zweisekündigen Wechsel von 0 auf 1 zu schalten, sofern "EG Haustür SV Tagesriegel" den Wert 1 (entriegelt) angenommen hat, und dauerhaft auf 0 zu schalten, sofern "EG Haustür SV Tagesriegel" den Wert 0 (verriegelt) angenommen hat. In den entsprechenden Widgets wird dann die Sichtbarkeit in Abhängigkeit von "javascript.0.vis.HaustuerSwitch" gesetzt, und zwar derart, dass das eine Widget sichtbar ist, wenn "javascript.0.vis.HaustuerSwitch" den Wert 0 angenommen hat, und dass das andere Widget sichtbar ist, wenn "javascript.0.vis.HaustuerSwitch" den Wert 1 angenommen hat. That's it.

                        So sieht das Ganze dann in vis aus (rechts oben befinden sich die fraglichen Widgets).

                        996_tagesriegel.gif

                        Mit dem obigen Skript kann man übrigens im zeitlichen Wechsel beliebig viele übereinander liegende Widgets anzeigen. Nehmen wir an, wir wollen auf diese Weise "n" Widgets behandelt, dann müssen lediglich "if(count == n+1)…" und "max: n," im Skript gesetzt werden.

                        Gruß,

                        Thorsten

                        PS.: Ein wenig Bauchschmerzen bereitete mir die lokale Variable "IntervalId", die notwendig ist, um den zeitlichen Werte-Wechsel für "javascript.0.vis.HaustuerSwitch" zu stoppen, da diese Variable erst gesetzt wird, wenn "EG Haustür SV Tagesriegel" auf 1 gesetzt wurde. Allerdings habe ich im Log bisher keine Fehler oder Warnungen diesbezüglich angezeigt bekommen.

                        ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                        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

                        665

                        Online

                        32.6k

                        Benutzer

                        82.3k

                        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