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. Tester
  4. Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

NEWS

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

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

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

Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

Geplant Angeheftet Gesperrt Verschoben Tester
appdark-modeiqontrolresponsivevisvisualisierungvisualizationwidget
7.6k Beiträge 296 Kommentatoren 7.0m Aufrufe 201 Watching
  • Ä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.
  • s.bormannS s.bormann

    @dslraser sagte in iQontrol Vis Support Thread:

    @s-bormann
    Hallo Sebastian, funktioniert. Tolle Erweiterung.
    Aber eine Frage, ist das jetzt erstmal nur bei den Counter/Table Widget drinn ? Also noch nicht bei den „normalen“ Widget oder Geräten ?

    Hi, ja, erst mal nur da. Wie gesagt, die Größe des Inhaltes eines iFrames kann nicht direkt ermittelt werden, sondern muss vom Widget aktiv per postMessage gemeldet werden. iQontrol kann dazu die postMessage "adjustHeight" mit der gewünschten Höhe als Wert empfangen. Im Widget muss die entsprechende Logik eingebaut werden, die die gewünschte Höhe an iQontrol meldet.

    Beim JSON-Table-Widget sieht das so aus:

    		//Adjust height
    		var tableResizeObserver;
    		var tableResizeObserverTimeout = false;
    		var tableResizeObserverOldHeight = 0;
    		function applyAdjustHeight(){
    			if(adjustHeight && getUrlParameter("allowAdjustHeight") == "true"){
    				console.log("Starting table resize observer to adjust height");
    				if (tableResizeObserver){
    					tableResizeObserver.disconnect();
    				} else {
    					tableResizeObserver = new MutationObserver(adjustHeightFunction);
    				}
    				tableResizeObserver.observe(document.querySelector('#jsonTableContent'), {attributes: true, attributeOldValue: true, childList: false, subtree: true});
    				adjustHeightNow();
    			}
    		}
    		function adjustHeightNow(){
    			adjustHeightFunction([{attributeName: 'style'}]);
    		}
    		function adjustHeightFunction(mutationList){
    			mutationList.forEach(function(mutation){
    				if (mutation.attributeName === 'style' && !tableResizeObserverTimeout){
    					tableResizeObserverTimeout = setTimeout(function(){
    						var height = $('#jsonTableContent').innerHeight();
    						if (tableResizeObserverOldHeight != height){
    							console.log("adjustHeight to table: " + height);
    							window.parent.postMessage({ command: "adjustHeight" , value: height }, "*");
    						}
    						tableResizeObserverOldHeight = height;
    						tableResizeObserverTimeout = false;
    					}, 10);
    				}
    			});
    		}
    		
    		//send postMessages
    		function sendPostMessage(command, stateId, value){
    			message = { command: command, stateId: stateId, value: value };
    			window.parent.postMessage(message, "*");
    		}
    

    Auf den #jsonTableContent wird ein sog. MutationObserver angesetzt, der auf Änderungen am Styling des Elements reagiert und dann die Funktion adjustHeightFunction aufruft.
    Da wird geprüft, ob sich die Höhe geändert hat. Wenn ja, wird das ganze (mit einem kleinen Timeout, um zu viele Meldungen in zu kurzer Zeit zu verhindern) per postMessage gemeldet.

    Bei normalen Geräten (nicht Widgets) kann man ja die Größe des Gerätes dem STATE anpassen lassen.

    M Offline
    M Offline
    meerkat
    schrieb am zuletzt editiert von meerkat
    #7037

    Moin @s-bormann ,

    kann man dieses auch in der Darstellung der Counter einbinden? So dass Counter mit mehreren Elementen automatisch vergrößert wird.

    Gruß

    EDIT: Habe es gerade selber gefunden!

    1 Antwort Letzte Antwort
    1
    • A Offline
      A Offline
      Adnim
      schrieb am zuletzt editiert von
      #7038

      Hi,
      hatte den Adapter installiert möchte ihn aber im moment wieder runter haben. Nach löschen des Adapters kommen aber die Fehlermeldungen unten?
      Jemand nen Tipp wie ich das wegbekomme? oder kann ich noch infos liefern?

      javascript.0
      2022-03-14 16:20:47.273	error	Cannot write file /htmldisc.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.273	error	Cannot write file /htmllan.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.273	error	Cannot write file /htmlwlan.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.273	error	Cannot write file /htmlclients.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.273	error	Cannot write file /htmldisc.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.273	error	Cannot write file /htmllan.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.273	error	Cannot write file /htmlwlan.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.272	error	Cannot write file /htmlinfo.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.272	error	Cannot write file /htmlalarm.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.272	error	Cannot write file /htmlvoucher.html: iqontrol.meta is not an object of type "meta"
      
      javascript.0
      2022-03-14 16:20:47.272	error	Cannot write file /htmlclients.html: iqontrol.meta is not an object of type "meta"
      

      Danke für Hilfe!

      da_WoodyD s.bormannS 2 Antworten Letzte Antwort
      0
      • A Adnim

        Hi,
        hatte den Adapter installiert möchte ihn aber im moment wieder runter haben. Nach löschen des Adapters kommen aber die Fehlermeldungen unten?
        Jemand nen Tipp wie ich das wegbekomme? oder kann ich noch infos liefern?

        javascript.0
        2022-03-14 16:20:47.273	error	Cannot write file /htmldisc.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.273	error	Cannot write file /htmllan.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.273	error	Cannot write file /htmlwlan.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.273	error	Cannot write file /htmlclients.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.273	error	Cannot write file /htmldisc.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.273	error	Cannot write file /htmllan.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.273	error	Cannot write file /htmlwlan.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.272	error	Cannot write file /htmlinfo.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.272	error	Cannot write file /htmlalarm.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.272	error	Cannot write file /htmlvoucher.html: iqontrol.meta is not an object of type "meta"
        
        javascript.0
        2022-03-14 16:20:47.272	error	Cannot write file /htmlclients.html: iqontrol.meta is not an object of type "meta"
        

        Danke für Hilfe!

        da_WoodyD Offline
        da_WoodyD Offline
        da_Woody
        schrieb am zuletzt editiert von
        #7039

        @adnim du meinst, das hat jetzt was mit IQ zu tun. kann sein, aber hast du da auch java sripts eingebunden gehabt? wenn du die scripts dazu nicht löscht, dann ist das logisch.

        gruß vom Woody
        HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

        A 1 Antwort Letzte Antwort
        0
        • da_WoodyD da_Woody

          @adnim du meinst, das hat jetzt was mit IQ zu tun. kann sein, aber hast du da auch java sripts eingebunden gehabt? wenn du die scripts dazu nicht löscht, dann ist das logisch.

          A Offline
          A Offline
          Adnim
          schrieb am zuletzt editiert von
          #7040

          @da_woody nö es gibt keine skripts dazu. kann auch vom controller sein k.a irgendwo muss ich ja anfangen zu fragen^^

          dslraserD da_WoodyD 2 Antworten Letzte Antwort
          0
          • A Adnim

            @da_woody nö es gibt keine skripts dazu. kann auch vom controller sein k.a irgendwo muss ich ja anfangen zu fragen^^

            dslraserD Offline
            dslraserD Offline
            dslraser
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #7041

            @adnim sagte in Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread):

            @da_woody nö es gibt keine skripts dazu. kann auch vom controller sein k.a irgendwo muss ich ja anfangen zu fragen^^

            Cannot write file /htmlvoucher.html:
            

            sieht aber so aus wie ein Script ? Unifi ?

            1 Antwort Letzte Antwort
            1
            • A Adnim

              @da_woody nö es gibt keine skripts dazu. kann auch vom controller sein k.a irgendwo muss ich ja anfangen zu fragen^^

              da_WoodyD Offline
              da_WoodyD Offline
              da_Woody
              schrieb am zuletzt editiert von
              #7042

              @adnim hehe, dagegen ist ja auch nichts zu sagen. aber, wenn du die fehlermeldung ansiehst, javascript, diverse .html. deswegen meine frage...

              gruß vom Woody
              HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

              1 Antwort Letzte Antwort
              1
              • A Adnim

                Hi,
                hatte den Adapter installiert möchte ihn aber im moment wieder runter haben. Nach löschen des Adapters kommen aber die Fehlermeldungen unten?
                Jemand nen Tipp wie ich das wegbekomme? oder kann ich noch infos liefern?

                javascript.0
                2022-03-14 16:20:47.273	error	Cannot write file /htmldisc.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.273	error	Cannot write file /htmllan.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.273	error	Cannot write file /htmlwlan.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.273	error	Cannot write file /htmlclients.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.273	error	Cannot write file /htmldisc.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.273	error	Cannot write file /htmllan.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.273	error	Cannot write file /htmlwlan.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.272	error	Cannot write file /htmlinfo.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.272	error	Cannot write file /htmlalarm.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.272	error	Cannot write file /htmlvoucher.html: iqontrol.meta is not an object of type "meta"
                
                javascript.0
                2022-03-14 16:20:47.272	error	Cannot write file /htmlclients.html: iqontrol.meta is not an object of type "meta"
                

                Danke für Hilfe!

                s.bormannS Offline
                s.bormannS Offline
                s.bormann
                Most Active
                schrieb am zuletzt editiert von
                #7043

                @adnim Hi, denke auch, dass das nicht von iQontrol kommt. Denke eher, dass ein Script etwas in den - jetzt gelöschten - iQontrol-Meta-Ordner schreiben will - und da Du den gelöscht hast, gibts den Fehler.

                1 Antwort Letzte Antwort
                1
                • A Offline
                  A Offline
                  Adnim
                  schrieb am zuletzt editiert von
                  #7044

                  @dslraser sagte in Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread):

                  sieht aber so aus wie ein Script ? Unifi ?

                  Ah das war der entscheidende Hinweis Danke!! Im Unifiy Skript werden diese DP gesetzt; hatte ich gar nicht auf dem Schirm :)

                  1 Antwort Letzte Antwort
                  0
                  • M Offline
                    M Offline
                    meerkat
                    schrieb am zuletzt editiert von meerkat
                    #7045

                    Guten Abend zusammen,
                    basierend auf der Idee von @muuulle (Beitrag 7024) habe ich mal ein Script geschrieben. Durch das Script braucht man nur "ein" Wigdet zur Anzeige des Ergebnisses. Ich habe an jedem Knopf in der Eigenschaft Background_URL das eigentliche Widget hinterlegt, bei mir DeviceCounter. Dann habe ich ein Widget, dass die Informationen aus der Background_URL aufnimmt. Bei @muuulle hatte ich pro Knopf ein Widget.
                    Drückt man nun auf einen Knopf, wird der Wert in eine Hilfsvariable geschrieben und dann mit dem Script die Background_URL ermittelt und dann das "Ergebnis"-Wigdet aktiviert und die Background_Url in das Widget geschrieben.

                    //Steuerung von Widgets mit Knöpfen in iQontrol, basierend auf der Idee von muuulle Beitrag 7024
                    
                    //Variable fürs zwischenspeichern der Views aus iQontrol 
                    //(beim Start von JavasCript einmalig ausführen)
                    var DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
                    
                    //Variable die zur Suche der entsprechenden view in iQontrol dient
                    var DpView = '0_userdata.0.iQontrol_Widgets.iQontrolSearchView1';
                    
                    //Variable, in der der Suchbegriff für das Ergebnis-Widget steht, sollte immer der Name des
                    //Buttons sein. Dieser enthält in der Background_URL das Widget.
                    //Wenn der Wert in der Variable 0 ist, dann ist das Ergebnis-Widget inaktiv
                    var DpButton = '0_userdata.0.iQontrol_Widgets.iQontrolSearchButton1';
                    
                    //Variable in der das Ergebnis der Background_URL aus dem SearchButton geschrieben wird
                    var DpWidget = '0_userdata.0.iQontrol_Widgets.iQontrolResultWidget1';
                    
                    //Aktualisieren der Variable sys_Adapter_iQon nach jedem speichern und 
                    //neustart der iQontrol-Instanz
                    on({id:'system.adapter.iqontrol.0.alive', change: "ne"}, async function (obj) {
                        if(obj.state.val == true){
                            log("Aktualisierung der Variable für die Views");
                            DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
                        }
                    });
                    
                    //Ermitteln und schreiben der Background_URL für das ErgebnisWidget
                    on({id:DpButton, change: "ne"}, async function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        setStateDelayed(obj.id, (obj.state ? obj.state.val : ""), true, parseInt(((0) || "").toString(), 10), false);
                        if (value != 0){
                            DpSysAdapterIqontrolViews.forEach(function(view) {
                                if (view.commonName == getState(DpView).val){
                                    view.devices.forEach(function(device){
                                        if (device.commonName == getState(DpButton).val){
                                            log(getState(DpButton).val);
                                            device.states.forEach(function(devState){
                                                if (devState.state == "BACKGROUND_URL"){
                                                    log(devState.value);
                                                    setStateDelayed(DpWidget, devState.value, true, parseInt(((0) || "").toString(), 10), false);
                                                }
                                            });
                                        }
                                    });
                                }
                            });
                        
                            //Datenpunkte nach 60 Sekunden resetten
                            setStateDelayed(DpWidget, "", true, 60000, false);    
                            setStateDelayed(DpButton, "0", true, 60000, true);
                        }
                    });
                    
                    

                    YouCut_20220317_212646007.mp4
                    Screen_Recording_20220317-205559_Chrome.mp4

                    da_WoodyD dslraserD 3 Antworten Letzte Antwort
                    5
                    • M meerkat

                      Guten Abend zusammen,
                      basierend auf der Idee von @muuulle (Beitrag 7024) habe ich mal ein Script geschrieben. Durch das Script braucht man nur "ein" Wigdet zur Anzeige des Ergebnisses. Ich habe an jedem Knopf in der Eigenschaft Background_URL das eigentliche Widget hinterlegt, bei mir DeviceCounter. Dann habe ich ein Widget, dass die Informationen aus der Background_URL aufnimmt. Bei @muuulle hatte ich pro Knopf ein Widget.
                      Drückt man nun auf einen Knopf, wird der Wert in eine Hilfsvariable geschrieben und dann mit dem Script die Background_URL ermittelt und dann das "Ergebnis"-Wigdet aktiviert und die Background_Url in das Widget geschrieben.

                      //Steuerung von Widgets mit Knöpfen in iQontrol, basierend auf der Idee von muuulle Beitrag 7024
                      
                      //Variable fürs zwischenspeichern der Views aus iQontrol 
                      //(beim Start von JavasCript einmalig ausführen)
                      var DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
                      
                      //Variable die zur Suche der entsprechenden view in iQontrol dient
                      var DpView = '0_userdata.0.iQontrol_Widgets.iQontrolSearchView1';
                      
                      //Variable, in der der Suchbegriff für das Ergebnis-Widget steht, sollte immer der Name des
                      //Buttons sein. Dieser enthält in der Background_URL das Widget.
                      //Wenn der Wert in der Variable 0 ist, dann ist das Ergebnis-Widget inaktiv
                      var DpButton = '0_userdata.0.iQontrol_Widgets.iQontrolSearchButton1';
                      
                      //Variable in der das Ergebnis der Background_URL aus dem SearchButton geschrieben wird
                      var DpWidget = '0_userdata.0.iQontrol_Widgets.iQontrolResultWidget1';
                      
                      //Aktualisieren der Variable sys_Adapter_iQon nach jedem speichern und 
                      //neustart der iQontrol-Instanz
                      on({id:'system.adapter.iqontrol.0.alive', change: "ne"}, async function (obj) {
                          if(obj.state.val == true){
                              log("Aktualisierung der Variable für die Views");
                              DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
                          }
                      });
                      
                      //Ermitteln und schreiben der Background_URL für das ErgebnisWidget
                      on({id:DpButton, change: "ne"}, async function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          setStateDelayed(obj.id, (obj.state ? obj.state.val : ""), true, parseInt(((0) || "").toString(), 10), false);
                          if (value != 0){
                              DpSysAdapterIqontrolViews.forEach(function(view) {
                                  if (view.commonName == getState(DpView).val){
                                      view.devices.forEach(function(device){
                                          if (device.commonName == getState(DpButton).val){
                                              log(getState(DpButton).val);
                                              device.states.forEach(function(devState){
                                                  if (devState.state == "BACKGROUND_URL"){
                                                      log(devState.value);
                                                      setStateDelayed(DpWidget, devState.value, true, parseInt(((0) || "").toString(), 10), false);
                                                  }
                                              });
                                          }
                                      });
                                  }
                              });
                          
                              //Datenpunkte nach 60 Sekunden resetten
                              setStateDelayed(DpWidget, "", true, 60000, false);    
                              setStateDelayed(DpButton, "0", true, 60000, true);
                          }
                      });
                      
                      

                      YouCut_20220317_212646007.mp4
                      Screen_Recording_20220317-205559_Chrome.mp4

                      da_WoodyD Offline
                      da_WoodyD Offline
                      da_Woody
                      schrieb am zuletzt editiert von
                      #7046

                      @meerkat beeindruckend auf welche ideas ihr so kommt... :)
                      btw: hab gesehn, daß du das WIFI dingens benutzt. da für mich orange auf fehler hindeutet, hab ich das mal auf grün umgemodelt... ist zwar nicht ganz sauber, aber bei der größe sieht man's nicht.
                      wifi.png

                      gruß vom Woody
                      HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                      M 1 Antwort Letzte Antwort
                      0
                      • da_WoodyD da_Woody

                        @meerkat beeindruckend auf welche ideas ihr so kommt... :)
                        btw: hab gesehn, daß du das WIFI dingens benutzt. da für mich orange auf fehler hindeutet, hab ich das mal auf grün umgemodelt... ist zwar nicht ganz sauber, aber bei der größe sieht man's nicht.
                        wifi.png

                        M Offline
                        M Offline
                        meerkat
                        schrieb am zuletzt editiert von
                        #7047

                        @da_woody danke, werde ich h mal abändern

                        da_WoodyD 1 Antwort Letzte Antwort
                        1
                        • M meerkat

                          @da_woody danke, werde ich h mal abändern

                          da_WoodyD Offline
                          da_WoodyD Offline
                          da_Woody
                          schrieb am zuletzt editiert von
                          #7048

                          @meerkat gerne! mir gefällts halt besser wenn online grün ist. :D

                          gruß vom Woody
                          HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                          1 Antwort Letzte Antwort
                          0
                          • M meerkat

                            Guten Abend zusammen,
                            basierend auf der Idee von @muuulle (Beitrag 7024) habe ich mal ein Script geschrieben. Durch das Script braucht man nur "ein" Wigdet zur Anzeige des Ergebnisses. Ich habe an jedem Knopf in der Eigenschaft Background_URL das eigentliche Widget hinterlegt, bei mir DeviceCounter. Dann habe ich ein Widget, dass die Informationen aus der Background_URL aufnimmt. Bei @muuulle hatte ich pro Knopf ein Widget.
                            Drückt man nun auf einen Knopf, wird der Wert in eine Hilfsvariable geschrieben und dann mit dem Script die Background_URL ermittelt und dann das "Ergebnis"-Wigdet aktiviert und die Background_Url in das Widget geschrieben.

                            //Steuerung von Widgets mit Knöpfen in iQontrol, basierend auf der Idee von muuulle Beitrag 7024
                            
                            //Variable fürs zwischenspeichern der Views aus iQontrol 
                            //(beim Start von JavasCript einmalig ausführen)
                            var DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
                            
                            //Variable die zur Suche der entsprechenden view in iQontrol dient
                            var DpView = '0_userdata.0.iQontrol_Widgets.iQontrolSearchView1';
                            
                            //Variable, in der der Suchbegriff für das Ergebnis-Widget steht, sollte immer der Name des
                            //Buttons sein. Dieser enthält in der Background_URL das Widget.
                            //Wenn der Wert in der Variable 0 ist, dann ist das Ergebnis-Widget inaktiv
                            var DpButton = '0_userdata.0.iQontrol_Widgets.iQontrolSearchButton1';
                            
                            //Variable in der das Ergebnis der Background_URL aus dem SearchButton geschrieben wird
                            var DpWidget = '0_userdata.0.iQontrol_Widgets.iQontrolResultWidget1';
                            
                            //Aktualisieren der Variable sys_Adapter_iQon nach jedem speichern und 
                            //neustart der iQontrol-Instanz
                            on({id:'system.adapter.iqontrol.0.alive', change: "ne"}, async function (obj) {
                                if(obj.state.val == true){
                                    log("Aktualisierung der Variable für die Views");
                                    DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
                                }
                            });
                            
                            //Ermitteln und schreiben der Background_URL für das ErgebnisWidget
                            on({id:DpButton, change: "ne"}, async function (obj) {
                                var value = obj.state.val;
                                var oldValue = obj.oldState.val;
                                setStateDelayed(obj.id, (obj.state ? obj.state.val : ""), true, parseInt(((0) || "").toString(), 10), false);
                                if (value != 0){
                                    DpSysAdapterIqontrolViews.forEach(function(view) {
                                        if (view.commonName == getState(DpView).val){
                                            view.devices.forEach(function(device){
                                                if (device.commonName == getState(DpButton).val){
                                                    log(getState(DpButton).val);
                                                    device.states.forEach(function(devState){
                                                        if (devState.state == "BACKGROUND_URL"){
                                                            log(devState.value);
                                                            setStateDelayed(DpWidget, devState.value, true, parseInt(((0) || "").toString(), 10), false);
                                                        }
                                                    });
                                                }
                                            });
                                        }
                                    });
                                
                                    //Datenpunkte nach 60 Sekunden resetten
                                    setStateDelayed(DpWidget, "", true, 60000, false);    
                                    setStateDelayed(DpButton, "0", true, 60000, true);
                                }
                            });
                            
                            

                            YouCut_20220317_212646007.mp4
                            Screen_Recording_20220317-205559_Chrome.mp4

                            dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #7049

                            @meerkat sagte in Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread):

                                                                                                                                                        //Steuerung von Widgets mit Knöpfen in iQontrol, basierend auf der Idee von muuulle Beitrag 7024                                                                                                                                                                                                                                                                                                                                                         //Variable fürs zwischenspeichern der Views aus iQontrol                                                                                                                                                                             //(beim Start von JavasCript einmalig ausführen)                                                                                                                                                                            var DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;                                                                                                                                                                                                                                                                                                                                                         //Variable die zur Suche der entsprechenden view in iQontrol dient                                                                                                                                                                            var DpView = '0_userdata.0.iQontrol_Widgets.iQontrolSearchView1';                                                                                                                                                                                                                                                                                                                                                         //Variable, in der der Suchbegriff für das Ergebnis-Widget steht, sollte immer der Name des                                                                                                                                                                            //Buttons sein. Dieser enthält in der Background_URL das Widget.                                                                                                                                                                            //Wenn der Wert in der Variable 0 ist, dann ist das Ergebnis-Widget inaktiv                                                                                                                                                                            var DpButton = '0_userdata.0.iQontrol_Widgets.iQontrolSearchButton1';                                                                                                                                                                                                                                                                                                                                                         //Variable in der das Ergebnis der Background_URL aus dem SearchButton geschrieben wird                                                                                                                                                                            var DpWidget = '0_userdata.0.iQontrol_Widgets.iQontrolResultWidget1';                                                                                                                                                                                                                                                                                                                                                         //Aktualisieren der Variable sys_Adapter_iQon nach jedem speichern und                                                                                                                                                                             //neustart der iQontrol-Instanz                                                                                                                                                                            on({id:'system.adapter.iqontrol.0.alive', change: "ne"}, async function (obj) {                                                                                                                                                                                if(obj.state.val == true){                                                                                                                                                                                    log("Aktualisierung der Variable für die Views");                                                                                                                                                                                    DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;                                                                                                                                                                                }                                                                                                                                                                            });                                                                                                                                                                                                                                                                                                                                                         //Ermitteln und schreiben der Background_URL für das ErgebnisWidget                                                                                                                                                                            on({id:DpButton, change: "ne"}, async function (obj) {                                                                                                                                                                                var value = obj.state.val;                                                                                                                                                                                var oldValue = obj.oldState.val;                                                                                                                                                                                setStateDelayed(obj.id, (obj.state ? obj.state.val : ""), true, parseInt(((0) || "").toString(), 10), false);                                                                                                                                                                                if (value != 0){                                                                                                                                                                                    DpSysAdapterIqontrolViews.forEach(function(view) {                                                                                                                                                                                        if (view.commonName == getState(DpView).val){                                                                                                                                                                                            view.devices.forEach(function(device){                                                                                                                                                                                                if (device.commonName == getState(DpButton).val){                                                                                                                                                                                                    log(getState(DpButton).val);                                                                                                                                                                                                    device.states.forEach(function(devState){                                                                                                                                                                                                        if (devState.state == "BACKGROUND_URL"){                                                                                                                                                                                                            log(devState.value);                                                                                                                                                                                                            setStateDelayed(DpWidget, devState.value, true, parseInt(((0) || "").toString(), 10), false);                                                                                                                                                                                                        }                                                                                                                                                                                                    });                                                                                                                                                                                                }                                                                                                                                                                                            });                                                                                                                                                                                        }                                                                                                                                                                                    });                                                                                                                                                                                                                                                                                                                                                                    //Datenpunkte nach 60 Sekunden resetten                                                                                                                                                                                    setStateDelayed(DpWidget, "", true, 60000, false);                                                                                                                                                                                        setStateDelayed(DpButton, "0", true, 60000, true);                                                                                                                                                                                }                                                                                                                                                                            });                                                                                                                                                                                                                         
                            

                            Tolle Idee.
                            Eigene Datenpunkte werden dann drei benötigt ? Als was sind die Datenpunkte erstellt ? (also type und role ?)

                            M 1 Antwort Letzte Antwort
                            0
                            • D Offline
                              D Offline
                              Daniel81
                              schrieb am zuletzt editiert von
                              #7050

                              Hallo zusammen,
                              ich verwende seit heute das erste mal Iqcontrol und muss sagen, diese Anwendung gefällt mir sehr gut.! großes Lob an den Entwickler!

                              Leider habe ich jedoch das Problem, das mir keinerlei Icons in der Vorauswahl angezeigt werden! Was muss ich ändern, damit diese bei mir korrekt angezeigt werden?

                              Ich hoffe, Ihr könnt mir hier weiterhelfen!

                              iqcontrol.png
                              iq2.png

                              C 1 Antwort Letzte Antwort
                              0
                              • D Daniel81

                                Hallo zusammen,
                                ich verwende seit heute das erste mal Iqcontrol und muss sagen, diese Anwendung gefällt mir sehr gut.! großes Lob an den Entwickler!

                                Leider habe ich jedoch das Problem, das mir keinerlei Icons in der Vorauswahl angezeigt werden! Was muss ich ändern, damit diese bei mir korrekt angezeigt werden?

                                Ich hoffe, Ihr könnt mir hier weiterhelfen!

                                iqcontrol.png
                                iq2.png

                                C Offline
                                C Offline
                                CBeck
                                schrieb am zuletzt editiert von
                                #7051

                                @daniel81 Guck mal nicht unter 'Ansichten' sondern z.B. unter Toolbar. Dort kann man Icon hinterlegen, da müsste dann auch eine Auswahl vorhanden sein.
                                Oder unter 'Geräte' mit dem 'Stift' ein Gerät öffnen. Dort findet sich weiter unten auch 'Icons'.

                                D 1 Antwort Letzte Antwort
                                0
                                • C CBeck

                                  @daniel81 Guck mal nicht unter 'Ansichten' sondern z.B. unter Toolbar. Dort kann man Icon hinterlegen, da müsste dann auch eine Auswahl vorhanden sein.
                                  Oder unter 'Geräte' mit dem 'Stift' ein Gerät öffnen. Dort findet sich weiter unten auch 'Icons'.

                                  D Offline
                                  D Offline
                                  Daniel81
                                  schrieb am zuletzt editiert von
                                  #7052

                                  @cbeck das habe ich alles schon probiert, aber leider bekomme ich in keiner Auswahl eine Vorschau der Bilder. Auch wenn ich eigende Fotos hinzufüge, werden mit diese nicht als Vorschau zur Verfügung gestellt.neu4.png

                                  M 1 Antwort Letzte Antwort
                                  0
                                  • dslraserD dslraser

                                    @meerkat sagte in Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread):

                                                                                                                                                                //Steuerung von Widgets mit Knöpfen in iQontrol, basierend auf der Idee von muuulle Beitrag 7024                                                                                                                                                                                                                                                                                                                                                         //Variable fürs zwischenspeichern der Views aus iQontrol                                                                                                                                                                             //(beim Start von JavasCript einmalig ausführen)                                                                                                                                                                            var DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;                                                                                                                                                                                                                                                                                                                                                         //Variable die zur Suche der entsprechenden view in iQontrol dient                                                                                                                                                                            var DpView = '0_userdata.0.iQontrol_Widgets.iQontrolSearchView1';                                                                                                                                                                                                                                                                                                                                                         //Variable, in der der Suchbegriff für das Ergebnis-Widget steht, sollte immer der Name des                                                                                                                                                                            //Buttons sein. Dieser enthält in der Background_URL das Widget.                                                                                                                                                                            //Wenn der Wert in der Variable 0 ist, dann ist das Ergebnis-Widget inaktiv                                                                                                                                                                            var DpButton = '0_userdata.0.iQontrol_Widgets.iQontrolSearchButton1';                                                                                                                                                                                                                                                                                                                                                         //Variable in der das Ergebnis der Background_URL aus dem SearchButton geschrieben wird                                                                                                                                                                            var DpWidget = '0_userdata.0.iQontrol_Widgets.iQontrolResultWidget1';                                                                                                                                                                                                                                                                                                                                                         //Aktualisieren der Variable sys_Adapter_iQon nach jedem speichern und                                                                                                                                                                             //neustart der iQontrol-Instanz                                                                                                                                                                            on({id:'system.adapter.iqontrol.0.alive', change: "ne"}, async function (obj) {                                                                                                                                                                                if(obj.state.val == true){                                                                                                                                                                                    log("Aktualisierung der Variable für die Views");                                                                                                                                                                                    DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;                                                                                                                                                                                }                                                                                                                                                                            });                                                                                                                                                                                                                                                                                                                                                         //Ermitteln und schreiben der Background_URL für das ErgebnisWidget                                                                                                                                                                            on({id:DpButton, change: "ne"}, async function (obj) {                                                                                                                                                                                var value = obj.state.val;                                                                                                                                                                                var oldValue = obj.oldState.val;                                                                                                                                                                                setStateDelayed(obj.id, (obj.state ? obj.state.val : ""), true, parseInt(((0) || "").toString(), 10), false);                                                                                                                                                                                if (value != 0){                                                                                                                                                                                    DpSysAdapterIqontrolViews.forEach(function(view) {                                                                                                                                                                                        if (view.commonName == getState(DpView).val){                                                                                                                                                                                            view.devices.forEach(function(device){                                                                                                                                                                                                if (device.commonName == getState(DpButton).val){                                                                                                                                                                                                    log(getState(DpButton).val);                                                                                                                                                                                                    device.states.forEach(function(devState){                                                                                                                                                                                                        if (devState.state == "BACKGROUND_URL"){                                                                                                                                                                                                            log(devState.value);                                                                                                                                                                                                            setStateDelayed(DpWidget, devState.value, true, parseInt(((0) || "").toString(), 10), false);                                                                                                                                                                                                        }                                                                                                                                                                                                    });                                                                                                                                                                                                }                                                                                                                                                                                            });                                                                                                                                                                                        }                                                                                                                                                                                    });                                                                                                                                                                                                                                                                                                                                                                    //Datenpunkte nach 60 Sekunden resetten                                                                                                                                                                                    setStateDelayed(DpWidget, "", true, 60000, false);                                                                                                                                                                                        setStateDelayed(DpButton, "0", true, 60000, true);                                                                                                                                                                                }                                                                                                                                                                            });                                                                                                                                                                                                                         
                                    

                                    Tolle Idee.
                                    Eigene Datenpunkte werden dann drei benötigt ? Als was sind die Datenpunkte erstellt ? (also type und role ?)

                                    M Offline
                                    M Offline
                                    meerkat
                                    schrieb am zuletzt editiert von
                                    #7053

                                    @dslraser Hi, habe sie alle mit role "state" und Type "string" angelegt

                                    1 Antwort Letzte Antwort
                                    1
                                    • D Daniel81

                                      @cbeck das habe ich alles schon probiert, aber leider bekomme ich in keiner Auswahl eine Vorschau der Bilder. Auch wenn ich eigende Fotos hinzufüge, werden mit diese nicht als Vorschau zur Verfügung gestellt.neu4.png

                                      M Offline
                                      M Offline
                                      meerkat
                                      schrieb am zuletzt editiert von
                                      #7054

                                      Hi @daniel81, das hatte ich auch mal. Hast du ioBroker direkt auf nen Pi? Wenn du Docker nutzt, dann musst du mit den Ports etwas aufpassen. Hatte damals auch ne Portweiterleitung drin und habe dann keine Bilder in der Vorschau gehabt. Erst als ich auf den Originalen Port gewechselt hatte, habe ich die Bilder auch wieder gesehen.

                                      D 1 Antwort Letzte Antwort
                                      0
                                      • M meerkat

                                        Hi @daniel81, das hatte ich auch mal. Hast du ioBroker direkt auf nen Pi? Wenn du Docker nutzt, dann musst du mit den Ports etwas aufpassen. Hatte damals auch ne Portweiterleitung drin und habe dann keine Bilder in der Vorschau gehabt. Erst als ich auf den Originalen Port gewechselt hatte, habe ich die Bilder auch wieder gesehen.

                                        D Offline
                                        D Offline
                                        Daniel81
                                        schrieb am zuletzt editiert von
                                        #7055

                                        @meerkat ne bei mir läuft alles auf einem NUC unter Proxmox.
                                        Ich habe es jetzt aber zum laufen bekommen, musste hierzu alles Einstellungen in Chrome aktivieren, anscheinend wurde hier etwas aus Sicherheitsgründen geblockt.

                                        1 Antwort Letzte Antwort
                                        0
                                        • M meerkat

                                          Guten Abend zusammen,
                                          basierend auf der Idee von @muuulle (Beitrag 7024) habe ich mal ein Script geschrieben. Durch das Script braucht man nur "ein" Wigdet zur Anzeige des Ergebnisses. Ich habe an jedem Knopf in der Eigenschaft Background_URL das eigentliche Widget hinterlegt, bei mir DeviceCounter. Dann habe ich ein Widget, dass die Informationen aus der Background_URL aufnimmt. Bei @muuulle hatte ich pro Knopf ein Widget.
                                          Drückt man nun auf einen Knopf, wird der Wert in eine Hilfsvariable geschrieben und dann mit dem Script die Background_URL ermittelt und dann das "Ergebnis"-Wigdet aktiviert und die Background_Url in das Widget geschrieben.

                                          //Steuerung von Widgets mit Knöpfen in iQontrol, basierend auf der Idee von muuulle Beitrag 7024
                                          
                                          //Variable fürs zwischenspeichern der Views aus iQontrol 
                                          //(beim Start von JavasCript einmalig ausführen)
                                          var DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
                                          
                                          //Variable die zur Suche der entsprechenden view in iQontrol dient
                                          var DpView = '0_userdata.0.iQontrol_Widgets.iQontrolSearchView1';
                                          
                                          //Variable, in der der Suchbegriff für das Ergebnis-Widget steht, sollte immer der Name des
                                          //Buttons sein. Dieser enthält in der Background_URL das Widget.
                                          //Wenn der Wert in der Variable 0 ist, dann ist das Ergebnis-Widget inaktiv
                                          var DpButton = '0_userdata.0.iQontrol_Widgets.iQontrolSearchButton1';
                                          
                                          //Variable in der das Ergebnis der Background_URL aus dem SearchButton geschrieben wird
                                          var DpWidget = '0_userdata.0.iQontrol_Widgets.iQontrolResultWidget1';
                                          
                                          //Aktualisieren der Variable sys_Adapter_iQon nach jedem speichern und 
                                          //neustart der iQontrol-Instanz
                                          on({id:'system.adapter.iqontrol.0.alive', change: "ne"}, async function (obj) {
                                              if(obj.state.val == true){
                                                  log("Aktualisierung der Variable für die Views");
                                                  DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
                                              }
                                          });
                                          
                                          //Ermitteln und schreiben der Background_URL für das ErgebnisWidget
                                          on({id:DpButton, change: "ne"}, async function (obj) {
                                              var value = obj.state.val;
                                              var oldValue = obj.oldState.val;
                                              setStateDelayed(obj.id, (obj.state ? obj.state.val : ""), true, parseInt(((0) || "").toString(), 10), false);
                                              if (value != 0){
                                                  DpSysAdapterIqontrolViews.forEach(function(view) {
                                                      if (view.commonName == getState(DpView).val){
                                                          view.devices.forEach(function(device){
                                                              if (device.commonName == getState(DpButton).val){
                                                                  log(getState(DpButton).val);
                                                                  device.states.forEach(function(devState){
                                                                      if (devState.state == "BACKGROUND_URL"){
                                                                          log(devState.value);
                                                                          setStateDelayed(DpWidget, devState.value, true, parseInt(((0) || "").toString(), 10), false);
                                                                      }
                                                                  });
                                                              }
                                                          });
                                                      }
                                                  });
                                              
                                                  //Datenpunkte nach 60 Sekunden resetten
                                                  setStateDelayed(DpWidget, "", true, 60000, false);    
                                                  setStateDelayed(DpButton, "0", true, 60000, true);
                                              }
                                          });
                                          
                                          

                                          YouCut_20220317_212646007.mp4
                                          Screen_Recording_20220317-205559_Chrome.mp4

                                          dslraserD Offline
                                          dslraserD Offline
                                          dslraser
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von
                                          #7056

                                          @meerkat
                                          Mahlzeit,
                                          ich muss nochmal nachfragen. Ich habe diese drei Datenpunkte erstellt.

                                          Bildschirmfoto 2022-03-19 um 11.59.21.png

                                          Dann habe ich mir eine Testseite eingerichtet und dort einen Knopf und ein Widget angelegt. Wenn ich den Knopf betätige, dann wird auch brav z.B. Licht in den Datenpunkt geschrieben. Bei den anderen beiden Datenpunkten tut sich leider gar nichts.
                                          Wenn Licht im Datenpunkt steht und ich von Hand meine URL in 0_userdata.0.iQontrol_Widgets.iQontrolResultWidget1 kopiere, dann wird auch mein Widget angezeigt, also scheint die Übergabe an den Datenpunkt nicht zu klappen. Ich habe Dein Script 1:1 kopiert und die Datenpunkte auch 1:1 so genannt wie im Script.
                                          Was ich nicht verstehe, getObject('system.adapter.iqontrol.0').native.views;.....

                                          native.views finde ich in den Objekten gar nicht ? (oder sind die in den Objekten nicht zu sehen ?)

                                          In Deinem Video ist auch leider nicht zu sehen, welcher Datenpunkt wo verlinkt ist (in der Video Ansicht ist es abgeschnitten, also der Pfad) Kannst Du das bitte beschreiben ?
                                          Es wäre schön wenn Du helfen könntest. Danke schon mal.

                                          M 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

                                          444

                                          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