Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter "smartmeter"

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Adapter "smartmeter"

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active last edited by

      @Matthias I:

      @Dieter: Sind bei dir denn auch die Unterstriche in der Ausgabe von /sbin/udevadm info –query=all --name=/dev/ttyUSB0 enthalten??? `

      Ja, in der Ausgabe sind bei mir auch Unterstriche.

      In der TXT Datei aber nicht !!.

      1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active last edited by

        Und, hats jetzt geklappt ?

        1 Reply Last reply Reply Quote 0
        • M
          Matthias I last edited by

          Lieber Dieter,

          lieber Wendy,

          ihr habt meinen Tag gerettet!!!

          VIIIIELEN DANK!!!!

          Wenn man die Unterstriche durch Leerzeichen ersetzt, dann funktioniert es!!!

          Als ihr sagtet ich solle den Namen nehmen, habe ich den so genommen, wie er in der Ausgabe eben Stand, also mit den Unterstrichen.

          Tut mir leid, ich kenne mich mit Linux leider noch nicht so gut aus (ich arbeite aber daran 😉 )

          Dann müsste ich die beiden Instanzen ja jetzt starten können da ich dort in den Einstellungen bei "Serielles Gerät Name:" bereits "/dev/Z1" und "/dev/Z1a" eingetragen habe.

          Macht das aus eurer Sicht jetzt schon Sinn oder würdet ihr warten bis der Pin des Versorgers eingetroffen ist (vorher werde ich ja nicht alle Daten auslesen können)?

          Gruß

          Matthias

          1 Reply Last reply Reply Quote 0
          • wendy2702
            wendy2702 last edited by

            Probiere doch jetzt schon was rauskommt. Kann ja nicht schaden und es tut ja auch nicht weh 😉

            Schön das es jetzt funktioniert.

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active last edited by

              genau, einfach starten.

              Habe bei mir auch keinen Pin gebraucht.

              mfg

              Dieter

              1 Reply Last reply Reply Quote 0
              • M
                Matthias I last edited by

                Ein kleines Problem scheint es dann doch noch zu geben…

                Smartmeter.0 funktioniert, es werden auch die Objekte in ioBroker angelegt 🙂

                Smartmeter.1 funktioniert nicht, ich bekomme aber auch nur 1 USB-Gerät angezeigt:

                pi@raspberrypi:~ $ ls -l /dev/Z*
                lrwxrwxrwx 1 root root 7 Jan 12 11:53 /dev/Z1 -> ttyUSB1
                
                

                Das Gerät Z1a wird nicht angezeigt 😞

                pi@raspberrypi:~ $ /dev/Z1a
                bash: /dev/Z1a: Datei oder Verzeichnis nicht gefunden
                
                

                Begebe mich dann nochmal auf Fehlersuche…

                1 Reply Last reply Reply Quote 0
                • P
                  passuff last edited by

                  Hallo zusammen,

                  ich bin gerade auf den thread gestoßen, da ich meinen Stromverbrauch loggen möchte.

                  Ich habe bereits versucht herauszufinden ob mein Stromzähler unterstützt wird, kann jedoch niemanden finden der diesen erwähnt hat:

                  Itron OpenWay 3 // HZ-AC-D4-A1: https://www1.itron.com/PublishedContent/OpenWay_kl.pdf

                  Info-Schnittstelle: Frontseitige IR-Schnittstelle, uni-direktional, 9600 Baud,

                  Protokoll SML V1.04

                  LMN-Schnittstelle: 2x RS485, 921,6 kBit/s, Protokoll SML unverschlüsselt und TLSverschlüsselt, HDLC, SML

                  Vom Protokoll her (SML) sollte es ja funktionieren. Jedoch weiß ich nicht welche Hardware ich zur Erfassung benötige und wie ich die ausgelesenen Messwerte in mein Netzwerk übertragen soll. Auch Github war für mich hier nicht hilfreich, da meines Erachtens bei den getesteten Adaptern abgesehen vom EFR SmartGridHub (150€!!) um Stromzähler und keine Adapter handelt. Bevor ich aber 150€ für die Erfassung des Stromzählerstandes ausgebe, kann ich auch wieder auf dei HM Lösung zurückgreifen. Welchen kostengünstigen Weg gibt es?

                  1 Reply Last reply Reply Quote 0
                  • M
                    Matthias I last edited by

                    Jetzt laufen beide Instanzen, es hatte sich nur ein Tippfehler in der .rules-Datei eingeschlichen.

                    Als nächstes gebe ich mich dann an das Script, habe ja gesehen, dass es hier auch schon Vorlagen gibt.

                    Da arbeite ich mich dann jetzt mal ein, ich muss das Skript ja entsprechend anpassen.

                    1 Reply Last reply Reply Quote 0
                    • wendy2702
                      wendy2702 last edited by

                      @passuff:

                      Welchen kostengünstigen Weg gibt es? `

                      Definiere Kostengünstig?

                      Keiner weiß ja was du bisher hast/nutzt.

                      Im einfachsten Fall reicht ein PI und ein USB Lesekopf.

                      1 Reply Last reply Reply Quote 0
                      • bahnuhr
                        bahnuhr Forum Testing Most Active last edited by

                        @wendy2702:

                        Im einfachsten Fall reicht ein PI und ein USB Lesekopf. `

                        Und dies funktioniert einwandfrei bei mir seit Monaten.

                        1 Reply Last reply Reply Quote 0
                        • P
                          passuff last edited by

                          @wendy2702:

                          Definiere Kostengünstig?

                          Keiner weiß ja was du bisher hast/nutzt. `

                          Kostengünstig bezieht sich auf die Alternativen zu Homematic (100€) oder EFR SmartGridHub (150€).

                          > Im einfachsten Fall reicht ein PI und ein USB Lesekopf.
                          Hört sich gut an. Noch mehr PIs will ich allerdings nicht. Ich habe im selben Raum einen Synology Server mit iobroker in der VM. Ich denke da bekomme ich den USB Lesekopf ebenfalls ans laufen. Kannst du mir Details zu Lesekopf und Software geben?

                          1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators last edited by

                            Software brauchst du keine - nur den smartmeter-Adapter.

                            Den Lesekopf gibt es bei "Volkszähler" für kleines Geld.

                            Ob du ihn allerdings an der Syno betreiben kannst hängt von deinen Fähigkeiten und der Art der Installation des ioBrokers dort ab.

                            Gruß

                            Rainer

                            1 Reply Last reply Reply Quote 0
                            • bahnuhr
                              bahnuhr Forum Testing Most Active last edited by

                              Ich hatte diesen gekauft.

                              https://www.ebay.de/itm/Stromzahler-Sma … SwceNZPu8c

                              Bei Volkszähler musst du Wochen auf eine Antwortmail warten 😉

                              mfg

                              Dieter

                              1 Reply Last reply Reply Quote 0
                              • P
                                passuff last edited by

                                Vielen Dank für die Tips& Links!

                                1 Reply Last reply Reply Quote 0
                                • F
                                  FriMatze last edited by

                                  Moin in die Runde,

                                  ich habe heute einen Adapter (SourceAnalytix) installiert, der Node 8.X benötigt. Also BackUp gemacht und nach der allgemeinen Prozedur Node geupdatet.

                                  node -v : v8.15.0

                                  nodejs -v: v8.15.0

                                  npm -v: 6.4.1

                                  Leider geht darauf der Smartmeter Adapter nicht mehr, was natürlich sehr ärgerlich ist.

                                  Was kann ich machen?

                                  Gruß

                                  1 Reply Last reply Reply Quote 0
                                  • apollon77
                                    apollon77 last edited by

                                    Hast Du damit vllt nodejs geupdatet? Dann musst Du mal mindestens "npm rebuild" im ioBroker Verzeichnis aufrufen weil die ganzen Binären Palete (wie zB Serialport) neu gebaut werden müssen.

                                    1 Reply Last reply Reply Quote 0
                                    • F
                                      FriMatze last edited by

                                      Ich habe den Adapter nach meinem Post vollständig gelöscht und neuinstalliert. Ergebnis: Läuft wieder :mrgreen:

                                      Sorry fürs stören. Weitermachen…

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        simpixo last edited by

                                        Servus

                                        Ich bin gerade dabei meinen Gaszähler in den Iobroker zu bekommen

                                        Gibt es eine Möglichkeit Impulse zu zählen!? Auf der USB Schnittstelle sehe ich das was ankommt, aber wie kann ich die zählen oder auswerten!

                                        Ist für den smartmeter was hinsichtlich dieser Funktionalität geplant!?

                                        Gruß

                                        Adrian

                                        Gesendet von iPhone mit Tapatalk Pro

                                        1 Reply Last reply Reply Quote 0
                                        • apollon77
                                          apollon77 last edited by

                                          Nein, der Smartmeter Adapter verarbeitet Smartmeter Datenformate … Impulszählen ist nicht drin und aktuell nicht geplant

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            Matthias I last edited by

                                            Hallo zusammen,

                                            ich habe das Skript von Dieter angepasst. Evtl. hat ja jemand Zeit mal "drüber zu schauen" um mir zu sagen ob die Syntax stimmt?!

                                            Zunächst Variablen anlegen:

                                            // Stromzähler -------------------------------------------------------------------------------------------------------------
                                            createState('javascript.0.Status.Stromzähler.Stunde.Bezogen_HH_in_Wh', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Stunde.Bezogen_WP_in_Wh', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Stunde.Bezogen_Zähler_HH_alt', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Stunde.Bezogen_Zähler_WP_alt', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Stunde.Eingespeist_in_Wh', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Stunde.Eingespeist_Zähler_alt', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Stunde.Produziert_in_Wh', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Stunde.Produziert_Zähler_alt', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Tag.Bezogen_HH_in_Wh', 0, {type: 'number',name: 'Tag',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Tag.Bezogen_Zähler_HH_alt', 0, {type: 'number',name: 'Tag',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Tag.Bezogen_WP_in_Wh', 0, {type: 'number',name: 'Tag',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Tag.Bezogen_Zähler_WP_alt', 0, {type: 'number',name: 'Tag',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Tag.Eingespeist_in_Wh', 0, {type: 'number',name: 'Tag',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Tag.Eingespeist_Zähler_alt', 0, {type: 'number',name: 'Tag',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Tag.Produziert_in_Wh', 0, {type: 'number',name: 'Tag',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Tag.Produziert_Zähler_alt', 0, {type: 'number',name: 'Tag',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Monat.Bezogen_HH_in_Wh', 0, {type: 'number',name: 'Monat',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Monat.Bezogen_Zähler_HH_alt', 0, {type: 'number',name: 'Monat',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Monat.Bezogen_WP_in_Wh', 0, {type: 'number',name: 'Monat',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Monat.Bezogen_Zähler_WP_alt', 0, {type: 'number',name: 'Monat',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Monat.Eingespeist_in_Wh', 0, {type: 'number',name: 'Monat',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Monat.Eingespeist_Zähler_alt', 0, {type: 'number',name: 'Monat',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Monat.Produziert_in_Wh', 0, {type: 'number',name: 'Monat',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Monat.Produziert_Zähler_alt', 0, {type: 'number',name: 'Monat',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Aktuell.Bezogen_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Aktuell.Eingespeist_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Aktuell.Produziert_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Bezogen_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Stand_Jahresanfang', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Stand_Jahresanfang', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Produziert_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Produziert_Stand_Jahresanfang', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Hochrechnung', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            createState('javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
                                            

                                            Anschließend das Skript zur Berechnung der Werte:

                                            (Hinweis: Der Smartmeter, der die Produktion der PV-Anlage an ioBroker übergibt, liefert die Werte in Wh)

                                            // Werte aus smartmeter auslesen und in Variablen schreiben
                                            
                                            var java = 'javascript.0.Status.Stromzähler';								// Die Variable java ersetzt einen Teil der Objektpfadangabe, sodass diese nicht immer komplett eingegeben werden muss
                                            var Stand_Z1a_180 = "smartmeter.1.1-0:1_8_0_255.value";						// Zähler Zia 1.8.0 (Bezug HH NT+HT, = Summe Z1a 1.8.1 + Z1a 1.8.2)
                                            var Stand_Z1a_181 = "smartmeter.1.1-0:1_8_1_255.value";         			// Zähler Z1a 1.8.1	(Bezug HH NT)
                                            var Stand_Z1a_182 = "smartmeter.1.1-0:1_8_2_255.value";						// Zähler Z1a 1.8.2	(Bezug HH HT)
                                            var Stand_Z1a_281 = "smartmeter.1.1-0:2_8_1_255.value";						// Zähler Z1a 2.8.1
                                            var Stand_Z1a_282 = "smartmeter.1.1-0:2_8_2_255.value";						// Zähler Z1a 2.8.2
                                            var Stand_Z1_180 = "smartmeter.0.1-0:1_8_0_255.value";						// Zähler Z1 1.8.0	(= Summer Z1 1.8.1 + Z1 1.8.2)
                                            var Stand_Z1_181 = "smartmeter.0.1-0:1_8_1_255.value";						// Zähler Z1 1.8.1
                                            var Stand_Z1_182 = "smartmeter.0.1-0:1_8_2_255.value";						// Zähler Z1 1.8.2
                                            var Stand_Z1_281 = "smartmeter.0.1-0:2_8_1_255.value";						// Zähler Z1 2.8.1
                                            var Stand_Z1_282 = "smartmeter.0.1-0:2_8_2_255.value";						// Zähler Z1 2.8.2
                                            var Stand_Z2_280 = "fronius.0.inverter.1.TOTAL_ENERGY.value";				// Zähler Z2 2.8.0	(Gesamterzeugung PV, Wert in Wh!)
                                            var Stand_eingespeist = "smartmeter.0.1-0:2_8_0_255.value";         		// Zähler Z1 2.8.0 	(Überschusseinspeisung = Summe Z1 2.8.1 + Z1 2.8.2)
                                            var Stand_produziert = "fronius.0.inverter.1.TOTAL_ENERGY.value";     	  	// Zähler Z2 2.8.0	(Gesamterzeugung PV, Wert in Wh!)
                                            var GesamtwirkleistungHHundWP = "smartmeter.0.1-0:16_7_0_255.value";      	// Zähler links Wirkleistung aktuell Haushalt + Wärmepumpe
                                            var GesamtwirkleistungHH = "smartmeter.1.1-0:16_7_0_255.value";				// Zähler links Wirkleistung aktuell Haushalt
                                            var Tag = "hm-rega.0.21649";
                                            var Monat = "hm-rega.0.21648";
                                            
                                            schedule("59 * * * *", function () {                        // jede Stunde Werte schreiben
                                                var akt_bezogen_HH = parseInt(getState(Stand_Z1a_180).val * 1000);    // dann in Wh
                                                var alt_bezogen_HH = parseInt(getState(java + '.Stunde.Bezogen_Zähler_HH_alt').val * 1000);
                                                setState(java + '.Stunde.Bezogen_HH_in_Wh', akt_bezogen_HH - alt_bezogen_HH);
                                                setState(java + '.Stunde.Bezogen_Zähler_HH_alt', akt_bezogen_HH / 1000);
                                            	var akt_bezogen_WP = parseInt((getState(Stand_Z1_180).val - getState(Stand_Z1a_180).val) * 1000);    // dann in Wh
                                                var alt_bezogen_WP = parseInt(getState(java + '.Stunde.Bezogen_Zähler_WP_alt').val * 1000);
                                                setState(java + '.Stunde.Bezogen_WP_in_Wh', akt_bezogen_WP - alt_bezogen_WP);
                                                setState(java + '.Stunde.Bezogen_Zähler_WP_alt', akt_bezogen_WP / 1000);
                                            	var akt_eingespeist = parseInt(getState(Stand_eingespeist).val * 1000);
                                                var alt_eingespeist = parseInt(getState(java + '.Stunde.Eingespeist_Zähler_alt').val * 1000);
                                                setState(java + '.Stunde.Eingespeist_in_Wh', akt_eingespeist - alt_eingespeist);
                                                setState(java + '.Stunde.Eingespeist_Zähler_alt', akt_eingespeist / 1000);
                                                var akt_prod = parseInt(getState(Stand_produziert).val);			// ohne *1000, da Wert in Wh!
                                                var alt_prod = parseInt(getState(java + '.Stunde.Produziert_Zähler_alt').val * 1000);
                                                setState(java + '.Stunde.Produziert_in_Wh', akt_prod - alt_prod);
                                                setState(java + '.Stunde.Produziert_Zähler_alt', akt_prod / 1000);
                                            });
                                            
                                            schedule("59 23 * * *", function () {                        // jeden Tag Werte schreiben
                                                var akt_bezogen_HH = parseInt(getState(Stand_Z1a_180).val * 1000);
                                                var alt_bezogen_HH = parseInt(getState(java + '.Tag.Bezogen_Zähler_HH_alt').val * 1000);
                                                setState(java + '.Tag.Bezogen_HH_in_Wh', akt_bezogen_HH - alt_bezogen_HH);
                                                setState(java + '.Tag.Bezogen_Zähler_HH_alt', akt_bezogen_HH / 1000);
                                                var akt_bezogen_WP = parseInt((getState(Stand_Z1_180).val - getState(Stand_Z1a_180).val) * 1000);
                                                var alt_bezogen_WP = parseInt(getState(java + '.Tag.Bezogen_Zähler_WP_alt').val * 1000);
                                                setState(java + '.Tag.Bezogen_WP_in_Wh', akt_bezogen_WP - alt_bezogen_WP);
                                                setState(java + '.Tag.Bezogen_Zähler_WP_alt', akt_bezogen_WP / 1000);	
                                                var akt_eingespeist = parseInt(getState(Stand_eingespeist).val * 1000);
                                                var alt_eingespeist = parseInt(getState(java + '.Tag.Eingespeist_Zähler_alt').val * 1000);
                                                setState(java + '.Tag.Eingespeist_in_Wh', akt_eingespeist - alt_eingespeist);
                                                setState(java + '.Tag.Eingespeist_Zähler_alt', akt_eingespeist / 1000);
                                                var akt_prod = parseInt(getState(Stand_produziert).val);		// ohne *1000, da Wert in Wh!
                                                var alt_prod = parseInt(getState(java + '.Tag.Produziert_Zähler_alt').val * 1000);
                                                setState(java + '.Tag.Produziert_in_Wh', akt_prod - alt_prod);
                                                setState(java + '.Tag.Produziert_Zähler_alt', akt_prod / 1000);
                                            });
                                            
                                            schedule("0 0 1 * *", function () {                        // jeden Monat Werte schreiben
                                                var akt_bezogen_HH = parseInt(getState(Stand_Z1a_180).val* 1000);
                                                var alt_bezogen_HH = parseInt(getState(java + '.Monat.Bezogen_Zähler_HH_alt').val * 1000);
                                                setState(java + '.Monat.Bezogen_HH_in_Wh', akt_bezogen_HH - alt_bezogen_HH);
                                                setState(java + '.Monat.Bezogen_Zähler_HH_alt', akt_bezogen_HH / 1000);
                                                var akt_bezogen_WP = parseInt((getState(Stand_Z1_180).val - getState(Stand_Z1a_180).val) * 1000);
                                                var alt_bezogen_WP = parseInt(getState(java + '.Monat.Bezogen_Zähler_WP_alt').val * 1000);
                                                setState(java + '.Monat.Bezogen_WP_in_Wh', akt_bezogen_WP - alt_bezogen_WP);
                                                setState(java + '.Monat.Bezogen_Zähler_WP_alt', akt_bezogen_WP / 1000);	
                                                var akt_eingespeist = parseInt(getState(Stand_eingespeist).val * 1000);
                                                var alt_eingespeist = parseInt(getState(java + '.Monat.Eingespeist_Zähler_alt').val * 1000);
                                                setState(java + '.Monat.Eingespeist_in_Wh', akt_eingespeist - alt_eingespeist);
                                                setState(java + '.Monat.Eingespeist_Zähler_alt', akt_eingespeist / 1000);
                                                var akt_prod = parseInt(getState(Stand_produziert).val);		// ohne *1000, da Wert in Wh!
                                                var alt_prod = parseInt(getState(java + '.Monat.Produziert_Zähler_alt').val * 1000);
                                                setState(java + '.Monat.Produziert_in_Wh', akt_prod - alt_prod);
                                                setState(java + '.Monat.Produziert_Zähler_alt', akt_prod / 1000);
                                            });
                                            
                                            // aktuelle Werte -----------------------------------------------------------------------------------------------------------------------------------------------
                                            on({id: Stand_Z1a_180, change: "ne"}, function(obj) {           // Wert hat sich geändert.
                                                setState('javascript.0.Status.Stromzähler.Aktuell.Bezogen_in_W', parseInt(obj.newState.val * 1000) - parseInt(obj.oldState.val * 1000));
                                                setState('javascript.0.Status.Stromzähler.Jahr.Bezogen_in_W', parseInt(obj.newState.val * 1000) - parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Stand_Jahresanfang').val * 1000));
                                            }); 
                                            on({id: Stand_eingespeist, change: "ne"}, function(obj) {       // Wert hat sich geändert.
                                                setState('javascript.0.Status.Stromzähler.Aktuell.Eingespeist_in_W', parseInt(obj.newState.val * 1000) - parseInt(obj.oldState.val * 1000));
                                                setState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_in_W', parseInt(obj.newState.val * 1000) - parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Stand_Jahresanfang').val * 1000));
                                            }); 
                                            on({id: Stand_produziert, change: "ne"}, function(obj) {        // Wert hat sich geändert.
                                                setState('javascript.0.Status.Stromzähler.Aktuell.Produziert_in_W', parseInt(obj.newState.val * 1000) - parseInt(obj.oldState.val * 1000));
                                                setState('javascript.0.Status.Stromzähler.Jahr.Produziert_in_W', parseInt(obj.newState.val * 1000) - parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Produziert_Stand_Jahresanfang').val * 1000));
                                            }); 
                                            
                                            // Hochrechnung auf Jahr -----------------------------------------------------------------------------------------------------------------------------------------
                                            schedule("*/5 * * * *", function () { 
                                                var Tage = getState(Tag).val + (getState(Monat).val-1) * 30;
                                                    setState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Hochrechnung', parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Bezogen_in_W').val / Tage * 365 / 100) / 10);
                                                    setState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung', parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_in_W').val / Tage * 365 / 100) / 10);
                                                    setState('javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung', parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Produziert_in_W').val / Tage * 365 / 100) / 10);    
                                            });
                                            
                                            // am 31.12\. um 23:59 jeden Jahres Werte setzen -----------------------------------------------------------------------------------------------------------------------------------------
                                            schedule("59 23 31 12 *", function () {                        // jeden Monat Werte schreiben
                                                setState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Stand_Jahresanfang', parseInt(getState(Stand_Z1a_180).val));
                                                setState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Stand_Jahresanfang', parseInt(getState(Stand_eingespeist).val));
                                                setState('javascript.0.Status.Stromzähler.Jahr.Produziert_Stand_Jahresanfang', parseInt(getState(Stand_produziert).val));
                                            });
                                            
                                            

                                            Gruß

                                            Matthias

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            281
                                            3634
                                            1681087
                                            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