Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Frage] Piko Wechslerichter 5.5 (Firmware 5.31) auslesen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    221

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[Frage] Piko Wechslerichter 5.5 (Firmware 5.31) auslesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
24 Beiträge 5 Kommentatoren 5.2k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    Strizz
    schrieb am zuletzt editiert von
    #1

    MOD-Edit by eric2905; 13.05.2017 / 17:15; Betreff geändert

    Hallo,

    ich suche seit einiger Zeit nach einer Möglichkeit, die Werte aus meinem Kostal Wechselrichter (Piko 5.5) auszulesen und mit VIS und Flot darzustellen.

    Ich weiß, es gibt hier einiges an Vorschlägen. Diese beziehen sich jedoch alle auf die Firmware Versionen < 5.31 des Wechselrichters, die im Oktober 2015 erschien. Auf meiner Suche habe ich bisher nur ein PHP-Script gefunden. Ich vermute allerdings, das bringt mir im Zusammenhang mit iobroker wenig. Deshalb habe ich mal versucht, in Javascript etwas zusammenzuschreiben. (Bei meinem Kenntnisstand ist das vor allem ein Zusammenkopieren) Stehe jetzt aber an einem Punkt, wo ich ohne Hilfe nicht weiterkomme.

    Wenn ich im Browser den URL

    http://192.168.178.50/api/dxs.json?dxsEntries=33555459&dxsEntries=67109120&dxsEntries=83888128&dxsEntries=2516587546dxsEntries=251658754
    

    eingebe, erhalte ich folgend String als Antwort:

    {"dxsEntries":[{"dxsId":33555459,"value":144.091431},{"dxsId":67109120,"value":1113.337402},{"dxsId":83888128,"value":1113.337402},{"dxsId":251658754,"value":5235.930664}],"session":{"sessionId":0,"roleId":0},"status":{"code":0}}
    

    Die Zahlen hinter 'dxsId" stehen für bestimmte Variablen im Wechselrichter, also 33555496 für die DCEingangGesamt oder 67109120 für die Ausgangsleistung des Wechselrichters. Insgesamt gibt es ca 40 solcher dxsIds. Auch wenn ich sie nicht alle brauchen werden, am Ende wird der String recht lang werden.

    Ich habe mir jetzt mal folgendes Script - zum großen Teil aus diesem Forum - zusammenkopiert.

    // Photovoltaik: Piko 5.5 Anlage
    
    //Variaben
    
     /*Leistungswerte
        $ID_DCEingangGesamt = 33556736;         // in W
        $ID_Ausgangsleistung = 67109120;        // in W
        $ID_Eigenverbrauch = 83888128;          // in W
        //Status
        $ID_Status = 16780032;                  // 0:Off
        //Statistik - Tag
        $ID_Ertrag_d = 251658754;               // in Wh
        $ID_Hausverbrauch_d = 251659010;        // in Wh
        $ID_Eigenverbrauch_d = 251659266;       // in Wh
        $ID_Eigenverbrauchsquote_d = 251659278; // in %
     */
    
    var IPAnlage = '192.168.178.50';   // IP der Photovoltaik-Anlage
    
    createState('Piko.Ausgangsleistung', 0); 
    createState('Piko.DCEingangGesamt', 0);
    createState('Piko.Eigenverbrauch', 0);
    createState('Piko.Eigenverbrauchsquote', 0);
    
    var AusL = 'Piko.Ausgangsleistung';
    var DCE = 'Piko.DCEingangGesamt';
    var EigV = 'Piko.Eigenverbrauch';
    var EigVQu = 'Piko.Eigenverbrauchsquote';
    var logging = true;
    
     function Piko() {
                var cheerio = require('cheerio');
                var request = require('request');
    
                if (logging) log("Piko 5.5 auslesen");
                request('http://IPAnlage ' + '/api/dxs.json' + '?dxsEntries=33556736' + '&dxsEntries=67109120' + '&dxsEntries=83888128' + '&dxsEntries=251659278', function (error, response, body) {
                        $ = cheerio.load(body);
    
                });
        }
    
    schedule("3,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () {
        log ("Auslöser: Schedule");
       Piko();
    });
    

    Mein erstes Problem ist nun, wie kann ich überprüfen, ob in "body" überhaupt der gewünschte String steht? Wie kann ich den z. B. im Logfile darstellen? Weiter geht es dann natürlich mit der Auswertung. Wie packe ich das am besten an?

    Kann mir jemand weiterhelfen?

    Strizz

    1 Antwort Letzte Antwort
    0
    • HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @Strizz:

      Kann mir jemand weiterhelfen? `
      nur Ansatzweise.

      ich benutze im Moment ein Skript auf meine RasPi

      #!/bin/bash
      # http://homematic-forum.de/forum/viewtopic.php?p=131956#p131956
      #
      #   define common parameters for wget
      #
      COMMONWGETARGS="-q -O - --timeout=10"
      
      wget $COMMONWGETARGS --http-user=user --http-password=pass "http://192.168.xxx.yyy/index.fhtml" | sed -e "s/nbsp/nbsp;/g" | sed -e "s/nbsp;;/nbsp;/g" | sed -e "s/\ //g" | html2text | tr -s " \t\r\n" | sed -e "s/^ //" | sed -e "s/x x x/0/g" >/tmp/power-inverter1.values
      PHOTOVOLTAICS_DC1U=$( cat /tmp/power-inverter1.values | grep Spannung | head -1 | cut -f2 -d" " )
      PHOTOVOLTAICS_DC2U=$( cat /tmp/power-inverter1.values | grep Spannung | head -2 | tail -1 | cut -f2 -d" " )
      PHOTOVOLTAICS_DC1I=$( cat /tmp/power-inverter1.values | grep Strom | head -1 | cut -f2 -d" " | awk '{printf "%d\n",$1*1000}' )
      PHOTOVOLTAICS_DC2I=$( cat /tmp/power-inverter1.values | grep Strom | head -2 | tail -1 | cut -f2 -d" " | awk '{printf "%d\n",$1*1000}' )
      PHOTOVOLTAICS_DC1P=$(( $PHOTOVOLTAICS_DC1U * $PHOTOVOLTAICS_DC1I / 1000 ))
      PHOTOVOLTAICS_DC2P=$(( $PHOTOVOLTAICS_DC2U * $PHOTOVOLTAICS_DC2I / 1000 ))
      
      PHOTOVOLTAICS_ACCURP=$( cat /tmp/power-inverter1.values | grep aktuell | cut -f2 -d" " )
      PHOTOVOLTAICS_ACTOTP=$( cat /tmp/power-inverter1.values | grep Gesamtenergie | cut -f5 -d" " )
      PHOTOVOLTAICS_DAILYP=$( cat /tmp/power-inverter1.values | grep Tagesenergie | cut -f2 -d" " )
      
      #
      #   update the system variables in the HomeMatic
      #
      wget $COMMONWGETARGS "http://192.168.xxx.zzz/addons/db/state.cgi?item=PV.DC1&value=$PHOTOVOLTAICS_DC1P"
      wget $COMMONWGETARGS "http://192.168.xxx.zzz/addons/db/state.cgi?item=PV.DC2&value=$PHOTOVOLTAICS_DC2P"
      wget $COMMONWGETARGS "http://192.168.xxx.zzz/addons/db/state.cgi?item=PV.AC&value=$PHOTOVOLTAICS_ACCURP"
      wget $COMMONWGETARGS "http://192.168.xxx.zzz/addons/db/state.cgi?item=PV.DAILYP&value=$PHOTOVOLTAICS_DAILYP"
      wget $COMMONWGETARGS "http://192.168.xxx.zzz/addons/db/state.cgi?item=PV.TOTP&value=$PHOTOVOLTAICS_ACTOTP"
      

      Das wird alle Minute per Cron aufgerufen.

      Dadurch werden die Werte ausgelesen und auf der CCU in Sysvar geschrieben.

      Diese Werte ich nun wieder aus:
      144_iobroker_vis_flot.jpg

      Daten anonymisiert: yyy = Piko; zzz = CCU

      Also von hinten durch die Brust ins Auge ;-)

      Gruß

      Rainer

      kein Support per PN! - Fragen im Forum stellen -

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #3
        ...
        var url = 'http://' + IPAnlage  + '/api/dxs.json' + '?dxsEntries=33556736' + '&dxsEntries=67109120' + '&dxsEntries=83888128' + '&dxsEntries=251659278';
        var request = require('request');
        
        function Piko() {
            if (logging) log("Piko 5.5 auslesen");
            request(url, function (error, response, body) {
                if(!error && response.statusCode == 200) {
                    if(logging) log(body);
                    var result = JSON.parse(body).dxsEntries;
                    setState(AusL, result[1].value);
                    setState(DCE, result[0].value);
                    setState(EigV, result[2].value);
                    setState(EigVQu, result[3].value);
                } else {
                    log("Fehler: " + error + " bei Abfrage von: " + url, "warn");
                }
            });
        }
        ...
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          Strizz
          schrieb am zuletzt editiert von
          #4

          Hallo,

          Danke für die schnellen Antworten.

          @Rainer: Wir hatte schon mal an anderer Stelle (Homematic-Forum?) festgestellt, dass wir unterschiedliche Firmware-Versionen haben. Ich fürchte, das wird bei mir so nicht laufen. Denke aber mit der neuen Version muss es einfacher gehen. Es geht doch "nur" darum, einen String auf bestimmte Werte hin zu untersuchen.

          @paul23: Habe deinen Code mal eingefügt. Er läuft zwar ohne Fehler durch, aber es werden keine Werte eingefügt. Gibt es eine Möglichkeit zu prüfen, ob der http-Befehl überhaupt den gewünschten String wiedergibt? Oder anders, kann ich mir irgendwie ansehen, ob in 'body' überhaupt was drin steht?

          Strizz

          1 Antwort Letzte Antwort
          0
          • HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #5

            @Strizz:

            @Rainer: Wir hatte schon mal an anderer Stelle (Homematic-Forum?) festgestellt, dass wir unterschiedliche Firmware-Versionen haben. Ich fürchte, das wird bei mir so nicht laufen. `
            Sorry dafür ich habe wohl das > mit dem < verwechselt :oops: :oops:

            Gruß

            Rainer

            kein Support per PN! - Fragen im Forum stellen -

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @Strizz:

              kann ich mir irgendwie ansehen, ob in 'body' überhaupt was drin steht? `
              Wenn````
              var logging = true;

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • S Offline
                S Offline
                Strizz
                schrieb am zuletzt editiert von
                #7

                Hallo paul53,

                gaaanz herzlichen Dank. Es funktioniert! Ich bin happy!

                Ich möchte deine Hilfe ja nicht überstrapazieren. Aber hast du noch einen Tip für mich? Jetzt läuft das Programm ja alle 5 Minuten Tag und Nacht. Wie kann ich das Programm morgens mit Sonnenaufgang starten, dann tagsüber alle 5 Minuten ausführen und mit Sonnenuntergang beenden? Geht das?

                Strizz

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @Strizz:

                  Er läuft zwar ohne Fehler durch, aber es werden keine Werte eingefügt. `
                  @Strizz:

                  Es funktioniert! Ich bin happy! `
                  Wo lag der Fehler ?
                  @Strizz:

                  Wie kann ich das Programm morgens mit Sonnenaufgang starten, dann tagsüber alle 5 Minuten ausführen und mit Sonnenuntergang beenden? `
                  Das sollte so funktionieren (nicht getestet):

                  ...
                  var timer = null;
                  
                  schedule({astro: "sunrise"}, function () {
                      timer = schedule("3,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () {
                          log ("Auslöser: Schedule");
                          Piko();
                      });
                  });
                  
                  schedule({astro: "sunset"}, function () {
                      if(timer) clearSchedule(timer);
                  });
                  
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • S Offline
                    S Offline
                    Strizz
                    schrieb am zuletzt editiert von
                    #9

                    Hallo paul53,

                    danke für die schnelle Antwort. Allerdings scheint etwas nicht zu stimmen:

                    Wenn ich den Code so reinkopiere , wie er ist, bekomme ich die Fehlermeldung:

                    SyntaxError: Unexpected token )
                    

                    Wenn ich in der letzten Zeile dann noch eine geschweifte Klammer einfüge, verschwindet Syntax-Error Meldung. Statt dessen erfolgt jedoch die Meldung

                    schedule callback missing
                    

                    Da stehe ich dann wieder auf dem Schlauch.

                    Kannst du noch mal helfen?

                    Strizz

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

                      Sorry, es fehlt die geschweifte Klammer (zu) hinter "sunset". Habe es korrigiert.

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      • S Offline
                        S Offline
                        Strizz
                        schrieb am zuletzt editiert von
                        #11

                        Super! Danke für die schnelle Hilfe.

                        Strizz

                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #12

                          Damit die Erfassung nicht erst ab nächsten Morgen funktioniert, sollte das Skript ergänzt werden:

                          ...
                          // Script start
                          if(isAstroDay()) {
                              timer = schedule("3,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () {
                                  log ("Auslöser: Schedule");
                                  Piko();
                              });
                          }
                          

                          oder Du vereinfachst das Skript:

                          ...
                          schedule("3,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () {
                              if(isAstroday()) {
                                  log ("Auslöser: Schedule");
                                  Piko();
                              }
                          });
                          
                          

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • S Offline
                            S Offline
                            Strizz
                            schrieb am zuletzt editiert von
                            #13

                            Hallo paul53,

                            die Sonne scheint bei uns zwar nicht mehr, so dass eh erst morgen weiter aufgezeichnet wird. Ich habe das Script aber geändert.

                            Werde das Script jetzt mal einige Zeit testen und dann hier insgesamt veröffentlichen. Vielleicht hat der eine oder andere ja denselben Wechselrichter.

                            Nochmal besten Dank.

                            Strizz

                            1 Antwort Letzte Antwort
                            0
                            • S Offline
                              S Offline
                              Strizz
                              schrieb am zuletzt editiert von
                              #14

                              OH, war wohl zu schnell. Erhalte jetzt die Fehlermeldung

                              	javascript.0 ReferenceError: isAstroday is not defined at Object. (script.js.common.Piko_auslesen:131:8) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1500:34) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:175:10) at null._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:479:11) at Timer.listOnTimeout (timers.js:92:15)
                              

                              Wo steckt denn da der Wurm?

                              1 Antwort Letzte Antwort
                              0
                              • S Offline
                                S Offline
                                Strizz
                                schrieb am zuletzt editiert von
                                #15

                                Habe mal diese Zeile geändert

                                 if(isAstroDay ()) {
                                

                                Großes 'D' und ein Leerzeichen eingefügt. Jetzt kommen keine Fehlermeldungen mehr.

                                1 Antwort Letzte Antwort
                                0
                                • paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von
                                  #16

                                  Sorry, mein Fehler: Mit großem 'D' wie in dem Skript im gleichen Beitrag darüber.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  1 Antwort Letzte Antwort
                                  0
                                  • D Offline
                                    D Offline
                                    danielwester
                                    schrieb am zuletzt editiert von
                                    #17

                                    Hallo, ich bin hier im Forum auf dieses Script für den Piko Wechselrichter gestoßen und wollte er gerne Ausprobieren.

                                    Das Script läuft auch ohne fehler durch, nur stehen die werte alle auf 0. Weis jemand was ich falsch mache?? :?: :?:

                                    1 Antwort Letzte Antwort
                                    0
                                    • HomoranH Nicht stören
                                      HomoranH Nicht stören
                                      Homoran
                                      Global Moderator Administrators
                                      schrieb am zuletzt editiert von
                                      #18

                                      Hallo und Willkommen im Forum!

                                      Wie sieht denn dein Webinterface aus?

                                      Es gibt da verschiedene Versionen.

                                      Mehr nach Win10 oder nach DOS?

                                      Gruß

                                      Rainer

                                      kein Support per PN! - Fragen im Forum stellen -

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                      1 Antwort Letzte Antwort
                                      0
                                      • D Offline
                                        D Offline
                                        danielwester
                                        schrieb am zuletzt editiert von
                                        #19

                                        mehr nach Win 10

                                        1 Antwort Letzte Antwort
                                        0
                                        • HomoranH Nicht stören
                                          HomoranH Nicht stören
                                          Homoran
                                          Global Moderator Administrators
                                          schrieb am zuletzt editiert von
                                          #20

                                          Dann ist das hier das richtige Skript.

                                          Du hast aber schon die Änderungen, die im Laufe des Threads kamen eingepflegt?

                                          • und die IP angepasst?

                                          • und ggf. Password und User?

                                          Gruß

                                          Rainer

                                          kein Support per PN! - Fragen im Forum stellen -

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          610

                                          Online

                                          32.7k

                                          Benutzer

                                          82.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe