Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] Piko Wechslerichter 5.5 (Firmware 5.31) 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

    [Frage] Piko Wechslerichter 5.5 (Firmware 5.31) auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      @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

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        ...
        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");
                }
            });
        }
        ...
        
        1 Reply Last reply Reply Quote 0
        • S
          Strizz last edited by

          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 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by

            @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

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 last edited by

              @Strizz:

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

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

                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 Reply Last reply Reply Quote 0
                • paul53
                  paul53 last edited by

                  @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);
                  });
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • S
                    Strizz last edited by

                    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 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 last edited by

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

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

                        Super! Danke für die schnelle Hilfe.

                        Strizz

                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 last edited by

                          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();
                              }
                          });
                          
                          
                          1 Reply Last reply Reply Quote 0
                          • S
                            Strizz last edited by

                            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 Reply Last reply Reply Quote 0
                            • S
                              Strizz last edited by

                              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 Reply Last reply Reply Quote 0
                              • S
                                Strizz last edited by

                                Habe mal diese Zeile geändert

                                 if(isAstroDay ()) {
                                

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

                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 last edited by

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

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    danielwester last edited by

                                    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 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators last edited by

                                      Hallo und Willkommen im Forum!

                                      Wie sieht denn dein Webinterface aus?

                                      Es gibt da verschiedene Versionen.

                                      Mehr nach Win10 oder nach DOS?

                                      Gruß

                                      Rainer

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        danielwester last edited by

                                        mehr nach Win 10

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

                                          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

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            danielwester last edited by

                                            Ja, die IP adresse habe ich geändert. Passwort und User habe ich nicht gesehen das ich es eingeben muss.

                                            Die Änderungen habe ich nicht angepasst, da ich nicht weiß wo :?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            436
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            24
                                            4601
                                            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