Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. neue Visualisierung "webui" (alternative zu vis & vis-2)

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    neue Visualisierung "webui" (alternative zu vis & vis-2)

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

      @kamikaze jepp ich bin weiter eigentlich habe ich den baum vor lauter wald nicht gesehen 😉 bzw zu komliziert gedacht 😉 Bin grad noch drann sowaas wie vorwärts und rückwärts boutton zu machen damit man besser blättern kann 😉 wenns fertig ist kann ich es am test hochladen

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

        Ich glaube die "@font-face" rule, ging nicht in den styles unter den screens, da diese constructible stylesheets sind, und ich glaube fontface musste in einem normal stylesheet sein, daher hatte ich den font declaration style eingefügt. Finde gerade aber keine doku ob das erlaubt ist.

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

          vlt. hatte ich das auch nur, das die font rechtzeitig geladen ist, laut chatgpt ist's nämlich erlaubt...
          @import geht auf jeden fall nicht

          K 1 Reply Last reply Reply Quote 0
          • K
            Kamikaze @jogibear9988 last edited by

            @jogibear9988 Das freut mich, dass wieder ein bisschen Action ist.
            Nächste Frage an die Experten:

            Wenn ich den Designer starte, erhalte ich Fehlermeldungen und ich soll in der Console nachschauen.
            In der Console finde ich die Meldungen:

            Error reading Control Object TypeError: Cannot convert undefined or null to object
                at Function.keys (<anonymous>)
                at IobrokerHandler.getCustomControl (IobrokerHandler.js:271:32)
                at async Promise.all (index 33)
                at async IobrokerHandler.loadAllCustomControls (IobrokerHandler.js:244:9)
            

            Ich konnte auch die Controls identifizieren:
            Wenn ich das Control öffne, funktioniert alles wie gewünscht ohne Fehlermeldung.

            Eins von den Controls sieht wie folgt aus:

            <div style="position:absolute;left:0px;top:0px;width:441px;height:539px;">
                <svg width="100%" height="100%" version="1.1" viewBox="0 0 116.42 142.87" xmlns="http://www.w3.org/2000/svg">
                    <path d="m0-0.004545h23.714l4.3117 3.5718h60.364l4.3117-3.5718h23.714v142.87h-116.42z" fill="#333"></path>
                    <path d="m19.31-0.004545h80.697l-5.0436 3.9687h-70.61z"></path>
                    <path d="m84.26 142.18h-69.3l4.3312-2.3283h60.637z" stroke="#000" stroke-width=".31756px"></path>
                    <g fill="#666">
                        <rect x="1.32" y="4.2287" width="113.77" height="2.6458"></rect>
                        <rect transform="rotate(90)" x="6.8745" y="-1.98" width="130.84" height=".66145"></rect>
                        <rect transform="rotate(90)" x="6.8745" y="-114.96" width="130.84" height=".66145"></rect>
                        <rect x="1.32" y="137.18" width="113.24" height=".66145"></rect>
                    </g>
                    <text x="5.0281706" y="6.4983621" fill="#ffffff" font-family="C059" font-size="2.6458px" font-weight="bold" stroke-width=".26458" xml:space="preserve" style="line-height:1.25;">
                        <tspan x="5.0281706" y="6.4983621" fill="#ffffff" font-family="C059" font-size="2.6458px" font-weight="bold" stroke-width=".26458">Heizung</tspan>
                    </text>
                    <g fill="#fff" stroke-width=".26458">
                        <path d="m10.58-0.004545a10.583 10.583 0 0 1-10.583 10.583v-10.583z" opacity=".1"></path>
                        <path d="m105.83 142.87a10.583 10.583 0 0 1 10.583-10.583v10.583z" opacity=".1"></path>
                        <path d="m105.83-0.004545a10.583 10.583 0 0 0 10.583 10.583v-10.583z" opacity=".22"></path>
                    </g>
                    <text x="92.431496" y="6.2620301" fill="#ffffff" font-family="C059" font-size="2.6458px" font-weight="bold" stroke-width=".26458" xml:space="preserve" style="line-height:1.25;">
                        <tspan x="92.431496" y="6.2620301" fill="#ffffff" font-family="C059" font-size="2.6458px" font-weight="bold" stroke-width=".26458">440x540</tspan>
                    </text>
                    <g fill="#fff">
                        <rect x="112.32" y="4.8346" width=".98133" height="1.1284" stroke-width=".26457"></rect>
                        <rect x="3.17" y="4.7579" width=".98133" height="1.1284" stroke-width=".26457"></rect>
                        <path d="m10.58 142.87a10.583 10.583 0 0 0-10.583-10.583v10.583z" opacity=".1" stroke-width=".26458"></path>
                    </g>
                    <g fill="#999" stroke="#999" stroke-width="1.2898">
                        <rect x="3.0262" y="7.7856" width="35.488" height="27.775" rx="2.512" ry="2.6491" opacity=".37655"></rect>
                        <rect x="40.334" y="7.7856" width="35.488" height="27.775" rx="2.512" ry="2.6491" opacity=".37655"></rect>
                        <rect x="77.641" y="7.7856" width="35.488" height="27.775" rx="2.512" ry="2.6491" opacity=".37655"></rect>
                        <rect x="3.0262" y="108.25" width="35.488" height="27.775" rx="2.512" ry="2.6491" opacity=".37655"></rect>
                        <rect x="40.334" y="108.25" width="35.488" height="27.775" rx="2.512" ry="2.6491" opacity=".37655"></rect>
                        <rect x="77.641" y="108.25" width="35.488" height="27.775" rx="2.512" ry="2.6491" opacity=".37655"></rect>
                    </g>
                </svg>
            </div>
            
            

            Also habe ich vermutet, dass es etwas mit dem Inhalt zu tun hat, aber das ist nicht der Fall.
            Reduziere ich den Inhalt auf:

            <div style="position:absolute;left:0px;top:0px;width:441px;height:539px;">
            </div>
            
            

            Kommt immer noch die Fehlermeldungen.
            Das Control hat keine zusätzlichen Eingeschaften, es handelt sich hierbei nur um eine Fenstervorlage.

            jogibear9988 1 Reply Last reply Reply Quote 0
            • jogibear9988
              jogibear9988 @Kamikaze last edited by

              @kamikaze

              kannst es in das demo system einfügen, das ich es nachvollziehen kann?

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

                Hat dein Control properties? scheint so das kommt wenn es keine hat. Da fehlt glaub ein null check.
                Füg mal testweise ne property hinzu

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

                  hab schon mal ne neue version gebaut, vlt. fixt die es

                  Smilie108 K 2 Replies Last reply Reply Quote 0
                  • Smilie108
                    Smilie108 @jogibear9988 last edited by Smilie108

                    @jogibear9988 mhm frage
                    kann ich auf ein control.prop auch einen wert zurückschreiben ? wenn ich bei der steuerung von grafana zb eine pfeiltaste mache die mit pointerdown und pointerup läuft dann läuft das script ja 2x durch allerdings müsste ich den manipulirten wert auf das selector_zeit reture schreiben sonst ist beim 2.ten durchlauf das orginaldatum ja wieder drinn.

                    kopier dir das mal am test

                    Achja und beim export import von screens verliert er im styles eine die letzte }
                    mfg tom

                    jogibear9988 1 Reply Last reply Reply Quote 0
                    • K
                      Kamikaze @jogibear9988 last edited by

                      @jogibear9988 Nicht so bescheiden.
                      Das war ein Treffer. Die Fehlermeldungen sind weg. DANKE.
                      B.t.w. Ich plane euch auch etwas zurückzugeben. Die Grundlagen, die ich mir gerade erarbeite als eine kleine Sammlung als Dokumentation.
                      Frage 1: Besteht Interesse?
                      Frage 2: In welchem Format, Markup oder einfach Office-Dokumente?

                      jogibear9988 1 Reply Last reply Reply Quote 0
                      • jogibear9988
                        jogibear9988 @Kamikaze last edited by

                        @kamikaze said in neue Visualisierung "webui" (alternative zu vis & vis-2):

                        @jogibear9988 Nicht so bescheiden.
                        Das war ein Treffer. Die Fehlermeldungen sind weg. DANKE.
                        B.t.w. Ich plane euch auch etwas zurückzugeben. Die Grundlagen, die ich mir gerade erarbeite als eine kleine Sammlung als Dokumentation.
                        Frage 1: Besteht Interesse?
                        Frage 2: In welchem Format, Markup oder einfach Office-Dokumente?

                        https://github.com/iobroker-community-adapters/ioBroker.webui/wiki

                        K 1 Reply Last reply Reply Quote 0
                        • jogibear9988
                          jogibear9988 @Smilie108 last edited by

                          @smilie108 said in neue Visualisierung "webui" (alternative zu vis & vis-2):

                          @jogibear9988 mhm frage
                          kann ich auf ein control.prop auch einen wert zurückschreiben ? wenn ich bei der steuerung von grafana zb eine pfeiltaste mache die mit pointerdown und pointerup läuft dann läuft das script ja 2x durch allerdings müsste ich den manipulirten wert auf das selector_zeit reture schreiben sonst ist beim 2.ten durchlauf das orginaldatum ja wieder drinn.

                          kopier dir das mal am test

                          Achja und beim export import von screens verliert er im styles eine die letzte }
                          mfg tom

                          kapier wieder nicht was du meinst...

                          Smilie108 1 Reply Last reply Reply Quote 0
                          • Smilie108
                            Smilie108 @jogibear9988 last edited by

                            @jogibear9988 hi kurz ablauf

                            Datum ausgewählt zeitspanne ausgewählt usw das funktioniert alles perfekt.
                            wollte jetzt aber einen links rechts pfeil zum scrollen / verschieben der zeitachse machen dazu muss ich ja im script zur eigentlich vorgewählten startzeit etwas weg oder dazuzählen in abhängikeit des zeitbereiches.
                            das geht auch
                            da ich aber den Click auf den knopf mit onpointerdown und onpointerup habe da es ja kein toggle werden soll. ruft er das script 2 mal auf.
                            beim zweiten aufruf habe ich nun aber nicht mehr das bit fürs rechnen gesetzt und in dem gewählten datum steht natülich wieder das drin das ich orginal ausgesucht habe.
                            Hätte nun gerne eine möglichkeit gehbat den wert vom ausgewählten neuen startwert des datums auch in der variabel vom control.prop zurück reinzuschreiben um für die darauffolgenen aktionen und als ansicht das anzuzeigen und für den neuerlichen aufruf zur verfügung zu haben
                            über die return funktion bekomme ich ja "nur" die erstellte url in den src des iframe.
                            Wie kann ich das lösen ?
                            Das war meine frage. ist eigenlich ein speichern eines zwischenergebnisses in einer der ausgansvariabel.

                            Gruß tom

                            jogibear9988 1 Reply Last reply Reply Quote 0
                            • jogibear9988
                              jogibear9988 @Smilie108 last edited by

                              @smilie108 said in neue Visualisierung "webui" (alternative zu vis & vis-2):

                              @jogibear9988 hi kurz ablauf

                              Datum ausgewählt zeitspanne ausgewählt usw das funktioniert alles perfekt.
                              wollte jetzt aber einen links rechts pfeil zum scrollen / verschieben der zeitachse machen dazu muss ich ja im script zur eigentlich vorgewählten startzeit etwas weg oder dazuzählen in abhängikeit des zeitbereiches.
                              das geht auch
                              da ich aber den Click auf den knopf mit onpointerdown und onpointerup habe da es ja kein toggle werden soll. ruft er das script 2 mal auf.
                              beim zweiten aufruf habe ich nun aber nicht mehr das bit fürs rechnen gesetzt und in dem gewählten datum steht natülich wieder das drin das ich orginal ausgesucht habe.
                              Hätte nun gerne eine möglichkeit gehbat den wert vom ausgewählten neuen startwert des datums auch in der variabel vom control.prop zurück reinzuschreiben um für die darauffolgenen aktionen und als ansicht das anzuzeigen und für den neuerlichen aufruf zur verfügung zu haben
                              über die return funktion bekomme ich ja "nur" die erstellte url in den src des iframe.
                              Wie kann ich das lösen ?
                              Das war meine frage. ist eigenlich ein speichern eines zwischenergebnisses in einer der ausgansvariabel.

                              Gruß tom

                              ich kapiers nicht....
                              warum machst du das script nicht einfach nur auf down oder nur auf up?

                              Smilie108 1 Reply Last reply Reply Quote 0
                              • Smilie108
                                Smilie108 @jogibear9988 last edited by

                                @jogibear9988 down und up um den Wert von false auf true und dann wider auf false zu setzen will ja öfter Blättern können

                                1 Reply Last reply Reply Quote 0
                                • K
                                  Kamikaze @jogibear9988 last edited by

                                  @jogibear9988 Hallo Jogibear, Hallo Smilie108,
                                  ich komme wieder mit einem Hinweis. Ob Ihr das Berücksichtigt, steht euch offen.
                                  Situation: Ich verwende des öfteren die Drag&Drop Möglichkeit um bindings zu erstellen.
                                  Jetzt wird aber automatisch ein two-way-binding erstellt. Das ist sehr häufig bei mir hinderlich, da es mir den Datenpunkt dann fälschlicherweise überschreibt.
                                  Das ist insbesondere dann hinderlich, wenn ich eine Formel verwende, die den numerischen Wert in einen String umwandelt und dann ein °C anhängt.

                                  Ich hoffe, ich habe mich klar ausgedrückt. Ich würde erwarten, dass es ein one-way-binding wird.

                                  jogibear9988 1 Reply Last reply Reply Quote 0
                                  • jogibear9988
                                    jogibear9988 @Kamikaze last edited by

                                    @kamikaze said in neue Visualisierung "webui" (alternative zu vis & vis-2):

                                    @jogibear9988 Hallo Jogibear, Hallo Smilie108,
                                    ich komme wieder mit einem Hinweis. Ob Ihr das Berücksichtigt, steht euch offen.
                                    Situation: Ich verwende des öfteren die Drag&Drop Möglichkeit um bindings zu erstellen.
                                    Jetzt wird aber automatisch ein two-way-binding erstellt. Das ist sehr häufig bei mir hinderlich, da es mir den Datenpunkt dann fälschlicherweise überschreibt.
                                    Das ist insbesondere dann hinderlich, wenn ich eine Formel verwende, die den numerischen Wert in einen String umwandelt und dann ein °C anhängt.

                                    Ich hoffe, ich habe mich klar ausgedrückt. Ich würde erwarten, dass es ein one-way-binding wird.

                                    auf was für eine property ziehst du es?
                                    Bei den selbst definierten properties will ich noch ne eigenschaft dazupacken, die sagt ob die property schreibbar ist oder nicht.

                                    Aber manchmal kann ich es einfach nicht wissen, und denke da hat dann jeder andere präferenzen....
                                    Keine Ahnung was geschickter ist.

                                    K 1 Reply Last reply Reply Quote 0
                                    • K
                                      Kamikaze @jogibear9988 last edited by

                                      @jogibear9988 Eben wollte ich ein Argument einführen, dass für ein one-way-binding spricht, aber jetzt verstehe ich erst dein "Schreibbar".
                                      Wenn ich dich richtig verstehe, erhält die Property diese Eigenschaft direkt in dem custom properties. Damit wäre allen gedient, denn hierdurch wird ein versehentliches Schreiben nicht möglich. Das hört sich doch gut an.
                                      Wieder einmal DANKE.

                                      K 1 Reply Last reply Reply Quote 0
                                      • K
                                        Kamikaze @Kamikaze last edited by

                                        @kamikaze Hallo Ihr Experten,

                                        ich habe wieder einmal ein kleines Problem:

                                        Auf meiner Homepage habe ich einige Screens zusätzlich eingebunden

                                        <iobroker-webui-screen-viewer screen-name="/Arbeitszimmer" bind-css:display='{"signal":"0_userdata.0.Räume.Arbeitszimmer.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/Badezimmer" bind-css:display='{"signal":"0_userdata.0.Räume.Badezimmer.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/Wohnzimmer" bind-css:display='{"signal":"0_userdata.0.Räume.Wohnzimmer.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/Schlafzimmer" bind-css:display='{"signal":"0_userdata.0.Räume.Schlafzimmer.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/Kueche" bind-css:display='{"signal":"0_userdata.0.Räume.Küche.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/Keller" bind-css:display='{"signal":"0_userdata.0.Räume.Keller.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/Hauswirtschaftsraum" bind-css:display='{"signal":"0_userdata.0.Räume.Hauswirtschaftsraum.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/GaesteWC" bind-css:display='{"signal":"0_userdata.0.Räume.GästeWC.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/Flur" bind-css:display='{"signal":"0_userdata.0.Räume.Flur.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        <iobroker-webui-screen-viewer screen-name="/Bastelzimmer" bind-css:display='{"signal":"0_userdata.0.Räume.Bastelzimmer.eigenschaften.showRoom","converter":{"true":"block","false":"none"}}' style="z-index:100;width:440px;height:540px;position:absolute;left:356px;top:223px;display:none;"></iobroker-webui-screen-viewer>
                                        
                                        

                                        Nun zu meinem Problem:

                                        Wenn ich die Homepage aufrufe, dann werden z.T. einige dieser Screen angezeigt, obwohl im Basisstyle display:none steht.
                                        Diese Screens sollen erscheinen, wenn ich das Signal showRoom auf true setze. Nachdem ich alle Screens einmal geschlossen habe, funktioniert alles wie gewünscht, nur beim ersten Aufruf der Homepage erscheinen diese. Das möchte ich nicht. Die jeweiligen Schalter showRoom sind definitiv auf false.
                                        Es hat den Anschein, dass es bei der Initialisierung (Binding?) etwas nicht korrekt arbeitet.

                                        K jogibear9988 2 Replies Last reply Reply Quote 0
                                        • K
                                          Kamikaze @Kamikaze last edited by

                                          @kamikaze Es hat den Anschein, dass dieses Ereignis immer dann auftritt, wenn ich auf dem Tablet die Anwendung wechsele. Gibt es eine Möglichkeit den Reconnect zu erzwingen und diese Werte neu zu initialisieren?

                                          Smilie108 1 Reply Last reply Reply Quote 0
                                          • Smilie108
                                            Smilie108 @Kamikaze last edited by

                                            @kamikaze ich glaube das muss sich da @jogibear9988 ansehen da weis ich zu wenig sorry

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            943
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            20
                                            1074
                                            243553
                                            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