Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?

    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

    Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      w00dy @MartyBr last edited by

      @martybr
      ...stimmt, - läuft 👍

      1 Reply Last reply Reply Quote 0
      • D
        discotosca @bahnuhr last edited by

        @bahnuhr Habe gerade erst gesehen, dass du mir das Script angepasst hast.
        Hervorragend, vielen Dank.
        Habe gerade das Script gegen dein 3-String-Script getauscht, läuft...

        Vielen lieben Dank...

        Wenn noch eine Frage in mir aufkommen sollte, darf ich mich dann melden...?

        DANKE & einen schönen Abend noch...

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

          @bahnuhr

          Das angepasste Script mit angepassten Variablen erzeugt bei mir WarnMeldungen und es werden keine Variablen aktualisiert, ich habe den schedule Teil ausgenommen um es erstmal manuell zu starten...

          Name und Kennwort habe ich nachträglich unkenntlich gemacht.

          error.jpg

          Geräte.jpg

          // Photovoltaik: Piko 5.5 Anlage (alte Firmware)
          // Danke an homoran für den regex
          // @bahnuhr; 03/2019 Dieter Müller
          // @bahnuhr; 10/2021 Dieter Müller - angepasst auf 3 String
           
          //Variaben
              var idaktuell = '0_userdata.0.Geraete.PV.Photovoltaik.Leistung_aktuell';
              var idTag = '0_userdata.0.Geraete.PV.Photovoltaik.Tagesleistung';
              var idall = '0_userdata.0.Geraete.PV.Photovoltaik.Leistung_gesamt';
              var idP1 = '0_userdata.0.Geraete.PV.Photovoltaik.Leistung_Strang1';
              var idP2 = '0_userdata.0.Geraete.PV.Photovoltaik.Leistung_Strang2';
              var idP3 = '0_userdata.0.Geraete.PV.Photovoltaik.Leistung_Strang3';
           
              var NameAnlage = 'pvXXXX';        // Nutzername der Photovoltaik-Anlage
              var PassAnlage = 'pXXXXX';         // Password der Photovoltaik-Anlage
              var IPAnlage = '192.168.1.8';    // IP der Photovoltaik-Anlage
           
              var logging = false;
              var request = require('request');
           
           
           function Piko() {
              log("Piko 5.5 auslesen");
              var results = [];
              request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) {
                  var d = body.toString();
                  if (logging) log (d);
                  var reg = /#FFFFFF">[^\d]+([^<]+)/g
                  var z = reg.exec(d);
           
                  while(z != null) {
                      if (isNaN(z[1])) {
                          if (logging) log("keine Zahl= "+ z[1]);
                          z[1] = 0;
                      } else {
                          if (logging) log("Zahl= "+ z[1]);
                          parseFloat(z[1]);
                      }
                      results[results.length] = z[1];
                      z = reg.exec(d);
                  }
                  if (logging) log("results= "+ results);
           
              // Werte zuordnen
                  var pwr = results[0];           // Energie aktuell in W
                  var day = results[2];           // Tagesenergie in kWh
                  var all = results[1];           // Gesamtenergie in kWh
                  var v1 = results[3];            // PV Generator Nr. 1 - Spannung in V
                  var i1 = results[5];            // PV Generator Nr. 1 - Strom in A
                  var p1 = parseInt(v1 * i1);
                  var v2 = results[7];            // PV Generator Nr. 2 - Spannung in V
                  var i2 = results[9];            // PV Generator Nr. 2 - Strom in A
                  var p2 = parseInt(v2 * i2);
                  var v3 = results[11];            // PV Generator Nr. 3 - Spannung in V
                  var i3 = results[13];            // PV Generator Nr. 3 - Strom in A
                  var p3 = parseInt(v3 * i3);
           
                  if (logging) log("Leistung aktuell= " + pwr + " W");
                  if (logging) log("Tagesleistung= " + day + " kWh");
                  if (logging) log("Leistung gesamt= " + all + " kWh");
                  if (logging) log("Leistung Strang 1= " + p1 + " W");
              	if (logging) log("Leistung Strang 2= " + p2 + " W");
              	if (logging) log("Leistung Strang 3= " + p3 + " W");
           
                  setState(idaktuell, parseFloat(pwr));
                  setState(idTag, parseFloat(day));
                  setState(idall, parseFloat(all));
                  setState(idP1, parseFloat(p1));
                  setState(idP2, parseFloat(p2));
                  setState(idP3, parseFloat(p3));
              });
          }
           
          Piko();
          
           return;
           
          schedule("2,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () {
              log ("Auslöser: Schedule");
          	Piko();
          });
           
          schedule("3 0 * * *", function () {     // Variablen löschen um 00:03 Uhr   
              setState('javascript.0.Geräte.Photovoltaik.Tagesleistung', 0);
          });
          
          
          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @HotMaggi last edited by Homoran

            @hotmaggi
            nähere Informationen stehen im log! (Protokolle)

            in den Zeilen 65-70 werden die Datenpunkte beschrieben.

            Hast du diese angelegt?

            H 2 Replies Last reply Reply Quote 0
            • H
              HotMaggi @Homoran last edited by

              @homoran

              Ich habe mit dem Create Script aus dem Thread die Variablen angelegt, was mit auffällt, dass die Variablen Deklaration mit den pysischen Datenpunkten nicht übereinstimmt... bei mir heißen die Variablen anders... das scheint der Fehler zu sein...
              Werde ich gleich ändern.

              create2.jpg

              datenpunkte2.jpg

              Homoran 1 Reply Last reply Reply Quote 0
              • H
                HotMaggi @Homoran last edited by

                @homoran

                wieder nur eine Kleinigkeit und wenn man es richtig macht geht es.... durch das anpassen der Datenpunkte an meine
                Struktur habe ich das in dem langen String übersehen...

                Alles gut es geht nun.

                Auch an Dich vielen Dank für die Unterstützung!!

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

                  @hotmaggi sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                  bei mir heißen die Variablen anders... das scheint der Fehler zu sein...

                  Natürlich

                  1 Reply Last reply Reply Quote 0
                  • I
                    io2345 @bahnuhr last edited by io2345

                    Funktioniert einwandfrei. Vielen Dank!
                    Habe einen alten Piko 5.5 mit FW 3.70 (nicht aktualisierbar). Datenpunkte per Script angelegt, einmalig laufen lassen. Abfragescript erstellt, dabei User/PW und IP eingetragen. Klappt alles auf Anhieb.

                    Was ich mich frage: Läuft das Script von alleine immer wieder durch, oder muss ich das selbst irgendwie dazu bewegen? So wie ich es interpretiere, läuft das Script von alleine alle 5 Minuten los, richtig?
                    Wie könnte ich es z.B. jede Minute laufen lassen (ohne alle Zahlen von 0-59 in schedule einzutragen)

                    I 1 Reply Last reply Reply Quote 0
                    • I
                      io2345 @io2345 last edited by io2345

                      @bahnuhr : Lässt es sich eigentlich irgendwie vermeiden, dass für jede Abfrage ein Eintrag ins iobroker-Log geschrieben wird? Ich lasse die Abfrage minütlich laufen, da kommt ganz schön was zusammen...

                      Falls du mir auch noch sagen könnte, wie das hinbekomme, dass das Script alle Minute läuft, ohne alle Zahlen von 0 bis 59 in "schedule" eintragen zu müssen, wäre cool.

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

                        @io2345 sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                        dass das Script alle Minute

                        * * * * * im ersten Cron!

                        @io2345 sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                        ie vermeiden, dass für jede Abfrage ein Eintrag ins iobroker-Log geschrieben wird?

                        im ersten Cron die Zeile log.... entfernen

                        I 2 Replies Last reply Reply Quote 0
                        • I
                          io2345 @Homoran last edited by io2345

                          Klasse, funzt. Vielen Dank für die spontane Hilfe!
                          Für alle, die sich - wie ich - erst mal am Kopf kratzen, bevor sie verstehen, was zu ändern ist. Das Ende des obigen Scripts sieht dann so aus:

                          ...
                          schedule("* * * * *", function () {
                          // log ("Auslöser: Schedule");
                          Piko();
                          });

                          schedule("3 0 * * *", function () { // Variablen löschen um 00:03 Uhr
                          setState('javascript.0.Geräte.Photovoltaik.Tagesleistung', 0);
                          });

                          1 Reply Last reply Reply Quote 0
                          • I
                            io2345 @Homoran last edited by io2345

                            @homoran Seit kurzem kommt regelmäßig folgende Meldung bei diesem Script:
                            "request package is deprecated - please use httpGet (or a stable lib like axios) instead"
                            Weiß einer der Nutzer, wie das anzupassen wäre? Ich vermute mal schwer, es geht um den Abschnitt, der mit

                            request('http://' + NameAnlage + ':' + PassAnla...

                            beginnt. Aber was man da jetzt genau ändern müsste ???

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

                              @io2345 sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                              @homoran Seit kurzem kommt regelmäßig folgende Meldung bei diesem Script:
                              "request package is deprecated - please use httpGet (or a stable lib like axios) instead"
                              Weiß einer der Nutzer, wie das anzupassen wäre? Ich vermute mal schwer, es geht um den Abschnitt, der mit

                              request('http://' + NameAnlage + ':' + PassAnla...

                              beginnt. Aber was man da jetzt genau ändern müsste ???

                              Vielleicht ist @bahnuhr so nett und passt das Skript nochmal an.

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

                                @homoran
                                Für Rainer mach ich alles.
                                Obwohl es 100.. Beispiele mittlerweile gibt, wie man dies anpasst.

                                Dieses läuft bei mir derzeit:

                                
                                // Photovoltaik: Piko 5.5 Anlage (alte Firmware)
                                // Danke an homoran für den regex
                                // @bahnuhr; 03/2019 Dieter Müller
                                
                                //Variaben
                                    var idaktuell = 'javascript.0.Geräte.Photovoltaik.2012_Leistung_alt_aktuell';
                                    var idTag = 'javascript.0.Geräte.Photovoltaik.2012_Tagesleistung';
                                    var idall = 'javascript.0.Geräte.Photovoltaik.2012_Leistung_alt_gesamt';
                                    var idP1 = 'javascript.0.Geräte.Photovoltaik.2012_Leistung_Strang1';
                                    var idP2 = 'javascript.0.Geräte.Photovoltaik.2012_Leistung_Strang2';
                                
                                    var NameAnlage = 'SN-Login';        // Nutzername der Photovoltaik-Anlage
                                    var PassAnlage = 'abc';         // Password der Photovoltaik-Anlage
                                    var IPAnlage = '192.168.xxx.xxx';    // IP der Photovoltaik-Anlage
                                
                                    var logging = false;
                                
                                
                                 function Piko() {
                                    log("Piko 5.5 auslesen");
                                    var results = [];
                                    httpGet('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, { timeout: 10000, responseType: 'document' }, (err, response) => { 
                                    if (err) { 
                                        if (err.indexOf("size of -1") != -1) {
                                            log (err,"info");
                                        } else {
                                            console.error(err); 
                                        }
                                    } else { 
                                        var d = (response.data).toString();
                                        if (logging) log (d);
                                        var reg = /#FFFFFF">[^\d]+([^<]+)/g
                                        var z = reg.exec(d);
                                
                                        while(z != null) {
                                            if (isNaN(z[1])) {
                                                if (logging) log("keine Zahl= "+ z[1]);
                                                z[1] = 0;
                                            } else {
                                                if (logging) log("Zahl= "+ z[1]);
                                                parseFloat(z[1]);
                                            }
                                            results[results.length] = z[1];
                                            z = reg.exec(d);
                                        }
                                        if (logging) log("results= "+ results);
                                
                                    // Werte zuordnen
                                        var pwr = results[0];           // Energie aktuell in W
                                        var day = results[2];           // Tagesenergie in kWh
                                        var all = results[1];           // Gesamtenergie in kWh
                                        var v1 = results[3];            // PV Generator Nr. 1 - Spannung in V
                                        var i1 = results[5];            // PV Generator Nr. 1 - Strom in A
                                        var p1 = parseInt(v1 * i1);
                                        var v2 = results[7];            // PV Generator Nr. 2 - Spannung in V
                                        var i2 = results[9];            // PV Generator Nr. 2 - Strom in A
                                        var p2 = parseInt(v2 * i2);
                                        // Tagesenergie auf 0 setzen wenn es Nacht ist
                                            var Zeit1 = isTimeInRange('00:01:00', '09:00:00');
                                            if (Zeit1 && pwr == 0 && p1 == 0 && p2 == 0) { day = 0; }
                                        // geändert: in pwr wird die aktuelle Energie angezeigt; dies passt aber nicht mit p1 + p2 überein.
                                        // vermutlich wird die W des Wechselrichters abgezogen. neu habe ich nun pwr = p1 + p2
                                            pwr = p1 + p2;
                                
                                        if (logging) log("aktuell -> Leistung aktuell= " + pwr + " W // Tagesleistung= " + day + " kWh // Leistung alt gesamt= " + all + " kWh // Leistung Strang 1= " + p1 + " W // Leistung Strang 2= " + p2 + " W");
                                
                                        setState(idaktuell, parseFloat(pwr));
                                        setState(idTag, parseFloat(day));
                                        setState(idall, parseFloat(all));
                                        setState(idP1, parseFloat(p1));
                                        setState(idP2, parseFloat(p2));
                                    } });
                                }
                                
                                
                                schedule('5 * * * * *', function () {
                                    //log ("Auslöser: Schedule");
                                	Piko();
                                });
                                
                                /*
                                schedule("3 0 * * *", function () {     // Variablen löschen um 00:03 Uhr   
                                    setState('javascript.0.Geräte.Photovoltaik.2012_Tagesleistung', 0);
                                });
                                */
                                
                                //Piko();
                                
                                
                                
                                Homoran I 2 Replies Last reply Reply Quote 2
                                • Homoran
                                  Homoran Global Moderator Administrators @bahnuhr last edited by

                                  @bahnuhr sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                                  Für Rainer mach ich alles.

                                  DANKE!
                                  Dann ist das wenigstens hier mit im Thread!

                                  Schade dass du nicht in Solingen warst.

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

                                    @homoran sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                                    Schade dass du nicht in Solingen warst.

                                    Ja, stimmt.
                                    War mir zu weit; nach Ffm wäre ich gekommen.
                                    Soll ja gut gewesen sein.

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

                                      @bahnuhr sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                                      War mir zu weit; nach Ffm wäre ich gekommen.

                                      dafür hatte ich nur 50km 😁

                                      @bahnuhr sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                                      Soll ja gut gewesen sein.

                                      War es!

                                      [/OT]

                                      1 Reply Last reply Reply Quote 0
                                      • I
                                        io2345 @bahnuhr last edited by io2345

                                        @bahnuhr
                                        Danke für das angepasste Script. Habe ich so bei mir reinkopiert und nur die drei Variablen mit "Anlage" im Namen korrigiert. Aber jede Minute kommt nun die Meldung

                                        *javascript.0	15:53:05.603	error	at Object.<anonymous> (script.js.common.Kostal_Piko_55_WR_auslesen_neu:60:25)*
                                        

                                        In Zeile 60 ist das Zeichen 25 das Leerzeichen zwischen & und pwr.

                                        *...if (Zeit1 && pwr == 0...*
                                        

                                        Kapier ich nicht, was da das Problem sein soll.

                                        bahnuhr 2 Replies Last reply Reply Quote 0
                                        • bahnuhr
                                          bahnuhr Forum Testing Most Active @io2345 last edited by

                                          @io2345 sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                                          Kapier ich nicht, was da das Problem sein soll.

                                          Ich auch nicht.
                                          Bei mir läuft es einwandfrei.

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

                                            @io2345 sagte in Wie Kostal Piko 3.6 Wechselrichter Visualisieren ?:

                                            In Zeile 60

                                            Zeile 60 ist aber auch ne andere !
                                            (zumindest lt. meinem Script)

                                            Warum änderst du dein bestehendes Script nicht einfach ab.
                                            Wolltest doch "nur" httpget haben

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            375
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            94
                                            6216
                                            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