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.
    • 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
                        • H
                          hmanfred last edited by hmanfred

                          Hmm...

                          ich vermute du siehst in mir einen (zumindest halbwegs) versierten Programmierer. 🙄

                          Der bin ich leider nicht. Ich bin recht fit was IT-Fragen betrifft. Programmieren beschränkt sich aber auf das WebUi der CCU sowie Blockly-Scripts im JS-Adapter.

                          Textorientierte Scripts kann ich allenfalls auf Basis von Vorgaben modifizieren.

                          Damit stellt sich schon mal die erste Frage: das obige Script ist ein ShellBash-Script? Falls ja - das kriege ich zum laufen.

                          Was meine Anmerkung zum Berechnen der Sollwerte betrifft: ich hätte mir da ein Blockly-Script geschrieben und die Ergebnisse in Objekten abgelegt, die ich in der Objektstruktur des ioBroker anlegen würde.
                          Voraussetzung wäre natürlich, dass Gesamt- und Prozentwerte als Objekte im Solarlog-Adapter verfügbar wären.

                          Sorry, aber mein Horizont ist da wohl etwas beschränkter, als du vermutest. 😢

                          Gruß
                          Manfred

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

                            Hallo
                            Nur zum Script. Das ist für den js Adapter, ein js Script. Nur dort reinkopieren, ip setzen und bei var Data = den gewünschten Datensatz eintragen

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

                              Hallo hmanfred.
                              Ich machs auch nur mit googeln, abschreiben und trial&error. Mit ausprobieren lernt man einiges - alles was funktioniert wurde mal ausprobiert!
                              Also wenn du gerne Blockly - Scripts machst, könntest du ja die 14 Variablen definieren (Monats-%, installierte Leistung und kWh/kWp) und daraus dann für jeden beliebigen Tag /Monat/Jahr, gestützt auf das jeweilige aktuelle Datum die gültigen Soll-Werte errechnen.
                              Wenn du das hast, drückst du oben rechts den Knopf und aus deinem Blockly wird ein js-Script, dass ich +/- in den Adapter einbauen kann.
                              Was meinst du dazu?

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

                                @forelleblau sagte in [Projekt] ioBroker Solarlog Adapter:

                                Hallo
                                Nur zum Script. Das ist für den js Adapter, ein js Script. Nur dort reinkopieren, ip setzen und bei var Data = den gewünschten Datensatz eintragen

                                Und wie starte ich das Script dann?

                                Mit Blockly würde ich eine HM-Taste oder Cron als Trigger einbauen. Aber direkt in JS? 🤔

                                Edit: hab's hinbekommen. Weiteres per PN.

                                Edit2: bin wohl zu doof, hier im Forum die Funktion für PN zu finden. ☹

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

                                  Beim PN-Suchen habe ich auch nur eine Chat-Funktion gefunden. Wenn du im ioBroker auf die Adapter-Seite gehst und beim solarlog-Adapter mit dem ? die Readme aufrufts da den Lizenz-Tab öffnest, steht da sonst meine Mailadresse - wär auch PN.
                                  Gruss forelleblau

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

                                    Hallo, hab den Adapter gestern installiert und konnte diverse Werte von meinem Solarlog abgreifen. Die Werte werden in wh ausgegeben. Kann man das für VIS in kWh umrechnen?
                                    Gruß

                                    sigi234 H 2 Replies Last reply Reply Quote 0
                                    • sigi234
                                      sigi234 Forum Testing Most Active @Stoni last edited by

                                      @Stoni

                                      https://forum.iobroker.net/topic/17187/neuer-adapter-beta-0-2-275-sourceanalytix-verbrauch-protokollierung-von-strom-gas-flüssigkeiten

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

                                        so wie man g in kg oder mm in m umrechnet.

                                        Außerdem gibt es Widgets, die das direkt machen. Basic Numbers z.b. wenn ich mich nicht irre.

                                        S 1 Reply Last reply Reply Quote 0
                                        • S
                                          Stoni @hmanfred last edited by Stoni

                                          @hmanfred sagte in [Projekt] ioBroker Solarlog Adapter:

                                          so wie man g in kg oder mm in m umrechnet.

                                          Außerdem gibt es Widgets, die das direkt machen. Basic Numbers z.b. wenn ich mich nicht irre.

                                          Mit 0,001 multiplizieren ist schon klar. Dass das in manchen Widgets geht, weiß ich auch. Habe ich aber bislang nicht gefunden. Ich nutze das Basic-String Widget.

                                          EDIT:
                                          Jupp beim number geht es. Hab's hinbekommen. THX

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

                                            @Stoni
                                            Gern geschehen.
                                            Mit Strings lässt sich schlecht rechnen. Mit Zahlen geht's einfacher. 😉

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            652
                                            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