Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. VIS - dynamische Object ID / Feldreferenz

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

VIS - dynamische Object ID / Feldreferenz

Scheduled Pinned Locked Moved Visualisierung
vis
37 Posts 13 Posters 6.7k Views 13 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Frederik BussF Frederik Buss

    @oliverio Ich bin mir nicht ganz sicher was Du damit meinst, vielleicht verstehe ich den Ausdruck "dynamische Objekt ID's" auch falsch. Folgendes Beispiel geht aber recht zuverlässig:
    Inventwo Widget Laustärke erhöhen oder senken, je nachdem welches Objekt ausgewählt wurde.
    Objekt ID: {0_userdata.0.SonosAuswahl}.VOLUME
    Inhalt von 0_userdata.0.SonosAuswahl: alias.0.WohnEsszimmer.SONOS-Gruppe oder alias.0.WohnEsszimmer.SonosTerrasse usw.

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    wrote on last edited by OliverIO
    #26

    @frederik-buss

    ja genau das. vis kennt am anfang den eigentlichen datenpunkt nicht, da er ja gemäß der Auswahl erst zusammengebaut wird.
    Sofern ich mich erinnere müsste vis dann das auch verschachtelt erkennen, was so nicht eingebaut ist

    Ausgangssituation
    {javascript.0.datenpunk.{javascript.0.auswahl}}
    1.Schritt den Inhalt des datenpunkts auswahl ermitteln und im ausdruck ersetzen
    2.Schritt den Inhalt des so dynamisch zusammengesetzten datenpunktID ermitteln.
    

    wie schon geschrieben. wenn vis runtime startet, müssen alle datenpunkte bekannt sein. vis scannt alle widgets und anderen inhalte nach dem Inhalt von {}, erkennt die datenpunkte und abonniert sie dann beim server, so das die aktualisierungen dann dem client mitgeteilt werden.
    nach dem start findet dieser prozess nicht mehr statt.

    Zur Lösung deines Problems:
    Lege für jede einzelne Möglichkeit ein widget an und lege sie direkt übereinander (beim erstellen evtl noch nicht gleich, sondern erst wenn es funktioniert). Die Sichtbarkeit des widgets kannst du dann über den Datenpunkt Auswahl steuern, in dem du den Datenpunkt Auswahl im Abschnitt visibility des jeweiligen widgets einträgst und eine entsprechende Vergleichsoperation einträgst

    Meine Adapter und Widgets
    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
    Links im Profil

    Frederik BussF 1 Reply Last reply
    0
    • OliverIOO OliverIO

      @frederik-buss

      ja genau das. vis kennt am anfang den eigentlichen datenpunkt nicht, da er ja gemäß der Auswahl erst zusammengebaut wird.
      Sofern ich mich erinnere müsste vis dann das auch verschachtelt erkennen, was so nicht eingebaut ist

      Ausgangssituation
      {javascript.0.datenpunk.{javascript.0.auswahl}}
      1.Schritt den Inhalt des datenpunkts auswahl ermitteln und im ausdruck ersetzen
      2.Schritt den Inhalt des so dynamisch zusammengesetzten datenpunktID ermitteln.
      

      wie schon geschrieben. wenn vis runtime startet, müssen alle datenpunkte bekannt sein. vis scannt alle widgets und anderen inhalte nach dem Inhalt von {}, erkennt die datenpunkte und abonniert sie dann beim server, so das die aktualisierungen dann dem client mitgeteilt werden.
      nach dem start findet dieser prozess nicht mehr statt.

      Zur Lösung deines Problems:
      Lege für jede einzelne Möglichkeit ein widget an und lege sie direkt übereinander (beim erstellen evtl noch nicht gleich, sondern erst wenn es funktioniert). Die Sichtbarkeit des widgets kannst du dann über den Datenpunkt Auswahl steuern, in dem du den Datenpunkt Auswahl im Abschnitt visibility des jeweiligen widgets einträgst und eine entsprechende Vergleichsoperation einträgst

      Frederik BussF Online
      Frederik BussF Online
      Frederik Buss
      wrote on last edited by Frederik Buss
      #27

      @oliverio Ich glaube wir reden aneinander vorbei :) Mein Beispiel mit einem Binding funktioniert. Es ist aber richtig, dass verschachtelte Bindings nicht gehen. Genauso wenig img-src widgets. Aber Drop-Down Listen, Button usw. gehen mit {Binding zum Pfad}.IrgendeinDatenpunkt.
      Was ich nicht ganz verstehe ist Dein Punkt, dass alle Datenpunkte bekannt sein müssen. In meinem Beispiel wechsele ich zwischen 4 Datenpunkten bei verschiedenen Widgets. Welche Bindings da welchen Inhalt bekommen, kann der Runtime beim Start ja nicht bekannt sein, da diese eben doch dynamisch erzeugt werden. Auch wenn ich die Auswahl händisch im Admin eintrage funktioniert das.
      So sieht mein Beispiel im Editor aus:
      Screenshot 2023-09-16 160735.png

      Edit:
      Hier wird die Auswahl getroffen:
      Screenshot 2023-09-16 160921.png

      OliverIOO 1 Reply Last reply
      0
      • Frederik BussF Frederik Buss

        @oliverio Ich glaube wir reden aneinander vorbei :) Mein Beispiel mit einem Binding funktioniert. Es ist aber richtig, dass verschachtelte Bindings nicht gehen. Genauso wenig img-src widgets. Aber Drop-Down Listen, Button usw. gehen mit {Binding zum Pfad}.IrgendeinDatenpunkt.
        Was ich nicht ganz verstehe ist Dein Punkt, dass alle Datenpunkte bekannt sein müssen. In meinem Beispiel wechsele ich zwischen 4 Datenpunkten bei verschiedenen Widgets. Welche Bindings da welchen Inhalt bekommen, kann der Runtime beim Start ja nicht bekannt sein, da diese eben doch dynamisch erzeugt werden. Auch wenn ich die Auswahl händisch im Admin eintrage funktioniert das.
        So sieht mein Beispiel im Editor aus:
        Screenshot 2023-09-16 160735.png

        Edit:
        Hier wird die Auswahl getroffen:
        Screenshot 2023-09-16 160921.png

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        wrote on last edited by OliverIO
        #28

        @frederik-buss

        muss ich mal ausprobieren. das wäre mir neu das das geht
        und das funktioniert auch in der runtime?
        und du hast den berechneten datenpunkt auch nicht noch in einem anderen widget so stehen?

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        Frederik BussF 1 Reply Last reply
        0
        • OliverIOO OliverIO

          @frederik-buss

          muss ich mal ausprobieren. das wäre mir neu das das geht
          und das funktioniert auch in der runtime?
          und du hast den berechneten datenpunkt auch nicht noch in einem anderen widget so stehen?

          Frederik BussF Online
          Frederik BussF Online
          Frederik Buss
          wrote on last edited by Frederik Buss
          #29

          @oliverio Ja, das funktioniert. Ich steuere damit dynamisch wie gesagt die SONOS Ansteuerung. Funktioniert am Tablet und am PC. Dauert einen kleinen Moment (<1 Sek), bis sich die neue Objekt-ID im Widget aktualisiert und natürlich müssen die Datenpunkte nach dem Binding identisch benannt sein - auf Gross-/Kleinschreibung achten! Und nein, die berechneten Datenpunkte stehen in keinem anderen Widget.

          Edit:
          So sieht das Ganze dann in der Runtime aus:
          Screenshot 2023-09-16 162157.png
          Mit den Buttons unten rechts wird die Auswahl beschrieben, die Buttons oben links fügen nur Sonos Geräte zur Gruppe hinzu, oder entfernen diese. Je ausgewähltem Gerät werden die Datenpunkte "favorites-set" mit den Radiosener Widgets oder der Auswahlliste geschrieben, die unteren Widgets steuern je nach Auswahl die Lautstärke oder Play/Stop/Nächstes.

          jogibear9988J 1 Reply Last reply
          0
          • Frederik BussF Frederik Buss

            @oliverio Ja, das funktioniert. Ich steuere damit dynamisch wie gesagt die SONOS Ansteuerung. Funktioniert am Tablet und am PC. Dauert einen kleinen Moment (<1 Sek), bis sich die neue Objekt-ID im Widget aktualisiert und natürlich müssen die Datenpunkte nach dem Binding identisch benannt sein - auf Gross-/Kleinschreibung achten! Und nein, die berechneten Datenpunkte stehen in keinem anderen Widget.

            Edit:
            So sieht das Ganze dann in der Runtime aus:
            Screenshot 2023-09-16 162157.png
            Mit den Buttons unten rechts wird die Auswahl beschrieben, die Buttons oben links fügen nur Sonos Geräte zur Gruppe hinzu, oder entfernen diese. Je ausgewähltem Gerät werden die Datenpunkte "favorites-set" mit den Radiosener Widgets oder der Auswahlliste geschrieben, die unteren Widgets steuern je nach Auswahl die Lautstärke oder Play/Stop/Nächstes.

            jogibear9988J Offline
            jogibear9988J Offline
            jogibear9988
            wrote on last edited by jogibear9988
            #30

            @frederik-buss
            ja geht es nur beim steuern (dazu muss man den datenpunkt ja nicht abonieren), oder auch beim lesen?

            Ich werds bei mir mal mit der {...} syntax einbauen.
            ich aboniere im Moment sowieso alles einzeln, falls das irgendwann (bei jemand) zu perf problemen führt, baue ich es um,...
            In der Visu welche ich in .NET implemebteirt hatte, mache ich das abbonieren, alle 10ms wenn es neue abbos gib.

            Check my ioBroker webui - a vis alternative
            see: https://github.com/iobroker-community-adapters/ioBroker.webui

            Frederik BussF 1 Reply Last reply
            0
            • jogibear9988J jogibear9988

              @frederik-buss
              ja geht es nur beim steuern (dazu muss man den datenpunkt ja nicht abonieren), oder auch beim lesen?

              Ich werds bei mir mal mit der {...} syntax einbauen.
              ich aboniere im Moment sowieso alles einzeln, falls das irgendwann (bei jemand) zu perf problemen führt, baue ich es um,...
              In der Visu welche ich in .NET implemebteirt hatte, mache ich das abbonieren, alle 10ms wenn es neue abbos gib.

              Frederik BussF Online
              Frederik BussF Online
              Frederik Buss
              wrote on last edited by
              #31

              @jogibear9988 Ich verstehe die Frage ehrlich gesagt nicht so ganz... Sobald der Auswahl Datenpunkt neu beschrieben wurde, aktualisieren sich die Widgets, welche darauf das Binding enthalten. Meinst Du das mit Lesen...?

              jogibear9988J OliverIOO 2 Replies Last reply
              0
              • Frederik BussF Frederik Buss

                @jogibear9988 Ich verstehe die Frage ehrlich gesagt nicht so ganz... Sobald der Auswahl Datenpunkt neu beschrieben wurde, aktualisieren sich die Widgets, welche darauf das Binding enthalten. Meinst Du das mit Lesen...?

                jogibear9988J Offline
                jogibear9988J Offline
                jogibear9988
                wrote on last edited by
                #32

                @frederik-buss
                hast du auch in einem anzeigewidget diesen pfad stehen
                {....}.Volume ?
                und ist der vollständige pfad also ohne {} in keinem anderen anzeigewiget?

                Weil zu zeigt ja alle volumes direkt an, also wahrscheinlich nicht.

                Check my ioBroker webui - a vis alternative
                see: https://github.com/iobroker-community-adapters/ioBroker.webui

                Frederik BussF 1 Reply Last reply
                0
                • Frederik BussF Frederik Buss

                  @jogibear9988 Ich verstehe die Frage ehrlich gesagt nicht so ganz... Sobald der Auswahl Datenpunkt neu beschrieben wurde, aktualisieren sich die Widgets, welche darauf das Binding enthalten. Meinst Du das mit Lesen...?

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  wrote on last edited by
                  #33

                  @frederik-buss

                  das abonnieren kommt von der von iobroker verwendeten bibliothek socket.io.
                  da sagt der empfänger, dem sender, über was er bei änderung informiert werden will. das nennt sich abonnieren
                  ist aber für die endanwender eigentlich irrelevant

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  1 Reply Last reply
                  0
                  • jogibear9988J jogibear9988

                    @frederik-buss
                    hast du auch in einem anzeigewidget diesen pfad stehen
                    {....}.Volume ?
                    und ist der vollständige pfad also ohne {} in keinem anderen anzeigewiget?

                    Weil zu zeigt ja alle volumes direkt an, also wahrscheinlich nicht.

                    Frederik BussF Online
                    Frederik BussF Online
                    Frederik Buss
                    wrote on last edited by
                    #34

                    @jogibear9988 Wenn Du mit Anzeigewidget das img-src Widget meinst, dann geht das dort tatsächlich nicht. in den Inventwo Widgets geht es. Und nein, der vollständige Pfad ohne {} ist in keinem anderen Widget verwendet, zumindest teilweise. Die Lautstärken werden direkt angezeigt, da ist der Pfad jeweils bekannt. Aber bei den Play/Stop/Nächste Widgets sowie den favorites-set Widgets ist der nicht bekannt.

                    OliverIOO jogibear9988J 2 Replies Last reply
                    0
                    • Frederik BussF Frederik Buss

                      @jogibear9988 Wenn Du mit Anzeigewidget das img-src Widget meinst, dann geht das dort tatsächlich nicht. in den Inventwo Widgets geht es. Und nein, der vollständige Pfad ohne {} ist in keinem anderen Widget verwendet, zumindest teilweise. Die Lautstärken werden direkt angezeigt, da ist der Pfad jeweils bekannt. Aber bei den Play/Stop/Nächste Widgets sowie den favorites-set Widgets ist der nicht bekannt.

                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      wrote on last edited by
                      #35

                      @frederik-buss

                      hast du den mal mit den web developer tools nun nachgeschaut, was da tatsächlich im Ergebnis ankommt?

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      Frederik BussF 1 Reply Last reply
                      0
                      • OliverIOO OliverIO

                        @frederik-buss

                        hast du den mal mit den web developer tools nun nachgeschaut, was da tatsächlich im Ergebnis ankommt?

                        Frederik BussF Online
                        Frederik BussF Online
                        Frederik Buss
                        wrote on last edited by
                        #36

                        @oliverio Ne, das Widget ist wieder gelöscht. Ich hatte aber über "Bild anzeigen" die Source angezeigt und gemerkt, dass dort manchmal NULL ankommt, manchmal das Richtige. War irgendwie nicht konsistent und komplett unterschiedlich zu den Inventwo Widgets, da kommt immer das Richtige an.

                        1 Reply Last reply
                        0
                        • Frederik BussF Frederik Buss

                          @jogibear9988 Wenn Du mit Anzeigewidget das img-src Widget meinst, dann geht das dort tatsächlich nicht. in den Inventwo Widgets geht es. Und nein, der vollständige Pfad ohne {} ist in keinem anderen Widget verwendet, zumindest teilweise. Die Lautstärken werden direkt angezeigt, da ist der Pfad jeweils bekannt. Aber bei den Play/Stop/Nächste Widgets sowie den favorites-set Widgets ist der nicht bekannt.

                          jogibear9988J Offline
                          jogibear9988J Offline
                          jogibear9988
                          wrote on last edited by
                          #37

                          Falls es jemand interessiert und es mal mit meiner "webui" testen möchte.
                          Ich hab support dafür nun auch eingebaut, sieht in der bindings konfiguration dann so aus:

                          dc3405bd-7221-4213-b8b6-6230bd3a8a70-image.png

                          Check my ioBroker webui - a vis alternative
                          see: https://github.com/iobroker-community-adapters/ioBroker.webui

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          620

                          Online

                          32.6k

                          Users

                          82.3k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Home
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe