Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Zugriff auf Instanz-bezogene Daten (Binding oder JavaScript)

    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

    Zugriff auf Instanz-bezogene Daten (Binding oder JavaScript)

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      PPB1308 @OliverIO last edited by

      @oliverio Danke für die Idee mit den über einander liegenden Widgets, das ist ein Weg, der aber noch mehr Pflegeaufwand hat, als einzelne Views für jedes Device.

      Gibt es weitere Möglichkeiten?

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @PPB1308 last edited by OliverIO

        @ppb1308

        Meines wissens nicht in vis.
        Prinzip von vis ist, nach dem Start:

        • sammle alle verwendeten Datenpunkte ein
        • abonniere diese Datenpunkte dann vom Server, das man bei Änderungen informiert wird
        • zeige dann alle Werte an der entsprechenden Stelle an
        • Aktualisiere die Werte wenn man über Änderungen informiert wird.

        daher können Datenpunkte, die nicht bekannt sind (also in widgets oder in bindings angegeben worden sind) nicht verwendet werden.

        P 1 Reply Last reply Reply Quote 0
        • P
          PPB1308 @OliverIO last edited by

          @oliverio
          Danke für die Erklärung, aber Du sagst, Bindings könnten nicht verwendet werden, aber genau diese sind ja nutzbar. Die werden imho dann zur Laufzeit ausgewertet, also beim Start der Instanz, da ist die Instanznummer aber doch auch schon bekannt oder müsste es sein.
          Ich müsste halt nur den Inhalt (Pfad zum DP) des Bindings zusammenbauen können.

          Wenn das dynamisch mit Instanz nicht geht, müsste ich in der laufenden Instanz nur irgendwie festlegen können, dass es die Instanz A bzw. welches Frontend-Gerät es ist oder eben auf einem anderen Gerät die Instanz B, dann könnte ich für jede Instanz eigene Datenpunkte bauen.

          So könnte das Tablet im Wohnzimmer immer mit den DPs arbeiten unter
          javascript.0.tabletWZ

          Und das Tablet im Schlafzimmer dann mit den DPs unter
          javascript.0.tabletSZ

          Aber genau das fehlt irgendwie.
          Ich frage mich, warum diese Überlegung bei der VIS Entwicklung nicht irgendwie berücksichtigt wurde,

          1 Reply Last reply Reply Quote 0
          • P
            PPB1308 last edited by

            Vielleicht stelle ich die Frage noch einmal anders:
            Kann ich ein Binding dynamisch mit dem Inhalt eines Datenpunktes zusammenbauen, also um Werte anzuzeigen oder zu ändern?

            OliverIO 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @PPB1308 last edited by

              @ppb1308 sagte in Zugriff auf Instanz-bezogene Daten (Binding oder JavaScript):

              Vielleicht stelle ich die Frage noch einmal anders:
              Kann ich ein Binding dynamisch mit dem Inhalt eines Datenpunktes zusammenbauen, also um Werte anzuzeigen oder zu ändern?

              wie oben schon geschrieben.
              Nein.

              @oliverio sagte in Zugriff auf Instanz-bezogene Daten (Binding oder JavaScript):

              leider gibt es keine dynamischen datenpunkte, bei dem man anteile des datenpunktnamens während der laufzeit abändern kann.

              1 Reply Last reply Reply Quote 1
              • liv-in-sky
                liv-in-sky @PPB1308 last edited by

                @ppb1308

                ich kenne nur einen weg über einen zusätzlichen trigger

                du siehst 2 browser in der selben view - jeder nutzt einen anderen port des web adapters - also eine eigene instanz des web-adapters

                das heizungsbild (zusätzlicher trigger) muss angeklickt werden, damit dahinter die eigentlichen schalter betätigt werden können - durch den klick werden die datenpunkte zugeteilt - je nach port (web instanz) wird dann ein anderer datenpunkt geschrieben. das bild erscheint wieder nach x-sekunden, damit der trigger wieder aktiviert wird

                hoffe, du erkennst alles

                AApossis (167).gif

                1 Reply Last reply Reply Quote 0
                • P
                  PPB1308 last edited by

                  @liv-in-sky
                  Das klingt interessant, wie hast Du in Abhängigkeit vom Port die DPs "zugeteilt"?
                  Das machst Du doch sicher in einem JavaScript, kannst Du das bitte mal teilen?

                  Danke.

                  liv-in-sky 2 Replies Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @PPB1308 last edited by liv-in-sky

                    @ppb1308

                    das ist im vis-editor im script tab

                    • schreibt port in einen datenpunkt
                    • schreibt auch in dp, das sichtbar und unsichtbar machen des heizungsbildes - dp mußt du anlegen
                    • die zeit, wie lange das bild unsuchtbar bleibt ist auch dort einzutellen

                    
                    
                    function waitForElement(parent, elementPath, wid, widgetName, callBack, counter = 0, debug = false) {
                    
                            if (counter < 30) {
                    
                                setTimeout(function () {
                    
                                    if (parent.find(elementPath).length > 0) {
                    
                                        if (debug) console.log(`[${widgetName} ${wid}] it took ${counter}ms to wait for the element '${elementPath}'`);
                    
                                        callBack();
                    
                                    } else {
                    
                                        if (debug) console.log(`[${widgetName} ${wid}] wait for element '${elementPath}'`);
                    
                                        counter++
                    
                                        waitForElement(parent, elementPath, wid, widgetName, callBack, counter, debug);
                    
                                    }
                    
                                }, 1000);
                    
                            } else {
                    
                               if (debug) console.warn(`[${widgetName} ${wid}] stop waiting after ${counter} retries`);
                    
                                callBack();
                    
                           }
                    
                       }
                    
                    // Warten auf das (basic - Scren Resolution) Widget, ID ggf. anpassen
                    
                    waitForElement($('body'),'#w00009', 'dummy', 'dummy', function () {
                      // Widget ist geladen, auf das Widget klicken, w02705 ist die ID von meinem basic - Screen Resolution Widget
                         // und in einen Datenpunkt schreiben
                    
                    
                         $('#w00009').click(function(){
                      vis.setValue('0_userdata.0.CONTROL-OWN.AAATEST.vis-port', location.port);
                      vis.setValue('0_userdata.0.CONTROL-OWN.AAATEST.vis-port-sichtbar', false);
                      console.log(location.port);
                       setTimeout( () => { 
                          vis.setValue('0_userdata.0.CONTROL-OWN.AAATEST.vis-port-sichtbar',true); 
                       }, 6000);
                       
                       
                    });
                    
                     /*  }, 3000);*/
                    
                    }, 0, true);
                    
                    

                    das widget mit dem bild und den settings für unsichtbar ist hier

                    [{"tpl":"tplImage","data":{"g_fixed":false,"g_visibility":true,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":"true","visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"src":"/vis.0/armin/img/heating.png","visibility-oid":"0_userdata.0.CONTROL-OWN.AAATEST.vis-port-sichtbar"},"style":{"left":"142px","top":"224px","width":"199px","height":"233px","z-index":"20"},"widgetSet":"basic"}]
                    

                    das widget, welches wirklich schaltet ist hier

                    [{"tpl":"tplValueBoolCheckbox","data":{"oid":"{bar:0_userdata.0.CONTROL-OWN.AAATEST.vis-port; bar==\"8082\" ? \"0_userdata.0.CONTROL-OWN.AAATEST.TestLogic\" : \"0_userdata.0.CONTROL-OWN.AAATEST.TestLogic2\"}","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"219px","top":"327px","z-index":"1"},"widgetSet":"basic"}]
                    

                    1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @PPB1308 last edited by

                      @ppb1308

                      noch vergessen - du musst auch in zeile 44 und 49 im script die widget-id von dir eintragem - die ist ja anders als bei mir

                      #w00009 ist bei miir das widget mit dem bild - mss angeglichen werden

                      P 1 Reply Last reply Reply Quote 0
                      • P
                        PPB1308 @liv-in-sky last edited by

                        @liv-in-sky
                        Herzlichen Dank, probiere ich morgen aus.

                        Viele Grüße, Peter

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        915
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        3
                        12
                        741
                        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