Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Bindings in vis

    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

    Bindings in vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • SBorg
      SBorg Forum Testing Most Active @JB_Sullivan last edited by SBorg

      @JB_Sullivan Dann mal ein Mini-Beispiel. Simple Tabelle mit genau einer Zeile und zwei Spalten, keinerlei Formatierung, Tabellenkopf, Linien, etc.
      Erzeugt im Minutentakt eine Tabelle mit der aktuellen Uptime des ioB:
      Bild 1.png

      Der HTML-Text liegt dann unter "0_userdata.0.Test"
      Die Anzeige in VIS ist dann ziemlich trivial. Einfach das (basic)HTML-Widget nehmen und unter "Allgemein" bei HTML ein Binding auf den Datenpunkt eintragen: {0_userdata.0.Test}


      <xml xmlns="https://developers.google.com/blockly/xml">
      <block type="create" id="JPPZEn|2rtL8i_=7$kC" x="38" y="-138">
      <field name="NAME">0_userdata.0.Test</field>
      <next>
      <block type="schedule" id="Hvb-u%]p|OM)CXo3k#1-">
      <field name="SCHEDULE">
      * * * </field>
      <statement name="STATEMENT">
      <block type="update" id="{o
      ijHqmJ@orI8`?QQ">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">0_userdata.0.Test</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="procedures_callcustomreturn" id="M=AG%Zse(^#x)@Yz]h5/">
      <mutation name="HTML"></mutation>
      </block>
      </value>
      </block>
      </statement>
      </block>
      </next>
      </block>
      <block type="procedures_defcustomreturn" id=";?8J/@Qj2Q*:zoU@RaRj" x="338" y="-62">
      <mutation statements="false"></mutation>
      <field name="NAME">HTML</field>
      <field name="SCRIPT">bGV0IEhUTUw9Ijx0YWJsZT4iOw0KSFRNTCs9Ijx0cj4iOw0KSFRNTCs9Ijx0ZD5VcHRpbWU6PC90ZD4iOw0KSFRNTCs9Ijx0ZD4iICsgZ2V0U3RhdGUoInN5c3RlbS5hZGFwdGVyLmFkbWluLjAudXB0aW1lIikudmFsICsgIiBTZWsuPC90ZD4iOw0KSFRNTCs9IjwvdHI+IjsNCkhUTUwrPSI8L3RhYmxlPiI7DQoNCg0KcmV0dXJuIEhUTUw7</field>
      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
      </block>
      </xml>


      [{"tpl":"tplHtml","data":{"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","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,"html":"{0_userdata.0.Test}"},"style":{"left":"850px","top":"512px"},"widgetSet":"basic"}]

      btw: mach dann ev. ein neues Topic auf, da hier wg. "Bindings" sonst zu OT 😉

      JB_Sullivan 1 Reply Last reply Reply Quote 0
      • JB_Sullivan
        JB_Sullivan @SBorg last edited by

        @SBorg

        Vielen Dank für den Denkanstoß - lernen durch abgucken 😉 Das würde ich mir öfter wünschen, das man so ein Mini Beispiel bekommt und kann sich dann mit dem WIE, WO und WARUM auseinander setzen.

        1 Reply Last reply Reply Quote 0
        • JB_Sullivan
          JB_Sullivan last edited by

          @SBorg

          Kannst du mir noch einen kurze Hinweis geben, wo ich eine Dokumentation finde, die sich auf das Thema "Funktions Editor" bezieht. Ich habe da dein 1-Zeilen Beispiel verwendet und versucht meine bestehende Tabelle damit aufzubauen.

          Leider hat das nicht wie gehofft funktioniert. Ist irgendwie alles "rot" und funktioniert auch nicht. Scheinbar bedarf es da eines bestimmten Befehlsatzes, den ich aber leider nicht kenne 😞

          6bfb8713-7e44-4471-8584-523c3f030e3c-image.png

          SBorg 1 Reply Last reply Reply Quote 0
          • SBorg
            SBorg Forum Testing Most Active @JB_Sullivan last edited by

            @JB_Sullivan Das ist "normales" Javascript.
            Dein Fehler beginnt in der ersten Zeile. Du kannst in (oder innerhalb) der Syntax keine "" verwenden:

            korrekt: let html="blabla...";
            falsch: let html="blabla...border="1"blabla...";
            richtig (innerhalb der äußeren "" zB. escapen): let html="border=\"1\"blabla...";
            

            Konkret bei dir #1: border... cellspacing... + cellpadding
            und #8 collspan
            (oder einfach überall wo eine "rote Wellenlinie" drunter ist hast du einen Fehler 😉

            JB_Sullivan 1 Reply Last reply Reply Quote 0
            • JB_Sullivan
              JB_Sullivan @SBorg last edited by

              @SBorg Super, vielen Dank !!! Funktioniert weitestgehend. Eine letzte Frage habe ich aber doch noch - dann soll es aber auch gut sein 😉

              Wie rundet man in javascript Zahlenwerte? So funktioniert es leider nicht

              42d38b22-fa93-4061-aa4e-2fb36ab6a1bb-image.png

              SBorg 1 Reply Last reply Reply Quote 0
              • SBorg
                SBorg Forum Testing Most Active @JB_Sullivan last edited by

                @JB_Sullivan Das funktioniert so nur im Binding 😉
                Unser Beispiel mal etwas aufgebohrt:

                let uptime_min=Math.round(getState("system.adapter.admin.0.uptime").val /60);
                // wir teilen durch 60 (da die Uptime in Sekunden ist), um die Minuten zu erhalten 
                // und runden das Ganze zu vollen Minuten auf
                
                let HTML="<table border=\"1\">";
                HTML+="<tr><th></th><th>in Sekunden</th><th>in Minuten</th></tr>";
                HTML+="<tr>";
                HTML+="<td>Uptime:</td>";
                HTML+="<td>" + getState("system.adapter.admin.0.uptime").val+ "</td>";
                HTML+="<td>" + uptime_min + "</td>";
                HTML+="</tr>";
                HTML+="</table>";
                
                
                return HTML;
                

                Man könnte auch #1 streichen und es direkt in #10 packen:

                HTML+="<td>" + Math.round(getState("system.adapter.admin.0.uptime").val /60) + "</td>";
                

                Bei längerem Sourcecode verliert man so aber rasch den Überblick, auch sind Änderungen (wenn sich bspw. mal ein Datenpunkt ändert) nicht mehr so schnell möglich. Wenn der Wert in einer Variablen steckt kann man auch bequem mehrmals auf diesen zugreifen, oder ändern, oder...

                ...und bei Nachkommastellen hilft nur multiplizieren, runden und abschließend wieder teilen, da JS nur Ganzzahlig rundet, oder man mit .toFixed(x) direkt abschneidet.

                JB_Sullivan 1 Reply Last reply Reply Quote 0
                • JB_Sullivan
                  JB_Sullivan @SBorg last edited by

                  @SBorg
                  Vielen herzlichen Dank für deinen Gedankenanstoß mit den Blockly und dem javaScript.
                  Die Tabelle funktioniert jetzt und es VIEL VIEL schneller als alles was ich mir mit den Bindings zurecht gebastelt hatte.

                  ce60f753-04ac-4bcf-884c-f187c42dc02d-image.png

                  SBorg 1 Reply Last reply Reply Quote 0
                  • SBorg
                    SBorg Forum Testing Most Active @JB_Sullivan last edited by

                    @JB_Sullivan 🙂 ...und im Grunde kann man als letzten Schritt auch noch auf das Blockly verzichten und packt den Trigger oder Cron einfach mit in ein JS.

                    btw: hat schon mal wer ein Binding auf ein JSON funktionsfähig bekommen?

                    1 Reply Last reply Reply Quote 0
                    • W
                      wye last edited by wye

                      Hallo zusammen,

                      versuche mich aktuell am Binding für die Farbänderung.

                      {0_userdata.0.example_state} <- damit wird in einem Widget alles korrekt dargestellt. 1.PNG

                      Soweit so gut!

                      Problem stellt die View an sich dar...
                      So ändert sich der Background der View leider nicht...
                      Edit: Häkchen setzen oder nicht ändert leider auch nichts
                      Was mache ich falsch?2.PNG

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

                        @wye sagte in Bindings in vis:

                        Hallo zusammen,

                        versuche mich aktuell am Binding für die Farbänderung.

                        {0_userdata.0.example_state} <- damit wird in einem Widget alles korrekt dargestellt. 1.PNG

                        Soweit so gut!

                        Problem stellt die View an sich dar...
                        So ändert sich der Background der View leider nicht...
                        Edit: Häkchen setzen oder nicht ändert leider auch nichts
                        Was mache ich falsch?2.PNG

                        lustig,
                        habe es gerade ausprobiert, tut bei mir auch nicht.
                        im code von vis sieht es so aus, das bindings nur in widgets gehen.
                        aber evtl. weiß jemand anderes mehr

                        1 Reply Last reply Reply Quote 0
                        • SBorg
                          SBorg Forum Testing Most Active last edited by

                          Sagen, oder zitieren wir mal von GitHub:

                          ...there is another option how to bind any attribute of widget to some ObjectID...

                          😉

                          W 1 Reply Last reply Reply Quote 0
                          • W
                            wye @SBorg last edited by

                            @sborg said in Bindings in vis:

                            Sagen, oder zitieren wir mal von GitHub:

                            ...there is another option how to bind any attribute of widget to some ObjectID...

                            😉

                            Ah ok...
                            Danke für Info an euch beide!

                            1 Reply Last reply Reply Quote 0
                            • D
                              DoubleD @SBorg last edited by

                              @sborg said in Bindings in vis:

                              @SBorg sagte in Bindings in vis:

                              EDIT Hmm, wo der Flot-Part herkommt ist eigenartig und Homematic habe ich ebenfalls nicht...

                              Steckt tatsächlich im "Info" und lässt sich nur beim Export/Import herauslöschen.
                              Mit den Bindings lässt sich so einiges realisieren. Man kann auch zwei oder mehrere Objektbedingungen prüfen.

                              Ich möchte eine Anzeige wenn es regnet und das Garagentor offen steht...
                              Mit Blockly, JS, Node-RED kann ich zwar z.B. die Bedingungen prüfen und auch reagieren (bspw. Fahrbefehl 'Garage zu'), für eine Anzeige in VIS müsste ich aber nun extra ein Objekt erzeugen. Ist mit Bindings aber nicht nötig, da ich "einfach" (zumindest wenn man es mal verinnerlicht hat 🙂 ) prüfen kann ob Objekt "Regen" = true UND Objekt "Garagentor" = offen --> dann Anzeige "es regnet gerade in die Garage"

                              ...und mal ein Beispiel für den "BackitUp":
                              auf Knopfdruck Backup erstellen und den jeweiligen Status (erstellen/wird erstellt) anzeigen.
                              Backup.png


                              [{"tpl":"tplJquiButtonState","data":{"oid":"backitup.0.oneClick.minimal","g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","buttontext":"{wert:backitup.0.oneClick.minimal;wert === "true" || wert === true || wert === 1 ? "Minimal Backup </br> wird erstellt" :: "Minimal Backup </br> erstellen"}","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,"no_style":false,"value":"true","name":"Minimal-Backup_Button","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},"style":{"left":"1027px","top":"55px","border-width":"2px","border-style":"solid","border-color":"#505253","width":"200px","height":"50px","z-index":"3","border-radius":"10px","box-shadow":"8px 8px 8px rgba(20, 20, 20, 50)"},"widgetSet":"jqui"}]


                              [{"tpl":"tplJquiButtonState","data":{"oid":"backitup.0.oneClick.total","g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","buttontext":"{wert:backitup.0.oneClick.total;wert === "true" || wert === true || wert === 1 ? "Voll-Backup </br> wird erstellt" :: "Voll Backup </br> erstellen"}","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,"no_style":false,"value":"true","name":"Voll-Backup_Button","html_prepend":"","html_append":"","class":""},"style":{"left":"1027px","top":"125px","border-width":"2px","border-style":"solid","border-color":"#505253","width":"200px","height":"50px","z-index":"3","border-radius":"10px","box-shadow":"8px 8px 8px rgba(20, 20, 20, 50)"},"widgetSet":"jqui"}]

                              Hier wird mit "ODER" die Bedingung überprüft: Objekt = "true" oder true oder 1

                              @SBorg
                              Beim Import werden bei mit Fehler angezeigt, was könnte das sein?
                              io_import.jpg

                              Danke & Gruß
                              Daniel

                              crunchip SBorg 2 Replies Last reply Reply Quote 0
                              • crunchip
                                crunchip Forum Testing Most Active @DoubleD last edited by

                                @doubled sagte in Bindings in vis:

                                Beim Import

                                als widget?

                                D 1 Reply Last reply Reply Quote 0
                                • SBorg
                                  SBorg Forum Testing Most Active @DoubleD last edited by

                                  @doubled

                                  ...und noch: beim Minimal-Backup? Voll Backup gibt es ja schon einige Zeit nicht mehr beim Adapter 😉

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    DoubleD @crunchip last edited by

                                    @crunchip

                                    Ja

                                    SBorg 1 Reply Last reply Reply Quote 0
                                    • crunchip
                                      crunchip Forum Testing Most Active last edited by

                                      @doubled stimmt erhalte ebenfalls nen SyntaxError, egal ob mini oder voll, da müsste @SBorg vllt nochmal nachsehen

                                      1 Reply Last reply Reply Quote 0
                                      • SBorg
                                        SBorg Forum Testing Most Active @DoubleD last edited by

                                        @doubled / @crunchip
                                        Aus welchem Grunde auch immer sind da die "escapeds" der Anführungszeichen innerhalb des Bindings verlorengegangen.

                                        Minimal-Backup (full gibt es ja nicht mehr 😉 ) :

                                        [{"tpl":"tplJquiButtonState","data":{"oid":"backitup.0.oneClick.iobroker","g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","buttontext":"{wert:backitup.0.oneClick.iobroker;wert === \"true\" || wert === true || wert === 1 ? \"Backup </br> wird erstellt\" : \"Backup </br>jetzt erstellen\"}","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,"no_style":false,"value":"true","name":"Minimal-Backup_Button","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},"style":{"left":"1497px","top":"55px","border-width":"2px","border-style":"solid","border-color":"#505253","width":"200px","height":"50px","z-index":"3","border-radius":"10px","box-shadow":"8px 8px 8px rgba(20, 20, 20, 50)"},"widgetSet":"jqui"}]
                                        
                                        Homoran 1 Reply Last reply Reply Quote 1
                                        • crunchip
                                          crunchip Forum Testing Most Active last edited by

                                          @sborg sagte in Bindings in vis:

                                          escapeds

                                          jetzt musst ich erst mal beide vergleichen, was du da meinst🤔
                                          backslash

                                          SBorg 1 Reply Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @SBorg last edited by

                                            @sborg sagte in Bindings in vis:

                                            Aus welchem Grunde auch immer sind da die "escapeds" der Anführungszeichen innerhalb des Bindings verlorengegangen.

                                            wo? (habe nur gerade diesen Post gesehen)
                                            hier im Forum?
                                            da passiert das wegen Markdown.

                                            Bitte Link, dann seh ich mir das mal an

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            663
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            vis
                                            17
                                            81
                                            12349
                                            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