Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. [Projekt] ioBroker Solarlog Adapter

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Projekt] ioBroker Solarlog Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      schmuh last edited by

      Hallo,

      tolle Arbeit! Einen kleinen Wunsch oder Featurerequest hätte ich noch. Wäre es möglich bei der Eingabe des Hosts/IP den Port frei zu wählen/anzugeben? Der ist anscheinend fest auf 80 gebunden.

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

        Hallo Werner

        Korrektur: Du kannst es versuchen, gemäss doku sollte der Port aber als separate Option spezifiziert werden. Merke mir das Anliegen für den nächsten Release.

        Kannst du bitte einmal versuchen den Port (den gewünschten, von dem du weisst, dass er funktioniert) als Teil det IP, z.B. 192.168.0.100:XXX zu spezifizieren. Vom Adapter her sollte das funktionieren.

        Gruss

        Marcel

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

          Hallo Marcel,

          leider funktioniert das nicht anbei ein Auszug aus dem Log:

          ERROR ReqDataStandard: getaddrinfo ENOTFOUND 134.19.XX.XX:5000 134.19.XX.XX:5000:80

          Es wird immer der Port 80 nochmals hinten angehangen. Der Port ist definitiv offen!

          Besten Gruß

          Werner

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

            Hallo Werner

            Ich habe die Port - Wahlmöglichkeit einmal in Code umgesetzt. Die Version 0.1.0 steht auf Github für dich zur Verfügung. Kannst du es von da einmal bei dir im ioBroker installieren. Bei mir funktioniert es, egal ob ich Port 80 eintrage oder nicht.

            Danke und Gruss

            Marcel

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

              Hallo Marcel,

              ich bekomme schon mal einen "connect" hin und der Adapter ist grün und es werden die DP angelegt.! Leider keine Werte. Ich hänge mal das Debug Log an:

              ! solarlog.0 2019-01-18 11:21:32.621 warn ERROR ReqDataStandard: connect EHOSTUNREACH 134.19.xx.xx:80
              ! solarlog.0 2019-01-18 11:21:32.581 debug Data to request body: {"801":{"170":null}}
              ! solarlog.0 2019-01-18 11:21:17.598 warn ERROR ReqDataStandard: connect EHOSTUNREACH 134.19.xx.xx:80
              ! solarlog.0 2019-01-18 11:21:17.565 debug Data to request body: {"801":{"170":null}}
              ! solarlog.0 2019-01-18 11:21:02.606 warn ERROR ReqDataStandard: connect EHOSTUNREACH 134.19.xx.xx:80
              ! solarlog.0 2019-01-18 11:21:02.572 debug Data to request body: {"801":{"170":null}}
              ! solarlog.0 2019-01-18 11:20:47.583 warn ERROR ReqDataStandard: connect EHOSTUNREACH 134.19.xx.xx:80
              ! solarlog.0 2019-01-18 11:20:47.549 debug Data to request body: {"801":{"170":null}}
              ! solarlog.0 2019-01-18 11:20:47.548 debug WR nicht Importieren
              ! solarlog.0 2019-01-18 11:20:47.548 debug uzimp: false
              ! solarlog.0 2019-01-18 11:20:47.548 debug Data: "{"609":null}"
              ! solarlog.0 2019-01-18 11:20:47.548 debug Options: {"host":"134.19.xx.xx","port":"5000","path":"/getjp","method":"POST","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57
              ! solarlog.0 2019-01-18 11:20:47.548 debug [START] Started Adapter with: 134.19.xx.xx
              ! solarlog.0 2019-01-18 11:20:47.548 debug [INFO] Configured polling interval: 15000
              ! solarlog.0 2019-01-18 11:20:47.548 debug uzimp: false
              ! solarlog.0 2019-01-18 11:20:47.548 debug InvImp: false
              ! solarlog.0 2019-01-18 11:20:47.548 info [START] Starting solarlog adapter
              ! solarlog.0 2019-01-18 11:20:47.547 info starting. Version 0.1.0 in /opt/iobroker/node_modules/iobroker.solarlog, node: v8.15.0
              ! solarlog.0 2019-01-18 11:20:47.400 debug statesDB connected
              ! solarlog.0 2019-01-18 11:20:47.387 debug objectDB connected

              Danke für deine Mühe.

              Besten Gruß

              Werner

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

                Hallo Werner

                Danke fürs testen! Konnte eine wahrscheinliche Fehlerquelle schon mal eliminieren. Jetzt sollte es klappen - was man ja aber eigentlich immer denkt. Kannst du den Adapter nochmals neu von Github installieren bitte.

                Lieber Gruss und danke.

                Marcel

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

                  Hallo Marcel,

                  großes Lob, Klasse! Es funktioniert, vielen Dank.

                  Besten Gruß und ein schönes Wochenende

                  Werner

                  1 Reply Last reply Reply Quote 0
                  • H
                    hmanfred last edited by

                    Ich habe einen SolarLog 400 verbunden:
                    1599_zwischenablage01.jpg

                    Der Datenpunkt info.connection ist true. info.numinv zeigt -1. Alle anderen Datenpunkte bleiben leer.

                    Debug-Log sieht so aus:

                    ! ````
                    2019-01-20 14:42:51.093 - debug: solarlog.0 objectDB connected
                    2019-01-20 14:42:51.143 - debug: solarlog.0 statesDB connected
                    2019-01-20 14:42:51.327 - info: solarlog.0 starting. Version 0.1.0 in /opt/iobroker/node_modules/iobroker.solarlog, node: v8.12.0
                    2019-01-20 14:42:51.331 - info: solarlog.0 [START] Starting solarlog adapter
                    2019-01-20 14:42:51.333 - debug: solarlog.0 InvImp: false
                    2019-01-20 14:42:51.333 - debug: solarlog.0 uzimp: false
                    2019-01-20 14:42:51.334 - debug: solarlog.0 [INFO] Configured polling interval: 300000
                    2019-01-20 14:42:51.334 - debug: solarlog.0 [START] Started Adapter with: 192.168.1.31
                    2019-01-20 14:42:51.334 - debug: solarlog.0 Options: {"host":"192.168.1.31","port":"80","path":"/getjp","method":"POST","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36","Content-Type":"application/json","Accept":"applciation/json","Content-Length":12}}
                    2019-01-20 14:42:51.334 - debug: solarlog.0 Data: "{"609":null}"
                    2019-01-20 14:42:51.334 - debug: solarlog.0 uzimp: false
                    2019-01-20 14:42:51.334 - debug: solarlog.0 WR nicht Importieren
                    2019-01-20 14:42:51.337 - debug: solarlog.0 Data to request body: {"801":{"170":null}}
                    2019-01-20 14:42:51.360 - debug: solarlog.0 http Status: 405
                    2019-01-20 14:42:51.361 - debug: solarlog.0 HEADERS: {}
                    2019-01-20 14:42:51.367 - debug: solarlog.0 no more date in response
                    2019-01-20 14:42:51.380 - warn: solarlog.0 JSON-parse-Fehler DataStandard: Unexpected token E in JSON at position 0
                    2019-01-20 14:42:51.381 - debug: solarlog.0 InvImp= false
                    2019-01-20 14:42:53.465 - debug: solarlog.0 system.adapter.admin.0: logging true
                    2019-01-20 14:43:00.003 - info: javascript.0 script.js.common.Stoerungen.Fehler_kritisch_test: hm-rpc.2.info.connection: true

                    
                    Wir der SolarLog 400 nicht unterstützt oder mache ich was falsch?
                    1 Reply Last reply Reply Quote 0
                    • F
                      forelleblau last edited by

                      Hallo

                      Offensichtlich kommt die Verbindung zum Solarlog zustande, dieser ist aber nicht bereit, die angeforderte Antwort zu schicken.

                      Ich bin weder mit dem 400e noch mit der genannten Firmware vertraut, hab auch kein Handbuch dazu googeln können.

                      Bedingung für das Funktionieren des Adapters wären solarlogseitig:

                      • das Vorhandensein der JSON-Schnittstelle wie sie in den aktuellen Handbüchern beschrieben ist

                      • dass die Schnittstelle freigegeben ist (muss im Konfigurationsmenu eingestellt werden)

                      • Wenn du noch den Unterzähler-Import nutzen möchtest (was du gemäss Log im Moment noch nicht aktiviert hast) müsstest du auch das Benutzerpasswort deaktivieren.

                      Das einzige was ich dir von hier aus raten kann, ist die obigen Punkte zu prüfen und mit allenfalls in der Konfiguration deines Solarlogs einzustellenden Berechtigungen zu "spielen", diese also mal zu deaktivieren.

                      Herzliche Grüsse

                      Marcel

                      1 Reply Last reply Reply Quote 0
                      • H
                        hmanfred last edited by

                        Es sieht wohl so aus, dass der SolarLog 400 keine JSON-Schnittstelle hat. Zumindest ist im Datenblatt und im Handbuch nichts davon zu finden.

                        Zugriff gibt es offensichtlich von außen nur über das Webinterface oder nach außen über einen zyklischen FTP-Export der aktuellen Daten.

                        Schade. 😢

                        1 Reply Last reply Reply Quote 0
                        • J
                          JackWolfskind last edited by

                          Noch nen kleinen Fehler gefunden:

                          Wenn der Wechselrichter einen Fehler zeigt (Schnee), entscheidet der Adapter das dieser und alle weiteren Unterverbraucher wohl nicht da sind und ignoriert sie bis auf weiteres 😞

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

                            Herzlichen Dank für den Hinweis, JackWolfskind.

                            Ich hab im solarlogschen JSON - Dschungel gewühlt und nun hoffentlich einen zuverlässigeren Geräteindikator gefunden.

                            Falls du lieber Updates installierst als Schnee von deiner PV-Anlage wischst, steht die neue Version 0.1.2 mit verbesserter Geräteerkennung - hoffentlich schneesicher - auf Github und npm ab sofort zur Verfügung, schon bald wohl auch direkt im ioBroker.

                            Viel Spass beim testen, hoffentlich funktionierts bei dir auch.

                            Herzliche Grüsse

                            forelleblau

                            1 Reply Last reply Reply Quote 0
                            • J
                              JackWolfskind last edited by

                              Vielen Dank für deinen Einsatz!

                              Ich warte dann mal ob es nochmal schneit 😉

                              1 Reply Last reply Reply Quote 0
                              • H
                                hmanfred last edited by

                                Ich habe meinen alten Solarlog 400 nun gegen einen 300er getauscht. Der Adapter funktioniert prime - danke für die Arbeit! 🙂

                                Es gibt jedoch einige Datenpunkte, die ich vermisse - vielleicht gibt sie die JSON Schnittstelle ja auch gar nicht her (Priorität in angegebener Reihenfolge):

                                • Sollwerte Tag/Monat/Jahr
                                • Erreichter aktueller Prozentwert vom jeweiligen Soll
                                • historische Werte, wobei die dann nicht die Tageswerte beinhalten müssten.

                                Was mein alter 400er noch angezeigt hat, ich aber im 300er gar nicht finde: Prognose in kWh und Prozent bis Ende des Zeitabschnittes (Tag / Monat / Jahr).

                                Danke und Gruß
                                Manfred

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

                                  Hallo hmanfred
                                  Danke für die Rückmeldung, es freut mich wenn der Adapter auch bei dir funktioniert.
                                  Die Sollwerte habe ich bisher noch nicht ausgelesen, da ich sie aber angezeigt erhalte (SL 1200), sollte ich sie eigentlich auch finden können. Werde mal noch etwas rumwühlen. Die Tages/Monats/Jahreswerte sind auch da.
                                  Die historischen Werte sind wohl greifbar, mir ist aber nicht ganz klar, wie man das darstellen könnte. So etwas wie "die letzten 12 Monate" oder "die letzten 3 Jahre" wär wohl möglich. Oder hast du eine konkrete Vorstellung?

                                  Lieber Gruss
                                  forelleblau

                                  1 Reply Last reply Reply Quote 1
                                  • H
                                    hmanfred last edited by

                                    Hallo forelleblau,

                                    danke für die Rückmeldung. Freut mich, dass alle Werte prinzipiell verfügbar sind. Wäre schon, wenn wenigstens die Sollwerte als Datenpunkt eingebaut würden.

                                    Was die historischen Werte betrifft, wäre vielleicht eine solche Struktur denkbar:

                                    HISTORICAL
                                    2019
                                    year
                                    jan
                                    feb
                                    mar
                                    apr
                                    ...
                                    2018
                                    year
                                    jan
                                    feb
                                    ...

                                    HISTORICAL und die Jahreszahlen wären dann Ordner, die klein geschriebenen Begriffe Datenpunkte.
                                    Ich bin jetzt leider nicht Programmiercrack und kenne auch die Datenstruktur nicht, die über die JSON Schnittstelle rüberkommt. Aber die Benennungen könnte man ja evtl. aus den dort enthaltenen Bezeichnungen extrahieren.
                                    Kann ich das bei mir irgendwie mit einfachen Mitteln auslesen?

                                    Gruß
                                    Manfred

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

                                      Hallo hmanfred
                                      Hab paar Sachen gefunden:
                                      Sollwerte: Was ich abrufen kann, sind die Vorgabewerte aus der Prognose-Konfiguration. Also Anlagegrösse, Jahressoll (kWh/kWp) und die Prozentwerte für die Aufteilung auf die Monate. Daraus können dann die Sollwerte errechnet werden. Also, die Grundlagen sind da, mir ist einfach noch nicht grad augenfällig klar, wie ich das programmieren soll. Musst wohl etwas Geduld haben.

                                      Jahrestotal pro Zähler : Diese Werte kann ich auch abrufen, da ist auch die Umsetzung klar.

                                      Monatstotal: Da kann ich zwar ganz viel abrufen, aber ich werde aus der Zusammenstellung des JSON-Objekts nicht schlau. Da sind x-Mal die selben Monats-Total-Werte drin:
                                      MonatsdatenSolarlog.txt
                                      Findest du da die Logik? Ich müsste wissen, welches, der 254 Elemente ich dann auslesen sollte.
                                      Ich kann dir sonst ein js-script zur Verfügung stellen, dass dir diese Werte ebenfalls ausliest und in das ioBroker logfile schreibt.
                                      Interessiert?
                                      Herzliche Grüsse forelleblau

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

                                        Guten Abend
                                        Was die Jahressummen pro Zähler betrifft wäre jetzt auf github/npm eine Version 0.1.5 verfügbar die Historic.Jahr.yieldyear.Zählernahme - Objekte anlegt und mit Werten befüllt, bei mir hat's bis ins Installationsjahr der Anlage zurück funktioniert.
                                        https://github.com/forelleblau/ioBroker.solarlog

                                        Da die Abfrage beim solarlog relativ lange dauert und die Werte ja nicht jeden Tag ändern (ausser das laufende Jahr) werden die Werte im Moment nur beim Start des Adapters abgefragt. Fürs aktualisieren als Adapter/Instanz neu starten.

                                        War sowas gefragt?

                                        Gruss forelleblau

                                        1 Reply Last reply Reply Quote 0
                                        • H
                                          hmanfred last edited by

                                          Hallo forelleblau,

                                          hab gerade die neue Version installiert. Ist ja schon mal ein guter Anfang. 🙂

                                          Die historischen Werte sind nun bei mir auch seit Installation der Anlage (2009) drin.

                                          Die Textdatei mit den Monatsdaten schau ich mir mal an. Ich musste mich beim Umstieg vom alten 400er auf den neuen 300er ein wenig mit der Datenstruktur beider Exportdateien beschäftigen. Die waren zueinander nicht kompatibel.

                                          Kannst du mir sagen, wie ich die JSON-Objekte aus meinem System herausbekomme? So könnte ich bessere Vergleiche anstellen, da Inhalt der JSON-Objekte mit den realen Live-Werten aus meinem System korrelieren würden.

                                          Was die Prognosewerte betrifft: Jahressoll und Prozentwerte je Monat würden die Möglichkeit bieten, daraus Monatswerte und Tageswerte (=Monatswert / AnzahlMonatstage) zu errechnen. Entweder macht das der Adapter oder ich baue mir ein Script und schreibe die Werte in neue Objekte.

                                          Gruß
                                          Manfred

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

                                            Hallo hmanfred

                                            Die Werte kriegst du mit folgendem Skript aus dem Solarlog raus:

                                            var https = require('http'); 
                                            //Hier die IP deines Solarlog eintragen
                                            var deviceIpAdress = "192.168.1.XXX"; 
                                            
                                            var cmd = "/getjp"; // Kommandos in der URL nach der Host-Adresse
                                            var dataraw = null;
                                            
                                            //das sind die verschiednen Datenobjeke zur Abfrage, können auch ergänzt werden
                                            var dataofficial = '{"801":{"170":null}}';
                                            var datayear = '{"854":null}';
                                            var datamonth = '{"779":null}';
                                            
                                            
                                            //hier das gewünschhte Datenobjekt eintragen
                                            var data = dataofficial;
                                            
                                            
                                            var options = {
                                                host: deviceIpAdress,
                                                path: cmd,
                                                method: 'POST',
                                                headers: {
                                                    'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
                                                    'Content-Type': 'application/json',
                                                    'Accept': 'applciation/json',
                                                    'Content-Length': data.length
                                                }
                                            };
                                            
                                            
                                            var req = https.request(options, function(res) {
                                            console.log("http Status: " + res.statusCode);
                                            console.log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 200 ? "warn" : "info")); // Header (Rückmeldung vom Webserver)
                                            var bodyChunks  = [];
                                            var chunkLine   = 0;
                                            res.on('data', function(chunk) {
                                                chunkLine = chunkLine + 1;
                                                // Hier können die einzelnen Zeilen verarbeitet werden...
                                                bodyChunks.push(chunk);
                                            
                                            }).on('end', function() {
                                                var body = Buffer.concat(bodyChunks);
                                                console.log("body: " + body);
                                                
                                                var dataJ = JSON.parse(body);
                                            
                                                //Hier könnten jetzt die Daten verarbeitet werden.
                                                                    
                                                console.log("END");
                                                //console.log("Rückgabe: " + JSON.parse(req));
                                                });
                                            
                                            });
                                            
                                            req.on('error', function(e) { // Fehler abfangen
                                                console.log('ERROR: ' + e.message,"warn");
                                            });
                                            
                                            
                                            
                                            console.log("Data to request body: " + data);
                                            // write data to request body
                                            (data ? req.write(data) : console.log("Daten: keine Daten im Body angegeben angegeben"));
                                            
                                            
                                            req.end();
                                            
                                            

                                            Du musst nur die IP deines Solarlogs eintragen dann kannst du damit die aufgeführten Objekte abfragen. Einfach das gewünschte hinter var data= schreiben und einmal laufenlassen, dann hast du das Resultat im Log.

                                            EDIT: Was die möglichen Datanobjekte im Solarlog betrifft, werde ich noch eine List mit den mir bekannten aufarbeiten. s. https://github.com/forelleblau/ioBroker.solarlog/blob/master/docs/solarlog_dataobjects.md

                                            Bezüglich der Sollwerte: Ja, so wär das Machbar. Was ich aber gemerkt habe, dass die Sollwerte pro Anlageteile angelegt werden. Da ich nur 1 Anlage/Anlageteil habe, weiss ich nicht, wie das dann mit mehreren aussehen würde - nur so könnte ich den Adapter sauber programmieren.
                                            Wenn du die Berechnung programmieren möchtest könnten wir es ja so machen, dass du die Berechnung schreibst und ich baue sie dann in den Adapter ein? Ich würde die die Übergabeparameter geben und du mir dann daraus die Tages-/Monats/ oder Jahressollwerte.

                                            Lieber Gruss
                                            forelleblau

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            606
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            solarlog
                                            13
                                            53
                                            7443
                                            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