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.
    • OliverIO
      OliverIO @PPB1308 last edited by

      @ppb1308

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

      was du machen kannst ist entwender den view doppeln oder im gleichen view die widgets mit angepassten datenpunktnamen drüber legen.
      per knopf einem weiteren datenpunkt der die ausgeählte instanz enthält und der sichtbarkeit in den widgets kannst du wählen welche widgets für welche instanz sichtbar sein sollen

      P 1 Reply Last reply Reply Quote 0
      • 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

                          901
                          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