Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. Performance-Vergleich VIS HTML Binding vs. JS

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.7k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    712

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

Performance-Vergleich VIS HTML Binding vs. JS

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
27 Beiträge 10 Kommentatoren 1.3k Aufrufe 9 Beobachtet
  • Ä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.
  • OliverIOO OliverIO

    @wolfgangfb
    Es gibt in vis eine Grenze die mehr wie 50 bindings in einem Widget nicht erlaubt.
    Vorteil von bindings sind, das bei Änderung,
    Wirklich nur der konkrete wert im HTML geändert wird.
    Wenn du nun eine Tabelle mit Javascript auf dem Server erstellt wird bei jeder Änderung die komplette Tabelle auf dem Client ersetzt.
    Wie oft kommen den Änderungen tatsächlich vor?
    Nur gelegentlich alle paar Minuten? Oder gar sekündlich?
    Wenn sekündlich würde ich mir eine andere Ansicht überlegen.
    Interessiert sich jemand zu jedem Zeitpunkt für alle Werte?
    Evtl kann man das in verwcjieden3 Gruppen aufteilen.
    Bspw nach Räume oder alle Temperaturen etc

    W Offline
    W Offline
    WolfgangFB
    schrieb am zuletzt editiert von
    #3

    @oliverio

    Hallo

    Die Änderungen kommen schon mehr oder weniger sekündlich.
    Woher kommt die Begrenzung auf 50 Bindungs?

    arteckA OliverIOO liv-in-skyL 3 Antworten Letzte Antwort
    0
    • W WolfgangFB

      @oliverio

      Hallo

      Die Änderungen kommen schon mehr oder weniger sekündlich.
      Woher kommt die Begrenzung auf 50 Bindungs?

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von arteck
      #4

      @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

      Die Änderungen kommen schon mehr oder weniger sekündlich.

      und wozu braucht man das?? nur weil es geht heisst es nicht dass man damit direkt rumhampeln muss
      ich kenne hier im Haus kein Fall wo ich diese Informationen in diesen Abständen bräuchte..

      ok einer LUX Wert von dem Aussenmesser.. aber das wars auch schon

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      1 Antwort Letzte Antwort
      0
      • W WolfgangFB

        Ich möchte mir in einer HTML Tabelle ca. 500 Datenpunkte (Stromverbrauch, Leistung, Kosten, Historie) anzeigen lassen.
        Was belastet das System mehr? Die Tabelle bei jeder Datenpunktänderung per Javascript komplett neu zu erstellen, diese in einen Datenpunkt schreiben und dann per Basic String in VIS anzeigen zu lassen oder einmalig eine Tabelle zu erstellen bei der alle Zellen mit Bindings auf die Datenpunkte vershen ist?
        Also entweder per JS eine Tabelle wie

        <table>
        	<tr>
        		<td>1</tf>
        		<td>2</tf>
        	</tr>
        		<td>3</tf>
        		<td>4</tf>
        	<tr>
        	</tr>
        </table>
        

        aus den Datenpunkten erstellen (JS ist also für die Aktualisierung zuständig) oder einmalig

        <table>
        	<tr>
        		<td>{Datenpunkt1}</tf>
        		<td>{Datenpunkt2}</tf>
        	</tr>
        		<td>{Datenpunkt3}</tf>
        		<td>{Datenpunkt4}</tf>
        	<tr>
        	</tr>
        </table>
        

        und VIS (oder wer auch immer) muss sich um die Aktualisierung kümmern.

        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        schrieb am zuletzt editiert von
        #5

        @wolfgangfb

        so würde man das nicht machen

        ein json erzeugen mit den datenpukten und dann ein json widget für die anzeige:

        siehe:

        so: https://forum.iobroker.net/post/883281

        oder komplizierte - https://forum.iobroker.net/post/344576

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        W 1 Antwort Letzte Antwort
        0
        • W Offline
          W Offline
          WolfgangFB
          schrieb am zuletzt editiert von
          #6

          @arteck sagte in Performance-Vergleich VIS HTML Binding vs. JS:

          @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

          Die Änderungen kommen schon mehr oder weniger sekündlich.

          und wozu braucht man das??

          Na ja, das fällt eben quasi an. Manche Stromsensoren liefern nur die momentane Leistung, andere nur die Energiezuwächse (S0 Impulse), wenn ich von den Sensoren, die nur die Leistung liefern die Gesamtenergie haben will muss ich auf jede Änderung reagieren und kann nicht minütlich den aktuellen Wert abfragen.
          Ob man das alles auch in Echtzeit anzeigen muss steht auf einem anderen Blatt.

          CodierknechtC arteckA 2 Antworten Letzte Antwort
          0
          • W WolfgangFB

            @arteck sagte in Performance-Vergleich VIS HTML Binding vs. JS:

            @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

            Die Änderungen kommen schon mehr oder weniger sekündlich.

            und wozu braucht man das??

            Na ja, das fällt eben quasi an. Manche Stromsensoren liefern nur die momentane Leistung, andere nur die Energiezuwächse (S0 Impulse), wenn ich von den Sensoren, die nur die Leistung liefern die Gesamtenergie haben will muss ich auf jede Änderung reagieren und kann nicht minütlich den aktuellen Wert abfragen.
            Ob man das alles auch in Echtzeit anzeigen muss steht auf einem anderen Blatt.

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #7

            @wolfgangfb
            Zum Berechnen kann man ja mit Selektoren arbeiten.
            Und für die Anzeige das Ganze in einigen wenigen DP aggregieren.

            Aber 500 Werte als Tabelle ... holla die Waldfee - das liest doch kein Mensch ;-)

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            1 Antwort Letzte Antwort
            0
            • liv-in-skyL liv-in-sky

              @wolfgangfb

              so würde man das nicht machen

              ein json erzeugen mit den datenpukten und dann ein json widget für die anzeige:

              siehe:

              so: https://forum.iobroker.net/post/883281

              oder komplizierte - https://forum.iobroker.net/post/344576

              W Offline
              W Offline
              WolfgangFB
              schrieb am zuletzt editiert von
              #8

              @liv-in-sky sagte in Performance-Vergleich VIS HTML Binding vs. JS:

              @wolfgangfb

              so würde man das nicht machen

              ein json erzeugen mit den datenpukten und dann ein json widget für die anzeige:

              Was wäre der Vorteil davon ein json zu machen und nicht gleich die html Tabelle? In der Tabelle kann ich z.B. problemlos bestimmte Werte hervorheben (farblich oder über die Schrift, mir fällt jetzt nicht ein wie ich das in json machen könnte)

              1 Antwort Letzte Antwort
              0
              • W WolfgangFB

                @arteck sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                Die Änderungen kommen schon mehr oder weniger sekündlich.

                und wozu braucht man das??

                Na ja, das fällt eben quasi an. Manche Stromsensoren liefern nur die momentane Leistung, andere nur die Energiezuwächse (S0 Impulse), wenn ich von den Sensoren, die nur die Leistung liefern die Gesamtenergie haben will muss ich auf jede Änderung reagieren und kann nicht minütlich den aktuellen Wert abfragen.
                Ob man das alles auch in Echtzeit anzeigen muss steht auf einem anderen Blatt.

                arteckA Offline
                arteckA Offline
                arteck
                Developer Most Active
                schrieb am zuletzt editiert von
                #9

                @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                Manche Stromsensoren liefern nur die momentane Leistung

                na und.. wo ist das problem.. der wert wird einmal die stunde berechnet .. oder wenn du es schon magst dann einmal die minute..
                mach ich mit meiner PV so.. mir eschliesst sich nicht nochmal warum man 500 Datenpunkte einmal die Sekunde berechnen muss

                oder bin zu doof es zur verstehen

                wer guckt sich eine Tabelle mit 500 Datenpunkten mit welchen mehrwert .. aber egal .. ist ja dein Ding..ich mein ja nur

                zigbee hab ich, zwave auch, nuc's genauso und HA auch

                W 1 Antwort Letzte Antwort
                0
                • W WolfgangFB

                  @oliverio

                  Hallo

                  Die Änderungen kommen schon mehr oder weniger sekündlich.
                  Woher kommt die Begrenzung auf 50 Bindungs?

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

                  @wolfgangfb

                  Die Begrenzung kommt vom Programmierer von vis
                  Die bindings sind aufgrund dem zusätzlichen Interpretationsbedarf auch intern etwas aufwändig gelöst.
                  Daher wahrscheinlich die Begrenzung

                  Du kannst das gerne probieren mit Bord Mittel umzusetzen, aber ich glaube nicht das du da glücklich wirst.
                  Das beste ist, wie von mir schon erwähnt, die Daten sinnvoll zu gruppieren und dann in verschiedenen views anzuzeigen.
                  Von der Datenmenge kann der Iobroker/Server die 500 werte locker verarbeiten.

                  Auch die Daten auf dem Server in ein json zu packen halte ich nicht sinnvoll, da dann sekündlich das neu erstellt wird und auf dem Client in eine Tabelle eingetragen wird. Auch das Widget json table erzeugt dann die komplette Tabelle immer wieder neu.
                  Ob der Client/Browser dabei schnell genug ist müsste man ausprobieren.
                  Ansonsten kann es sein das die Tabelle zum flackern anfängt.

                  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
                  • W WolfgangFB

                    @oliverio

                    Hallo

                    Die Änderungen kommen schon mehr oder weniger sekündlich.
                    Woher kommt die Begrenzung auf 50 Bindungs?

                    liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    schrieb am zuletzt editiert von
                    #11

                    @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                    Die Änderungen kommen schon mehr oder weniger sekündlich.

                    da unterstütze ich @arteck - sekündliche anzeige macht keinen wirklichen sinn

                    • um die leistung/strom zu überwachen - falls man sorge hat, das ist zu hoch, würde ich ein extra script überlegen, was bei einem zu hohen wert einen alarm ausgibt

                    kosten und kWh reichen jede stunde und historie auch - habe ich ja erwähnt - json - man kann auch darin einzelne werte farblich anpassen, die entweder im script berechnet werden oder immer farblich markiert werden - dabei muss eigentlich nur auf die sortierung aufgepaßt werden - die funktioniert dann nicht mehr im widget, weil die zahlenwerte in html code angepaßt werden

                    auch das organisieren der tabelle ist schwieriger - normalerweise haben die ein struktur und können mit einer schleife ausgelesen werden - ein neues gerät wird so einfach in die tabelle integriert - ohne das widget angleichen zu müssen

                    bei sekundlicher messung - vermute ich - muss auch das tablet, welche die vis anzeigt - genug performance haben - wir haben das mal mit einem strommesser widget getestet, dort blieb das widget irgendwann stehen, weil die daten den cache crashten

                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                    1 Antwort Letzte Antwort
                    0
                    • arteckA arteck

                      @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                      Manche Stromsensoren liefern nur die momentane Leistung

                      na und.. wo ist das problem.. der wert wird einmal die stunde berechnet .. oder wenn du es schon magst dann einmal die minute..
                      mach ich mit meiner PV so.. mir eschliesst sich nicht nochmal warum man 500 Datenpunkte einmal die Sekunde berechnen muss

                      oder bin zu doof es zur verstehen

                      wer guckt sich eine Tabelle mit 500 Datenpunkten mit welchen mehrwert .. aber egal .. ist ja dein Ding..ich mein ja nur

                      W Offline
                      W Offline
                      WolfgangFB
                      schrieb am zuletzt editiert von
                      #12

                      @arteck sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                      @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                      Manche Stromsensoren liefern nur die momentane Leistung

                      na und.. wo ist das problem.. der wert wird einmal die stunde berechnet .. oder wenn du es schon magst dann einmal die minute..
                      mach ich mit meiner PV so.. mir eschliesst sich nicht nochmal warum man 500 Datenpunkte einmal die Sekunde berechnen muss

                      Ich berechne nicht 500 Datenpunkte pro Sekunde. Es gibt insgesamt ca. 500 Datenpunkte. Pro Verbraucher einmal Momentanleistung, Gesamtenergieverbrauch, Verbrauch heute, Verbrauch gestern, Verbrauch letzter Monat, Verbrauch letzte Jahr. Macht bei ca. 70 Verbrauchern 420 Datenpunkte (OK, etwas weniger als 500).
                      Es kommt im Schnitt jede Sekunde irgendein Messwert an (Leistung oder Energie), d.h. ich berechne und schreibe dann die restlichen 5 Datenpunkte für diesen Sensor. Da ich die Werte eh alle in einem Array habe kann ich auch gleich eine Tabelle daraus basteln.

                      joergeliJ 1 Antwort Letzte Antwort
                      0
                      • W WolfgangFB

                        @arteck sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                        @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                        Manche Stromsensoren liefern nur die momentane Leistung

                        na und.. wo ist das problem.. der wert wird einmal die stunde berechnet .. oder wenn du es schon magst dann einmal die minute..
                        mach ich mit meiner PV so.. mir eschliesst sich nicht nochmal warum man 500 Datenpunkte einmal die Sekunde berechnen muss

                        Ich berechne nicht 500 Datenpunkte pro Sekunde. Es gibt insgesamt ca. 500 Datenpunkte. Pro Verbraucher einmal Momentanleistung, Gesamtenergieverbrauch, Verbrauch heute, Verbrauch gestern, Verbrauch letzter Monat, Verbrauch letzte Jahr. Macht bei ca. 70 Verbrauchern 420 Datenpunkte (OK, etwas weniger als 500).
                        Es kommt im Schnitt jede Sekunde irgendein Messwert an (Leistung oder Energie), d.h. ich berechne und schreibe dann die restlichen 5 Datenpunkte für diesen Sensor. Da ich die Werte eh alle in einem Array habe kann ich auch gleich eine Tabelle daraus basteln.

                        joergeliJ Online
                        joergeliJ Online
                        joergeli
                        schrieb am zuletzt editiert von joergeli
                        #13

                        @wolfgangfb
                        Ich weiß nicht genau, ob ich Dich richtig verstanden habe, jedenfalls bin ich bei meiner Tabellenerstellung mittels bindings wohl auch an die von @OliverIO erwähnte Begrenzung auf 50 Bindings/Widget gekommen.
                        energie-tabellen.jpg
                        Die untere, große Tabelle habe ich dehalb aus mehreren basic-HTML Widgets zusammengesetzt, d.h. die "Teiltabellen" entsprechend aneinander geschoben.
                        Der obere Teil dieser Gesamttabelle beinhaltet z.B. die nur Daten von "Waschmaschine" bis "Wetter-PC" und sieht als HTML/CSS so aus:

                        <style type="text/css">
                        table.quer_oben {
                        table-layout: fixed;
                        width: 1047px;
                        
                          font-family: Arial, Helvetica, sans-serif;
                          /* border: 2px solid #6a6a6a; */
                          	border-top: 2px solid #6a6a6a;
                        	border-right: 2px solid #6a6a6a;
                        	border-left: 2px solid #6a6a6a;
                          background-color: #e3e3e3;
                          text-align: right;
                          border-collapse: collapse;
                        }
                        table.quer_oben td, table.quer_oben th {
                          padding: 1px 8px;
                        }
                        table.quer_oben tbody td {
                          font-size: 10px;
                          font-weight: bold;
                          color: #000000;
                          border-top: 1px solid #8a8a8a; 
                          border-bottom: 1px solid #8a8a8a; 
                        }
                        table.quer_oben td:nth-child(even) {
                          background: #EEF0F3;
                        }
                        table.quer_oben thead {
                          background: #ffEAEA;
                          border-bottom: 2px solid #000000;
                        }
                        table.quer_oben thead th {
                          font-size: 11px;
                          font-weight: bold;
                          color: #bb0000;
                          /* background: #ffe4c4; */
                          background: #f2fdff;
                          text-align: center;
                          border-left: 1px solid #000000;
                          border-bottom: 2px solid #7a7a7a;  
                        }
                        table.quer_oben thead th:first-child {
                          border-left: none;
                        }
                        
                        
                        </style>
                        
                        
                        <table class="quer_oben">
                        <thead>
                        <tr>
                        <th colspan="2" style="color: #bb0000; border-right: 2px solid #7a7a7a;">Energieverbrauch</th>
                        <th>Heute</th>
                        <th>Gestern</th>
                        <th>Woche</th>
                        <th>Monat</th>
                        <th>Jahr</th>
                        <th>Vorwoche</th>
                        <th>Vormonat</th>
                        <th style="border-right: 2px solid #7a7a7a;">Vorjahr</th>
                        <th width="150px">akt. Leistung</th>
                        </tr>
                        </thead>
                        <tbody>
                        <tr>
                        <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Waschmaschine</td>
                        <td align="center" style=" background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/waschmaschine.png" width="43px" height="20px"></td>
                        <td>{javascript.0.ShellyVerbrauchSummen.Waschm.heute} Wh</td>
                        <td>{javascript.0.ShellyVerbrauchSummen.Waschm.gestern} Wh</td>
                        <td>{javascript.0.ShellyVerbrauchSummen.Waschm.woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauchSummen.Waschm.monat} Wh</td>
                        <td>{javascript.0.ShellyVerbrauchSummen.Waschm.jahr} Wh</td>
                        <td>{javascript.0.ShellyVerbrauchSummen.Waschm.vorwoche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauchSummen.Waschm.vormonat} Wh</td>
                        <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauchSummen.Waschm.vorjahr} Wh</td>
                        <td style="background: #f2fdff;"></td>
                        </tr>
                        <tr>
                        <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">W&auml;schetrockner</td>
                        <td align="center" style=" background: #f2fdff;border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/waesche-trockner.png" width="22px" height="20px"></td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.heute} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.gestern} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.diese_woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.dieser_monat} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.dieses_jahr} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letzte_woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letzter_monat} Wh</td>
                        <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letztes_jahr} Wh</td>
                        <td style="background: #f2fdff;"></td>
                        </tr>
                        
                        <tr>
                        <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Geschirrsp&uuml;ler</td>
                        <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/geschirrspueler.png" width="22px" height="20px"></td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.heute} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.gestern} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.diese_woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.dieser_monat} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.dieses_jahr} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letzte_woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letzter_monat} Wh</td>
                        <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letztes_jahr} Wh</td>
                        <td style="background: #f2fdff;"></td>
                        </tr>
                        
                        <tr>
                        <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Arbeits-PC</td>
                        <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/computer-monitor.png" width="23px" height="20px"></td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.heute} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.gestern} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.diese_woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.dieser_monat} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.dieses_jahr} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letzte_woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letzter_monat} Wh</td>
                        <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letztes_jahr} Wh</td>
                        <td style="background: #f2fdff;"></td>
                        </tr>
                        <tr>
                        <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Wetter-PC</td>
                        <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/computer-monitor.png" width="23px" height="20px"></td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.heute} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.gestern} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.diese_woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.dieser_monat} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.dieses_jahr} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letzte_woche} Wh</td>
                        <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letzter_monat} Wh</td>
                        <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letztes_jahr} Wh</td>
                        <td style="background: #f2fdff;"></td>
                        </tr>
                        
                        
                        </tbody>
                        </table>
                        

                        Die Werte werden "live" aktualisiert, d.h. je nachdem, welcher Datenpunkt sich ändert.
                        Ich wollte halt auch gerne die Verbrauchsdaten (größtenteils mit Shellys geloggt) unserer Haushaltsgeräte in nur einer View zusammengefasst haben.

                        Evtl. hilft Dir das weiter?

                        liv-in-skyL P 2 Antworten Letzte Antwort
                        1
                        • joergeliJ joergeli

                          @wolfgangfb
                          Ich weiß nicht genau, ob ich Dich richtig verstanden habe, jedenfalls bin ich bei meiner Tabellenerstellung mittels bindings wohl auch an die von @OliverIO erwähnte Begrenzung auf 50 Bindings/Widget gekommen.
                          energie-tabellen.jpg
                          Die untere, große Tabelle habe ich dehalb aus mehreren basic-HTML Widgets zusammengesetzt, d.h. die "Teiltabellen" entsprechend aneinander geschoben.
                          Der obere Teil dieser Gesamttabelle beinhaltet z.B. die nur Daten von "Waschmaschine" bis "Wetter-PC" und sieht als HTML/CSS so aus:

                          <style type="text/css">
                          table.quer_oben {
                          table-layout: fixed;
                          width: 1047px;
                          
                            font-family: Arial, Helvetica, sans-serif;
                            /* border: 2px solid #6a6a6a; */
                            	border-top: 2px solid #6a6a6a;
                          	border-right: 2px solid #6a6a6a;
                          	border-left: 2px solid #6a6a6a;
                            background-color: #e3e3e3;
                            text-align: right;
                            border-collapse: collapse;
                          }
                          table.quer_oben td, table.quer_oben th {
                            padding: 1px 8px;
                          }
                          table.quer_oben tbody td {
                            font-size: 10px;
                            font-weight: bold;
                            color: #000000;
                            border-top: 1px solid #8a8a8a; 
                            border-bottom: 1px solid #8a8a8a; 
                          }
                          table.quer_oben td:nth-child(even) {
                            background: #EEF0F3;
                          }
                          table.quer_oben thead {
                            background: #ffEAEA;
                            border-bottom: 2px solid #000000;
                          }
                          table.quer_oben thead th {
                            font-size: 11px;
                            font-weight: bold;
                            color: #bb0000;
                            /* background: #ffe4c4; */
                            background: #f2fdff;
                            text-align: center;
                            border-left: 1px solid #000000;
                            border-bottom: 2px solid #7a7a7a;  
                          }
                          table.quer_oben thead th:first-child {
                            border-left: none;
                          }
                          
                          
                          </style>
                          
                          
                          <table class="quer_oben">
                          <thead>
                          <tr>
                          <th colspan="2" style="color: #bb0000; border-right: 2px solid #7a7a7a;">Energieverbrauch</th>
                          <th>Heute</th>
                          <th>Gestern</th>
                          <th>Woche</th>
                          <th>Monat</th>
                          <th>Jahr</th>
                          <th>Vorwoche</th>
                          <th>Vormonat</th>
                          <th style="border-right: 2px solid #7a7a7a;">Vorjahr</th>
                          <th width="150px">akt. Leistung</th>
                          </tr>
                          </thead>
                          <tbody>
                          <tr>
                          <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Waschmaschine</td>
                          <td align="center" style=" background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/waschmaschine.png" width="43px" height="20px"></td>
                          <td>{javascript.0.ShellyVerbrauchSummen.Waschm.heute} Wh</td>
                          <td>{javascript.0.ShellyVerbrauchSummen.Waschm.gestern} Wh</td>
                          <td>{javascript.0.ShellyVerbrauchSummen.Waschm.woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauchSummen.Waschm.monat} Wh</td>
                          <td>{javascript.0.ShellyVerbrauchSummen.Waschm.jahr} Wh</td>
                          <td>{javascript.0.ShellyVerbrauchSummen.Waschm.vorwoche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauchSummen.Waschm.vormonat} Wh</td>
                          <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauchSummen.Waschm.vorjahr} Wh</td>
                          <td style="background: #f2fdff;"></td>
                          </tr>
                          <tr>
                          <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">W&auml;schetrockner</td>
                          <td align="center" style=" background: #f2fdff;border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/waesche-trockner.png" width="22px" height="20px"></td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.heute} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.gestern} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.diese_woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.dieser_monat} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.dieses_jahr} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letzte_woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letzter_monat} Wh</td>
                          <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letztes_jahr} Wh</td>
                          <td style="background: #f2fdff;"></td>
                          </tr>
                          
                          <tr>
                          <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Geschirrsp&uuml;ler</td>
                          <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/geschirrspueler.png" width="22px" height="20px"></td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.heute} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.gestern} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.diese_woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.dieser_monat} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.dieses_jahr} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letzte_woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letzter_monat} Wh</td>
                          <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letztes_jahr} Wh</td>
                          <td style="background: #f2fdff;"></td>
                          </tr>
                          
                          <tr>
                          <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Arbeits-PC</td>
                          <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/computer-monitor.png" width="23px" height="20px"></td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.heute} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.gestern} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.diese_woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.dieser_monat} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.dieses_jahr} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letzte_woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letzter_monat} Wh</td>
                          <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letztes_jahr} Wh</td>
                          <td style="background: #f2fdff;"></td>
                          </tr>
                          <tr>
                          <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Wetter-PC</td>
                          <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/computer-monitor.png" width="23px" height="20px"></td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.heute} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.gestern} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.diese_woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.dieser_monat} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.dieses_jahr} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letzte_woche} Wh</td>
                          <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letzter_monat} Wh</td>
                          <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letztes_jahr} Wh</td>
                          <td style="background: #f2fdff;"></td>
                          </tr>
                          
                          
                          </tbody>
                          </table>
                          

                          Die Werte werden "live" aktualisiert, d.h. je nachdem, welcher Datenpunkt sich ändert.
                          Ich wollte halt auch gerne die Verbrauchsdaten (größtenteils mit Shellys geloggt) unserer Haushaltsgeräte in nur einer View zusammengefasst haben.

                          Evtl. hilft Dir das weiter?

                          liv-in-skyL Offline
                          liv-in-skyL Offline
                          liv-in-sky
                          schrieb am zuletzt editiert von
                          #14

                          @joergeli hast du bei der aktuellen leistung auch einen dauernden abgleich in der tabelle ? oder ist es wie bei den sonoffs, wo die aktuelle leistung über teleperiod eingestellt wird - bedeutet: die aktuelle leistung kommt je nach eingestellter zeit - z.b alle 15 sek

                          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                          joergeliJ 1 Antwort Letzte Antwort
                          0
                          • joergeliJ joergeli

                            @wolfgangfb
                            Ich weiß nicht genau, ob ich Dich richtig verstanden habe, jedenfalls bin ich bei meiner Tabellenerstellung mittels bindings wohl auch an die von @OliverIO erwähnte Begrenzung auf 50 Bindings/Widget gekommen.
                            energie-tabellen.jpg
                            Die untere, große Tabelle habe ich dehalb aus mehreren basic-HTML Widgets zusammengesetzt, d.h. die "Teiltabellen" entsprechend aneinander geschoben.
                            Der obere Teil dieser Gesamttabelle beinhaltet z.B. die nur Daten von "Waschmaschine" bis "Wetter-PC" und sieht als HTML/CSS so aus:

                            <style type="text/css">
                            table.quer_oben {
                            table-layout: fixed;
                            width: 1047px;
                            
                              font-family: Arial, Helvetica, sans-serif;
                              /* border: 2px solid #6a6a6a; */
                              	border-top: 2px solid #6a6a6a;
                            	border-right: 2px solid #6a6a6a;
                            	border-left: 2px solid #6a6a6a;
                              background-color: #e3e3e3;
                              text-align: right;
                              border-collapse: collapse;
                            }
                            table.quer_oben td, table.quer_oben th {
                              padding: 1px 8px;
                            }
                            table.quer_oben tbody td {
                              font-size: 10px;
                              font-weight: bold;
                              color: #000000;
                              border-top: 1px solid #8a8a8a; 
                              border-bottom: 1px solid #8a8a8a; 
                            }
                            table.quer_oben td:nth-child(even) {
                              background: #EEF0F3;
                            }
                            table.quer_oben thead {
                              background: #ffEAEA;
                              border-bottom: 2px solid #000000;
                            }
                            table.quer_oben thead th {
                              font-size: 11px;
                              font-weight: bold;
                              color: #bb0000;
                              /* background: #ffe4c4; */
                              background: #f2fdff;
                              text-align: center;
                              border-left: 1px solid #000000;
                              border-bottom: 2px solid #7a7a7a;  
                            }
                            table.quer_oben thead th:first-child {
                              border-left: none;
                            }
                            
                            
                            </style>
                            
                            
                            <table class="quer_oben">
                            <thead>
                            <tr>
                            <th colspan="2" style="color: #bb0000; border-right: 2px solid #7a7a7a;">Energieverbrauch</th>
                            <th>Heute</th>
                            <th>Gestern</th>
                            <th>Woche</th>
                            <th>Monat</th>
                            <th>Jahr</th>
                            <th>Vorwoche</th>
                            <th>Vormonat</th>
                            <th style="border-right: 2px solid #7a7a7a;">Vorjahr</th>
                            <th width="150px">akt. Leistung</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr>
                            <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Waschmaschine</td>
                            <td align="center" style=" background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/waschmaschine.png" width="43px" height="20px"></td>
                            <td>{javascript.0.ShellyVerbrauchSummen.Waschm.heute} Wh</td>
                            <td>{javascript.0.ShellyVerbrauchSummen.Waschm.gestern} Wh</td>
                            <td>{javascript.0.ShellyVerbrauchSummen.Waschm.woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauchSummen.Waschm.monat} Wh</td>
                            <td>{javascript.0.ShellyVerbrauchSummen.Waschm.jahr} Wh</td>
                            <td>{javascript.0.ShellyVerbrauchSummen.Waschm.vorwoche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauchSummen.Waschm.vormonat} Wh</td>
                            <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauchSummen.Waschm.vorjahr} Wh</td>
                            <td style="background: #f2fdff;"></td>
                            </tr>
                            <tr>
                            <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">W&auml;schetrockner</td>
                            <td align="center" style=" background: #f2fdff;border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/waesche-trockner.png" width="22px" height="20px"></td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.heute} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.gestern} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.diese_woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.dieser_monat} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.dieses_jahr} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letzte_woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letzter_monat} Wh</td>
                            <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#5A565A#1.Relay0.letztes_jahr} Wh</td>
                            <td style="background: #f2fdff;"></td>
                            </tr>
                            
                            <tr>
                            <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Geschirrsp&uuml;ler</td>
                            <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/geschirrspueler.png" width="22px" height="20px"></td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.heute} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.gestern} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.diese_woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.dieser_monat} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.dieses_jahr} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letzte_woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letzter_monat} Wh</td>
                            <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG2-1#284757#1.Relay0.letztes_jahr} Wh</td>
                            <td style="background: #f2fdff;"></td>
                            </tr>
                            
                            <tr>
                            <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Arbeits-PC</td>
                            <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/computer-monitor.png" width="23px" height="20px"></td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.heute} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.gestern} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.diese_woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.dieser_monat} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.dieses_jahr} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letzte_woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letzter_monat} Wh</td>
                            <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#5AD270#1.Relay0.letztes_jahr} Wh</td>
                            <td style="background: #f2fdff;"></td>
                            </tr>
                            <tr>
                            <td align="left" style="background: #f2fdff; color: #bb0000; font-size: 11px; font-weight: bold;">Wetter-PC</td>
                            <td align="center" style="background: #f2fdff; border-right: 2px solid #7a7a7a;"><img src="/vis.0/Virtuelles Haus/computer-monitor.png" width="23px" height="20px"></td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.heute} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.gestern} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.diese_woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.dieser_monat} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.dieses_jahr} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letzte_woche} Wh</td>
                            <td>{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letzter_monat} Wh</td>
                            <td style="border-right: 2px solid #7a7a7a;">{javascript.0.ShellyVerbrauch.SHPLG-S#3A44AC#1.Relay0.letztes_jahr} Wh</td>
                            <td style="background: #f2fdff;"></td>
                            </tr>
                            
                            
                            </tbody>
                            </table>
                            

                            Die Werte werden "live" aktualisiert, d.h. je nachdem, welcher Datenpunkt sich ändert.
                            Ich wollte halt auch gerne die Verbrauchsdaten (größtenteils mit Shellys geloggt) unserer Haushaltsgeräte in nur einer View zusammengefasst haben.

                            Evtl. hilft Dir das weiter?

                            P Offline
                            P Offline
                            picky
                            schrieb am zuletzt editiert von picky
                            #15

                            @joergeli Das sieht ja wirklich super aus, würdest Du vielleicht auch den Code von einer oberen Tabelle teilen :-)
                            Ich habe auch 2 Javascripte laufen für Sonoff und Shelly, die alle 15 Minuten die Werte fast so wie bei Dir zusammenfassen und in die Datenpunkte schreiben ;-)

                            joergeliJ 1 Antwort Letzte Antwort
                            0
                            • W WolfgangFB

                              Ich möchte mir in einer HTML Tabelle ca. 500 Datenpunkte (Stromverbrauch, Leistung, Kosten, Historie) anzeigen lassen.
                              Was belastet das System mehr? Die Tabelle bei jeder Datenpunktänderung per Javascript komplett neu zu erstellen, diese in einen Datenpunkt schreiben und dann per Basic String in VIS anzeigen zu lassen oder einmalig eine Tabelle zu erstellen bei der alle Zellen mit Bindings auf die Datenpunkte vershen ist?
                              Also entweder per JS eine Tabelle wie

                              <table>
                              	<tr>
                              		<td>1</tf>
                              		<td>2</tf>
                              	</tr>
                              		<td>3</tf>
                              		<td>4</tf>
                              	<tr>
                              	</tr>
                              </table>
                              

                              aus den Datenpunkten erstellen (JS ist also für die Aktualisierung zuständig) oder einmalig

                              <table>
                              	<tr>
                              		<td>{Datenpunkt1}</tf>
                              		<td>{Datenpunkt2}</tf>
                              	</tr>
                              		<td>{Datenpunkt3}</tf>
                              		<td>{Datenpunkt4}</tf>
                              	<tr>
                              	</tr>
                              </table>
                              

                              und VIS (oder wer auch immer) muss sich um die Aktualisierung kümmern.

                              Jey CeeJ Online
                              Jey CeeJ Online
                              Jey Cee
                              Developer
                              schrieb am zuletzt editiert von
                              #16

                              @wolfgangfb um die Frage kurz und knapp zu beantworten:
                              Bindings sind die schlechteste Wahl wegen dem Overhead der da dran hängt. Davon abgeshen das jeder Wert einzeln Übertragen werden muss.

                              Die JSON variante ist deutlich besser, hat aber den Nachteil das die Daten noch in HTML gewandelt werden. Hier wird nur eine abfrage gemacht und die Menge an Daten spielt eine kleine Rolle.

                              Die HTML variante wird performance mässig im Browser am besten sein. Der Browser muss hier nicht mehr viel verarbeiten. Dafür ist die Erstellung im Backend etwas Aufwändiger.

                              Persönlicher Support
                              Spenden -> paypal.me/J3YC33

                              1 Antwort Letzte Antwort
                              0
                              • HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von
                                #17

                                Außerdem greift ein Binding in der vis auf die Ressourcen des meist deutlich schwächeren Frontends zu, während js auf dem Server läuft.

                                kein Support per PN! - Fragen im Forum stellen -
                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                OliverIOO 1 Antwort Letzte Antwort
                                0
                                • OliverIOO Offline
                                  OliverIOO Offline
                                  OliverIO
                                  schrieb am zuletzt editiert von
                                  #18

                                  @jey-cee
                                  Der Mechanismus von Iobroker jeden datenpunkt einzeln zu übertragen finde ich per websocket eigentlich schon effizient
                                  Sonst müssten ja alle 500 Daten jedesmal auch wenn nur einer sich davon ändert in Summe übertragen werdeb

                                  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
                                  • HomoranH Homoran

                                    Außerdem greift ein Binding in der vis auf die Ressourcen des meist deutlich schwächeren Frontends zu, während js auf dem Server läuft.

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

                                    @homoran sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                                    Außerdem greift ein Binding in der vis auf die Ressourcen des meist deutlich schwächeren Frontends zu, während js auf dem Server läuft.

                                    Das ist korrekt
                                    Aber das muss er ausprobieren wieviel sein endgerät schafft.
                                    So schlimm ist es mit dem binding jetzt auch nicht, aber bei 500
                                    Und sekündlicher Aktualisierung könnte man zu Problemen kommen.

                                    Es geht ja hier darum ihm evtl eine Menge Arbeit zu ersparen.
                                    Wenn er es dennoch ausprobieren möchte dann gerne.

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

                                    joergeliJ 1 Antwort Letzte Antwort
                                    0
                                    • liv-in-skyL liv-in-sky

                                      @joergeli hast du bei der aktuellen leistung auch einen dauernden abgleich in der tabelle ? oder ist es wie bei den sonoffs, wo die aktuelle leistung über teleperiod eingestellt wird - bedeutet: die aktuelle leistung kommt je nach eingestellter zeit - z.b alle 15 sek

                                      joergeliJ Online
                                      joergeliJ Online
                                      joergeli
                                      schrieb am zuletzt editiert von
                                      #20

                                      @liv-in-sky
                                      Die Leistungsdaten von "Energieverbrauch Haus" kommen über einen Hichi-Leskopf rein, d.h. über den Sonoff-Adapter.
                                      Da greift dann die TelePeriod, welche ich auf 30 Sekunden eingestellt habe.

                                      Bei den restlichen Leistungsdaten, die mittels Shelly-Adapter (COAP) ermittelt werden, kann ich es nicht sagen, da bei den Shellys ja meines Wissens nicht so etwas wie TelePeriod eingestellt werden kann.
                                      "Gefühlt" werden diese Leistungsdaten aber sehr schnell aktualisiert.

                                      1 Antwort Letzte Antwort
                                      1
                                      • P picky

                                        @joergeli Das sieht ja wirklich super aus, würdest Du vielleicht auch den Code von einer oberen Tabelle teilen :-)
                                        Ich habe auch 2 Javascripte laufen für Sonoff und Shelly, die alle 15 Minuten die Werte fast so wie bei Dir zusammenfassen und in die Datenpunkte schreiben ;-)

                                        joergeliJ Online
                                        joergeliJ Online
                                        joergeli
                                        schrieb am zuletzt editiert von
                                        #21

                                        @picky
                                        Anbei der Code für die linke obere Tabelle "Energieverbrauch Haus":

                                        <style type="text/css">
                                        table.energiehaus {
                                          font-family: Arial, Helvetica, sans-serif;
                                          /*background-color: #ebebeb;*/
                                              background-color: #fafafa;
                                          
                                          text-align: center;
                                          border-collapse: collapse;
                                          border: 2px solid #8a8a8a;
                                        }
                                        table.energiehaus td, table.energiehaus th {
                                          padding: 1px 8px;
                                        }
                                        
                                        table.energiehaus tbody td {
                                          font-size: 11px;
                                          font-weight: normal;
                                          color: #330F1A;
                                        }
                                        table.energiehaus tr:nth-child(even) {
                                          /*background: #dddddd;*/
                                            background: #EEF0F3;
                                        }
                                        table.energiehaus thead {
                                          background: #eaeaea;
                                          border-bottom: 1px solid #8a8a8a;
                                        }
                                        table.energiehaus thead th {
                                          font-size: 11px;
                                          font-weight: bold;
                                          color: #bb0000;
                                          text-align: center;
                                          border-left: 1px solid #8a8a8a;
                                        }
                                        table.energiehaus thead th:first-child {
                                          border-left: none;
                                        }
                                          
                                        .gesamt {
                                          background-color: #ffe4c4;
                                          color: kWhite;
                                          border: 1px solid black;
                                        } 
                                          
                                        .borderlinks {
                                          border-left: 1px solid #8a8a8a;
                                        } 
                                        
                                        
                                          
                                        
                                        </style>
                                        
                                        
                                        <table class="energiehaus">
                                        <thead>
                                        <tr>
                                        <th colspan="4">Energieverbrauch Haus</th>
                                        </tr>
                                        <tr>
                                        <th colspan="2">Woche</th>
                                        <th colspan="2">2022</th>
                                        </tr>
                                        </thead>
                                        <tbody>
                                        <tr>
                                        <td align="left">Montag</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.currentYear.delivered.currentWeek.01_Monday} kWh</td>
                                        <td align="left" class="borderlinks">Jan</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.01_January} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left">Dienstag</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.currentYear.delivered.currentWeek.02_Tuesday} kWh</td>
                                        <td align="left" class="borderlinks">Feb</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.02_February} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left">Mittwoch</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.currentYear.delivered.currentWeek.03_Wednesday} kWh</td>
                                        <td align="left" class="borderlinks">Mrz</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.03_March} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left">Donnerstag</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.currentYear.delivered.currentWeek.04_Thursday} kWh</td>
                                        <td align="left" class="borderlinks">Apr</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.04_April} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left">Freitag</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.currentYear.delivered.currentWeek.05_Friday} kWh</td>
                                        <td align="left" class="borderlinks">Mai</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.05_May} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left">Samstag</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.currentYear.delivered.currentWeek.06_Saturday} kWh</td>
                                        <td align="left" class="borderlinks">Jun</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.06_June} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left">Sonntag</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.currentYear.delivered.currentWeek.07_Sunday} kWh</td>
                                        <td align="left" class="borderlinks">Jul</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.07_July} kWh</td></tr>
                                        <tr>
                                        <td align="left"></td><td align="right"></td>
                                        <td align="left" class="borderlinks">Aug</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.08_August} kWh</td>
                                        </tr>
                                        
                                        
                                        <tr>
                                        <td align="left"></td><td align="right"></td>
                                        <td align="left" class="borderlinks">Sep</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.09_September} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left"></td><td align="right"></td>
                                        <td align="left" class="borderlinks">Okt</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.10_October} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left"></td><td align="right"></td>
                                        <td align="left" class="borderlinks">Nov</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.11_November} kWh</td>
                                        </tr>
                                        <tr>
                                        <td align="left"></td><td align="right"></td>
                                        <td align="left" class="borderlinks">Dez</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.delivered.months.12_December} kWh</td>
                                        </tr>
                                        
                                        <tr class="gesamt">
                                        <td align="left">Woche</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.currentYear.delivered.02_currentWeek} kWh</td>
                                        <td align="left" class="borderlinks">Jahr</td><td align="right">{sourceanalytix.0.sonoff__0__IR-Lesekopf__Strom_total_in.2022.deliveredCumulative} kWh</td>
                                        </tr>
                                        </tbody>
                                        </tr>
                                        </table>
                                        

                                        Hinweis:
                                        Ich bin nicht so der HTML/CSS-Crack und habe mir das Ganze mit Try & Error zusammengefrickelt.

                                        Wenn mehrere Tabellen im gleichen View verwendet werden, muß man darauf achten, daß in den CSS-Definitionen für jede Tabelle jeweils andere Namen verwendet werden ( wie z.B. table.energiehaus , table.pv, etc.).

                                        Die Tabellen habe ich zuerst mit einem Texteditor (Notepad++) erstellt, und dann mit Copy&Paste in das basic-HTML Widget kopiert, weil das direkte Erstellen im VIS-Editor wegen des rel. kleinen Eingabefeldes so gut wie "unmöglich" ist.

                                        Erschwerend kommt hinzu, daß in den einzelnen basic-HTML Widegts im VIS-Editor ja die Bindings angezeigt werden und die Daten erst im VIS selbst geschrieben werden.
                                        Deshalb ist es etwas frickelig, die einzelnen Widgets korrekt zueinander auszurichten - aber es geht.
                                        Im VIS-Editor sieht es so aus:
                                        vis-editor.jpg

                                        Zur Performance kann ich nur sagen, daß es auf einem älteren Samsung A16 Android-Tablet, als auch auf auf einem Raspi 4 (4 GByte) mit Chromium-Browser im Kiosk-Mode auf einem 24"-Touchscreen problemlos läuft.

                                        Diese Vorgehensweise war für meinen Wissensstand halt am einfachsten, mag sein, daß andere Lösungen performanter sind.

                                        1 Antwort Letzte Antwort
                                        0
                                        • OliverIOO OliverIO

                                          @homoran sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                                          Außerdem greift ein Binding in der vis auf die Ressourcen des meist deutlich schwächeren Frontends zu, während js auf dem Server läuft.

                                          Das ist korrekt
                                          Aber das muss er ausprobieren wieviel sein endgerät schafft.
                                          So schlimm ist es mit dem binding jetzt auch nicht, aber bei 500
                                          Und sekündlicher Aktualisierung könnte man zu Problemen kommen.

                                          Es geht ja hier darum ihm evtl eine Menge Arbeit zu ersparen.
                                          Wenn er es dennoch ausprobieren möchte dann gerne.

                                          joergeliJ Online
                                          joergeliJ Online
                                          joergeli
                                          schrieb am zuletzt editiert von
                                          #22

                                          Ich vermute, der TE wurde mißverstanden:

                                          @wolfgangfb sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                                          Ich berechne nicht 500 Datenpunkte pro Sekunde. Es gibt insgesamt ca. 500 Datenpunkte. Pro Verbraucher einmal Momentanleistung, Gesamtenergieverbrauch, Verbrauch heute, Verbrauch gestern, Verbrauch letzter Monat, Verbrauch letzte Jahr. Macht bei ca. 70 Verbrauchern 420 Datenpunkte (OK, etwas weniger als 500).
                                          Es kommt im Schnitt jede Sekunde irgendein Messwert an (Leistung oder Energie), d.h. ich berechne und schreibe dann die restlichen 5 Datenpunkte für diesen Sensor.

                                          @oliverio sagte in Performance-Vergleich VIS HTML Binding vs. JS:

                                          So schlimm ist es mit dem binding jetzt auch nicht, aber bei 500
                                          Und sekündlicher Aktualisierung könnte man zu Problemen kommen.

                                          So wie ich es verstehe, werden nicht alle 500 Datenpunkte gleichzeitig aktualisiert, sondern - wie auch bei mir - nur die Datenpunkte aktualisiert, die sich gerade geändert haben.
                                          Das wäre lt. seiner Aussage im Schnitt jede Sekunde ein Meßwert.

                                          OliverIOO 1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          498

                                          Online

                                          32.9k

                                          Benutzer

                                          83.0k

                                          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