NEWS
Stromzählerscript PV Anlage Finanzamt in Json oder html
-
@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'}); });
-
@ArnoD ja hast du richtig erkannt.. Im Moment habe ich noch einen Tarif ohne Grundpreis... Das wird bestimmt aber bei mir auch bald ein Thema,da ich mir nicht vorstellen kann, dass die mich in dem Tarif lassen werden.. Vermutlich nach vertragsablauf wird das akut..
Aber wenn du dafür ne Lösung gefunden hast.. Nehme ich die natürlich auch gleich mit..
Mit 0 € wird die Formel glaube ich nicht funktionieren...
Müsste das in vis konfigurierbar machen.. Mit und ohne Grundpreis.. Denke ein boolean zusätzlich mit ner if erledigt das im Handumdrehen..
Ahh Sollte auch ohne gehen if 0 tuts bestimmt auch...
super... -
Komme heute aber nicht mehr dazu... Vlt. In der Mittagspause morgen. Brennt ja nicht an und du hast es ja schon hier eingestellt.. Ist ja nur ein spezieller Fall für mich den ich hier noch abbilden möchte..
-
@ArnoD sagte in Stromzählerscript PV Anlage Finanzamt in Json oder html:
StromPreis =(NettoGrundpreis / (nBezugZaehlerNeu+EigenverbrauchNeu))+ NettoStrompreis
Im Beitrag hast es noch richtig...
im Script unten hast du + NettoGrundpreis....
Habe das Script oben angepasst... mit ner if Bedingung...
meinst du wird sollten der Tabelle nen Timeout / bisschen Zeit geben bis die Variablen alle Sicher berechnet wurden?
-
@smartboart sagte in Stromzählerscript PV Anlage Finanzamt in Json oder html:
@ArnoD sagte in Stromzählerscript PV Anlage Finanzamt in Json oder html:
StromPreis =(NettoGrundpreis / (nBezugZaehlerNeu+EigenverbrauchNeu))+ NettoStrompreis
Im Beitrag hast es noch richtig...
im Script unten hast du + NettoGrundpreis....
Habe das Script oben angepasst... mit ner if Bedingung...
meinst du wird sollten der Tabelle nen Timeout / bisschen Zeit geben bis die Variablen alle Sicher berechnet wurden?
Ja hast recht ist ein Kopierfehler, Danke.
Etwas Zeit schadet nie, haben es ja nicht eilig die Umsatzsteuer zu zahlen
Du hast mich aber mit dem aufzeichnen der Kosten noch auf eine Idee gebracht.
Würde gerne den Gewinn bzw. Einsparung in einer Spalte aufsummieren, ist einfach schön zu sehen wie die Summe steigt. -
@ArnoD ja gute Idee... Warum nicht gleich ne amotisierungseechnung mit rein packen? Nen konfigteil für Investitionskosten mit rein packen.
-
@smartboart Das wäre dann perfekt. Denke nur das es dann zu viele Daten sind die man manuell eingeben muss, aber wir können es ja mal versuchen.