Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Stromzählerscript PV Anlage Finanzamt in Json oder html

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Stromzählerscript PV Anlage Finanzamt in Json oder html

Geplant Angeheftet Gesperrt Verschoben JavaScript
84 Beiträge 9 Kommentatoren 10.1k Aufrufe 12 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • smartboartS smartboart

    @wendy2702
    Also als ich das script bearbeitet habe habe ich mit sekunden schedule getestet... Nach ein paar Einträgen kann man schon sagen das es klappt.
    Dann das script gestoppt und alle states gelöscht. Dann das script im monatlichen schedule neu gestartet.
    Ich arbeite mit redis und habe festgestellt, dass man hier ruihg etwas warten sollte nachdem man die states gelöscht hat...

    wendy2702W Online
    wendy2702W Online
    wendy2702
    schrieb am zuletzt editiert von
    #81

    @smartboart Ich habe es aktuell gestoppt. Warte jetzt bis morgen und starte es dann mit monatlichem Trigger.

    Danke für deine Hilfe.

    Bitte keine Fragen per PN, die gehören ins Forum!

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    1 Antwort Letzte Antwort
    0
    • smartboartS 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

      G Offline
      G Offline
      glitzi
      schrieb am zuletzt editiert von glitzi
      #82

      ich kann es nicht mehr löschen, meine Frage hat sich erledigt...

      1 Antwort Letzte Antwort
      0
      • wendy2702W Online
        wendy2702W Online
        wendy2702
        schrieb am zuletzt editiert von
        #83

        Leider ist das Thema bei mir etwas eingeschlafen.

        Hat jemand noch das aktuell funktionierende Script, ich kann das zuletzt laufende auf meinem Rechner leider nicht mehr finden.

        Bitte keine Fragen per PN, die gehören ins Forum!

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        A 1 Antwort Letzte Antwort
        0
        • wendy2702W wendy2702

          Leider ist das Thema bei mir etwas eingeschlafen.

          Hat jemand noch das aktuell funktionierende Script, ich kann das zuletzt laufende auf meinem Rechner leider nicht mehr finden.

          A Offline
          A Offline
          ArnoD
          schrieb am zuletzt editiert von
          #84

          @wendy2702
          siehe ersten Beitrag von smartboart

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          893

          Online

          32.5k

          Benutzer

          81.6k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe