Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenlogger Photovoltaik

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Hier das Plugin. Vielleicht nicht unbedingt die eleganteste Variante, aber besser hab ich das mit meinen Perl-Kenntnissen nicht zustandegebracht. Aber funkioniert...


    Code:
    # Datenlogger PV-Anlage Kostal Piko 10.1
    # v0.1
    use LWP::Simple;
    my $Wechselrichter_IP = "pvserver:pvwr\@192.168.2.101"; # Standard IP Kostal Piko 10.1
    my $CurrentDataPath = "/index.fhtml"; # Uebersicht aktuelle Leistungsdaten
    my $LogDownloadPath = "/LogDaten.dat"; # Log (TXT-Format)
    my @values;
    my $content = get( "[URL]http://$Wechselrichter_IP$CurrentDataPath[/URL]" );
    return "PV-Datenabfrage fehlgeschlagen" unless defined $content;
    my @CurrentData = split( /\<td/, $content );
    my $i = 0;
    foreach ( @CurrentData ) {
    $_ =~ s/\r//g;    # Wagenrücklauf entfernen
    $_ =~ s/\n//g;    # Zeilenumbruch entfernen
    $_ =~ />(.*)</;
    @values[$i] = $1;
    $i++;
    }
    $values[3] =~ s/<.+?>//g;
    my $WR_Name = $values[3];
    my $AC_Leistung_Ges = $values[15];
    update_rrd("Photovoltaik_P_AC","",$AC_Leistung_Ges,"GAUGE");
    my $Gesamtenergie = $values[18];
    update_rrd("Photovoltaik_W_total","",$Gesamtenergie,"GAUGE");
    my $Tagesenergie = $values[27];
    update_rrd("Photovoltaik_W_tag","",$Tagesenergie,"GAUGE");
    my $WR_Status = $values[33];
    my $DC1_U = $values[57];
    update_rrd("Photovoltaik_U_DC1","",$DC1_U,"GAUGE");
    my $DC1_I = $values[66];
    update_rrd("Photovoltaik_I_DC1","",$DC1_I,"GAUGE");
    my $DC1_P = $DC1_U * $DC1_I;
    update_rrd("Photovoltaik_P_DC1","",$DC1_P,"GAUGE");
    my $DC2_U = $values[83];
    update_rrd("Photovoltaik_U_DC2","",$DC2_U,"GAUGE");
    my $DC2_I = $values[92];
    update_rrd("Photovoltaik_I_DC2","",$DC2_I,"GAUGE");
    my $DC2_P = $DC2_U * $DC2_I;
    update_rrd("Photovoltaik_P_DC2","",$DC2_P,"GAUGE");
    # my $DC3_U = $values[109];
    # my $DC3_I = $values[118];
    # my $DC3_P = $DC3_U * $DC3_I;
    my $AC1_U = $values[60];
    update_rrd("Photovoltaik_U_AC1","",$AC1_U,"GAUGE");
    my $AC1_P = $values[69];
    update_rrd("Photovoltaik_P_AC1","",$AC1_P,"GAUGE");
    my $AC2_U = $values[86];
    update_rrd("Photovoltaik_U_AC2","",$AC2_U,"GAUGE");
    my $AC2_P = $values[95];
    update_rrd("Photovoltaik_P_AC2","",$AC2_P,"GAUGE");
    my $AC3_U = $values[112];
    update_rrd("Photovoltaik_U_AC3","",$AC3_U,"GAUGE");
    my $AC3_P = $values[121];
    update_rrd("Photovoltaik_P_AC3","",$AC3_P,"GAUGE");
    # return $WR_Status;
    Endlich umgezogen. Fertig? Noch lange nicht... ;-)

    Kommentar


      #32
      funktioniert

      superrrrrrr. funktioniert.

      vielen dank.

      gruß
      andreas

      Kommentar


        #33
        Rein technisch: Statt dem hier

        Code:
        $_ =~ s/\r//g;    # Wagenrücklauf entfernen
        $_ =~ s/\n//g;    # Zeilenumbruch entfernen
        Sollte auch das reichen:

        Code:
        chomp;





        PS: Hab ich noch vergessen: Geht nur, wenn Du vorher $/ entsprechend setzt:
        Code:
        $/ = "\r\n";
        Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.

        Kommentar


          #34
          Hier mal eine aktualisierte Version.

          Code:
          # Datenlogger PV-Anlage Kostal Piko 10.1
          # v0.2
          use LWP::Simple;
          my $Wechselrichter_IP = "pvserver:pvwr\@192.168.2.101"; # Standard IP Kostal Piko 10.1
          my $CurrentDataPath  = "/index.fhtml"; # Uebersicht aktuelle Leistungsdaten
          my $LogDownloadPath  = "/LogDaten.dat"; # Log (TXT-Format)
          my @values;
          # Arrays to hold GAs for detailed values from the strings / outputs
          # If a GA is left empty, it is not send to the bus
          my @myDcVoltageGA;   # DC voltage in [V], DPT 14.027
          my @myDcCurrentGA;   # DC current in [A], DPT 14.019
          my @myDcPowerGA;   # DC power [W], DPT 13.010
          my @myAcVoltageGA;   # AC voltage in [V], DPT 14.027
          my @myAcCurrentGA;   # AC current in [A], DPT 14.019
          my @myAcPowerGA;   # AC power in [W], DPT 13.010
          my @myAcDailyEnergyGA;  # Energy output, daily accumulation in [Wh], DPT 13.010
          my @myTemperatureGA;  # Temperature of inverter in [°C], DPT 9.001
          my @myStatusGA;    # Status of inverter, DPT 5.010
          #$myDcVoltageGA[1]     = "0/4/237";
          #$myDcVoltageGA[2]     = "0/4/237";
          #$myDcCurrentGA[1]     = "0/4/238";
          #$myDcCurrentGA[2]     = "0/4/238";
          #$myDcPowerGA[1]       = "0/4/239";
          #$myDcPowerGA[2]       = "0/4/239";
          #$myAcVoltageGA[1]     = "0/4/240";
          #$myAcVoltageGA[2]     = "0/4/240";
          #$myAcVoltageGA[3]     = "0/4/240";
          #$myAcCurrentGA[1]     = "0/4/241";
          #$myAcCurrentGA[2]     = "0/4/241";
          #$myAcCurrentGA[3]     = "0/4/241";
          #$myAcPowerGA[1]       = "0/4/242";
          #$myAcPowerGA[2]       = "0/4/242";
          #$myAcPowerGA[3]       = "0/4/242";
          #$myAcPowerGA[4]       = "0/4/242";
          $myAcDailyEnergyGA[1] = "7/0/118";
          #$myTemperatureGA[1]   = "0/4/244";
          $myStatusGA[1]        = "7/0/10";
          my $content = get( "[URL]http://$Wechselrichter_IP$CurrentDataPath[/URL]" );
          return "PV-Datenabfrage fehlgeschlagen" unless defined $content;
          my @CurrentData = split( /\<td/, $content );
          my $i = 0;
          foreach ( @CurrentData ) {
           $_ =~ s/\r//g;    # Wagenrücklauf entfernen
           $_ =~ s/\n//g;    # Zeilenumbruch entfernen
           $_ =~ />(.*)</;
           @values[$i] = $1;
           $i++;
          }
          $values[3] =~ s/<.+?>//g;
          my $WR_Name = $values[3];
          my $AC_Leistung_Ges = $values[15];
          $AC_Leistung_Ges =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_P_AC","",$AC_Leistung_Ges,"GAUGE");
          my $Gesamtenergie = $values[18];
          $Gesamtenergie =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_W_total","",$Gesamtenergie,"GAUGE");
          my $Tagesenergie = $values[27];
          $Tagesenergie =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_W_tag","",$Tagesenergie,"GAUGE");
          if( $myAcDailyEnergyGA[1] ) { knx_write( $myAcDailyEnergyGA[1], $Tagesenergie*1000, 13 ); }    
          my $WR_Status = $values[33];
          $WR_Status =~ s/\s//g;    # Leerzeichen entfernen
          if( $myStatusGA[1] ) { knx_write( $myStatusGA[1], $WR_Status, 16 ); }    
          my $DC1_U = $values[57];
          $DC1_U =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_U_DC1","",$DC1_U,"GAUGE") if ($DC1_U > 0);
          my $DC1_I = $values[66];
          $DC1_I =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_I_DC1","",$DC1_I,"GAUGE");
          my $DC1_P = $DC1_U * $DC1_I;
          $DC1_P =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_P_DC1","",$DC1_P,"GAUGE");
          my $DC2_U = $values[83];
          $DC2_U =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_U_DC2","",$DC2_U,"GAUGE") if ($DC2_U > 0);
          my $DC2_I = $values[92];
          $DC2_I =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_I_DC2","",$DC2_I,"GAUGE");
          my $DC2_P = $DC2_U * $DC2_I;
          $DC2_P =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_P_DC2","",$DC2_P,"GAUGE");
          # my $DC3_U = $values[109];
          # my $DC3_I = $values[118];
          # my $DC3_P = $DC3_U * $DC3_I;
          my $AC1_U = $values[60];
          $AC1_U =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_U_AC1","",$AC1_U,"GAUGE") if ($AC1_U > 0);
          my $AC1_P = $values[69];
          $AC1_P =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_P_AC1","",$AC1_P,"GAUGE");
          my $AC2_U = $values[86];
          $AC2_U =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_U_AC2","",$AC2_U,"GAUGE") if ($AC2_U > 0);
          my $AC2_P = $values[95];
          $AC2_P =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_P_AC2","",$AC2_P,"GAUGE");
          my $AC3_U = $values[112];
          $AC3_U =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_U_AC3","",$AC3_U,"GAUGE") if ($AC3_U > 0);
          my $AC3_P = $values[121];
          $AC3_P =~ s/[a-z\s&]//gi;
          update_rrd("Photovoltaik_P_AC3","",$AC3_P,"GAUGE");
          # Zyklischer Aufruf anpassen
          if ($WR_Status eq 'Aus') {
           $plugin_info{$plugname.'_cycle'}  = 300; 
           }
          else {
           $plugin_info{$plugname.'_cycle'}  = 60; 
           }
          return ('WR Status: ' . $WR_Status . '   Cycle: ' . $plugin_info{$plugname.'_cycle'});
          Endlich umgezogen. Fertig? Noch lange nicht... ;-)

          Kommentar


            #35
            Danke Hauke für deine Mühe!
            Freu mich schon aufs testen, wenn ich in etwa einem Monat meine PV am Dach habe mit dem Kostal WR!
            lg Gerry
            hier gehts zum neuen PEAKnx Touchpanel (designed für die Gira UP Dose) + PEAKnx Controlmicro 8" ! http://www.peaknx.com

            Kommentar


              #36
              Hauke, auch von mir danke für das Plugin, ich bekomme Anfang April auch eine Photovoltaik-Anlage mit Kostal Wechselrichter.

              Hättest du etwas dagegen, wenn ich das Plugin ins SVN stelle?

              Kommentar


                #37
                Kannst du gerne tun, ich freu' mich wenn ich auch mal was beisteuern kann. Hab mich mit dem SVN noch nicht beschäftigt, sonst hätt' ich es vielleicht selbst schon getan.

                Gruß,
                Hauke
                Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                Kommentar


                  #38
                  Super, ich habs gerade hochgeladen. Danke dir!

                  Kommentar


                    #39
                    Hi,
                    habt ihr den Wiregate dann auch als Monitoring Gerät für euer PV Anlage bei der Steuer als Ausgaben angesetzt und ging das durch? Währe doch super interresant für viele schon allein um die MWSt wieder zurück zu bekommen :-)
                    Viele Grüsse
                    Jürgen

                    Kommentar


                      #40
                      Rechtlich sollte das Ok gehen, bin weder Jurist noch..
                      Aber es ist damit ein Teil der Anlage, ob/wieviele von den 500 RRD's oder Plugins nun anderweitig benutzt werden - ausser mir werden das nur wenige bezeugen können

                      Es geht ja um die relevanz - und die sähe ich in diesem Fall 100% gegeben..

                      Makki
                      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                      -> Bitte KEINE PNs!

                      Kommentar


                        #41
                        Zitat von heckmannju Beitrag anzeigen
                        Hi,
                        habt ihr den Wiregate dann auch als Monitoring Gerät für euer PV Anlage bei der Steuer als Ausgaben angesetzt und ging das durch? Währe doch super interresant für viele schon allein um die MWSt wieder zurück zu bekommen :-)
                        Viele Grüsse
                        Jürgen
                        Wenn du das WireGate extra für das Monitorring für die PV-Anlage angeschaltet hast, dann ja.
                        Musst das dem Finanzamt nur passend verkaufen.

                        Gruß
                        lo4dro
                        --
                        Gruß
                        Lothar

                        Kommentar


                          #42
                          Hab ich so gemacht, ging anstandslos durch.
                          Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                          Kommentar


                            #43
                            Hat diese Wiregate Box schon eine eingebaute rs-485 Schnittstelle? Oder muss man die dazukaufen?

                            In dem Thread vom PV Forum habe ich die kompltte doku vom Protokoll gefunden

                            RS485 Protokoll KACO Powador Wechselrichter &bull; Seite 9 &bull; Photovoltaikforum

                            Viele gruesse
                            Jürgen

                            Kommentar


                              #44
                              Wenn ich den Link richtig verstehe, dann muss man sich einen per USB anschließen.

                              Ich selbst habe einen EX-9132 den ich per IP ansprechen kann.
                              Das vereinfacht das ganze dahin, das du keine USB Adapter benötigst und das ganze auch sehr dezentral stehen kann.

                              Gruß
                              lo4dro
                              --
                              Gruß
                              Lothar

                              Kommentar


                                #45
                                Hi,
                                danke für die info ich probier es erstmal mit einem RS232 to RS485 konverter. Dafür habe ich ja schlieslich die Wiregate box gekauft.

                                was für einen Wechselrichter hast du? Wenn du schon was für den Kaco WR hast wäre ich interressiert.

                                Viele Grüsse & Danke
                                Jürgen

                                Kommentar

                                Lädt...
                                X