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. Visualisierung
  4. VIS html binding mit Variable

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

VIS html binding mit Variable

Geplant Angeheftet Gesperrt Verschoben Visualisierung
7 Beiträge 3 Kommentatoren 2.6k Aufrufe 4 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.
  • B Offline
    B Offline
    bluefish
    schrieb am zuletzt editiert von
    #1

    Hallo,

    hat jemand eine Erklärung, warum folgendes Script in einem html widget nicht richtig funktioniert und ob es eine Lösung dafür gibt...

    Fixed = <span id="fixed"></span> <br>
    Variable = <span id="variable"></span>
    
    <script>
        var resultFixed = '{0_userdata.0.log.year.2021.KW23}';
        document.getElementById('fixed').innerHTML = resultFixed;
        
        var kw = "23";
        var resultVariable = '{0_userdata.0.log.year.2021.KW' + kw + '}';
        document.getElementById('variable').innerHTML = resultVariable;
    
    </script>
    

    Im VIS Editor zeigt er bei beiden den richtigen Pfad an:
    Bildschirmfoto 2021-06-13 um 14.59.10.png

    In der Anzeige zeigt er mir bei "Fixed" den richtigen Wert an, bei "Variable" eine "null".
    Bildschirmfoto 2021-06-13 um 14.59.27.png

    Jemand eine Idee? :)
    Danke!

    mickymM OliverIOO 2 Antworten Letzte Antwort
    0
    • B bluefish

      Hallo,

      hat jemand eine Erklärung, warum folgendes Script in einem html widget nicht richtig funktioniert und ob es eine Lösung dafür gibt...

      Fixed = <span id="fixed"></span> <br>
      Variable = <span id="variable"></span>
      
      <script>
          var resultFixed = '{0_userdata.0.log.year.2021.KW23}';
          document.getElementById('fixed').innerHTML = resultFixed;
          
          var kw = "23";
          var resultVariable = '{0_userdata.0.log.year.2021.KW' + kw + '}';
          document.getElementById('variable').innerHTML = resultVariable;
      
      </script>
      

      Im VIS Editor zeigt er bei beiden den richtigen Pfad an:
      Bildschirmfoto 2021-06-13 um 14.59.10.png

      In der Anzeige zeigt er mir bei "Fixed" den richtigen Wert an, bei "Variable" eine "null".
      Bildschirmfoto 2021-06-13 um 14.59.27.png

      Jemand eine Idee? :)
      Danke!

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      @bluefish Eine Idee schon - aber die Lösung muss wohl eine andere sein.

      Sprich die Bindung findet statt bevor der Code ausgeführt wird. Deswegen nutzt Dir das nicht das variabel zu gestalten.

      Du musst wohl oder übel über Deine Logikmaschine einen konstanten Datenpunkt verwenden und über Deine Logikmaschine den aktuellen Verbrauch dynamisch da rein schreiben.

      In NodeRed definiert man einen eigenen CodeBlock damit man dort auf das Nachrichtenobjekt zugreifen kann. Wahrscheinlich ginge das im VIS ähnlich, da hier das Binding statt auf das Nachrichtenobjekt auf die iobroker Datenbank geht.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      B 1 Antwort Letzte Antwort
      0
      • B bluefish

        Hallo,

        hat jemand eine Erklärung, warum folgendes Script in einem html widget nicht richtig funktioniert und ob es eine Lösung dafür gibt...

        Fixed = <span id="fixed"></span> <br>
        Variable = <span id="variable"></span>
        
        <script>
            var resultFixed = '{0_userdata.0.log.year.2021.KW23}';
            document.getElementById('fixed').innerHTML = resultFixed;
            
            var kw = "23";
            var resultVariable = '{0_userdata.0.log.year.2021.KW' + kw + '}';
            document.getElementById('variable').innerHTML = resultVariable;
        
        </script>
        

        Im VIS Editor zeigt er bei beiden den richtigen Pfad an:
        Bildschirmfoto 2021-06-13 um 14.59.10.png

        In der Anzeige zeigt er mir bei "Fixed" den richtigen Wert an, bei "Variable" eine "null".
        Bildschirmfoto 2021-06-13 um 14.59.27.png

        Jemand eine Idee? :)
        Danke!

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von OliverIO
        #3

        @bluefish sagte in VIS html binding mit Variable:

        Hallo,

        hat jemand eine Erklärung, warum folgendes Script in einem html widget nicht richtig funktioniert und ob es eine Lösung dafür gibt...

        Fixed = <span id="fixed"></span> <br>
        Variable = <span id="variable"></span>
        
        <script>
            var resultFixed = '{0_userdata.0.log.year.2021.KW23}';
            document.getElementById('fixed').innerHTML = resultFixed;
            
            var kw = "23";
            var resultVariable = '{0_userdata.0.log.year.2021.KW' + kw + '}';
            document.getElementById('variable').innerHTML = resultVariable;
        
        </script>
        

        Im VIS Editor zeigt er bei beiden den richtigen Pfad an:
        Bildschirmfoto 2021-06-13 um 14.59.10.png

        In der Anzeige zeigt er mir bei "Fixed" den richtigen Wert an, bei "Variable" eine "null".
        Bildschirmfoto 2021-06-13 um 14.59.27.png

        Jemand eine Idee? :)
        Danke!

        Es gibt kein dynamisches Binding.
        Die Bindings wird beim start der view gesucht.
        Wenn der Name da noch nicht feststeht, dann ist es kein gültiges Binding

        um states vom server abzurufen musst du die folgende funktion verwenden

        vis.conn.getStates(dps, function (error, states) {
        }
        

        dps ist ein array mit ein oder mehreren datenpunkten
        in states kommt dann ein array der datenpunkte als objekte zurück.

        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 Antwort Letzte Antwort
        0
        • mickymM mickym

          @bluefish Eine Idee schon - aber die Lösung muss wohl eine andere sein.

          Sprich die Bindung findet statt bevor der Code ausgeführt wird. Deswegen nutzt Dir das nicht das variabel zu gestalten.

          Du musst wohl oder übel über Deine Logikmaschine einen konstanten Datenpunkt verwenden und über Deine Logikmaschine den aktuellen Verbrauch dynamisch da rein schreiben.

          In NodeRed definiert man einen eigenen CodeBlock damit man dort auf das Nachrichtenobjekt zugreifen kann. Wahrscheinlich ginge das im VIS ähnlich, da hier das Binding statt auf das Nachrichtenobjekt auf die iobroker Datenbank geht.

          B Offline
          B Offline
          bluefish
          schrieb am zuletzt editiert von
          #4

          @mickym Danke für deine Antwort! An diese Lösung habe ich auch schon gedacht. Ich dachte nur ich könnte mir so vielleicht unzählige Datenpunkte sparen (ist nicht der einzige Wert mit Variable, den ich ausgeben will)...

          Aber wenn das Binding stattfindet bevor der Code ausgeführt wird, dürfte doch die "fixed" Ausgabe auch nicht klappen?

          @OliverIO Auch danke für deine Antwort! Aber müsste dann nicht zumindest der Wert beim Start der view einmal gefunden werden - und sich später halt nicht ändern...?

          mickymM OliverIOO 2 Antworten Letzte Antwort
          0
          • B bluefish

            @mickym Danke für deine Antwort! An diese Lösung habe ich auch schon gedacht. Ich dachte nur ich könnte mir so vielleicht unzählige Datenpunkte sparen (ist nicht der einzige Wert mit Variable, den ich ausgeben will)...

            Aber wenn das Binding stattfindet bevor der Code ausgeführt wird, dürfte doch die "fixed" Ausgabe auch nicht klappen?

            @OliverIO Auch danke für deine Antwort! Aber müsste dann nicht zumindest der Wert beim Start der view einmal gefunden werden - und sich später halt nicht ändern...?

            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von
            #5

            @bluefish sagte in VIS html binding mit Variable:

            @mickym Danke für deine Antwort! An diese Lösung habe ich auch schon gedacht. Ich dachte nur ich könnte mir so vielleicht unzählige Datenpunkte sparen (ist nicht der einzige Wert mit Variable, den ich ausgeben will)...

            Aber wenn das Binding stattfindet bevor der Code ausgeführt wird, dürfte doch die "fixed" Ausgabe auch nicht klappen?

            @OliverIO Auch danke für deine Antwort! Aber müsste dann nicht zumindest der Wert beim Start der view einmal gefunden werden - und sich später halt nicht ändern...?

            In Node-Red gibt es so ein ähnliches Code Fragement, um im script Block die Bindung zu ermöglichen - ich denke es müsste im VIS ähnlich gehen, da ich glaube dass der Bindungsmechanismus ähnlich ist.

            (function(scope){ 
                    scope.$watch('msg', function(msg) {
                        
            ....
                    });
                })(scope);
            

            Statt msg und function(msg) muss da was anderes stehen im VIS - aber das übersteigt meinen Horizont.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            1 Antwort Letzte Antwort
            0
            • B bluefish

              @mickym Danke für deine Antwort! An diese Lösung habe ich auch schon gedacht. Ich dachte nur ich könnte mir so vielleicht unzählige Datenpunkte sparen (ist nicht der einzige Wert mit Variable, den ich ausgeben will)...

              Aber wenn das Binding stattfindet bevor der Code ausgeführt wird, dürfte doch die "fixed" Ausgabe auch nicht klappen?

              @OliverIO Auch danke für deine Antwort! Aber müsste dann nicht zumindest der Wert beim Start der view einmal gefunden werden - und sich später halt nicht ändern...?

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              schrieb am zuletzt editiert von
              #6

              @bluefish sagte in VIS html binding mit Variable:

              @mickym Danke für deine Antwort! An diese Lösung habe ich auch schon gedacht. Ich dachte nur ich könnte mir so vielleicht unzählige Datenpunkte sparen (ist nicht der einzige Wert mit Variable, den ich ausgeben will)...

              Aber wenn das Binding stattfindet bevor der Code ausgeführt wird, dürfte doch die "fixed" Ausgabe auch nicht klappen?

              @OliverIO Auch danke für deine Antwort! Aber müsste dann nicht zumindest der Wert beim Start der view einmal gefunden werden - und sich später halt nicht ändern...?

              ja richtig, deswegen funktioniert ja auch die erste abfrage.
              bei der 2. Abfrage steht der datenpunkt-name ja noch nicht fest, sondern wird erst bei Aufruf der funktion ermittelt. Das findet vis dann nicht.
              vis sucht mit regex nach allem was sich zwischen den spitzen klammern befindet, macht ein paar Prüfungen und was dann übrigbleibt wird beim server angefragt. wenn dann dazu werte kommen, dann werden die auch angezeigt und danach bei änderung auch aktualisiert.

              in meinem vorigen post habe ich den code für das einmalige abfragen geschrieben. um die abfrage und automatische aktualisierung nachzubilden ist noch ein wenig mehr code notwendig und ist nicht ganz so benutzerfreundlich.

              hier ein Beispiel aus meinen widgets
              https://github.com/oweitman/ioBroker.tvprogram/blob/4a413bc434850ec667b52fa3c70689307d0e700a/widgets/tvprogram/js/tvprogram.js#L2222

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

              B 1 Antwort Letzte Antwort
              0
              • OliverIOO OliverIO

                @bluefish sagte in VIS html binding mit Variable:

                @mickym Danke für deine Antwort! An diese Lösung habe ich auch schon gedacht. Ich dachte nur ich könnte mir so vielleicht unzählige Datenpunkte sparen (ist nicht der einzige Wert mit Variable, den ich ausgeben will)...

                Aber wenn das Binding stattfindet bevor der Code ausgeführt wird, dürfte doch die "fixed" Ausgabe auch nicht klappen?

                @OliverIO Auch danke für deine Antwort! Aber müsste dann nicht zumindest der Wert beim Start der view einmal gefunden werden - und sich später halt nicht ändern...?

                ja richtig, deswegen funktioniert ja auch die erste abfrage.
                bei der 2. Abfrage steht der datenpunkt-name ja noch nicht fest, sondern wird erst bei Aufruf der funktion ermittelt. Das findet vis dann nicht.
                vis sucht mit regex nach allem was sich zwischen den spitzen klammern befindet, macht ein paar Prüfungen und was dann übrigbleibt wird beim server angefragt. wenn dann dazu werte kommen, dann werden die auch angezeigt und danach bei änderung auch aktualisiert.

                in meinem vorigen post habe ich den code für das einmalige abfragen geschrieben. um die abfrage und automatische aktualisierung nachzubilden ist noch ein wenig mehr code notwendig und ist nicht ganz so benutzerfreundlich.

                hier ein Beispiel aus meinen widgets
                https://github.com/oweitman/ioBroker.tvprogram/blob/4a413bc434850ec667b52fa3c70689307d0e700a/widgets/tvprogram/js/tvprogram.js#L2222

                B Offline
                B Offline
                bluefish
                schrieb am zuletzt editiert von bluefish
                #7

                @oliverio vielen Dank für die Rückmeldung und die Lösung, die ich allerdings nicht verstehe. (Was aber nicht an deiner Erklärung, sondern an meinen Kenntnissen liegt)

                Daher muss ich wohl die Bindings im javascript Adapter zusammensetzen und halt in eigenen Datenpunkten ablegen. Die Lösung gefällt mir zwar nicht, ich finde sie nicht wirklich elegant...

                Schade, dass es in vis keine einfachere Lösung gib mit Variablen auf Datenpunkte zuzugreifen.

                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

                754

                Online

                32.5k

                Benutzer

                81.6k

                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