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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    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 @ArnoD last edited by smartboart

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

      Was müsste da alles mit rein ?
      Kaufpreis Netto - Förderung - AfA - Monatliche Einsparung Strom nach Abzug USt + Versicherung und Wartungskosten Netto

      vlt. noch zusätzlich investitionen ( hatte z.B nen Tastkopf Smartmeter und ein Modbus Meßgerät gekauft ) evtl Anlagenerweiterung. Bei mir passen noch 2 panels drauf und ne Batterie findet auch noch platz...

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

        hi @smartboart

        ich habe dein Script natürlich auch am laufen. 😉
        Jetzt war endlich der Monatswechsel und ich war gespannt was passiert.
        Mir ist aber schon aufgefallen, dass er bei mir das Object für den Json-String nicht anlegt.
        Wie erwartet.....immer noch nichts. 😞
        NetbezugAlt, NetzeinspeisungAlt und SolarproduktionAlt wurden aber sauber gespeichert.

        Ich habe dann heute versucht das Script nochmal neu reinzubringen und bekommen jetzt einige Fehler im Log.
        anbei mein Script:

        // 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' });
        createState('PVAnlage.Stromzaehler.Zaehlerstaende.Mehrwertsteuersatz',    16, {name: 'aktueller Mehrwertsteuersatz', type: 'number', unit: '%' });
        createState('PVAnlage.Stromzaehler.Zaehlerstaende.Nettostrompreis',    0.2638, {name: 'Strompreis netto pro kwh', type: 'number', unit: '€' });
        createState('PVAnlage.Stromzaehler.Zaehlerstaende.NettoGrundpreis',    10, {name: 'Grundpreis netto pro Monat', type: 'number', unit: '€' });
          
         
        const idJson = 'PVAnlage.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("* * * * *", function() { 
         
            if (debug)log('Schedule Monatliche Berechnung fürs Finanzamt aktiv');      
         	var nBezugZaehlerAktuell = Math.floor(getState('sonoff.0.IR-Lesekopf.STROM_Bezug').val);
         	var nEinspeiseZaehlerAktuell = Math.floor(getState('sonoff.0.IR-Lesekopf.STROM_Einspeisung').val);
         	var PvZaehlerAktuell=Math.floor(getState('sourceanalytix.0.modbus__0__holdingRegisters__40068_PV_Leistung.Meter_Readings.Current_Reading'/*12288 E3dc Lieferung Summe*/).val);;
            var MWST = getState('PVAnlage.Stromzaehler.Zaehlerstaende.Mehrwertsteuersatz').val;
            var NettoStrompreis = getState('PVAnlage.Stromzaehler.Zaehlerstaende.Nettostrompreis').val;
            var NettoGrundpreis = getState('PVAnlage.Stromzaehler.Zaehlerstaende.NettoGrundpreis').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 = 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('PVAnlage.Stromzaehler.Zaehlerstaende.NetzeinspeisungAlt',nEinspeiseZaehlerAktuell);
            setState('PVAnlage.Stromzaehler.Zaehlerstaende.NetzbezugAlt',nBezugZaehlerAktuell);
            setState('PVAnlage.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.StrompreisGesamt = StromPreis + ' €/kWh';
            obj.Strompreis = NettoStromPreis + ' €/kWh';
            obj.Grundgebüren = NettoGrundpreis + ' €/Monat'
         
            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'});
            
            },2000);
         
        });
        

        Und hier noch die Fehler im Log von Heute:

        javascript.0	2020-09-01 09:39:02.204	error	(591) at processTimers (internal/timers.js:492:7)
        javascript.0	2020-09-01 09:39:02.204	error	(591) at listOnTimeout (internal/timers.js:551:17)
        javascript.0	2020-09-01 09:39:02.204	error	(591) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2001:34)
        javascript.0	2020-09-01 09:39:02.204	error	(591) at Object.<anonymous> (script.js.VIS-Script.PV-Stromzaehler:63:78)
        javascript.0	2020-09-01 09:39:02.203	error	(591) Error in callback: ReferenceError: Cannot access 'arr' before initialization
        javascript.0	2020-09-01 09:39:02.004	error	(591) at processTimers (internal/timers.js:492:7)
        javascript.0	2020-09-01 09:39:02.004	error	(591) at listOnTimeout (internal/timers.js:551:17)
        javascript.0	2020-09-01 09:39:02.004	error	(591) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2001:34)
        javascript.0	2020-09-01 09:39:02.004	error	(591) at Object.<anonymous> (script.js.VIS-Script.PV-Stromzaehler:86:22)
        javascript.0	2020-09-01 09:39:02.003	error	(591) Error in callback: ReferenceError: NettoStromPreis is not defined
        
        javascript.0	2020-09-01 09:40:02.235	error	(591) at processTimers (internal/timers.js:492:7)
        javascript.0	2020-09-01 09:40:02.235	error	(591) at listOnTimeout (internal/timers.js:551:17)
        javascript.0	2020-09-01 09:40:02.235	error	(591) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2001:34)
        javascript.0	2020-09-01 09:40:02.235	error	(591) at Object.<anonymous> (script.js.VIS-Script.PV-Stromzaehler:63:78)
        javascript.0	2020-09-01 09:40:02.234	error	(591) Error in callback: ReferenceError: Cannot access 'arr' before initialization
        

        Irgendeine Idee wo ich ansetzen kann?
        Danke schon mal 😉

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

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

          NettoStrompreis

          ja...scheint ein Schreibfehler zu sein...
          NettoStromPreis und NettoStrompreis

          lass das script einfach mal mit minütlichem Trigger laufen, dann kannst es kontrollieren ob es macht was es soll.
          der json string wird erst angelegt wenn er zum 1. mal gefüllt wird...das hat aber bei dir zu Problemen geführt weil der Schreibfehler das verhinderte.
          Den json string kannst dann bearbeiten um deinen Eintrag für letzten Monat zu haben...

          hab den Rechtschreibfehler oben korrigiert...

          Dutchman A 2 Replies Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators @smartboart last edited by Dutchman

            Hey @smartboart, sehr interessant ich habe mal einen reminder fuer mich gemacht ob man es eventueel in SA integrieren könnten da einige Elementen hiervon dort bereits enthalten sind.

            https://github.com/iobroker-community-adapters/ioBroker.sourceanalytix/issues/185

            Cheers,

            Dutch

            DutchmanNL created this issue in iobroker-community-adapters/ioBroker.sourceanalytix

            open PV Anlage Finanzamt in Json oder html #185

            1 Reply Last reply Reply Quote 2
            • A
              Abyss @smartboart last edited by

              @smartboart

              danke dir. Machmal is es so einfach. 😉
              Jetzt scheint es zu laufen und hat mir auch den Json angelegt.

              Danke.

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

                @smartboart

                kleine Anmerkung noch von meiner Seite.
                In Zeile 70 in deinem Script fehlen die Klammern nach dem arr.shift
                Dadurch funktioniert die Begrenzung der Arrayeinträge nicht.

                if(arr.length > 15) arr.shift();
                
                smartboart 1 Reply Last reply Reply Quote 0
                • smartboart
                  smartboart @Abyss last edited by smartboart

                  @Abyss habs oben angepasst..
                  und auf 12 monate geändert.
                  Ich habe es bei mir aber raus genommen. lasse es über die gesamte laufzeit laufen..

                  1 Reply Last reply Reply Quote 0
                  • L
                    lstorm last edited by

                    Hallo,

                    ich bin auch sehr interessiert an dem Script.
                    Allerdings habe ich Probleme das Wigdet zu importieren. Was benötige ich noch um die Material-Design-Tabelle anzuzeigen?
                    Gibt es einen Adapter? Habe keinen gefunden. Oder muss ich Dateien von Material-Design von GitHub installieren?

                    Ein Kurzer Hinweis wäre super. Velen Dank!

                    Gruß Lars

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

                      @lstorm nein nichts besonderes....nur den Adapter material design widgets..

                      1 Reply Last reply Reply Quote 0
                      • L
                        lstorm last edited by

                        @smartboart Danke, hab es eben auch gefunden. Hatte mein Repo nicht auf latest stehen, deswegen war der Adapter nicht dabei.
                        https://www.smarthome-tricks.de/software-iobroker/vis-material-design-widgets-teil-1-installation-der-adapter/

                        1 Reply Last reply Reply Quote 0
                        • L
                          lstorm last edited by

                          Ich habe noch ein Problem mit dem Script. Die Json Tabelle wird nicht automatisch angelegt. Wenn ich sie von hand anlege kann er die Daten nicht pushen.

                          Bekomme immer den Fehler:
                          20:25:02.002 error javascript.0 (1012) at Object.<anonymous> (script.js.common.Photovoltaik.Finanzamt:79:13)

                          In Zeile 79 steht: arr.push(obj);

                          Bestimmt nur eine Kelinigkeit, aber ich stehe momentan auf dem Schlauch...

                          Schon mal vielen Dank.

                          Gruß Lars

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

                            @lstorm das script läuft sofort los.. Hast bestimmt was falsch kopiert...
                            Lösche nochmal den json string in den objekten , der wird von selbst angelegt.
                            Kontrolliere auf Kopier Fehler...

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

                              @lstorm um zu testen ob es klappt ändere den schedule einfach mal auf sekunden...
                              ein * mehr

                              schedule("* * * * * *", function() { 
                              

                              dann legt das script sofort los....dann zeige mal den log wenn es immer noch nicht klappt.

                              1 Reply Last reply Reply Quote 0
                              • L
                                lstorm last edited by

                                @smartboart Vielen Dank, nun hat es geklappt.

                                Den Scheduler hatte ich schon geändert. Habe auch mein Script mit den Änderungen der Devices mit dem originalscript hier mit Notepa++ Compare verglichen, war bis auf meine Änderungen gleich.

                                Hab es dann trozdem nochmal gelöscht, neu von hier kopiert, meine Änderungen gemacht und nun läuft es. Manchmal kann man es einfach nicht nachvollziehen was ihm nicht passt...

                                1 Reply Last reply Reply Quote 0
                                • L
                                  lstorm last edited by

                                  Hallo zusammen,

                                  ich glaub mir ist ein Fehler aufgefallen:

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

                                  Denke die sind vertauscht.

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

                                    @lstorm
                                    ja ist garnicht so einfach den 1. Beitrag aktuell zu halten bzw. zu aktualisieren...
                                    Ist halt kein Editor...

                                    Ich habe das ganze Script jetzt aus meinem laufenden System komplett neu oben rein kopiert..

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

                                      Hallo,
                                      ich habe das Script erweitert ... Es werden nun alle Daten zusätzlich in eine json Datei im filesystem abgelegt.

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

                                        Habe noch einen kleinen Fehler behoben..Datei wird nun immer überschrieben..Somit ist der Inhalt der gleiche wie im json state..

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

                                          @smartboart
                                          Jetzt muss ich dich hier auch nochmal belästigen. 😉

                                          Du verwendest in deinem Script einen Wert "modbus.0.holdingRegisters.12288_E3DC_Lieferung Summe" für PVZählerAktuell.
                                          Ist das ein Wert den man direkt per Modbus vom E3DC abfragen kann, oder generierst du dir den irgendwo selbst?
                                          Ich habe in meine alten Script hier einen Datenpunkt von sourceanalytix hinterlegt......aber wenn es da direkt was von E3DC gäbe könnt ich mir den ja sparen.

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

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

                                            @smartboart
                                            Jetzt muss ich dich hier auch nochmal belästigen. 😉

                                            Du verwendest in deinem Script einen Wert "modbus.0.holdingRegisters.12288_E3DC_Lieferung Summe" für PVZählerAktuell.
                                            Ist das ein Wert den man direkt per Modbus vom E3DC abfragen kann, oder generierst du dir den irgendwo selbst?
                                            Ich habe in meine alten Script hier einen Datenpunkt von sourceanalytix hinterlegt......aber wenn es da direkt was von E3DC gäbe könnt ich mir den ja sparen.

                                            Weder noch diese Wert kommt von einem Erzeugungszähler welchen ich im E3DC Schrank nachgerüstet habe. Diesen lese ich über Modbus RTU aus. Hier läuft eine weitere Modbus Instanz zusätzlich zu der für E3DC auf meinem System...

                                            A 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            725
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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