Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Energieanzeige (kWh) über HTML Tabelle - vis

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Energieanzeige (kWh) über HTML Tabelle - vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      Oli @sigi234 last edited by Oli

      @sigi234

      hier das Widget

      [{"tpl":"tplVis-materialdesign-Table","data":{"oid":"javascript.0.Energieverbrauch.Strom.MaterialWidgetTable","g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","countCols":"10","tableLayout":"card","showHeader":"true","headerTextSize":"headline6","showColumn0":"true","colType0":"text","textAlign0":"left","showColumn1":"true","colType1":"image","textAlign1":"center","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"showColumn2":"true","colType2":"text","textAlign2":"center","showColumn3":"true","colType3":"text","textAlign3":"right","showColumn4":"true","colType4":"text","textAlign4":"right","showColumn5":"true","colType5":"text","textAlign5":"right","showColumn6":"true","colType6":"text","textAlign6":"center","showColumn7":"true","colType7":"text","textAlign7":"right","showColumn8":"true","colType8":"text","textAlign8":"right","showColumn9":"true","colType9":"text","textAlign9":"right","label0":"Gerät","label1":"Bild","label2":"Status","label3":"Strom (A)","label4":"Spannung (V)","label5":"Leistung (W)","label6":"Schalter","label7":"Heute (kWh)","label8":"Monat (kWh)","label9":" Heute (€) ","colorBackground":"#2e2e2e","colorHeaderRowText":"#8f8f8f","colorHeaderRowBackground":"#202020","colorRowText":"#8f8f8f","dividers":"","borderColor":"#202020","padding_left5":"0","showColumn10":"true","colType10":"text","textAlign10":"right","label10":"Monat (€)","imageSize10":"18","rowHeight":"35","padding_right7":"","class":"mdui-table mdui-table-ascard-r250-l mdui-table-striped noSwipemdui-table-ascard-r250-l mdui-table-striped noSwipe","colorRowBackground":"#2e2e2e","padding_right8":"","imageSize1":"20","columnWidth9":"","columnWidth8":""},"style":{"left":"20px","top":"45px","width":"97.69%","height":"286px","overflow-y":"auto"},"widgetSet":"materialdesign"}]
      

      Wenn du verschieden Bilder haben möchtest musst du das im Script ändern, hier mal der Code Schnippsel

      var bild_array = val0.split('/ ');
                 var bild = bild_array[2]
                 valMarkeDevice=bild  
      
      1 Reply Last reply Reply Quote 1
      • liv-in-sky
        liv-in-sky @sigi234 last edited by

        @sigi234 ja - aber da stimmt noch was nicht - ich werd nochmal das gesamt ansehen müssen - da muss kein schalter stehen - hatte es nicht aktiviert - deshalb ist es mir nicht aufgefallen

        1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @Oli last edited by

          @Oli sagte in Energieanzeige (kWh) über HTML Tabelle - vis:

          @liv-in-sky

          habe auch noch etwas mit den Widgets gespielt, echt cool

          ed49a3f2-6dd3-469d-a619-ee6e51c78dff-image.png

          Kann ich mir die Gesamtwerte der einzelnen Geräte auch getrennt anzeigen lassen?

          kannst du bitte beide widgets in den post setzen - habe ihn im ersten post hierhin verlinkt

          O 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky last edited by

            so noch eine neue version (post 1) für die material design fan's

            • virtpower gesamt bekommt eigene farbe
            • gesamt hat eine eigene farbe - keinen schalter und kein strom,spannung oder power mehr
            • einspeisung hat eigene farbe bekommen

            Image 11.png Image 13.png

            neues bildchen: inputk.png

            ihr könnt alle settings zurück kopieren und müßt nur auf zeile 20 bis 23 aufpassen

            Image 9.png

            da kam etwas dazu

            O 1 Reply Last reply Reply Quote 0
            • O
              Oli @liv-in-sky last edited by Oli

              @liv-in-sky

              ich bräuchte nochmals deine Hilfe.
              Ich möchte mir den Gesamtverbrauch nicht in Klammern, sondern als zusätzliche Zeile anzeigen lassen.

              In deinem Script habe ich folgendes Versucht jedoch ohne Erfolg, wo habe ich den Fehler?

              var val1; var val2; var val0; var val3; var val4; var val5; var val6; var val7; var val8; var val9; var val10; var valStatus; var gesamtE; var gesamtkWh;
              
              function sammleDaten() { 
               //   log(gesamtMonth.toString())
                               let anzeigeNuller=3; //log(getState(val0help+".Script_Power").val.toString())
                               let anzahlStellen=3;
                               let anzahlStellen2=3;
                           if((getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".todaykWh").val).toFixed(3)=="0.000") anzeigeNuller=0; 
                           if ((getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".MonBeforekWh").val).toFixed(3)=="0.000") anzahlStellen=0;
                           if ((getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".monkWh").val).toFixed(3)=="0.000")  anzahlStellen2=0;    
                       //    if (!anzeigeNuller){
                          val6=(getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".todaykWh").val).toFixed(anzeigeNuller)+" kWh";
              
                          if (!mitMonatBeforeAnzeige) {
                              val7=(getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".monkWh").val).toFixed(anzahlStellen2)+" kWh"; 
                          }else{
                              val7=(getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".monkWh").val).toFixed(anzahlStellen2)+" kWh"
                              gesamtkWh=(getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".MonBeforekWh").val).toFixed(anzahlStellen)+" kWh";
                          }
                          
                          val8=(Math.round((getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".todaykWh").val)*kwhPreis*100)/100).toString()+" €";
                          
                          if (!mitMonatBeforeAnzeige) {
                              val9=(Math.round((getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".monkWh").val)*kwhPreis*100)/100).toString()+" €"; 
                          }else{
                              val9=(Math.round((getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".monkWh").val)*kwhPreis*100)/100).toString()+" €"
                              gesamtE=(Math.round((getState(dpPrefix+"Tabelle_EnergieRechnung."+val0+".MonBeforekWh").val)*kwhPreis*100)/100).toString()+" €";
                          }
              
              
              
              
              function makeJsonWidget(vax1,vax2,vax3,vax4,vax5,vax6,vax7,vax8,vax9,vax10,vaxMarke,vaxSwitchvar,gesamtE,gesamtkWh) {
                 /* vax6=vax6.replace(/((ON|OFF))/g,"$1 "); log("---"+vax6) vax6=vax6.replace(/(OFF|ON).+? ((ON|OFF))/,"$3"); log("2222"+vax6)*/
                   vaxMarke=pfadBilderMaterialWidget+vaxMarke+".png"
                    let mycolor;
                     
                    if (vax1.indexOf("Gesamt")>-1) vax1="<font color=\'"+farbeMDAlleVirtPow+"\'>"+" GESAMT VirtualPower"+"</font>";
                    if (vax1.indexOf("alle Geräte")>-1) vax1="<font color=\'"+farbeMDGesamtG+"\'>"+" GESAMT"+"</font>";
                  // log(vax1+ " und "+ vax2 +" und "+vax3 )
               
                 if ( braucheMaterialDesignWidgetTable) {
                       
              if (filterArrAusnahme.includes(val0)) {
                
                  vax1="<font color=\'"+farbeMDEinspeisung+"\'>"+vax1+"</font>";
                  vaxMarke=pfadBilderMaterialWidget+"inputk"+".png"
                  mycolor=farbeMDEinspeisung;
              }
               
                 myJsonWidget.push({
                     Device : vax1,
                     marke : vaxMarke,
                     Status : vax2,
                     Strom : vax3,
                     Spannung : vax4,
                     Power : vax5,                         
                     Schalter : vax6,
                     kWhNow : vax7,
                     kWhMonat  : vax8,
                     PreisNow : vax9,
                     PreisMonat : vax10       
                 }
               
                 );}
               
              //	log(myJsonWidget)
              if (braucheMaterialDesignWidget) {
               
               
               
              let mysubText;
               
              if (!filterArrAusnahme.includes(val0)) {
                                        
                  mysubText =     `<div>Strom: ${vax3} A</div> 
                                    <div>Spannung: ${vax4} V</div> 
                                    <div>Leistung: ${vax5} W</div>
                                    <div>&ensp; </div>   
                                    <div>Heute: ${vax7} kWh</div> 
                                    <div>Monat: ${vax8} kWh</div>
                                    <div>Gesamt: ${gesamtkWh} kWh</div>                      
                                    <div>&ensp; </div>
                                    <div>Heute: ${vax9} €</div> 
                                    <div>Monat: ${vax10} €</div>
                                    <div>Gesamt: ${gesamtE} €</div>                      
                                    <div style="display: flex; flex: 1; text-align: left; align-items: center; position: relative;">
                                    ${vax2}</div>`
              } else {
               
                  mysubText = `     <div style="color: red; font-family: RobotoCondensed-Regular">EINSPEISUNG</div>
                                    <div Strom: ${vax3} A</div>
                                    <div Spannung: ${vax4} V</div> 
                                    <div Leistung: ${vax5} W</div>
                                    <div>&ensp; </div>
                                    <div>Heute: ${vax7} kWh</div> 
                                    <div Monat: ${vax8} kWh</div>
                                    <div>Gesamt: ${gesamtkWh} kWh</div>                       
                                    <div>&ensp; </div>
                                    <div>Heute:  ${vax9} €</div> 
                                    <div Monat:  ${vax10} €</div>
                                    <div>Gesamt: ${gesamtE} €</div>
                                    <div style="display: flex; flex: 1; text-align: left; align-items: center; position: relative;">
                                    ${vax2}</div>`
              //  // <div>Strom:${vax3}A Spannung: ${vax4}V Leistung: ${vax5}W</div>    //font-size: 80% ;
              }
              

              Das Ergebnis sieht leider so aus

              c856e6cc-5218-42e2-a60e-4fb985ce4109-image.png

              Noch eine Frage hätte ich, da ich mir den Status durch den grünen Punkt anzeigen lasse, würde ich mir gerne, in der Linie anzeigen lassen, ob das Gerät ein oder ausgeschaltet ist, was muss ich da in deinem Script ändern?

              liv-in-sky 1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @Oli last edited by

                @Oli der wert in klammern ist nicht der gesamtverbrauch , sondern der verbrauch des letzen monats (also gesamt des letzten monats)

                also bei deinem widget:

                heute
                bisher in diesem monat
                im letzten monat gesamt

                heute kosten
                bisher in diesem monat kosten
                im letzten monat gesamt kosten

                die letzten monate sind nachträglich ins script "hineingewurschtelt" worden - ich schaum mir nochmal an, wo der beste punkt zum abgreifen ist und integriere das - gebe dir dann bescheid

                O 1 Reply Last reply Reply Quote 0
                • O
                  Oli @liv-in-sky last edited by

                  @liv-in-sky

                  super Dankeschön, aber warum erscheint bei den Werten undefiniert, die Werte des Vormonats wären ja auch interessant?

                  liv-in-sky 2 Replies Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @Oli last edited by

                    @Oli im ersten post ist ein update mit den 2 weiteren werten - energie verbracu letztes monat und kosten letztes monat- durch die beiden neuen werte hat sich das MD table widget geändert - das MD list widget ist nicht betroffen

                    es sind keine neuen settings dazugekommen - daher sollte dass setting des vorigen scriptes kopiert und eingestzt werden können

                    könntes du bitte das neue widget für das "table" widget auch in deinem post updaten - ist ja verlinkt zm ersten post

                    1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @Oli last edited by

                      @Oli ich habe dein script nur kurz angesehen

                      • die var val werte sollten nirgends geändert werden oder neue variablen dazugefügt werden - die sind für die eigentliche html tabelle

                      du siehst ja in neuem script, wie ich die daten gefunden habe - die müssen aber zweimal hinzugefügt werden, da der punkt gesamt extra behandelt wird und eine extra berechnung für das json hat

                      O 1 Reply Last reply Reply Quote 0
                      • O
                        Oli @liv-in-sky last edited by

                        @liv-in-sky

                        muss ich da noch einen Datenpunkt anlegen?

                        das Script bringt folgenden Warnmeldung

                        21:06:00.240	warn	javascript.0 (9230) at writeHTML (script.js.Energiekosten.Stromverbrauch_Test:1176:14)
                        21:06:00.241	warn	javascript.0 (9230) at Object.<anonymous> (script.js.Energiekosten.Stromverbrauch_Test:1242:2)
                        21:06:00.244	warn	javascript.0 (9230) at writeHTML (script.js.Energiekosten.Stromverbrauch_Test:1177:32)
                        21:06:00.244	warn	javascript.0 (9230) at Object.<anonymous> (script.js.Energiekosten.Stromverbrauch_Test:1242:2)
                        21:07:00.407	warn	javascript.0 (9230) at writeHTML (script.js.Energiekosten.Stromverbrauch_Test:1176:14)
                        21:07:00.408	warn	javascript.0 (9230) at Object.<anonymous> (script.js.Energiekosten.Stromverbrauch_Test:1242:2)
                        21:07:00.410	warn	javascript.0 (9230) at writeHTML (script.js.Energiekosten.Stromverbrauch_Test:1177:32)
                        21:07:00.410	warn	javascript.0 (9230) at Object.<anonymous> (script.js.Energiekosten.Stromverbrauch_Test:1242:2)
                        
                        valMBefore=getState(dpPrefix+"Energieverbrauch.Strom.Tabelle_EnergieRechnung."+"Gesamt"+".MonBeforekWh").val
                          valKostenBefore=(Math.round((getState(dpPrefix+"Energieverbrauch.Strom.Tabelle_EnergieRechnung."+"Gesamt"+".MonBeforekWh").val)*kwhPreis*100)/100).toString()
                        
                        liv-in-sky 1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @Oli last edited by

                          @Oli

                          dieser datenpunkt sollte vom script angelegt werden - die fehlermeldung ist auch wenig aussage kräftig - steht mehr im log ?

                          die zeilennummern sind ungef. 8 auseinander zu meinen - weiß nicht ob das was bedeutet? bei mir steht in zeilennummer 1176

                           makeJsonWidget(val0+"</font>",symbolOK," - "," - "," - "," - ",valkNow,valkM,valEuNow,valEuM,"infok","leer",valMBefore,valKostenBefore)
                          

                          gibt es die datenpunkte? wird am ende etwas angezeigt in den widgets ?

                          was du testen kannst: installiere dir eine 2te javascript-instanz - stoppe das script - erstelle eine neues script und wähle die 2te instanz für das script aus - kopiere den ganzen inhalt vom alten script in das neue leere angelegte script , du mußt im neuen script nichts anderes einstellen - nur starten - dann werden unter der neuen javascriptinstanz alle datenpunkte neu angelegt - kommen dann auch warnungen ? du kannst später wieder das script der ersten instanz nehmen, damit sind dann die daten wieder da

                          O 1 Reply Last reply Reply Quote 0
                          • O
                            Oli @liv-in-sky last edited by

                            @liv-in-sky

                            ich habe in den ersten Zeilen nur das anlegen der Datenpunkte mit eingefügt, die Datenpunkte werden nicht angelegt, den rest schaue ich heute abend

                            1 Reply Last reply Reply Quote 0
                            • J
                              Jautze last edited by Jautze

                              Hallo,

                              in dem Script ist ein Fahler beim Sonoff Block:

                              Bei mir ab Zeile 687:

                                    val1=getState(id.replace("INFO.Module","alive")).val;                   
                              
                                    val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;
                              
                                    val4=getState(id.replace("INFO.Module","ENERGY_Power")).val.toString()+ " W"                     
                              
                                    val2=((getState(id.replace("INFO.Module","ENERGY_Current")).val)*1000).toString()+ " mA";   
                              
                                    val3=getState(id.replace("INFO.Module","ENERGY_Voltage")).val.toString()+" V"; 
                              
                                    let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
                              
                                    val7_1 ? val5=(" <font color=\""+farbeSchalterON+"\"> ")+"ON</font>" : val5=(" <font color=\""+farbeSchalterOFF+"\"> ")+"OFF</font>";
                              
                                     val6=" - "; val7=" - "; val8=" - "; val9=" - "; 
                              
                                    valMarkeDevice="sonoffk"   
                              
                                    if (sourceAnalyPow) {brechneEnergy(val0,getState(id.replace("INFO.Module","ENERGY_Power")).val); 
                              

                              Da steht überall: ENERGY_Power das muß aber heißen ENERGY.Power oder ENERGY_Current muß heißen ENERGY.Current

                              Das sind jeweils 3 Blöcke in denen es ca. 4 mal geändert werden muß.

                              Dann läuft das Script.

                              Allerdings kommen dann beim start noch folgende Fehler:

                              javascript.0	2020-03-20 07:23:00.761	warn	(6754) at script.js.common.PV.Stromverbrauch.Stromverbrauch:2477:2
                              javascript.0	2020-03-20 07:23:00.761	warn	(6754) at writeHTML (script.js.common.PV.Stromverbrauch.Stromverbrauch:1511:27)
                              javascript.0	2020-03-20 07:23:00.761	warn	(6754) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:868:29)
                              javascript.0	2020-03-20 07:23:00.761	warn	(6754) at script.js.common.PV.Stromverbrauch.Stromverbrauch:1537:16
                              javascript.0	2020-03-20 07:23:00.760	warn	(6754) getState "fritzdect.0.DECT200_087610131094.voltage" not found (3)
                              javascript.0	2020-03-20 07:23:00.758	warn	(6754) at script.js.common.PV.Stromverbrauch.Stromverbrauch:2477:2
                              javascript.0	2020-03-20 07:23:00.758	warn	(6754) at writeHTML (script.js.common.PV.Stromverbrauch.Stromverbrauch:1511:27)
                              javascript.0	2020-03-20 07:23:00.758	warn	(6754) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:868:29)
                              javascript.0	2020-03-20 07:23:00.758	warn	(6754) at script.js.common.PV.Stromverbrauch.Stromverbrauch:1537:16
                              javascript.0	2020-03-20 07:23:00.757	warn	(6754) getState "fritzdect.0.DECT200_087610131086.voltage" not found (3)
                              

                              Viele Grüße
                              Marcel

                              liv-in-sky 1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @Jautze last edited by liv-in-sky

                                @Jautze das kann ich mir nicht vorstellen, dass dies so, wie in deiner beschreibung, sein soll - zeig mal bitte ein bild deiner sonoff datenpunkte - die datenpunkte sind nicht in einem unterordner bei tasmota geflashten devices - es gibt darin keinen ordner ENERGY mit den unterpunkten Current - zumindest bei mir nicht - du kannst auch gerne eine JSON export datei deiner sonoff.0 datenpunkte hier einstellen

                                versuche mal mit chrome zu arbeiten und kopiere das ganz script neu - deine zeilen angaben beinhalten alle leerzeilen. deine zeilen 687 sind in wirklichkeit bei zeile 334 . bei firefox kommt es manchmal zu dieser leerzeilen problematik - diene log-fhelermeldungen passen daher nicht mit meinen zeilennummern überein und ich kann si nicht analysieren

                                Image 2.png

                                1 Reply Last reply Reply Quote 0
                                • J
                                  Jautze last edited by

                                  Hallo,

                                  so sieht es bei mir aus:
                                  Sonoff.png

                                  Allerdings bekomme ich in der fertigen vis Tabelle keine Bilder angezeigt.

                                  Danke und viele Grüße
                                  Marcel

                                  liv-in-sky 2 Replies Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @Jautze last edited by

                                    @Jautze was ist das für ein gerät - habe ich noch nie gesehen

                                    1 Reply Last reply Reply Quote 0
                                    • liv-in-sky
                                      liv-in-sky @Jautze last edited by

                                      @Jautze mach bitte nochmal ein bild mit offenen INFO ordner

                                      1 Reply Last reply Reply Quote 0
                                      • J
                                        Jautze last edited by

                                        @liv-in-sky sagte in Energieanzeige (kWh) über HTML Tabelle - vis:

                                        nie geseh

                                        Ganz normaler Sonoff TH10.

                                        Der Sonoff Adapter hat übrigends Version 2.3.3

                                        liv-in-sky 2 Replies Last reply Reply Quote 0
                                        • liv-in-sky
                                          liv-in-sky @Jautze last edited by

                                          @Jautze steht das auch in INFO.module

                                          1 Reply Last reply Reply Quote 0
                                          • J
                                            Jautze last edited by

                                            Sonoff2.png

                                            liv-in-sky 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            794
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript template
                                            37
                                            696
                                            126029
                                            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