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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    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 @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
                                        • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            491
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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