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.
    • 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
                                      • liv-in-sky
                                        liv-in-sky @Jautze last edited by

                                        @Jautze ist das mit tasmota geflasht oder irgendeinem "abglatsch" davon - ich hatte dir auch ein bild eines pows reingestellt - so sieht der aus - oder gibt es von tasmota eine sonderversion ?

                                        ich hatte auch mal einen th10 - der hat auch anders wie bei dir ausgesehen - das ist der mit dem tempfühler - aber selbst wenn du th10 im info.module drinstehen würde, mein script kann das so nicht - da musst du dir das script selbst ändern und dann nutzen - brauchst du da hilfe dabei ?

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

                                          Hallo,

                                          sorry ich habe quatsch geschrieben.
                                          Natürlich ist das ein Sonoff POW. War verwirrt.

                                          Nein ist ganz normales Tasmota.

                                          Program Version 5.9.1
                                          Build Date & Time 2017-11-13T21:43:41

                                          Vielleicht ist das mittlerweile geändert.

                                          Nein brauche dabei keine Hilfe. Bei mir läuft es.

                                          Wie gesagt das einzige Problem das ich habe ist,
                                          das ich im Vis (ohne Material) keine Bilder angezeigt bekomme. Auch keine Platzhalter dafür.

                                          Viele Grüße
                                          Marcel

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

                                            @Jautze ist das mit tasmota geflasht oder irgendeinem "abglatsch" davon - ich hatte dir auch ein bild eines pows reingestellt - so sieht der aus

                                            ich hatte auch mal einen th10 - der hat auch anders wie bei dir ausgesehen - das ist der mit dem tempfühler

                                            ok - du hast es ja selbst erkannt

                                            ich habe nur verionen über

                                            Image 4.png

                                            vielleicht liegt es daran ????

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            650
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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