Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Stromzählerscript PV Anlage Finanzamt in Json oder html

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Stromzählerscript PV Anlage Finanzamt in Json oder html

    This topic has been deleted. Only users with topic management privileges can see it.
    • smartboart
      smartboart last edited by smartboart

      Hallo Leute,
      ArnoD war so freundlich sein script für die Aufbereitung von Zählerdaten bei Überschusseinspeisung als Unternehmer mit Umsatzsteuervoranmeldung hier im Forum zu teilen.
      https://forum.iobroker.net/topic/32976/e3dc-hauskraftwerk-steuern/197
      Nach Rückfrage, ob er was dagegen hätte hierfür einen neuen Threat zu eröffnen, um das Script weiter aufzubohren, hatte er dies begüßt.

      Hintergrund ist nun, dass diese Menge an States und Daten besser in einer Json Tabelle oder html Tabelle aufgehoben wären um die Daten in Vis darzustellen und evtl. zusätzlich als txt Datei lokal oder auf dem NAS abzulegen.

      EDIT:
      ich habe das Skript von ArnoD mit Hilfe von paul53 weiter aufgebohrt un um die Kostenberechnung für die Privatentnahme erweitert. Ebenfalls 2 States hinzu um die Stromkosten und mittlerweile wechselhafte MWST über vis anzupassen.

      EDIT:
      Taelle erweitert um aktuelle Mwst und aktueller Strompreis und log Ausgabe.

      EDIT:
      Skript erweitert, es werden nunzusätzlich alleDaten in eine CSV Datei geschrieben.

      /*
      Zweck: Stromzählerscript / Smartmeter PV Anlage Tabelle für Finanzamt in Json 
      Stand: 10.10.2020
      Forumthreat:
      https://forum.iobroker.net/topic/35659/stromz%C3%A4hlerscript-pv-anlage-finanzamt-in-json-oder-html
      Änderungen: 10.10.2020 - Smartboart: Export der Liste in json auf das filesystem / Festplatte.
      
      26.02.2020 - Smartboard: Forumswunsch Erweiterung Verguetung
      */
      // Hausstromverbrauch aktuell berechnen **************************************************************************
      createState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.NetzbezugAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
      createState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
      createState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.SolarproduktionAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
      
      createState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.Mehrwertsteuersatz',    16, {name: 'aktueller Mehrwertsteuersatz', type: 'number', unit: '%' });
      createState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.Nettostrompreis',    0.2638, {name: 'Strompreis netto pro kwh', type: 'number', unit: '€' });
      createState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.NettoGrundpreis',    0, {name: 'Grundpreis netto pro Monat', type: 'number', unit: '€' });
      
      
      const idJson = 'javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.JsonTable';
      
      var logging = true;
      var debug = false;
      var Begrenzung = false; // Wenn auf 12 Monatseinträge begrenzt werden soll, auf true setzen
      var Verguetung_kwh = 0.0903; // €pro kWh
      
      var LogPath = "/home/pi/Smartmeter/Finanzamt_Tabelle.json";
      var fs = require('fs');  
      var logflag = true; 
      
      
      writelog();
      
      //Um 00:00:55 am 1 in jeden Monat speichern für das Finanzamt
      schedule('55 0 0 1 * *', function() { 
      if (logging)log('Smartmeter Zählerstände FA Tabelle: Schedule Monatliche Berechnung fürs Finanzamt aktiv');       
      var nBezugZaehlerAktuell = Math.floor(getState('smartmeter.0.1-0:1_8_0__255.value').val);
      var nEinspeiseZaehlerAktuell = Math.floor(getState('smartmeter.0.1-0:2_8_0__255.value').val);
      var PvZaehlerAktuell=Math.floor(getState('modbus.0.holdingRegisters.12288_E3DC_Lieferung Summe'/*12288 E3dc Lieferung Summe*/).val);
      var MWST = getState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.Mehrwertsteuersatz').val;
      var NettoStromPreis = getState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.Nettostrompreis').val;
      var NettoGrundpreis = getState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.NettoGrundpreis').val;
      var nBezugZaehlerAlt = getState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.NetzbezugAlt').val;
      var nEinspeiseZaehlerAlt = getState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt').val;
      var PvZaehlerAlt=getState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.SolarproduktionAlt').val;
      var nBezugZaehlerNeu = nBezugZaehlerAktuell - nBezugZaehlerAlt;
      var nEinspeiseZaehlerNeu = nEinspeiseZaehlerAktuell - nEinspeiseZaehlerAlt;
      var Einspeiseverguetung = Math.round ((nEinspeiseZaehlerNeu * Verguetung_kwh)*100)/100;
      var PvZaehlerNeu = PvZaehlerAktuell - PvZaehlerAlt;
      var EigenverbrauchNeu = PvZaehlerNeu - nEinspeiseZaehlerNeu;
      var AutarkieNeu = Math.round(EigenverbrauchNeu / ((nBezugZaehlerNeu+EigenverbrauchNeu)/100)); 
      if(NettoGrundpreis > 0 ) var StromPreis = (NettoGrundpreis/(nBezugZaehlerNeu+EigenverbrauchNeu))+ NettoStromPreis;
      if(NettoGrundpreis == 0 ) var StromPreis = NettoStromPreis;
      var Entnahme = Math.round((EigenverbrauchNeu*StromPreis)*100)/100;
      var UstAnmeldung = Math.round((Entnahme/100*MWST)*100)/100;
      // Datum vom Vortag berechnen
      var jetzt = new Date();
      var Theute = jetzt.getDate();
      var Tgestern = new Date();
      Tgestern.setDate(Theute-1);
      var DatumAkt=((Tgestern.getDate())+'.'+ (Tgestern.getMonth()+1) +'.'+ Tgestern.getFullYear());
      var MonatAkt=(Tgestern.getMonth()+1);
      setTimeout(function(){
      setState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt',nEinspeiseZaehlerAktuell);
      setState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.NetzbezugAlt',nBezugZaehlerAktuell);
      setState('javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.SolarproduktionAlt',PvZaehlerAktuell);
      setTimeout(function(){
      if(debug)log('Smartmeter Zählerstände FA Tabelle: Json aktualisiert ' + JSON.stringify(arr));
      writelog();
      },200);
      // für Json aufbereiten
      let obj = {};
      obj.Datum = DatumAkt;
      obj.Einspeisung = nEinspeiseZaehlerNeu + ' kWh';
      obj.Netzbezug = nBezugZaehlerNeu + ' kWh';
      obj.Solarproduktion = PvZaehlerNeu + ' kWh';
      obj.Eigenverbrauch = EigenverbrauchNeu + ' kWh';
      obj.Autarkie = AutarkieNeu + ' %';
      obj.Netzeinspeisezaehler = nEinspeiseZaehlerAktuell + ' kWh';
      obj.Netzbezugszaehler = nBezugZaehlerAktuell + ' kWh';
      obj.PVzaehler = PvZaehlerAktuell + ' kWh';
      obj.Privatentnahme = Entnahme + ' €';
      obj.Ust = UstAnmeldung + ' €';
      obj.Mwst = MWST + ' %'
      obj.StrompreisGesamt = StromPreis + ' €/kWh';
      obj.Strompreis = NettoStromPreis + ' €/kWh';
      obj.Grundgebuehren = NettoGrundpreis + ' €/Monat'
      obj.Verguetung = Einspeiseverguetung + ' €';
      let arr = [];
      if(existsState(idJson)) arr = JSON.parse(getState(idJson).val);
      arr.push(obj);
      if(arr.length > 12 && Begrenzung) arr.shift();
      if(existsState(idJson)) setState(idJson, JSON.stringify(arr), true);
      else createState(idJson, JSON.stringify(arr), {type: 'string'});
          },2000);
      });
      
      
      // Funktion schreibt einen Logeintrag in das Filesystem 
      function writelog() {
          var string = getState(idJson).val;
          if (logflag === true) {
              fs.readFile(LogPath, 'utf8', function(err,data){
                  if (!err) {  
                      fs.writeFileSync(LogPath, string );
                  }else{
                      if(logging)log("Smartmeter: Finanzamt Tabelle - Json nicht gefunden - wird angelegt"), "info";
                      fs.writeFileSync(LogPath, string );
                  }
              });       
          } ; 
      }
      
      
      
      

      hier die widgets

      widget.txt

      Unbenannt.JPG

      paul53 G 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @smartboart last edited by paul53

        @smartboart
        Prinzip:

        const idJson = 'PVAnlage.Stromzaehler.JsonTable';
        
        let obj = {};
        // 6 Spalten
        obj.Datum = DatumAkt;
        obj.Einspeisung = nEinspeiseZaehlerNeu;
        obj.Netzbezug = nBezugZaehlerNeu;
        obj.Solarproduktion = PvZaehlerNeu;
        obj.Eigenverbrauch = EigenverbrauchNeu;
        obj.Autarkie = AutarkieNeu + ' %';
        let arr = [];
        if(existsState(idJson)) arr = JSON.parse(getState(idJson).val);
        arr.push(obj);
        if(arr.length > 12) arr.shift;
        if(existsState(idJson)) setState(idJson, JSON.stringify(arr), true);
        else createState(idJson, JSON.stringify(arr), {type: 'string'});
        
        smartboart 2 Replies Last reply Reply Quote 1
        • smartboart
          smartboart @paul53 last edited by

          @paul53 Danke....werde mich bei nächster Gelegenheit mal daran versuchen...

          1 Reply Last reply Reply Quote 0
          • smartboart
            smartboart @paul53 last edited by

            @paul53
            das ja schon fertig...
            hab mir es eben mal genau angeschaut...
            Im Prinzip muss ich es nur anhängen oder?
            Also so...

            // Hausstromverbrauch aktuell berechnen **************************************************************************
            createState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzbezug.alt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzeinspeisung.alt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Zaehlerstaende.Solarproduktion.alt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
            
            for(var i = 1; i<= 12; i++) {
            
            createState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzbezug.Monat'+ i,    0, {name: 'Zählerstand Netzbezug Monat'+ i, type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzeinspeisung.Monat'+ i,    0, {name: 'Zählerstand Netzeinspeisung Monat'+ i, type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Zaehlerstaende.Solarproduktion.Monat'+ i,    0, {name: 'Zählerstand PV-Anlage Monat'+ i, type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Berechnung.Netzeinspeisung.Monat'+ i,    0, {name: 'Ins Netz eingespeiste kWh im Monat'+ i, type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Berechnung.Netzbezug.Monat'+ i,    0, {name: 'Aus Netz bezogene kWh im Monat'+ i, type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Berechnung.Solarproduktion.Monat'+ i,    0, {name: 'Erzeugter Strom PV-Anlage im Monat'+ i, type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Berechnung.Eigenverbrauch.Monat'+ i,    0, {name: 'Selbst verbrauchter PV-Strom im Monat'+ i, type: 'number', unit: 'kWh' });
            createState('PVAnlage.Stromzaehler.Berechnung.Autarkie.Monat'+ i,    0, {name: 'Autarkie Grad im Monat'+ i, type: 'number', unit: '%' });
            createState('PVAnlage.Stromzaehler.Berechnung.Datum'+ i);
            createState('PVAnlage.Stromzaehler.Berechnung.Datum'+ i,    '', {name: 'Ablesedatum im Monat'+ i});
            }
            
            
            const idJson = 'PVAnlage.Stromzaehler.JsonTable';
            
            // Zählerstände Monatlich um 23:55 speichern für Finanzamt
            
            schedule("0 0 1 * *", function() {
            var nBezugZaehlerAktuell = Math.floor(getState('smartmeter.0.1-0:1_8_0__255.value').val);
            var nEinspeiseZaehlerAktuell = Math.floor(getState('smartmeter.0.1-0:2_8_0__255.value').val);
            var PvZaehlerAktuell=Math.floor(getState('modbus.0.holdingRegisters.12288_E3DC_Lieferung Summe'/*12288 E3dc Lieferung Summe*/).val);
            var nBezugZaehlerAlt = getState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzbezug.alt').val;
            var nEinspeiseZaehlerAlt = getState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzeinspeisung.alt').val;
            var PvZaehlerAlt=getState('PVAnlage.Stromzaehler.Zaehlerstaende.Solarproduktion.alt').val;
            var nBezugZaehlerNeu = nBezugZaehlerAktuell - nBezugZaehlerAlt;
            var nEinspeiseZaehlerNeu = nEinspeiseZaehlerAktuell - nEinspeiseZaehlerAlt;
            var PvZaehlerNeu = PvZaehlerAktuell - PvZaehlerAlt;
            var EigenverbrauchNeu = PvZaehlerNeu - nEinspeiseZaehlerNeu;
            var AutarkieNeu = EigenverbrauchNeu / ((nBezugZaehlerNeu+EigenverbrauchNeu)/100);
            // Datum vom Vortag berechnen
            var jetzt = new Date();
            var Theute = jetzt.getDate();
            var Tgestern = new Date();
            Tgestern.setDate(Theute-1);
            var DatumAkt=((Tgestern.getDate())+'.'+ (Tgestern.getMonth()+1) +'.'+ Tgestern.getFullYear());
            var MonatAkt=(Tgestern.getMonth()+1);
            setState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzbezug.Monat'+ MonatAkt,nBezugZaehlerAktuell);
            setState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzeinspeisung.Monat'+ MonatAkt,nEinspeiseZaehlerAktuell);
            setState('PVAnlage.Stromzaehler.Zaehlerstaende.Solarproduktion.Monat'+ MonatAkt,PvZaehlerAktuell);
            setState('PVAnlage.Stromzaehler.Berechnung.Netzeinspeisung.Monat'+ MonatAkt,nEinspeiseZaehlerNeu);
            setState('PVAnlage.Stromzaehler.Berechnung.Netzbezug.Monat'+ MonatAkt,nBezugZaehlerNeu);
            setState('PVAnlage.Stromzaehler.Berechnung.Solarproduktion.Monat'+ MonatAkt,PvZaehlerNeu);
            setState('PVAnlage.Stromzaehler.Berechnung.Eigenverbrauch.Monat'+ MonatAkt,EigenverbrauchNeu);
            setState('PVAnlage.Stromzaehler.Berechnung.Autarkie.Monat'+ MonatAkt,AutarkieNeu);
            setState('PVAnlage.Stromzaehler.Berechnung.Datum'+ MonatAkt,DatumAkt);
            setState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzeinspeisung.alt',nEinspeiseZaehlerAktuell);
            setState('PVAnlage.Stromzaehler.Zaehlerstaende.Netzbezug.alt',nBezugZaehlerAktuell);
            setState('PVAnlage.Stromzaehler.Zaehlerstaende.Solarproduktion.alt',PvZaehlerAktuell);
            // für Json aufbereiten
            
            let obj = {};
            // 6 Spalten
            obj.Datum = DatumAkt;
            
            obj.Einspeisung = nEinspeiseZaehlerNeu;
            
            obj.Netzbezug = nBezugZaehlerNeu;
            
            obj.Solarproduktion = PvZaehlerNeu;
            
            obj.Eigenverbrauch = EigenverbrauchNeu;
            
            obj.Autarkie = AutarkieNeu + ' %';
            
            let arr = [];
            
            if(existsState(idJson)) arr = JSON.parse(getState(idJson).val);
            
            arr.push(obj);
            
            if(arr.length > 12) arr.shift;
            
            if(existsState(idJson)) setState(idJson, JSON.stringify(arr), true);
            
            else createState(idJson, JSON.stringify(arr), {type: 'string'});
            });
            
            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @smartboart last edited by

              @smartboart sagte:

              Also so...

              Ja.

              smartboart 1 Reply Last reply Reply Quote 0
              • smartboart
                smartboart @paul53 last edited by

                @paul53
                super vielen lieben Dank...

                smartboart 1 Reply Last reply Reply Quote 0
                • smartboart
                  smartboart @smartboart last edited by smartboart

                  @ArnoD
                  hier das widget zum script ( matrial design Tabelle)

                  Unbenannt.JPG


                  [{"tpl":"tplVis-materialdesign-Table","data":{"oid":"javascript.1.PVAnlage.Stromzaehler.Zaehlerstaende.JsonTable","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"countCols":"8","tableLayout":"cardOutlined","showHeader":true,"headerTextSize":"small","showColumn0":true,"colType0":"text","textAlign0":"center","showColumn1":true,"colType1":"text","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":"center","showColumn4":true,"colType4":"text","textAlign4":"center","showColumn5":true,"colType5":"text","textAlign5":"center","showColumn6":true,"colType6":"text","textAlign6":"center","showColumn7":"true","colType7":"text","textAlign7":"center","showColumn8":true,"colType8":"text","textAlign8":"center","showColumn9":"true","colType9":"text","textAlign9":"center","showColumn10":"true","colType10":"text","textAlign10":"center","showColumn11":"true","colType11":"text","textAlign11":"center","showColumn12":"true","colType12":"text","textAlign12":"center","showColumn13":"true","colType13":"text","textAlign13":"center","showColumn14":"true","colType14":"text","textAlign14":"center","showColumn15":"true","colType15":"text","textAlign15":"center","showColumn16":"true","colType16":"text","textAlign16":"center","showColumn17":"true","colType17":"text","textAlign17":"center","headerRowHeight":"50","label0":"Ablese-<br>Datum","colTextColor0":"#9c9c9c","prefix0":"","colorHeaderRowText":"#9c9c9c","dividers":"#9c9c9c","colorBackground":"rgb(50,50,50)","colorHeaderRowBackground":"rgb(50,50,50)","columnWidth0":"","label1":"Einspeisung","label2":"Netzbezug","label3":"Solarproduktion","suffix3":"","suffix2":"","suffix1":"","label4":"Eigen-<br>Verbrauch","suffix4":"","label5":"Autarkie","suffix5":"","label6":"Netzeinspeise-<br>Zähler","suffix6":"","label7":"Netzbezugs-<br>Zähler","suffix7":"","label8":"PV Zähler","suffix8":"","label9":"Datum","suffix9":"","label10":"Dauer","rowHeight":"30","colorRowText":"#9c9c9c","borderColor":"transparent","colorRowBackground":"rgb(50,50,50)","dataJson":"","colNoWrap1":true,"colNoWrap0":true,"colNoWrap3":false,"showColumn18":"true","colType18":"text","textAlign18":"center","showColumn19":"true","colType19":"text","textAlign19":"center","showColumn20":"true","colType20":"text","textAlign20":"center","colNoWrap5":true,"colNoWrap4":false,"colNoWrap6":true,"colNoWrap7":true,"colNoWrap8":true,"colNoWrap9":true,"colNoWrap10":true,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","colTextColor2":"red","colTextColor10":"lightgreen","fixedHeader":true,"colTextColor3":"green","colTextColor1":"lightgreen","colTextColor4":"orange","colTextColor5":"yellow","colNoWrap2":true,"columnWidth6":"120","colTextColor6":"lightgreen","colTextColor7":"red","colTextColor8":"green","columnWidth7":"120","columnWidth3":"110","columnWidth4":"120"},"style":{"left":"0px","top":"1px","width":"942px","height":"430px","z-index":"1","background-color":"rgb(50,50,50)","overflow-x":"auto","overflow-y":"auto"},"widgetSet":"materialdesign"}]

                  EDIT:
                  Skript zuammen gekürzt nur noch die benötigten States enthalten.

                  // Hausstromverbrauch aktuell berechnen **************************************************************************
                  createState('PVAnlage.Stromzaehler.Zaehlerstaende.NetzbezugAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
                  createState('PVAnlage.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
                  createState('PVAnlage.Stromzaehler.Zaehlerstaende.SolarproduktionAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
                  
                  const idJson = 'PVAnlage.Stromzaehler.Zaehlerstaende.JsonTable';
                  
                  // Zählerstände Monatlich um 23:55 speichern für Finanzamt
                  
                  schedule("0 0 1 * *", function() {   
                  var nBezugZaehlerAktuell = Math.floor(getState('smartmeter.0.1-0:1_8_0__255.value').val);
                  var nEinspeiseZaehlerAktuell = Math.floor(getState('smartmeter.0.1-0:2_8_0__255.value').val);
                  var PvZaehlerAktuell=Math.floor(getState('modbus.0.holdingRegisters.12288_E3DC_Lieferung Summe'/*12288 E3dc Lieferung Summe*/).val);
                  var nBezugZaehlerAlt = getState('PVAnlage.Stromzaehler.Zaehlerstaende.NetzbezugAlt').val;
                  var nEinspeiseZaehlerAlt = getState('PVAnlage.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt').val;
                  var PvZaehlerAlt=getState('PVAnlage.Stromzaehler.Zaehlerstaende.SolarproduktionAlt').val;
                  var nBezugZaehlerNeu = nBezugZaehlerAktuell - nBezugZaehlerAlt;
                  var nEinspeiseZaehlerNeu = nEinspeiseZaehlerAktuell - nEinspeiseZaehlerAlt;
                  var PvZaehlerNeu = PvZaehlerAktuell - PvZaehlerAlt;
                  var EigenverbrauchNeu = PvZaehlerNeu - nEinspeiseZaehlerNeu;
                  var AutarkieNeu = EigenverbrauchNeu / ((nBezugZaehlerNeu+EigenverbrauchNeu)/100);
                  // Datum vom Vortag berechnen
                  var jetzt = new Date();
                  var Theute = jetzt.getDate();
                  var Tgestern = new Date();
                  Tgestern.setDate(Theute-1);
                  var DatumAkt=((Tgestern.getDate())+'.'+ (Tgestern.getMonth()+1) +'.'+ Tgestern.getFullYear());
                  var MonatAkt=(Tgestern.getMonth()+1);
                  setState('PVAnlage.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt',nEinspeiseZaehlerAktuell);
                  setState('PVAnlage.Stromzaehler.Zaehlerstaende.NetzbezugAlt',nBezugZaehlerAktuell);
                  setState('PVAnlage.Stromzaehler.Zaehlerstaende.SolarproduktionAlt',PvZaehlerAktuell);
                  // für Json aufbereiten
                  let obj = {};
                  // 9 Spalten
                  obj.Datum = DatumAkt;
                  obj.Netzeinspeisezähler = nEinspeiseZaehlerNeu + ' kWh';
                  obj.Netzbezugszähler = nBezugZaehlerNeu + ' kWh';
                  obj.PVzähler = PvZaehlerNeu + ' kWh';
                  obj.Einspeisung = nEinspeiseZaehlerNeu + ' kWh';
                  obj.Netzbezug = nBezugZaehlerNeu + ' kWh';
                  obj.Solarproduktion = PvZaehlerNeu + ' kWh';
                  obj.Eigenverbrauch = EigenverbrauchNeu + ' kWh';
                  obj.Autarkie = AutarkieNeu + ' %';
                  let arr = [];
                  if(existsState(idJson)) arr = JSON.parse(getState(idJson).val);
                  arr.push(obj);
                  if(arr.length > 12) arr.shift;
                  if(existsState(idJson)) setState(idJson, JSON.stringify(arr), true);
                  else createState(idJson, JSON.stringify(arr), {type: 'string'});
                  });
                  
                  smartboart paul53 2 Replies Last reply Reply Quote 0
                  • smartboart
                    smartboart @smartboart last edited by

                    im Prinzip braucht man die ganzen states garnicht mehr...
                    ob ein Export ins filesystem nötig ist , bin ich mir garnicht so sicher...Ein screenschot würde mir schon reichen fürs Finanzamt...

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @smartboart last edited by

                      @smartboart sagte:

                      Skript zuammen gekürzt

                      Die Masseinheiten sind falsch. Richtig: kWh

                      smartboart 1 Reply Last reply Reply Quote 0
                      • smartboart
                        smartboart @paul53 last edited by

                        @paul53 Danke für den Hinweis..habs geändert.

                        smartboart 1 Reply Last reply Reply Quote 0
                        • smartboart
                          smartboart @smartboart last edited by

                          Habe noch die 3 Spalten hinzu genommen...
                          hatte ich vergessen...

                          obj.Netzeinspeisezähler = nEinspeiseZaehlerNeu + ' kWh';
                          obj.Netzbezugszähler = nBezugZaehlerNeu + ' kWh';
                          obj.PVzähler = PvZaehlerNeu + ' kWh';

                          Skript oben aktualisiert...

                          smartboart 1 Reply Last reply Reply Quote 0
                          • smartboart
                            smartboart @smartboart last edited by

                            so ich habe mal den 1. Beitrag aktualisiert...
                            hier findet sich dann immer das aktuellste Skript..

                            ich habe das Skript von ArnoD mit Hilfe von paul53 weiter aufgebohrt und zusätzlich um die Kostenberechnung für die Privatentnahme erweitert. Ebenfalls 2 States hinzu um die Stromkosten und mittlerweile wechselhafte MWST über vis anzupassen.
                            Die widgets gibts noch obendrauf...
                            Wie das ganze aussieht... siehe im 1. Beitrag

                            A 1 Reply Last reply Reply Quote 0
                            • A
                              ArnoD @smartboart last edited by

                              @smartboart tolle Arbeit, sieht ja klasse aus.
                              Werde ich gleich mal bei mir testen.

                              Danke auch an paul53 🙂

                              1 Reply Last reply Reply Quote 0
                              • A
                                ArnoD last edited by ArnoD

                                @smartboart
                                Hier hast du noch Kopierfehler drin. richtig ist:

                                    
                                    obj.Netzeinspeisezähler = nBezugZaehlerAktuell + ' kWh';
                                    obj.Netzbezugszähler = nEinspeiseZaehlerAktuell + ' kWh';
                                    obj.PVzähler = PvZaehlerAktuell + ' kWh';
                                    
                                
                                smartboart 1 Reply Last reply Reply Quote 0
                                • smartboart
                                  smartboart @ArnoD last edited by

                                  @ArnoD sagte in Stromzählerscript PV Anlage Finanzamt in Json oder html:

                                  @smartboart
                                  Hier hast du noch Kopierfehler drin. richtig ist:

                                      
                                      obj.Netzeinspeisezähler = nBezugZaehlerAktuell + ' kWh';
                                      obj.Netzbezugszähler = nEinspeiseZaehlerAktuell + ' kWh';
                                      obj.PVzähler = PvZaehlerAktuell + ' kWh';
                                      
                                  

                                  Oh ja super....Gut aufgepasst....Danke sehr....
                                  ist mir nicht aufgefallen, weil beim 1. Monat hats ja gestimmt..

                                  Habs geändert...

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    ArnoD @smartboart last edited by ArnoD

                                    @smartboart
                                    Ich habe diese Zeile auch noch geänder, da bei dem % Wert keine Nachkommastellen benötigt werden und spart Platz in der Tabelle in VIS 🙂

                                    var AutarkieNeu = Math.round(EigenverbrauchNeu / ((nBezugZaehlerNeu+EigenverbrauchNeu)/100));
                                    
                                    smartboart 1 Reply Last reply Reply Quote 0
                                    • smartboart
                                      smartboart @ArnoD last edited by

                                      @ArnoD habs geändert

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        ArnoD last edited by

                                        @smartboart
                                        Habe mal eine Frage, wie berechnest du eigentlich den Strompreis ohne Grundpreis? oder hast du keinen Grundpreis

                                        1 Reply Last reply Reply Quote 0
                                        • A
                                          ArnoD last edited by

                                          Steuerlich richtig wäre doch folgende Berechnung:

                                          StromPreis =(NettoGrundpreis / (nBezugZaehlerNeu+EigenverbrauchNeu))+ NettoStrompreis
                                          Entnahme = Math.round((EigenverbrauchNeu*StromPreis)100)/100;
                                          UstAnmeldung = Math.round((Entnahme/100
                                          MWST)*100)/100;

                                          smartboart 1 Reply Last reply Reply Quote 0
                                          • A
                                            ArnoD last edited by ArnoD

                                            Habe es mal geändert falls du es übernehmen willst:

                                            // Hausstromverbrauch aktuell berechnen **************************************************************************
                                            createState('Test.Stromzaehler.Zaehlerstaende.NetzbezugAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
                                            createState('Test.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
                                            createState('Test.Stromzaehler.Zaehlerstaende.SolarproduktionAlt',    0, {name: 'lezter Zählerstand Monatsbeginn', type: 'number', unit: 'kWh' });
                                            createState('Test.Stromzaehler.Zaehlerstaende.Mehrwertsteuersatz',    16, {name: 'aktueller Mehrwertsteuersatz', type: 'number', unit: '%' });
                                            createState('Test.Stromzaehler.Zaehlerstaende.Nettostrompreis',    0.2638, {name: 'Strompreis netto pro kwh', type: 'number', unit: '€' });
                                            createState('Test.Stromzaehler.Zaehlerstaende.NettoGrundpreis',    8.5, {name: 'Grundpreis netto pro Monat', type: 'number', unit: '€' });
                                            
                                            const idJson = 'Test.Stromzaehler.Zaehlerstaende.JsonTable';
                                            
                                            var debug = true;
                                            //Math.round((ProduktionGesamt-EinspeisungGesamt)*100)/100,true,200 );
                                            // Zählerstände Monatlich um 23:55 speichern für Finanzamt
                                            schedule("0 0 1 * *", function() { 
                                                if (debug)log('Schedule für Monatliche Berechnung fürs Finanzamt aktiv');      
                                                var nBezugZaehlerAktuell = Math.floor(getState('hm-rpc.0.QEQ0337064.1.IEC_ENERGY_COUNTER').val);
                                                var nEinspeiseZaehlerAktuell = Math.floor(getState('hm-rpc.0.QEQ0337064.2.IEC_ENERGY_COUNTER').val);
                                                var PvZaehlerAktuell=Math.floor(getState('hm-rpc.0.QEQ0337042.1.IEC_ENERGY_COUNTER').val);
                                                var MWST = getState('Test.Stromzaehler.Zaehlerstaende.Mehrwertsteuersatz').val;
                                                var NettoStrompreis = getState('Test.Stromzaehler.Zaehlerstaende.Nettostrompreis').val;
                                                var NettoGrundpreis = getState('Test.Stromzaehler.Zaehlerstaende.NettoGrundpreis').val;
                                                var nBezugZaehlerAlt = getState('Test.Stromzaehler.Zaehlerstaende.NetzbezugAlt').val;
                                                var nEinspeiseZaehlerAlt = getState('Test.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt').val;
                                                var PvZaehlerAlt=getState('Test.Stromzaehler.Zaehlerstaende.SolarproduktionAlt').val;
                                                var nBezugZaehlerNeu = nBezugZaehlerAktuell - nBezugZaehlerAlt;
                                                var nEinspeiseZaehlerNeu = nEinspeiseZaehlerAktuell - nEinspeiseZaehlerAlt;
                                                var PvZaehlerNeu = PvZaehlerAktuell - PvZaehlerAlt;
                                                var EigenverbrauchNeu = PvZaehlerNeu - nEinspeiseZaehlerNeu;
                                                var AutarkieNeu = Math.round(EigenverbrauchNeu / ((nBezugZaehlerNeu+EigenverbrauchNeu)/100));
                                                var StromPreis = (NettoGrundpreis/(nBezugZaehlerNeu+EigenverbrauchNeu))+NettoStrompreis;
                                                var Entnahme = Math.round((EigenverbrauchNeu*StromPreis)*100)/100;
                                                var UstAnmeldung = Math.round((Entnahme/100*MWST)*100)/100;
                                            
                                                // Datum vom Vortag berechnen
                                                var jetzt = new Date();
                                                var Theute = jetzt.getDate();
                                                var Tgestern = new Date();
                                                Tgestern.setDate(Theute-1);
                                                var DatumAkt=((Tgestern.getDate())+'.'+ (Tgestern.getMonth()+1) +'.'+ Tgestern.getFullYear());
                                                var MonatAkt=(Tgestern.getMonth()+1);
                                                setState('Test.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt',nEinspeiseZaehlerAktuell);
                                                setState('Test.Stromzaehler.Zaehlerstaende.NetzbezugAlt',nBezugZaehlerAktuell);
                                                setState('Test.Stromzaehler.Zaehlerstaende.SolarproduktionAlt',PvZaehlerAktuell);
                                                if(debug)setTimeout(function(){log('Json aktualisiert ' + JSON.stringify(arr))},200);
                                            
                                                // für Json aufbereiten
                                                let obj = {};
                                            
                                                // 12 Spalten
                                                obj.Datum = DatumAkt;
                                                obj.Einspeisung = nEinspeiseZaehlerNeu + ' kWh';
                                                obj.Netzbezug = nBezugZaehlerNeu + ' kWh';
                                                obj.Solarproduktion = PvZaehlerNeu + ' kWh';
                                                obj.Eigenverbrauch = EigenverbrauchNeu + ' kWh';
                                                obj.Autarkie = AutarkieNeu + ' %';
                                                obj.Netzeinspeisezähler = nBezugZaehlerAktuell + ' kWh';
                                                obj.Netzbezugszähler = nEinspeiseZaehlerAktuell + ' kWh';
                                                obj.PVzähler = PvZaehlerAktuell + ' kWh';
                                                obj.Privatentnahme = Entnahme + ' €';
                                                obj.Ust = UstAnmeldung + ' €';
                                                obj.Mwst = MWST + ' %'
                                                obj.Strompreis = StromPreis + ' €/kWh';
                                                let arr = [];
                                                if(existsState(idJson)) arr = JSON.parse(getState(idJson).val);
                                                arr.push(obj);
                                                if(arr.length > 12) arr.shift;
                                                if(existsState(idJson)) setState(idJson, JSON.stringify(arr), true);
                                                else createState(idJson, JSON.stringify(arr), {type: 'string'});
                                            });
                                            
                                            smartboart 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            836
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            84
                                            6000
                                            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