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@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 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.
    • M
      MaGe @jogibear9988 last edited by MaGe

      @jogibear9988

      Vielen Dank für deine Hinweise.
      Mit der <link> Zeile werden die Bilder nebeneinander angeordnet.
      Eine Fehlermeldung erhalte ich durch hinzufügen der Zeile nicht.

      Ich bin kein Visualisierungskünstler und habe auch eher Anfängerkenntnisse in html.
      Aber gerne hier meine ersten Gehversuche. 😉

      Screenshot_1.jpg

      Screenshot_2.jpg

      <meta name="viewport" content="width=device-width,height:device-height, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">
      <link href="/webui.0.widgets/node_modules/bootstrap/dist/css/bootstrap.css" rel="stylesheet" type="text/css">
      <iobroker-webui-hab-panel-like-menu class="container-fluid" style="color:inherit;height:device-height;position:relative;min-height:670px;padding-top:10px;background:none 0% 0% / auto repeat scroll padding-box border-box rgb(51, 51, 51);">
          <div id="Header" style="height:40px;position:absolute;margin-left:0px;margin-top:0px;padding:0px;left:45%;top:0px;">
              <span style="text-align:center;font-size:x-large;height:40px;position:relative;color:#858585;font-weight:bold;">Photovoltaik</span>
          </div>
          <div id="Menu" style="width:140px;height:670px;position:absolute;left:-200px;top:0px;opacity:0.9;display:flex;">
              <div id="Home" style="width:140px;height:110px;position:absolute;left:0px;top:0px;opacity:0.9;">
                  <button id="Home" title="Home" @click='{"commands":[{"type":"OpenScreen","screen":"home"},{"type":"SetElementProperty","name":"screenName","target":"property","targetSelector":"#ScreenView","value":"pool"},{"type":"SetElementProperty","name":"expanded","target":"property","targetSelectorTarget":"parentElement","value":false}]}' style="width:120px;height:100px;position:absolute;left:10px;top:10px;background:none 0% 0% / auto repeat scroll padding-box border-box gray;">
                      <img src="/webui.0.data/config/images/Navigations_Home.png" style="position:relative;left:0%;top:5%;width:70px;height:70px;">
                  </button>
              </div>
              <div id="EG" style="width:140px;height:110px;position:absolute;left:0px;top:110px;opacity:0.9;">
                  <button id="EG" title="Home" @click='{"commands":[{"type":"OpenScreen","screen":"eg"},{"type":"SetElementProperty","name":"screenName","target":"property","targetSelector":"#ScreenView","value":"pool"},{"type":"SetElementProperty","name":"expanded","target":"property","targetSelectorTarget":"parentElement","value":false}]}' style="width:120px;height:100px;position:absolute;left:10px;top:10px;background:none 0% 0% / auto repeat scroll padding-box border-box gray;">
                      <img src="/webui.0.data/config/images/Navigations_EG.png" style="position:relative;left:0%;top:5%;width:70px;height:70px;">
                  </button>
              </div>
              <div id="OG" style="width:140px;height:110px;position:absolute;left:0px;top:220px;opacity:0.9;">
                  <button id="OG" title="Home" @click='{"commands":[{"type":"OpenScreen","screen":"og"},{"type":"SetElementProperty","name":"screenName","target":"property","targetSelector":"#ScreenView","value":"pool"},{"type":"SetElementProperty","name":"expanded","target":"property","targetSelectorTarget":"parentElement","value":false}]}' style="width:120px;height:100px;position:absolute;left:10px;top:10px;background:none 0% 0% / auto repeat scroll padding-box border-box gray;">
                      <img src="/webui.0.data/config/images/Navigations_OG.png" style="position:relative;left:0%;top:5%;width:70px;height:70px;">
                  </button>
              </div>
              <div id="DG" style="width:140px;height:110px;position:absolute;left:0px;top:330px;opacity:0.9;">
                  <button id="DG" title="Home" @click='{"commands":[{"type":"OpenScreen","screen":"dg"},{"type":"SetElementProperty","name":"screenName","target":"property","targetSelector":"#ScreenView","value":"pool"},{"type":"SetElementProperty","name":"expanded","target":"property","targetSelectorTarget":"parentElement","value":false}]}' style="width:120px;height:100px;position:absolute;left:10px;top:10px;background:none 0% 0% / auto repeat scroll padding-box border-box gray;">
                      <img src="/webui.0.data/config/images/Navigations_DG.png" style="position:relative;left:0%;top:5%;width:70px;height:70px;">
                  </button>
              </div>
              <div id="Heizung" style="width:140px;height:110px;position:absolute;left:0px;top:440px;opacity:0.9;">
                  <button id="Heizung" title="Home" @click='{"commands":[{"type":"OpenScreen","screen":"heizung"},{"type":"SetElementProperty","name":"screenName","target":"property","targetSelector":"#ScreenView","value":"pool"},{"type":"SetElementProperty","name":"expanded","target":"property","targetSelectorTarget":"parentElement","value":false}]}' style="width:120px;height:100px;position:absolute;left:10px;top:10px;background:none 0% 0% / auto repeat scroll padding-box border-box gray;">
                      <img src="/webui.0.data/config/images/Navigations_Heizung.png" style="position:relative;left:0%;top:5%;width:70px;height:70px;">
                  </button>
              </div>
              <div id="Photovoltaik" style="width:140px;height:120px;position:absolute;left:0px;top:550px;opacity:0.9;">
                  <button id="Photovoltaik" title="Home" @click='{"commands":[{"type":"OpenScreen","screen":"photovoltaik"},{"type":"SetElementProperty","name":"screenName","target":"property","targetSelector":"#ScreenView","value":"pool"},{"type":"SetElementProperty","name":"expanded","target":"property","targetSelectorTarget":"parentElement","value":false}]}' style="width:120px;height:100px;position:absolute;left:10px;top:10px;background:none 0% 0% / auto repeat scroll padding-box border-box gray;">
                      <img src="/webui.0.data/config/images/Navigations_PV.png" style="position:relative;left:0%;top:5%;width:70px;height:70px;">
                  </button>
              </div>
          </div>
          <div id="ScreenView" style="height:90%;position:relative;width:100%;margin:0.5%;">
              <div id="Screen_PV" style="height:100%;position:relative;width:95%;margin:20px;">
                  <div id="Zeile_1" class="row" style="margin:5vh 0vh 2vh 0vh;">
                      <div class="cols-md-4 col-xs-6 col-lg-6" style="width:33.33%;"></div>
                      <div class="cols-md-4 col-xs-6 col-lg-6 col-md-offset-4 col-xs-offset-6 col-lg-offset-12" style="width:33.33%;transform-origin:420.375px 80.4333px;">
                          <img class="img-responsive img-fluid mx-auto d-block float-center" src="/webui.0.data/config/images/PV-Module.png" id="PV-Module" style="max-width:40vh;">
                      </div>
                      <div class="cols-md-4 col-xs-6 col-lg-6 col-md-offset-8 col-xs-offset-12 col-lg-offset-24" style="width:33.33%;"></div>
                  </div>
                  <div id="Zeile_2" class="row" style="margin:2vh 0vh 2vh 0vh;">
                      <div class="cols-md-4 .col-xs-6 col-lg-6" style="width:33.33%;"></div>
                      <div class="cols-md-4 .col-xs-6 col-lg-6 .col-md-offset-4 .col-xs-offset-6 .col-lg-offset-12" style="width:33.33%;">
                          <input value readonly id="Accumulated_Energy_Yield" bind-prop:value='{"signal":"node-red.0.Photovoltaik.Huawei.Inverter.Accumulated_Energy_Yield","inverted":false,"expression":"&#39;Energy Yield (total) &#39; + __0 + &#39; kWh&#39;","type":"number"}' class style="text-align:center;font-size:large;border:medium none currentcolor;color:White;width:100%;padding:0vh;background:none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
                          <input value readonly id="Daily_Energy_Yield" bind-prop:value='{"signal":"node-red.0.Photovoltaik.Huawei.Inverter.Daily_Energy_Yield","inverted":false,"expression":"&#39;Energy Yield (day) &#39; + __0 + &#39; kWh&#39;","type":"number"}' style="text-align:center;font-size:large;border:medium none currentcolor;color:White;width:100%;padding:0vh;background:none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
                          <input value readonly id="Input_Power" bind-prop:value='{"signal":"node-red.0.Photovoltaik.Huawei.Inverter.Input_Power","inverted":false,"expression":"&#39;Input Power &#39; + __0 + &#39; W&#39;","type":"number"}' style="text-align:center;font-size:large;color:White;border:medium none currentcolor;width:100%;padding:0vh;background:none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
                      </div>
                      <div class="cols-md-4 .col-xs-6 col-lg-6" style="width:33.33%;"></div>
                  </div>
                  <div id="Zeile_3" class="row" style="margin:2vh 0vh 2vh 0vh;">
                      <div class="cols-md-4 .col-xs-4 .col-lg-4" style="width:33.33%;height:auto;">
                          <img class="img-responsive img-fluid mx-auto d-block float-center" src="/webui.0.data/config/images/Battery.png" id="Battery" style="max-width:20vh;padding:2.5vh;">
                      </div>
                      <div class="cols-md-4 .col-xs-4 .col-lg-4 .col-md-offset-4 .col-xs-offset-4 .col-lg-offset-4" style="width:33.33%;height:auto;">
                          <img class="img-responsive img-fluid mx-auto d-block float-center" src="/webui.0.data/config/images/Wechselrichter.png" id="Wechselrichter" style="max-width:20vh;">
                      </div>
                      <div class="cols-md-4 .col-xs-4 .col-lg-4 .col-md-offset-8 .col-xs-offset-8 .col-lg-offset-8" style="width:33.33%;height:auto;">
                          <img class="img-responsive img-fluid mx-auto d-block float-center" src="/webui.0.data/config/images/Wallbox.png" id="Wallbox" style="max-width:20vh;padding:2.5vh;">
                      </div>
                  </div>
                  <div id="Zeile_4" class="row" style="margin:2vh 0vh 2vh 0vh;">
                      <div class="cols-md-4 .col-xs-6 .col-lg-12" style="width:33.33%;">
                          <input value readonly id="Battery_Power" bind-prop:value='{"signal":"node-red.0.Photovoltaik.Huawei.Battery.Battery_Power","expression":"&#39;Battery Power &#39; + __0 + &#39; W&#39;"}' style="text-align:center;font-size:large;border:medium none currentcolor;color:White;width:100%;padding:0vh;background:none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
                          <input value readonly id="Battery_SOC" bind-prop:value='{"signal":"node-red.0.Photovoltaik.Huawei.Battery.Battery_SOC","expression":"&#39;Battery SOC &#39; + __0 + &#39; %&#39;"}' style="text-align:center;font-size:large;border:medium none currentcolor;color:White;width:100%;padding:0vh;background:none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
                      </div>
                      <div class="cols-md-4 .col-xs-6 .col-lg-12 .col-md-offset-4 .col-xs-offset-6 .col-lg-offset-6" style="width:33.33%;">
                          <input value readonly id="Actice_Power" bind-prop:value='{"signal":"node-red.0.Photovoltaik.Huawei.Meter.Active_Power","expression":"&#39;Active Power &#39; + __0 + &#39; W&#39;"}' style="text-align:center;font-size:large;border:medium none currentcolor;color:White;width:100%;padding:0vh;background:none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
                          <input value readonly id="Peak_Actice_Power_of_current_Day" bind-prop:value='{"signal":"node-red.0.Photovoltaik.Huawei.Inverter.Peak_Active_Power_of_current_Day","expression":"&#39;Peak Active Power (day) &#39; + __0 + &#39; W&#39;"}' style="text-align:center;font-size:large;border:medium none currentcolor;color:White;width:100%;padding:0vh;background:none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">
                      </div>
                      <div class="cols-md-4 .col-xs-6 .col-lg-12 .col-md-offset-8 .col-xs-offset-12 .col-lg-offset-24" style="width:33.33%;"></div>
                  </div>
              </div>
          </div>
          <div id="Footer">
              <i class="text-center" id="Copyright">© 2023</i>
          </div>
      </iobroker-webui-hab-panel-like-menu>
      
      

      Lg
      MaGe

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

        @mage
        Das meta tag wird nix bringen, da das ganze html in einer webkomponente enthalten ist. brauchst du das denn? wenn ja kann ich noch was einbauen das man meta tags übergeben kann, oder html welches direkt in die runtime page eingebaut wird.

        es gibt einen javascript fehler in der chrome console, da popperjs nicht geladen werden kann. d.h. die teile von bootstrap die popper nutzen gehen nicht (kp, was von bootstrap das nutzt). Und das sollte gehen wenn es hinzufügst.

        ich würde den main content in einen extra screen packen und dann die screens umschalten, dann ist es für dich später vlt übersichtlicher (hab ich in meinem video zum menü erklärt). Kannst aber auch alles in einen screen packen und den content dann ein u. ausblenden...

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

          Es gibt wieder eine Live Demo der WebUI, darin könnt Ihr rumspielen und probieren...

          http://129.159.205.3:8082/webui/index.html

          B Marc Berg 2 Replies Last reply Reply Quote 0
          • M
            MaGe @jogibear9988 last edited by

            @jogibear9988

            Den meta tag benötige ich nicht unbedingt. Funktioniert auch so wie es soll.
            Das Paket @popperjs/core habe ich hinzugefügt.
            Danke nochmal für die Erklärung.

            Am WE werde ich mir das mit dem content nochmal anschauen und an der Struktur arbeiten.

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

              @jogibear9988 said in neue Visualiserung "webui" im stable repository:

              Es gibt wieder eine Live Demo der WebUI, darin könnt Ihr rumspielen und probieren...

              http://129.159.205.3:8082/webui/index.html

              Deine Visu hat nen schönen Vorteil für mich:
              Ich muss mich wieder mit HTML und CSS beschäftigen.
              Davor hab ich mich lang gedrückt 😊

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

                Neue Funktion: Upload von "addtional files".

                Damit könnt Ihr zusätzliche Dateien hochladen welche Ihr in eurer Visu verwenden wollt:

                7e5f5dd1-0e79-4ec0-95e3-13863260baf7-image.png

                Bspw. könnt Ihr ein SweetHome3D Projekt hochladen und dieses dann über die SweetHome3d Komponente anzeigen:

                f112c92d-6a4e-434b-8fd4-10b9400aca16-image.png

                Bsp. gibts hier: http://129.159.205.3:8082/webui/index.html

                1 Reply Last reply Reply Quote 0
                • B
                  Blockmove last edited by

                  Hallo Jochen,

                  ich hab in einem Control ein Event angelegt.
                  Möchte ich nun das Event mit Remove Item entfernen, so funktioniert das nicht.

                  RemoveItem.png

                  webui: 0.15.1
                  Node.js: 18.17.1
                  Browser: Firefox

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

                    @blockmove

                    Ist ein Script, welches du auf ein Event anlegst. 🙂

                    Ja hast recht, ist durch die umstellung auf "Wunderbaum" kaputt gegangen. Fixe ich später, bzw. morgen.
                    Zur Not kannst es im Moment mit umschalten auf den HTML Quellcode löschen

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

                      @jogibear9988 said in neue Visualiserung "webui" im stable repository:

                      @blockmove

                      Ist ein Script, welches du auf ein Event anlegst. 🙂

                      Ja hast recht, ist durch die umstellung auf "Wunderbaum" kaputt gegangen. Fixe ich später, bzw. morgen.
                      Zur Not kannst es im Moment mit umschalten auf den HTML Quellcode löschen

                      Das Editieren in der Split-View bzw. Code-View finde ich klasse in deiner webui!

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

                        @blockmove

                        das im scripteditor ist gefixt

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

                          gibt noch einen neuen abschnitt im solution explorer: "global/font declaration style"
                          afb50a33-aa8c-420a-b17d-e88419616271-image.png

                          damit könnt ihr bspw. font declarations einfügen welche im root style hinzugefügt werden. denn custom fonts können nicht im shadowdom geladen werden.

                          dadurch könnt ihr über die "additionalFiles" auch eigene schriften einbinden. beispiel im live system das hier verlinkt ist.

                          7208b849-c116-4c3f-825c-b97737f50154-image.png

                          1 Reply Last reply Reply Quote 0
                          • B
                            Blockmove last edited by

                            Hallo Jochen,
                            ich bastel gerade mein erstes CustomControl.
                            Dank deinem Video ist es auch recht einfach.
                            Einen Feature-Request hätte ich dazu:
                            Könntest du bitte die Reihenfolge der Properties änderbar machen.
                            Properties.png
                            Vielleicht "einfach" vor den del-Button einen Button für auf und ab?

                            Vielen Dank und Schönes Wochenende!

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

                              @blockmove

                              schau ich mir an. Vlt. übernehm ich einfach das gleiche wie beim script editor.
                              Da kannst die Einträge per Drag/Drop verschieben

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

                                @jogibear9988 said in neue Visualiserung "webui" im stable repository:

                                @blockmove

                                schau ich mir an. Vlt. übernehm ich einfach das gleiche wie beim script editor.
                                Da kannst die Einträge per Drag/Drop verschieben

                                Drag und Drop geht natürlich genauso. Dann ist das Bedienkonzept einheitlich.
                                Die CustomControls sind auf jeden Fall richtig praktisch!

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

                                  @blockmove
                                  sind ja eigentlich auch nur webcomponenten. Das was man dort erstellt kann man auch ganz leicht als alleinstehende komponente veröffentlichen.

                                  Was wir noch fehlt sind ein paar gescheite Standard Controls wie sie Vis mit ausliefert.

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

                                    @blockmove
                                    wenn etwas gebaut hast was auch für andre was ist, kannsts ja hier veröffentlichen 🙂

                                    B 1 Reply Last reply Reply Quote 0
                                    • B
                                      Blockmove last edited by

                                      Hallo Jochen,

                                      vielleicht stell ich mich zu blöd an, aber ich bekomme es einfach nicht gebacken.
                                      Ich möchte einfach in einem CustomControl in einer Zeile die Werte von 3 Properties ausgeben.
                                      Also so:
                                      Solltemperatur 22.5°C Isttemperatur 20°C Ventilstellung 50%

                                      Sowas muss doch eigentlich auch einfach ohne grid, flex oder Ähnliches gehen?

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

                                        @blockmove

                                        So? test-control.control

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

                                          @jogibear9988 said in neue Visualiserung "webui" im stable repository:

                                          @blockmove
                                          wenn etwas gebaut hast was auch für andre was ist, kannsts ja hier veröffentlichen 🙂

                                          Dazu muss ich meine HTML-Kenntnisse erstmal auf Vordermann bringen.
                                          Aber ich arbeite daran und aktuell finde ich auch etwas Zeit dazu.

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

                                            @blockmove
                                            hat mein beispiel geklappt? bzw war das das was du wolltest?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            547
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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