Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Dokumentation für 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

    Dokumentation für VIS?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Hiltex
      Hiltex last edited by

      Hi,

      gibt es für VIS eigentlich irgendwo eine ausführliche Dokumentation?

      Was in der Doku auf iobroker.net beschrieben steht, sind ja eher die Basics.
      Die Doku auf GitHub sieht da schon vielversprechender aus, aber reißt ja nur sehr oberflächlich ein paar Themen an.

      Aktuell suche ich für folgendes eine Lösung:
      In einem HTML-Dialog möchte ich einen Button einbauen, mit dem ich einen Bool-Datenpunkt setzen kann. Eine Rückmeldung ist nicht nötig, ich brauche nur einen Link, der die Aktion auslöst.

      Gibt es irgendwo noch mehr Dokumentation, mit der man tiefer eintauchen kann und wo man sowas nachlesen kann?

      Homoran OliverIO 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Hiltex last edited by Homoran

        @hiltex sagte in Dokumentation für VIS?:

        gibt es für VIS eigentlich irgendwo eine ausführliche Dokumentation?

        leider sonst nur die alte Doku ohne Bilder
        https://www.iobroker.net/docu/index-194.htm?page_id=2754&lang=de

        wann und wohin die bei der Migration verschollen ist weiß ich leider nicht

        allerdings gab es noch nie eine Doku, in der alle Funktionen von allen Widgets ausführlich beschrieben wurden.
        Das wäte ein bebildertes Telefonbuch geworden

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

          @homoran
          Ich brauche eigentlich garkeine Dokumentation zu den Widgets, sondern eher, wie man bestimmte Sachen Widget-unabhängig bauen kann, zum Beispiel, wie ich die Funktion eines Button State mit einem beliebigen Element (vielleicht einem Bild o.ä.) selber bauen kann.

          Aber ok, gibt es nicht. Sehr schade.
          Danke trotzdem für die Info.

          Ohne Not. Homoran 2 Replies Last reply Reply Quote 0
          • Ohne Not.
            Ohne Not. @Hiltex last edited by

            @hiltex
            Hey, die bin ich gerade auch am suchen.
            Versuch mal das hier:

            <button onclick="myFunction()">Klick mich</button>
            <script>
            function myFunction()
            {
                 vis.setValue(oid, true);
            }
            </script>
            

            Alternativ sollte auch das hier gehen:

            <button onclick="myFunction()">Klick mich</button>
            <script>
            function myFunction()
            {
                 this.servConn._socket.emit('setState', oid, true);
            }
            </script>
            
            
            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @Hiltex last edited by

              @hiltex sagte in Dokumentation für VIS?:

              wie man bestimmte Sachen Widget-unabhängig bauen kann, zum Beispiel, wie ich die Funktion eines Button State mit einem beliebigen Element (vielleicht einem Bild o.ä.) selber bauen kann.

              das ist wohl eher Javascript, das über Bindings eingebaut wird.
              Nicht wirklich vis-"Bedienung".

              Ohne Not. 1 Reply Last reply Reply Quote 0
              • Ohne Not.
                Ohne Not. @Homoran last edited by

                Hey @Homoran,
                hast du zufällig eine Dokumentation zum Thema "Bindings" oder eine Quelle in der man sich schlau lesen kann?

                1 Reply Last reply Reply Quote 0
                • arteck
                  arteck Developer Most Active last edited by arteck

                  @ohne-not https://forum.iobroker.net/topic/45764/vis-html-binding-mit-variable

                  https://github.com/ioBroker/ioBroker.vis#bindings-of-objects

                  Ohne Not. 1 Reply Last reply Reply Quote 0
                  • Ohne Not.
                    Ohne Not. @arteck last edited by

                    Hey @arteck
                    danke. Ich meine das Binden via JS. also z.b.

                    vis.states.bind(oid + '.val', (e, newVal, oldVal) => console.log(e.type + ' change to ' + newVal));
                    

                    Leider finde ich dazu keine Dokumentation. Auch für weitere funktionen / informationen beim Zugriff auf das Object vis und this.servConn._socket

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

                      Ich hatte tatsächlich gestern Abend noch herausgefunden, wie ich mein Vorhaben umsetzen kann.

                      @homoran sagte in Dokumentation für VIS?:

                      das ist wohl eher Javascript, das über Bindings eingebaut wird.
                      Nicht wirklich vis-"Bedienung".

                      Nicht ganz. Das Scripting selbst ist nicht das Problem gewesen, sondern die Möglichkeiten, die VIS bietet, was die eigentliche Frage war.

                      Durch Analysieren von Widgets hatte ich folgende Lösung gefunden:

                      <button class="bestätigen" onClick="vis.setValue('0_userdata.0.ZZ_Test.Test01.test29', true);">Rücksetzen</button>
                      

                      Dass man mittels vis.setValue(oid, val); mit beliebigen Elementen Datenpunkte verändern kann war die Information, die ich gesucht hatte. Somit brauch ich nun nicht für jeden Dialog eine eigene View bauen, sondern kann das direkt im HTML-Dialog eintragen, was der Übersichtlichkeit sehr zuträglich ist.

                      Das kann ich sicherlich noch an der einen oder anderen Stelle gut gebrauchen.

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

                        @hiltex sagte in Dokumentation für VIS?:

                        sondern die Möglichkeiten, die VIS bietet, was die eigentliche Frage war.

                        ganz ehrlich?
                        ich habe keine Ahnung wer so was wissen kann und soll.

                        Wenn, dann wäre das IMHO ein Thema für die Developer Doku.

                        Der normale Anwender wird so etwas kaum benötigen

                        Hiltex 1 Reply Last reply Reply Quote 0
                        • Hiltex
                          Hiltex @Homoran last edited by

                          @homoran sagte in Dokumentation für VIS?:

                          Der normale Anwender wird so etwas kaum benötigen

                          Wen meinst du denn mit "normale Anwender"? Wenn man sich im Forum umschaut, dann gibt es hier echt viele, die sich mächtig ins Zeug legen um eine tolle Visualisierung auf die Beine zu stellen. "Normal" finde ich das überhaupt nicht, aber ich verstehe natürlich, was du meinst 😉

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

                            @hiltex sagte in Dokumentation für VIS?:

                            Normal" finde ich das überhaupt nicht

                            ich auch nicht, und bewundere Leute, die wie du jetzt, durch "reversed engineering" solche Dinge herauskitzeln.

                            Nur wo soll man so etwas dokumentieren ohne den Ruf von iobroker er sei nur etwas für Nerds noch mehr zu festigen und ohne den Großteil der 65000 Nutzer und erst Recht Interessenten abzuschrecken.

                            Ganz zu schweigen davon, wer so eine "ioBroker deep insight" Doku schreiben könnte.

                            Hiltex 1 Reply Last reply Reply Quote 0
                            • Hiltex
                              Hiltex @Homoran last edited by

                              @homoran
                              Ich war ja eigentlich der Meinung, dass es sowas schon gibt und nicht erst geschrieben werden muss, daher auch die ursprüngliche Frage. "Developer Doku" war da schon das richtige Stichwort. Das Wissen muss ja grundsätzlich vorhanden sein, sonst könnte ja niemand Widgets entwickeln. Die Frage ist nur, ob das Wissen auch irgendwo niedergeschrieben ist, oder ob die Entwickler den Quellcode als Dokumentation nutzen, was ja nicht ganz unüblich ist.

                              Ich hatte schon ein paar Angriffe unternommen, mich mit VIS etwas intensiver auseinanderzusetzen. Da sind etliche Widgets fehlerhaft oder verhalten sich anders, als andere Widgets aus demselben Set. Aber ich hab das immer wieder schnell mangels Dokumentation fallen lassen.

                              Was den Ruf von ioBroker angeht ist mit bisher eigentlich noch nichts schlechtes untergekommen. FHEM mag nerdig sein, aber ioBroker finde ich äußerst benutzerfreundlich. Außer ein paar Design-Sachen wüsste ich nicht, wie man es besser machen könnte. Großer Funktionsumfang und viele Möglichkeiten erfordern eben auch eine komplexe Software, mit der sich die Anforderungen umsetzen lassen. Der Ruf wird wohl einfach dem Thema geschuldet sein. Smart Home in Summe ist ja schon etwas nerdig, sobald es über "Hura, mein Zuhause ist smart, denn ich kann eine Steckdose durch einen Zwischenstecker mit dem Handy ein- und ausschalten!" hinaus geht. Steigern lässt sich das immer.

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

                                @hiltex sagte in Dokumentation für VIS?:

                                Die Frage ist nur, ob das Wissen auch irgendwo niedergeschrieben ist, oder ob die Entwickler den Quellcode als Dokumentation nutzen, was ja nicht ganz unüblich ist.

                                was das angeht könnte vielleicht @uncletwas wissen (hoffe ich). Ich habe bisher nur die Anwenderdoku gemacht. Mehr kann ich auch gar nicht, bin ja auch nur ein User.

                                @hiltex sagte in Dokumentation für VIS?:

                                FHEM mag nerdig sein, aber ioBroker finde ich äußerst benutzerfreundlich

                                ich versuche es meist so: iob kann ganz einfach bedient werden, wer mehr will kann das aber auch!

                                Hiltex 1 Reply Last reply Reply Quote 0
                                • Hiltex
                                  Hiltex @Homoran last edited by

                                  @homoran sagte in Dokumentation für VIS?:

                                  ich versuche es meist so: iob kann ganz einfach bedient werden, wer mehr will kann das aber auch!

                                  Das würde ich unterschreiben.

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

                                    @hiltex

                                    tja leider ist das mit der doku sehr dürftig.
                                    ich habe mich selbst du vorhanden code der widgets und auch von vis selbst durchgewühlt und viel debugged um zu verstehen wie ein paar sachen funktionieren.
                                    leider ist vis sehr monolithis gebaut mit sehr großen funktionen (also mit vielen zeilen)
                                    da macht es das debuggen schwer, weil man auch nicht immer so ganz versteht was da passiert.
                                    vis mach auch nicht alles selbst, sondern behilft sich verschiedenen bibliotheken.
                                    irgendwo steht was von vue, wird auch eingebunden, aber irgendwie nicht so richtig genutzt
                                    um das mit dem binding von states in javascript zu verstehen muss man sich mit der bibliothek canJS 2.3.35 (leider sehr alt) auseinandersetzen.
                                    https://v2.canjs.com/docs/index.html

                                    auch ist in vis einige an automatismus und magie enthalten, die es normalen widget entwicklern leichter macht.
                                    am beispiel des folgenden einfachen widgets
                                    https://github.com/ioBroker/ioBroker.vis/blob/66dc4b7fcaf24164d2f4c3261af7df6d96a54a5d/www/widgets/basic.html#L2619

                                    das ist ein widget/componenten template auf basis can.widget/can.Component
                                    da gibt es ein bisschen rahmeninformation, das das widget in der auswahl angezeigt wird und den eigentlichen inhalt.
                                    jedes attribut, das mit oid beginnt, wird von vis erkannt (aber nur beim start), wird dann über socketio beim server abonniert und erhält dann automatisch alle änderungen, bzw. wird einfach komplett neu gezeichnet.

                                    wenn man das alles selber machen möchte, dann muss man verschiedene dinge selbst organisieren.

                                    Ich habe mir diese Funktion gebaut, damit ich ein Array mit Datenpunkten abonnieren kann und über änderungen informiert werde
                                    https://github.com/oweitman/ioBroker.openligadb/blob/68473c3be773ceb2368176c4261ca74ab1e5e21e/widgets/openligadb/js/openligadb.js#L1429

                                        bindStates: function(elem,bound,change_callback) {
                                            var $div = $(elem);
                                            var boundstates = $div.data('bound');
                                            if (boundstates) {
                                                for (var i = 0; i < boundstates.bound.length; i++) {
                                                    vis.states.unbind(boundstates.bound[i], boundstates.change_callback);
                                                }
                                            }
                                            $div.data('bound', null);
                                            $div.data('bindHandler', null);
                                    
                                            vis.conn.gettingStates = 0;
                                            vis.conn.getStates(bound, function (error, states) {
                                                vis.updateStates(states);
                                                vis.conn.subscribe(bound);
                                    
                                                for (var i=0;i<bound.length;i++) {
                                                    bound[i]=bound[i]+'.val';
                                                    vis.states.bind(bound[i] , change_callback);
                                                }
                                                $div.data('bound', {bound,change_callback});
                                                $div.data('bindHandler', change_callback);
                                            }.bind({change_callback}));
                                        },
                                    

                                    alle change_handler werden hier in einem html element gespeichert,
                                    damit sie beim nächsten aufruf wieder deabonniert und neu aboniert werden können, ansonsten kann es leicht zu speicherüberlauf oder memory leaks kommen.
                                    tricky ist, das es exakt die gleiche funktions objekt sein muss zum deabonnieren, sonst klappts nicht
                                    auch muss man aufpassen, das eine Änderung am Datenpunkt nicht mit kaskadierenden De/Neu-Abonnierungen statt findet, sonst ebenfalls Speicherprobleme

                                    Dann erst mal viel Spaß und wenn du Fragen hast, gerne

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    900
                                    Online

                                    31.9k
                                    Users

                                    80.1k
                                    Topics

                                    1.3m
                                    Posts

                                    5
                                    16
                                    1234
                                    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