Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Piko 5.5 Wechselrichter (alte Firmware) auslesen

    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

    Piko 5.5 Wechselrichter (alte Firmware) auslesen

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

      Hallo,

      bisher hatte ich o.g. Thema per Script erledigt mit einem js.modul "cheerio". Dieses läuft aber nicht mehr (warum weiß ich nicht).
      Nun habe ich das Script erfolgreich umgeschrieben. Die Werte werden ausgelesen per regex (hier nochmals Danke an homoran; ohne ihn hätte ich den regex nicht gebacken bekommen).

      Die Objekte müsst ihr logischerweise manuell anlegen; oder per nachfolgendem Script:

      // Photovoltaik -------------------------------------------------------------------------------------------------------------
      createState('javascript.0.Status.Photovoltaik.Leistung_aktuell', 0, {type: 'number',name: 'Leistung aktuell',min: 0,role: 'per Script'});
      createState('javascript.0.Status.Photovoltaik.Tagesleistung', 0, {type: 'number',name: 'Tagesleistung',min: 0,role: 'per Script'});
      createState('javascript.0.Status.Photovoltaik.Leistung_gesamt', 0, {type: 'number',name: 'Leistung gesamt',min: 0,role: 'per Script'});
      createState('javascript.0.Status.Photovoltaik.Leistung_Strang1', 0, {type: 'number',name: 'Leistung Strang 1',min: 0,role: 'per Script'});
      createState('javascript.0.Status.Photovoltaik.Leistung_Strang2', 0, {type: 'number',name: 'Leistung Strang 2',min: 0,role: 'value'});
      
      

      Diese einmalig in ein Script kopieren, starten und fertig.

      Und nun das eigentliche Script. Eure Zugangswerte müsst ihr natürlich angleichen. Das Script fragt die Werte alle 5 Minuten ab (siehe Schedule). Könnt ihr natürlich ändern.

      
      // 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.Status.Photovoltaik.Leistung_aktuell';
          var idTag = 'javascript.0.Status.Photovoltaik.Tagesleistung';
          var idall = 'javascript.0.Status.Photovoltaik.Leistung_gesamt';
          var idP1 = 'javascript.0.Status.Photovoltaik.Leistung_Strang1';
          var idP2 = 'javascript.0.Status.Photovoltaik.Leistung_Strang2';
      
          var NameAnlage = 'xxx';        // Nutzername der Photovoltaik-Anlage
          var PassAnlage = 'xxx';         // Password der Photovoltaik-Anlage
          var IPAnlage = '192.168.xxx.xx';    // IP der Photovoltaik-Anlage
      
          var logging = false;
          var request = require('request');
      
      
       function Piko() {
          if (logging) log("Piko 5.5 auslesen");
          var results = [];
          request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) {
              var d = body.toString();
              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);
      
              log("Leistung aktuell= " + pwr + " W");
              log("Tagesleistung= " + day + " kWh");
              log("Leistung gesamt= " + all + " kWh");
      	    log("Leistung Strang 1= " + p1 + " W");
          	log("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("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.Status.Photovoltaik.Tagesleistung', 0);
      });
      
      

      Geht bestimmt auch kürzer; oder schöner im js.Stil. Aber es läuft.

      mfg

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

      Support us

      ioBroker
      Community Adapters
      Donate

      748
      Online

      31.9k
      Users

      80.2k
      Topics

      1.3m
      Posts

      javascript
      1
      1
      210
      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