Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. 2 Views automatisch wechseln

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    2 Views automatisch wechseln

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Knusterus last edited by

      Hallo zusammen

      Ist es möglich unter ioBroker vis 2 angelgte Views nach einer bestimmten Zeit einfach zu wechseln.?

      Ich möchte auf dem Tablet einfach beide Views abwechselnd nach ca.30 min. sehen ist das möglch??

      Noch schöner wäre es natürlich wenn sich in View 1 (Statusmeldungen) etwas ändert ,z. Bsp. Briefkasten voll, oder Fenster auf, oder Licht an, das dann immer auf View 1 geschaltet wird.

      Geht so etwas.??

      Volker

      1 Reply Last reply Reply Quote 0
      • R
        RappiRN Most Active last edited by

        Na klar geht das! 😄 http://forum.iobroker.net/viewtopic.php?f=30&t=789&hilit=view+automatisch+umschalten findest du noch ein paar Infos.

        Enrico

        1 Reply Last reply Reply Quote 0
        • K
          Knusterus last edited by

          hallo

          Danke für die schnelle Info.

          Das habe ich auch schon gelesen,nur leider bin ich da nicht richtig schlau geworden.

          Muß ich für jede mögliche Änderung ein solches Programm schreiben ,oder gibt es auch ein Programm mit dem ich jede Änderung erkennen kann ?

          Gibt es da schon was Fertiges??

          Danke schon mal

          Volker

          1 Reply Last reply Reply Quote 0
          • R
            RappiRN Most Active last edited by

            Ne andere, vielleicht einfachere Variante wäre, wenn du über die Option Sichtbarkeit in den Vis-Objekten Symbole sichtbar machst.

            Dafür musst du nur eine Variable verwenden, die du über bestimmte Bedingungen auf Zahlenwerte setzen und diese Werte eben als Bedingung für die Sichtbarkeit der Objekte verwenden.

            Hast du dich schon mal mit Blockly oder eben Javascript direkt beschäftigt? Blockly finde ich als Anfänger recht logisch aufgebaut, da kann man sich schnell einarbeiten.

            Enrico

            1 Reply Last reply Reply Quote 0
            • Peoples
              Peoples last edited by

              Hi,

              ich habe da mal schnell was zusammen geschrieben.

              Hier würde bspw. ein Fensterkontakt "beobachtet" und wenn dessen Status auf "true" wechselt wird die View mit dem Namen "view2" aufgerufen.

              "View2" ist hier zu ersetzen durch den Namen den du deiner View gegeben hast.

              Das "zurückschalten" müsste man dann hier mit einem Button (manuel) machen.

              Alternativ kann hier auch ein Wechsel auf die Ausgangsseite nach Ablauf eines Timers genutzt werden.

              Du könntest nun für jeden gewünschen Sensor eine "on" Bedingung erstellen welche die Funktion seitenwechsel aufruft.

              function seitenwechsel(){
                          setState('vis.0.control.instance', 'FFFFFFFF');
                          setState('vis.0.control.data', 'view2');            // view2 steht für den Namen der View die du anzeigen willst wenn was passiert
                          setState('vis.0.control.command', 'changeView');
              }
              
              // Abfragen des gewünschen Sensors bspw. Fensterkontakt
              // wenn der Status auf true wechselt wird die view2 angezeigt
              on("Sensor der abgefragt werden soll", function(dp) { if(dp.state.val) seitenwechsel(); });
              

              Hoffe es hilft dir

              Gruß

              Peoples

              1 Reply Last reply Reply Quote 0
              • K
                Knusterus last edited by

                hallo zusammen

                Vielen Dank für Eure Hilfe,aber leider komme ich nicht weiter.Ich habe das Programm von peoüles geändert in

                function seitenwechsel(){
                            setState('vis.0.control.instance', 'FFFFFFFF');
                            setState('vis.0.control.data', 'Status');            // view2 steht für den Namen der View die du anzeigen willst wenn was passiert
                            setState('vis.0.control.command', 'changeView');
                }
                // Abfragen des gewünschen Sensors bspw. Fensterkontakt
                // wenn der Status auf true wechselt wird die view2 angezeigt
                on("hm-rpc.0.NEQ0634584.1", function(dp) { if(dp.state.val) seitenwechsel(); });
                
                

                So hatte ich gehofft, das wenn der Fensterkontakt geöffnet wird ,der View "Status" angezeigt wird.nur leider funktioniert es nicht.

                Was habe ich falsch gemacht??

                So habe es hinbekommen hier der richtige Code

                function seitenwechsel(){
                            setState('vis.0.control.instance', 'FFFFFFFF');
                            setState('vis.0.control.data', 'Status');            // view2 steht für den Namen der View die du anzeigen willst wenn was passiert
                            setState('vis.0.control.command', 'changeView');
                }
                // Abfragen des gewünschen Sensors bspw. Fensterkontakt
                // wenn der Status auf true wechselt wird die view2 angezeigt
                on("hm-rpc.0.NEQ0634584.1.STATE", function(dp) { if(dp.state.val) seitenwechsel(); });
                

                Funktioniert Prima.Vielen Dank

                Allerdings möchte ich jetzt noch das zeitgesteuerte zurückschalten auf den View "Info" .Wie kann ich das realiesieren.

                Jetzt noch eine Frage .Wenn der obere Code nicht nur auf den Fensterkontakt sondern auch auf eine Systemvariable (Briefkasten voll) reagieren soll wie müsste der Code dann ausssehen.??

                Danke

                Volker

                Danke schon mal

                Volker

                1 Reply Last reply Reply Quote 0
                • Peoples
                  Peoples last edited by

                  Hi Volker,

                  hier mal die Ergänzung mit dem automatischen Seitenwechsel wie ich es verwende.

                  Ich habe die Komentare direkt in das Script geschrieben, sollten dennoch Fragen vorhanden sein helfe ich gerne weiter.

                  ! ````
                  var instanz = 'javascript.0'; instanz = instanz + '.'; // Javascript instanz

                  var pfad0 = 'Automation'; pfad0 = pfad0 + '.'; // Pfad innerhalb der instanz

                  ! var SwZeit = 180; // Zeit bis automatischer Seitenwechsel
                  ! //Hier erstelle ich einen Datenpunkt der als Timer verwendet wird
                  //diesen lasse ich mir in vis anzeigen als "counter"
                  createState(pfad0 + 'Seitenwechsel_countdown', {def: '0',type: 'number',name: 'Seitenwechsel Counter'});
                  ! // Funktion zum automatischen Seitenwechsel nach Timerablauf
                  function autoseitenwechsel() {

                  var Zeit = setTimeout(function () {
                      var timer = getState(pfad0 + 'Seitenwechsel_countdown').val || SwZeit;
                      if (timer > 1) {
                          setState(pfad0 + 'Seitenwechsel_countdown', timer - 1);
                          autoseitenwechsel();
                      }
                      else{
                          setState(pfad0 + 'Seitenwechsel_countdown', 0);
                          setState('vis.0.control.instance', 'FFFFFFFF'); 
                          setState('vis.0.control.data', 'Home');             // gewünschte Standardseite
                          setState('vis.0.control.command', 'changeView');
                      }
                  }, 1000);
                  

                  }

                  ! // Hier frage ich den Namen der aufgerufenen View ab, wenn die View bspw. Fenster oder Strom ist
                  // wird der Timer aufgerufen, solange bis der Timerwert 0 ist,
                  // dann wird auf die Standardseite umgeleitet
                  ! on("vis.0.control.data", function (dp){/Data for control vis/
                  if( getState("vis.0.control.data").val == "Wandtablet/Fenster" ||
                  getState("vis.0.control.data").val == "Wandtablet/Strom" ){

                      if(getState(instanz + pfad0 + 'Seitenwechsel_countdown').val > 0) {
                          setState(instanz + pfad0 + 'Seitenwechsel_countdown', SwZeit);
                      }
                      else{
                              autoseitenwechsel();
                      }
                  }
                  if( getState("vis.0.control.data").val == "Wandtablet/Home"){
                      setState(pfad0 + 'Seitenwechsel_countdown', 0);
                  }
                  

                  });

                  ! //---------------------- Hast du bereits -----------------------------------------
                  ! // Funktion zum normalen Seitenwechsel
                  function seitenwechsel(){
                  setState('vis.0.control.instance', 'FFFFFFFF');
                  setState('vis.0.control.data', 'Status'); // view2 steht für den Namen der View die du anzeigen willst wenn was passiert
                  setState('vis.0.control.command', 'changeView');
                  }
                  // Abfragen des gewünschen Sensors bspw. Fensterkontakt
                  // wenn der Status auf true wechselt wird die view2 angezeigt
                  on("hm-rpc.0.NEQ0634584.1.STATE", function(dp) { if(dp.state.val) seitenwechsel(); });

                  
                  Wegen deinem Briefkasten sollte genauso funktionieren nur fragst du hier eben deinen Javascriptdatenpunkt ab:
                  

                  // Je nach dem wie du den Datenpunkt genannt hast und was der Status ist (true/false):
                  on("javascript.0.Briefkasten.Briefkastenstatus", function(dp) { if(dp.state.val) seitenwechsel(); });

                  // oder wenn der Status bspw. "voll" und "leer" heißt so:
                  on("javascript.0.Briefkasten.Briefkastenstatus", function(dp) { if(dp.state.val == 'voll' ) seitenwechsel(); });

                  
                  Hoffe es ist verständlich
                  
                  Gruß
                  
                  Peoples
                  1 Reply Last reply Reply Quote 0
                  • K
                    Knusterus last edited by

                    Hi Peoples

                    Vielen Dank für deine Hilfe

                    Ich habe alles gelöst und es funktioniert prima.Da der Status Briefkasten voll und leer über Mikroschalter am Briefkasten abgfragt wird, habe ich die Abfrage auch für den Viewwechsel genutzt.

                    Jetzt bleibt der Statusview solange angezeigt bis der Briefkasten geleert wird.

                    Das ist der Code für den Briefkasten voll

                    function seitenwechsel(){
                                setState('vis.0.control.instance', 'FFFFFFFF');
                                setState('vis.0.control.data', 'Status');            // view2 steht für den Namen der View die du anzeigen willst wenn was passiert
                                setState('vis.0.control.command', 'changeView');
                    }
                    // Abfragen des gewünschen Sensors bspw. Fensterkontakt
                    // wenn der Status auf true wechselt wird die view2 angezeigt
                    on("hm-rpc.0.NEQ0530536.1.STATE", function(dp) { if(dp.state.val) seitenwechsel();});
                    

                    Das der Code für leer

                    function seitenwechsel(){
                                setState('vis.0.control.instance', 'FFFFFFFF');
                                setState('vis.0.control.data', 'Info');            // view2 steht für den Namen der View die du anzeigen willst wenn was passiert
                                setState('vis.0.control.command', 'changeView');
                    }
                    // Abfragen des gewünschen Sensors bspw. Fensterkontakt
                    // wenn der Status auf true wechselt wird die view2 angezeigt
                    on("hm-rpc.0.NEQ0530536.2.STATE", function(dp) { if(dp.state.val) seitenwechsel();});
                    

                    So und hier nochmal der Fensterkontakt mit Zeit

                    function seitenwechsel(){
                                setState('vis.0.control.instance', 'FFFFFFFF');
                                setState('vis.0.control.data', 'Status');            // view2 steht für den Namen der View die du anzeigen willst wenn was passiert
                                setState('vis.0.control.command', 'changeView');
                    }
                    // Abfragen des gewünschen Sensors bspw. Fensterkontakt
                    // wenn der Status auf true wechselt wird die view2 angezeigt
                    on("hm-rpc.0.NEQ0634584.1.STATE", function(dp) { if(dp.state.val) seitenwechsel();
                    setTimeout(function () {
                                          setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Info"}');
                               }, 10000);
                    });
                    

                    Funktioniert alles prima vielen Dank für die Hilfe.

                    Eine Kleinigkeit habe ich noch

                    Ich nutze zur Visualisierung ein Tablet mit der Iobroker App.

                    Da kann man ja über einen Code die Views über wischen wechseln.

                    Gibt es auch einen Code wo die Views automatisch nach einer bestimmte Zeit wechseln?

                    Danke nochmal für die Hilfe

                    Volker

                    1 Reply Last reply Reply Quote 0
                    • Peoples
                      Peoples last edited by

                      Möchtest du die Views einfach wechseln oder mit diesem "wisch effeckt" wechseln?

                      1 Reply Last reply Reply Quote 0
                      • K
                        Knusterus last edited by

                        Die Views sollen einfach durchlaufen ,wie eine Slideshow. Nur die Zeit sollte einstelbar sein.

                        Volker

                        1 Reply Last reply Reply Quote 0
                        • Peoples
                          Peoples last edited by

                          @Knusterus:

                          Die Views sollen einfach durchlaufen ,wie eine Slideshow. Nur die Zeit sollte einstelbar sein.

                          Volker `

                          Naja du könntest die verschiedenen Views, die du durchlaufen lassen möchtest in einem Array auflisten und das dann halt immer wieder durchlaufen lassen.

                          1 Reply Last reply Reply Quote 0
                          • Webranger
                            Webranger last edited by

                            @peoples:

                            Naja du könntest die verschiedenen Views, die du durchlaufen lassen möchtest in einem Array auflisten und das dann halt immer wieder durchlaufen lassen. `

                            Könntest Du erklären wie das geht?

                            Gruss

                            1 Reply Last reply Reply Quote 0
                            • Peoples
                              Peoples last edited by

                              @ringdingringding:

                              @peoples:

                              Naja du könntest die verschiedenen Views, die du durchlaufen lassen möchtest in einem Array auflisten und das dann halt immer wieder durchlaufen lassen. `

                              Könntest Du erklären wie das geht?

                              Gruss `

                              var View = [];                                     
                              
                                  View[0] = "Seite1"; //Name der ersten View die angezeigt werden soll 
                                  View[1] = "Seite2"; //Name der zweiten View die angezeigt werden soll
                                  View[2] = "Seite3"; //Name der dritten View die angezeigt werden soll
                                  View[3] = "Seite4"; //Name der vierten View die angezeigt werden soll
                              // ...
                              
                              function viewWechsel(number) {
                                  time=setTimeout(function () {
                              
                                      setState('vis.0.control.instance', 'FFFFFFFF');
                                      setState('vis.0.control.data', View[number]);            
                                      setState('vis.0.control.command', 'changeView');
                              
                                      log(View[number]);
                                      number = number +1;
                              
                                      if(number== View.length) {
                                          viewWechsel(0);
                                      } else {
                                          viewWechsel(number);
                                      }
                                  }, 5000); // Zeit solange eine View angezeigt werden soll in Millisekunden
                              
                              }
                              viewWechsel(0);
                              

                              Mal schnell zusammengetippt. Bei den Namen musst du exakt den aus Vis angeben. Habe zwar nur geprüft ob der Log richtig durchläuft aber sollte funktionieren. Wenn nicht sag Bescheid dann schau ich mir das nochmal an.

                              U 1 Reply Last reply Reply Quote 1
                              • Webranger
                                Webranger last edited by

                                Klappt nicht!

                                Hab das script eingetragen in VIS/Eigenschaften/script

                                2958_bildschirmfoto_2018-07-26_um_18.22.28.png

                                das Projekt heist Küche, muss ich das auch eintragen oder weis es das?

                                ` > var View = [];

                                View[0] = "Kueche1"; //Name der ersten View die angezeigt werden soll

                                View[1] = "Kueche2"; //Name der zweiten View die angezeigt werden soll

                                // …

                                function viewWechsel(number) {

                                time=setTimeout(function () {

                                setState('vis.0.control.instance', 'FFFFFFFF');

                                setState('vis.0.control.data', View[number]);

                                setState('vis.0.control.command', 'changeView');

                                log(View[number]);

                                number = number +1;

                                if(number== View.length) {

                                viewWechsel(0);

                                } else {

                                viewWechsel(number);

                                }

                                }, 5000); // Zeit solange eine View angezeigt werden soll in Millisekunden

                                }

                                viewWechsel(0); `

                                1 Reply Last reply Reply Quote 0
                                • Peoples
                                  Peoples last edited by

                                  Nicht in vis sondern unter scripte (dort wo deine Sonstigen Javascript bzw blockys liegen)

                                  Und es muss dann eine View geben die kueche1 und kueche2 heißt

                                  1 Reply Last reply Reply Quote 0
                                  • Webranger
                                    Webranger last edited by

                                    Ah ok das gehts und wechselt zwischen Kueche1 und Kueche2

                                    Habe für die beiden views extra ein neues Projekt mit Namen Küche.

                                    und für mein Tablet im Flur Projekt main.

                                    Wenn ich das script von dir jetzt starte tut sich auch was auf dem Tablet im Flur was es ja eigentlich nicht sollte.

                                    Muss ich in dem script noch irgendwo das Projekt eintragen damit sich die beiden nicht in die Quere kommen?

                                    Gruss Danyel

                                    1 Reply Last reply Reply Quote 0
                                    • wendy2702
                                      wendy2702 last edited by

                                      Du musst im Script das „FFFFFFF“ gegen die Browser Instanz des Tablets austauschen von dem Tablet das den View wechseln soll.

                                      Um die raus zu bekommen gibt es ein „resolution“ Widget das neben der Auflösung auch die Instanz anzeigt. Einfach in einen View einfügen, Instanz Nummer aufschreiben und Widget danach wieder löschen.

                                      1 Reply Last reply Reply Quote 0
                                      • Webranger
                                        Webranger last edited by

                                        Danke an alle.

                                        Genau das war es und es läuft.

                                        Super Forum und Community

                                        Weiter so

                                        Gruß Danyel

                                        1 Reply Last reply Reply Quote 0
                                        • G
                                          gfrene last edited by gfrene

                                          Moin zusammen 🙂 Das Script läuft ... aber wie kann ich das umsetzen.

                                          Ich bin in meiner Cam View
                                          Unbenannt.png

                                          so wie man sehen kann sieht man rechts weitere 4 Cam`s.

                                          Nun möchte ich das nur hier (IP-CAM) das Script greift und wenn jetzt wieder auf Home gehe oder eben anderen TAB soll das script nichts machen.
                                          Wenn ich jetzt wieder auf IP-Cam gehe soll das script wieder die weiteren 4 Cams durchlaufen.

                                          Geht das ?

                                          Gruß und danke für die hilfe

                                          Peoples 1 Reply Last reply Reply Quote 0
                                          • U
                                            uhoffmann @Peoples last edited by

                                            @peoples Ich muss mal kurz ein großes DANKE loswerden. Das Script hat bei mir auch super funktioniert und ich finde es klasse, dass Du das mal eben aus dem Ärmel geschüttelt hattest.

                                            Vielen herzlichen Dank auch von mir.

                                            Uli

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            917
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            21
                                            6635
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo