NEWS
Stromzählerscript PV Anlage Finanzamt in Json oder html
-
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
-
@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'});
-
@paul53 Danke....werde mich bei nächster Gelegenheit mal daran versuchen...
-
@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
super vielen lieben Dank... -
@ArnoD
hier das widget zum script ( matrial design Tabelle)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'}); });
-
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... -
-
@paul53 Danke für den Hinweis..habs geändert.
-
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...
-
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 -
@smartboart tolle Arbeit, sieht ja klasse aus.
Werde ich gleich mal bei mir testen.Danke auch an paul53
-
@smartboart
Hier hast du noch Kopierfehler drin. richtig ist:obj.Netzeinspeisezähler = nBezugZaehlerAktuell + ' kWh'; obj.Netzbezugszähler = nEinspeiseZaehlerAktuell + ' kWh'; obj.PVzähler = PvZaehlerAktuell + ' kWh';
-
@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...
-
@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 VISvar AutarkieNeu = Math.round(EigenverbrauchNeu / ((nBezugZaehlerNeu+EigenverbrauchNeu)/100));
-
@ArnoD habs geändert
-
@smartboart
Habe mal eine Frage, wie berechnest du eigentlich den Strompreis ohne Grundpreis? oder hast du keinen Grundpreis -
Steuerlich richtig wäre doch folgende Berechnung:
StromPreis =(NettoGrundpreis / (nBezugZaehlerNeu+EigenverbrauchNeu))+ NettoStrompreis
Entnahme = Math.round((EigenverbrauchNeu*StromPreis)100)/100;
UstAnmeldung = Math.round((Entnahme/100MWST)*100)/100; -
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'}); });