Ankündigung

Einklappen
Keine Ankündigung bisher.

Anbindung Mastervolt Wechselrichter - Plugin

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

    #31
    Ich versuche mich ende Woche mal am xA9 befehl. Wenn das auch klapt, wäre dann die Kummulierung der 4 Tageszähler an der Reihe. Hat man die, kann man damit auch ein RRD füttern. Dann hätte man auch eine Ertragsstatistik. Danach noch alles mögliche auf den BUS senden und diverse Einstellmöglichkeiten einrichten und fertig ist das Plugin.

    Aber bis da hin dauert es noch etwas
    Gruss Patrik alias swiss

    Kommentar


      #32
      Das klingt ja traumhaft...
      Bei solchen Aussichten warte ich gerne.
      Meinen allergrößten Respekt schon mal an dieser Stelle

      Ich versuche inzwischen mal halbwegs zu verstehen wie das Script im Detail funktioniert. Vielleicht komme ich dann irgendwann auch einmal an den Punkt so etwas (in einfacher) schreiben zu können.
      Gruß -mfd-
      KNX-UF-IconSet since 2011

      Kommentar


        #33
        Hattest du schon Gelegenheit dich mit der xA9 Abfrage zu befassen?
        Gruß -mfd-
        KNX-UF-IconSet since 2011

        Kommentar


          #34
          Leider noch nicht

          Aber ich habe es nicht vergessen Auch wenn mir momentan noch ein bischen der Ansatz fehlt wie ich die Werte vernünftig in ein RRD bekomme... Aber auch da wird mir noch etwas einfallen.

          Ich komme aber wohl erst am Wochenende dazu... Bin momentan wieder relativ gut ausgelastet
          Gruss Patrik alias swiss

          Kommentar


            #35
            Soo...

            Hier mal ein Zwischenstand zum testen. Nun sollte man die Werte auf den KNX bringen und visualisieren können. Wenn das klappt, versuche ich mich noch an den RRD's

            Code:
            # Plugin zum auslesen eines MasterVolt Wechselrichters
            # Version 0.7.1 28.09.2013 BETA
            # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
            # Aufbau moeglichst so, dass man unterhalb der Einstellungen nichts veraendern muss!
            
            
            
            #Erzeuge Variablen fuer die Zuordnung der Werte zu den Gruppenadressen:
            my @WR_GAs;
            
            push @WR_GAs, { id => "0101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
            push @WR_GAs, { id => "0201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
            push @WR_GAs, { id => "1101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
            push @WR_GAs, { id => "1201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
            
            my $ga_ausgangsleistung_gesammt = '';
            
            
            #Pfad zur seriellen Schnittstelle oder dem USB-Seriell-Wandler:
            my $schnittstelle = '/dev/ttyUSB-2-1.2';
            
            #Weitere Variablen die benoetigt werden -> NICHT veraendern!
            my $seriel;
            my $sin; #Serial Input = Empangener Datenstrom
            my $cin; #Counter Input =  Länge des Datenpackets
            my $exit;
            my $reciv;
            my $daten;
            my $ausgangsleistung_total = '';
            
            my $debug=2;
            my $Zaehler = 200;
            
            use Time::Local;
            
            $plugin_info{$plugname.'_cycle'}  = 30;
            
                if(($plugin_info{$plugname.'_time'}+$plugin_info{$plugname.'_cycle'}) >= $plugin_info{$plugname.'_last'}){
                    return;
                }
                $plugin_info{$plugname.'_time'} = time();
            
            use Device::SerialPort;
            
                   $seriel = Device::SerialPort->new($schnittstelle) || die "Kann $schnittstelle nicht öffnen! ($!)\n";
                   $seriel->baudrate(9600);
                   $seriel->parity("none");
                   $seriel->databits(8);
                   $seriel->stopbits(1);
                   if($debug>=1){plugin_log($plugname,'Schnittstelle: ' . $schnittstelle . ' erfolgreich geöffnet')};
            
                   
            foreach my $element (@WR_GAs) {       
                    $daten = $element->{id}."ffffb6000000b6";
                    plugin_log($plugname,'Daten Abrufen: '.$daten);
                    
                my $command = pack("H*",$daten);
                
                $seriel->write($command);
                
                $reciv = '';
                $cin = '';
                $sin = '';
                   
                $|=1;
                my $exit=0;
                while($exit < $Zaehler)
                {
                    ($cin, $sin) = $seriel->read(45);
            
                    if($cin > 0){
                        $sin = unpack "H*", $sin;
                        $reciv .= $sin;
                        $exit=0;
                    }else{
                        $exit++
                    }
                   
                    if($debug>=4){plugin_log($plugname,'reciv-direkt: ' . $sin);}
            
                }#Ende While 
                if($debug>=2){plugin_log($plugname,'reciv-komplet: ' . $reciv);}
            
                my $len = length($data);
                
                if(substr($reciv,0,$len) eq $data){
                    
                    $reciv =~ s/$data//;
                    if($debug>=2){plugin_log($plugname,'reciv gekürzt: ' . $reciv);}
                
                    my @array = map "$_", $reciv =~ /(..)/g;    
                    
                    my $pv_voltage = $array[9] . $array[8];
                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_voltage);}
                    $pv_voltage =  hex($pv_voltage);
                    if($debug>=1){plugin_log($plugname,'PV Spannung: ' . $pv_voltage . 'V');}
                    if($element->{ga_pv_spannung} ne ''){knx_write($element->{ga_pv_spannung},$pv_voltage,9.001);}
            
                    
                    my $pv_ampere = $array[11] . $array[10];
                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_ampere);}
                    $pv_ampere =  hex($pv_ampere)/100;
                    if($debug>=1){plugin_log($plugname,'PV Strom: ' . $pv_ampere . 'A');}
                    if($element->{ga_pv_strom} ne ''){knx_write($element->{ga_pv_strom},$pv_ampere,9.001);}
                    
                    
                    my $pv_frequecy = $array[13] . $array[12];
                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_frequecy);}
                    $pv_frequecy =  hex($pv_frequecy)/100;
                    if($debug>=1){plugin_log($plugname,'PV Frequenz: ' . $pv_frequecy . 'Hz');}
                    if($element->{ga_wr_frequenz} ne ''){knx_write($element->{ga_wr_frequenz},$pv_frequecy,9.001);}
                    
            
                    my $pv_grid_voltage = $array[15] . $array[14];
                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_voltage);}
                    $pv_grid_voltage =  hex($pv_grid_voltage);
                    if($debug>=1){plugin_log($plugname,'PV Ausgangsspannung: ' . $pv_grid_voltage . 'V');}
                    if($element->{ga_wr_spannung} ne ''){knx_write($element->{ga_wr_spannung},$pv_grid_voltage,9.001);}
                    
                    
                    my $pv_grid_power = $array[19] . $array[18];
                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_power);}
                    $pv_grid_power =  hex($pv_grid_power);
                    if($debug>=1){plugin_log($plugname,'PV Ausgangsleistung: ' . $pv_grid_power . 'W');}
                    if($element->{ga_wr_leistung} ne ''){knx_write($element->{ga_wr_leistung},$pv_grid_power,9.001);}
                    $ausgangsleistung_total += $pv_grid_power;
                    
                    
                    my $pv_total_grid_power = $array[22] . $array[21] . $array[20];
                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_total_grid_power);}
                    $pv_total_grid_power =  hex($pv_total_grid_power)*100;
                    if($debug>=1){plugin_log($plugname,'PV total Ausgangsleistung: ' . $pv_total_grid_power . 'kWh');}
                    if($element->{ga_wr_leistung_total} ne ''){knx_write($element->{ga_wr_leistung_total},$pv_total_grid_power,9.001);}
                    
                    my $pv_temp = $array[23];
                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_temp);}
                    $pv_temp =  hex($pv_temp);
                    if($debug>=1){plugin_log($plugname,'PV Temperatur: ' . $pv_temp . '°C');}
                    
                    my $pv_working_time = $array[27] . $array[26] . $array[25] . $array[24];
                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_working_time);}
                    $pv_working_time =  hex($pv_working_time)/60;
                    if($debug>=1){plugin_log($plugname,'PV Betriebsstunden: ' . $pv_working_time . 'h');}
                }else{
                    if($debug>=2){plugin_log($plugname,'Falsche Antwort auf: ' . $data);}
                }
            }
            
            if($ga_ausgangsleistung_gesammt ne ''){knx_write($ga_ausgangsleistung_gesammt,$ausgangsleistung_total,9.001);}
            Gruss Patrik alias swiss

            Kommentar


              #36
              Es ist zunächst dieser Fehler aufgetreten:
              Code:
              2013-09-29 18:54:49.240,Mastervolt-Solar,,0s,Global symbol "$data" requires explicit package name at (eval 2579) line 84.
              Wenn ich Tante Google richtig interpretiert habe fehlt im oberen Abschnitt etwas wie

              Code:
              my $data;
              Nachdem ich das eingebaut habe spuckt das Log jede Menge aus (leider war es schon etwas dunkel für einen Solar-Test...)
              Ich werde das morgen früh nochmal wiederholen.

              Plugin Log:
              Code:
              2013-09-29 18:58:36.528,Mastervolt-Solar,Schnittstelle: /dev/ttyUSB-2-1.2 erfolgreich geöffnet
              2013-09-29 18:58:36.528,Mastervolt-Solar,Daten Abrufen: 0101ffffb6000000b6
              2013-09-29 18:58:36.568,Mastervolt-Solar,reciv-komplet: e9110100e09e30be79f7010100e09e30f5d479010100e09e30b1c425110100e09e309ab812010100e09e30cbb32e110100e09e309c76d2010100e09e30da7701110100e09e309fa302010100e09e30efce6d110100e09e30976fc6010100e09e30b4c62a110100e09e30ce901e010100e09e30a999f2110100e09e30a07ddd010100e09e30027d2f110100e09e308071b1010100e09e30dba732110100e09e307d67a4010100e09e30f3ae51110100e09e30a955be010100e09e30ae9ffd110100e05b0101ffffb6000000b6
              2013-09-29 18:58:36.569,Mastervolt-Solar,reciv gekürzt: e9110100e09e30be79f7010100e09e30f5d479010100e09e30b1c425110100e09e309ab812010100e09e30cbb32e110100e09e309c76d2010100e09e30da7701110100e09e309fa302010100e09e30efce6d110100e09e30976fc6010100e09e30b4c62a110100e09e30ce901e010100e09e30a999f2110100e09e30a07ddd010100e09e30027d2f110100e09e308071b1010100e09e30dba732110100e09e307d67a4010100e09e30f3ae51110100e09e30a955be010100e09e30ae9ffd110100e05b0101ffffb6000000b6
              2013-09-29 18:58:36.572,Mastervolt-Solar,PV Spannung: 63353V
              2013-09-29 18:58:36.583,Mastervolt-Solar,PV Strom: 2.57A
              2013-09-29 18:58:36.592,Mastervolt-Solar,PV Frequenz: 573.44Hz
              2013-09-29 18:58:36.598,Mastervolt-Solar,PV Ausgangsspannung: 12446V
              2013-09-29 18:58:36.606,Mastervolt-Solar,PV Ausgangsleistung: 377W
              2013-09-29 18:58:36.615,Mastervolt-Solar,PV total Ausgangsleistung: 1468006500kWh
              2013-09-29 18:58:36.624,Mastervolt-Solar,PV Temperatur: 158°C
              2013-09-29 18:58:36.625,Mastervolt-Solar,PV Betriebsstunden: 10560790.1333333h
              2013-09-29 18:58:36.625,Mastervolt-Solar,Daten Abrufen: 0201ffffb6000000b6
              2013-09-29 18:58:36.668,Mastervolt-Solar,reciv-komplet: 0201ffffb6000000b6
              2013-09-29 18:58:36.669,Mastervolt-Solar,reciv gekürzt: 0201ffffb6000000b6
              2013-09-29 18:58:36.670,Mastervolt-Solar,PV Spannung: 182V
              2013-09-29 18:58:36.679,Mastervolt-Solar,PV Strom: 0A
              2013-09-29 18:58:36.684,Mastervolt-Solar,PV Frequenz: 0Hz
              2013-09-29 18:58:36.694,Mastervolt-Solar,PV Ausgangsspannung: 0V
              2013-09-29 18:58:36.702,Mastervolt-Solar,PV Ausgangsleistung: 0W
              2013-09-29 18:58:36.711,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
              2013-09-29 18:58:36.720,Mastervolt-Solar,PV Temperatur: 0°C
              2013-09-29 18:58:36.720,Mastervolt-Solar,PV Betriebsstunden: 0h
              2013-09-29 18:58:36.720,Mastervolt-Solar,Daten Abrufen: 1101ffffb6000000b6
              2013-09-29 18:58:36.772,Mastervolt-Solar,reciv-komplet: 1101ffffb6000000b6
              2013-09-29 18:58:36.773,Mastervolt-Solar,reciv gekürzt: 1101ffffb6000000b6
              2013-09-29 18:58:36.773,Mastervolt-Solar,PV Spannung: 182V
              2013-09-29 18:58:36.784,Mastervolt-Solar,PV Strom: 0A
              2013-09-29 18:58:36.788,Mastervolt-Solar,PV Frequenz: 0Hz
              2013-09-29 18:58:36.796,Mastervolt-Solar,PV Ausgangsspannung: 0V
              2013-09-29 18:58:36.805,Mastervolt-Solar,PV Ausgangsleistung: 0W
              2013-09-29 18:58:36.814,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
              2013-09-29 18:58:36.824,Mastervolt-Solar,PV Temperatur: 0°C
              2013-09-29 18:58:36.824,Mastervolt-Solar,PV Betriebsstunden: 0h
              2013-09-29 18:58:36.824,Mastervolt-Solar,Daten Abrufen: 1201ffffb6000000b6
              2013-09-29 18:58:36.864,Mastervolt-Solar,reciv-komplet: 1201ffffb6000000b6
              2013-09-29 18:58:36.864,Mastervolt-Solar,reciv gekürzt: 1201ffffb6000000b6
              2013-09-29 18:58:36.865,Mastervolt-Solar,PV Spannung: 182V
              2013-09-29 18:58:36.876,Mastervolt-Solar,PV Strom: 0A
              2013-09-29 18:58:36.882,Mastervolt-Solar,PV Frequenz: 0Hz
              2013-09-29 18:58:36.891,Mastervolt-Solar,PV Ausgangsspannung: 0V
              2013-09-29 18:58:36.899,Mastervolt-Solar,PV Ausgangsleistung: 0W
              2013-09-29 18:58:36.908,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
              2013-09-29 18:58:36.911,Mastervolt-Solar,PV Temperatur: 0°C
              2013-09-29 18:58:36.912,Mastervolt-Solar,PV Betriebsstunden: 0h
              2013-09-29 18:58:36.929,Mastervolt-Solar,4,0.6s,
              2013-09-29 18:59:37.592,Mastervolt-Solar,Schnittstelle: /dev/ttyUSB-2-1.2 erfolgreich geöffnet
              2013-09-29 18:59:37.592,Mastervolt-Solar,Daten Abrufen: 0101ffffb6000000b6
              2013-09-29 18:59:37.631,Mastervolt-Solar,reciv-komplet: 0101ffffb6000000b6
              2013-09-29 18:59:37.632,Mastervolt-Solar,reciv gekürzt: 0101ffffb6000000b6
              2013-09-29 18:59:37.632,Mastervolt-Solar,PV Spannung: 182V
              2013-09-29 18:59:37.642,Mastervolt-Solar,PV Strom: 0A
              2013-09-29 18:59:37.652,Mastervolt-Solar,PV Frequenz: 0Hz
              2013-09-29 18:59:37.657,Mastervolt-Solar,PV Ausgangsspannung: 0V
              2013-09-29 18:59:37.666,Mastervolt-Solar,PV Ausgangsleistung: 0W
              2013-09-29 18:59:37.675,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
              2013-09-29 18:59:37.684,Mastervolt-Solar,PV Temperatur: 0°C
              2013-09-29 18:59:37.684,Mastervolt-Solar,PV Betriebsstunden: 0h
              2013-09-29 18:59:37.684,Mastervolt-Solar,Daten Abrufen: 0201ffffb6000000b6
              2013-09-29 18:59:37.783,Mastervolt-Solar,reciv-komplet: 0201ffffb6000000b6
              2013-09-29 18:59:37.783,Mastervolt-Solar,reciv gekürzt: 0201ffffb6000000b6
              2013-09-29 18:59:37.784,Mastervolt-Solar,PV Spannung: 182V
              2013-09-29 18:59:37.792,Mastervolt-Solar,PV Strom: 0A
              2013-09-29 18:59:37.798,Mastervolt-Solar,PV Frequenz: 0Hz
              2013-09-29 18:59:37.814,Mastervolt-Solar,PV Ausgangsspannung: 0V
              2013-09-29 18:59:37.821,Mastervolt-Solar,PV Ausgangsleistung: 0W
              2013-09-29 18:59:37.840,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
              2013-09-29 18:59:37.843,Mastervolt-Solar,PV Temperatur: 0°C
              2013-09-29 18:59:37.843,Mastervolt-Solar,PV Betriebsstunden: 0h
              2013-09-29 18:59:37.843,Mastervolt-Solar,Daten Abrufen: 1101ffffb6000000b6
              2013-09-29 18:59:37.915,Mastervolt-Solar,reciv-komplet: 1101ffffb6000000b6
              2013-09-29 18:59:37.915,Mastervolt-Solar,reciv gekürzt: 1101ffffb6000000b6
              2013-09-29 18:59:37.915,Mastervolt-Solar,PV Spannung: 182V
              2013-09-29 18:59:37.940,Mastervolt-Solar,PV Strom: 0A
              2013-09-29 18:59:37.944,Mastervolt-Solar,PV Frequenz: 0Hz
              2013-09-29 18:59:37.951,Mastervolt-Solar,PV Ausgangsspannung: 0V
              2013-09-29 18:59:37.960,Mastervolt-Solar,PV Ausgangsleistung: 0W
              2013-09-29 18:59:37.971,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
              2013-09-29 18:59:37.986,Mastervolt-Solar,PV Temperatur: 0°C
              2013-09-29 18:59:37.986,Mastervolt-Solar,PV Betriebsstunden: 0h
              2013-09-29 18:59:37.986,Mastervolt-Solar,Daten Abrufen: 1201ffffb6000000b6
              2013-09-29 18:59:38.066,Mastervolt-Solar,reciv-komplet: 1201ffffb6000000b6
              2013-09-29 18:59:38.066,Mastervolt-Solar,reciv gekürzt: 1201ffffb6000000b6
              2013-09-29 18:59:38.067,Mastervolt-Solar,PV Spannung: 182V
              2013-09-29 18:59:38.071,Mastervolt-Solar,PV Strom: 0A
              2013-09-29 18:59:38.087,Mastervolt-Solar,PV Frequenz: 0Hz
              2013-09-29 18:59:38.095,Mastervolt-Solar,PV Ausgangsspannung: 0V
              2013-09-29 18:59:38.114,Mastervolt-Solar,PV Ausgangsleistung: 0W
              2013-09-29 18:59:38.125,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
              2013-09-29 18:59:38.185,Mastervolt-Solar,PV Temperatur: 0°C
              2013-09-29 18:59:38.186,Mastervolt-Solar,PV Betriebsstunden: 0h
              2013-09-29 18:59:38.203,Mastervolt-Solar,4,0.6s,
              Die GA's werden anscheinend richtig geschrieben, zumindest sind die Spannungen plausibel.

              Code:
              2187,2013-09-29 19:13:00.397,vom Bus,,Low,0.0.0,-,7/2/0,-,6,Schreiben,2 Byte,00 00 | 0
              2186,2013-09-29 19:13:00.394,vom Bus,,Low,0.0.0,-,7/2/63,-,6,Schreiben,2 Byte,00 00 | 0
              2184,2013-09-29 19:13:00.383,vom Bus,,Low,0.0.0,-,7/2/53,-,6,Schreiben,2 Byte,00 00 | 0
              2183,2013-09-29 19:13:00.376,vom Bus,,Low,0.0.0,-,7/2/43,-,6,Schreiben,2 Byte,00 00 | 0
              2182,2013-09-29 19:13:00.370,vom Bus,,Low,0.0.0,-,7/2/23,-,6,Schreiben,2 Byte,00 00 | 0
              2181,2013-09-29 19:13:00.364,vom Bus,,Low,0.0.0,-,7/2/33,-,6,Schreiben,2 Byte,00 00 | 0
              2180,2013-09-29 19:13:00.355,vom Bus,,Low,0.0.0,-,7/2/13,-,6,Schreiben,2 Byte,"24 71 | 181,92"
              2179,2013-09-29 19:13:00.328,vom Bus,,Low,0.0.0,-,7/2/62,-,6,Schreiben,2 Byte,00 00 | 0
              2178,2013-09-29 19:13:00.312,vom Bus,,Low,0.0.0,-,7/2/52,-,6,Schreiben,2 Byte,00 00 | 0
              2177,2013-09-29 19:13:00.299,vom Bus,,Low,0.0.0,-,7/2/32,-,6,Schreiben,2 Byte,00 00 | 0
              2176,2013-09-29 19:13:00.292,vom Bus,,Low,0.0.0,-,7/2/42,-,6,Schreiben,2 Byte,00 00 | 0
              2175,2013-09-29 19:13:00.258,vom Bus,,Low,0.0.0,-,7/2/22,-,6,Schreiben,2 Byte,00 00 | 0
              2174,2013-09-29 19:13:00.226,vom Bus,,Low,0.0.0,-,7/2/12,-,6,Schreiben,2 Byte,"24 71 | 181,92"
              2173,2013-09-29 19:13:00.209,vom Bus,,Low,0.0.0,-,7/2/61,-,6,Schreiben,2 Byte,00 00 | 0
              2172,2013-09-29 19:13:00.203,vom Bus,,Low,0.0.0,-,7/2/41,-,6,Schreiben,2 Byte,00 00 | 0
              2171,2013-09-29 19:13:00.196,vom Bus,,Low,0.0.0,-,7/2/51,-,6,Schreiben,2 Byte,00 00 | 0
              2170,2013-09-29 19:13:00.146,vom Bus,,Low,0.0.0,-,7/2/31,-,6,Schreiben,2 Byte,00 00 | 0
              2169,2013-09-29 19:13:00.133,vom Bus,,Low,0.0.0,-,7/2/21,-,6,Schreiben,2 Byte,00 00 | 0
              2168,2013-09-29 19:13:00.119,vom Bus,,Low,0.0.0,-,7/2/11,-,6,Schreiben,2 Byte,"24 71 | 181,92"
              2167,2013-09-29 19:13:00.096,vom Bus,,Low,0.0.0,-,7/2/60,-,6,Schreiben,2 Byte,00 00 | 0
              2166,2013-09-29 19:13:00.079,vom Bus,,Low,0.0.0,-,7/2/50,-,6,Schreiben,2 Byte,00 00 | 0
              2165,2013-09-29 19:13:00.049,vom Bus,,Low,0.0.0,-,7/2/40,-,6,Schreiben,2 Byte,00 00 | 0
              2164,2013-09-29 19:13:00.037,vom Bus,,Low,0.0.0,-,7/2/30,-,6,Schreiben,2 Byte,00 00 | 0
              2163,2013-09-29 19:13:00.017,vom Bus,,Low,0.0.0,-,7/2/20,-,6,Schreiben,2 Byte,00 00 | 0
              2162,2013-09-29 19:13:00.004,vom Bus,,Low,0.0.0,-,7/2/10,-,6,Schreiben,2 Byte,"24 71 | 181,92"
              Gruß -mfd-
              KNX-UF-IconSet since 2011

              Kommentar


                #37
                Ups...

                $data sollte gar nicht mehr vorkommen... Ich habe den Fehler mal korrigiert. Jetzt sollten die Werte wieder korrekt sein

                Code:
                # Plugin zum auslesen eines MasterVolt Wechselrichters
                # Version 0.7.2 29.09.2013 BETA
                # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                # Aufbau moeglichst so, dass man unterhalb der Einstellungen nichts veraendern muss!
                
                 
                
                ####################
                ###Einstellungen:###
                ####################
                my @WR_GAs;
                
                #Erzeuge Variablen fuer die Zuordnung der Werte zu den Gruppenadressen:
                
                push @WR_GAs, { id => "0101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                push @WR_GAs, { id => "0201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                push @WR_GAs, { id => "1101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                push @WR_GAs, { id => "1201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                
                my $ga_ausgangsleistung_gesammt = ''; #DPT:9.001
                
                
                #Pfad zur seriellen Schnittstelle oder dem USB-Seriell-Wandler:
                my $schnittstelle = '/dev/ttyUSB-2-1.2';
                
                 
                
                ######################
                ##ENDE Einstellungen##
                ######################
                
                
                #Ab hier nichts mehr aendern.
                #Hauptverarbeitung
                
                #Weitere Variablen die benoetigt werden -> NICHT veraendern!
                my $seriel;
                my $sin; #Serial Input = Empangener Datenstrom
                my $cin; #Counter Input =  Länge des Datenpackets
                my $exit;
                my $reciv;
                my $daten;
                my $ausgangsleistung_total = '';
                
                my $debug=2;
                my $Zaehler = 200;
                
                use Time::Local;
                
                $plugin_info{$plugname.'_cycle'}  = 30;
                
                    if(($plugin_info{$plugname.'_time'}+$plugin_info{$plugname.'_cycle'}) >= $plugin_info{$plugname.'_last'}){
                        return;
                    }
                    $plugin_info{$plugname.'_time'} = time();
                
                use Device::SerialPort;
                
                       $seriel = Device::SerialPort->new($schnittstelle) || die "Kann $schnittstelle nicht öffnen! ($!)\n";
                       $seriel->baudrate(9600);
                       $seriel->parity("none");
                       $seriel->databits(8);
                       $seriel->stopbits(1);
                       if($debug>=1){plugin_log($plugname,'Schnittstelle: ' . $schnittstelle . ' erfolgreich geöffnet')};
                
                       
                foreach my $element (@WR_GAs) {       
                        $daten = $element->{id}."ffffb6000000b6";
                        plugin_log($plugname,'Daten Abrufen: '.$daten);
                        
                    my $command = pack("H*",$daten);
                    
                    $seriel->write($command);
                    
                    $reciv = '';
                    $cin = '';
                    $sin = '';
                       
                    $|=1;
                    my $exit=0;
                    while($exit < $Zaehler)
                    {
                        ($cin, $sin) = $seriel->read(45);
                
                        if($cin > 0){
                            $sin = unpack "H*", $sin;
                            $reciv .= $sin;
                            $exit=0;
                        }else{
                            $exit++
                        }
                       
                        if($debug>=4){plugin_log($plugname,'reciv-direkt: ' . $sin);}
                
                    }#Ende While 
                    if($debug>=2){plugin_log($plugname,'reciv-komplet: ' . $reciv);}
                
                    my $len = length($daten);
                    
                    if(substr($reciv,0,$len) eq $daten){
                        
                        $reciv =~ s/$daten//;
                        if($debug>=2){plugin_log($plugname,'reciv gekürzt: ' . $reciv);}
                    
                        my @array = map "$_", $reciv =~ /(..)/g;    
                        
                        my $pv_voltage = $array[9] . $array[8];
                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_voltage);}
                        $pv_voltage =  hex($pv_voltage);
                        if($debug>=1){plugin_log($plugname,'PV Spannung: ' . $pv_voltage . 'V');}
                        if($element->{ga_pv_spannung} ne ''){knx_write($element->{ga_pv_spannung},$pv_voltage,9.001);}
                
                        
                        my $pv_ampere = $array[11] . $array[10];
                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_ampere);}
                        $pv_ampere =  hex($pv_ampere)/100;
                        if($debug>=1){plugin_log($plugname,'PV Strom: ' . $pv_ampere . 'A');}
                        if($element->{ga_pv_strom} ne ''){knx_write($element->{ga_pv_strom},$pv_ampere,9.001);}
                        
                        
                        my $pv_frequecy = $array[13] . $array[12];
                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_frequecy);}
                        $pv_frequecy =  hex($pv_frequecy)/100;
                        if($debug>=1){plugin_log($plugname,'PV Frequenz: ' . $pv_frequecy . 'Hz');}
                        if($element->{ga_wr_frequenz} ne ''){knx_write($element->{ga_wr_frequenz},$pv_frequecy,9.001);}
                        
                
                        my $pv_grid_voltage = $array[15] . $array[14];
                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_voltage);}
                        $pv_grid_voltage =  hex($pv_grid_voltage);
                        if($debug>=1){plugin_log($plugname,'PV Ausgangsspannung: ' . $pv_grid_voltage . 'V');}
                        if($element->{ga_wr_spannung} ne ''){knx_write($element->{ga_wr_spannung},$pv_grid_voltage,9.001);}
                        
                        
                        my $pv_grid_power = $array[19] . $array[18];
                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_power);}
                        $pv_grid_power =  hex($pv_grid_power);
                        if($debug>=1){plugin_log($plugname,'PV Ausgangsleistung: ' . $pv_grid_power . 'W');}
                        if($element->{ga_wr_leistung} ne ''){knx_write($element->{ga_wr_leistung},$pv_grid_power,9.001);}
                        $ausgangsleistung_total += $pv_grid_power;
                        
                        
                        my $pv_total_grid_power = $array[22] . $array[21] . $array[20];
                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_total_grid_power);}
                        $pv_total_grid_power =  hex($pv_total_grid_power)*100;
                        if($debug>=1){plugin_log($plugname,'PV total Ausgangsleistung: ' . $pv_total_grid_power . 'kWh');}
                        if($element->{ga_wr_leistung_total} ne ''){knx_write($element->{ga_wr_leistung_total},$pv_total_grid_power,9.001);}
                        
                        my $pv_temp = $array[23];
                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_temp);}
                        $pv_temp =  hex($pv_temp);
                        if($debug>=1){plugin_log($plugname,'PV Temperatur: ' . $pv_temp . '°C');}
                        
                        my $pv_working_time = $array[27] . $array[26] . $array[25] . $array[24];
                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_working_time);}
                        $pv_working_time =  hex($pv_working_time)/60;
                        if($debug>=1){plugin_log($plugname,'PV Betriebsstunden: ' . $pv_working_time . 'h');}
                    }else{
                        if($debug>=2){plugin_log($plugname,'Falsche Antwort auf: ' . $daten);}
                    }
                }
                
                if($ga_ausgangsleistung_gesammt ne ''){knx_write($ga_ausgangsleistung_gesammt,$ausgangsleistung_total,9.001);}
                Gruss Patrik alias swiss

                Kommentar


                  #38
                  Es scheint als ob jetzt nur die ID 0101 ankommt. Werte sehen aber sehr gut aus.
                  Plugin Log
                  Code:
                  2013-09-30 09:19:04.124,Mastervolt-Solar,Schnittstelle: /dev/ttyUSB-2-1.2 erfolgreich geöffnet
                  2013-09-30 09:19:04.125,Mastervolt-Solar,Daten Abrufen: 0101ffffb6000000b6
                  2013-09-30 09:19:04.196,Mastervolt-Solar,reciv-komplet: 0101ffffb6000000b6ffff0101b6ee0080cb0070008813ec005a00d200aa271326e0202200002563
                  2013-09-30 09:19:04.196,Mastervolt-Solar,reciv gekürzt: ffff0101b6ee0080cb0070008813ec005a00d200aa271326e0202200002563
                  2013-09-30 09:19:04.197,Mastervolt-Solar,PV Spannung: 203V
                  2013-09-30 09:19:04.209,Mastervolt-Solar,PV Strom: 1.12A
                  2013-09-30 09:19:04.218,Mastervolt-Solar,PV Frequenz: 50Hz
                  2013-09-30 09:19:04.222,Mastervolt-Solar,PV Ausgangsspannung: 236V
                  2013-09-30 09:19:04.230,Mastervolt-Solar,PV Ausgangsleistung: 210W
                  2013-09-30 09:19:04.240,Mastervolt-Solar,PV total Ausgangsleistung: 125533800kWh
                  2013-09-30 09:19:04.248,Mastervolt-Solar,PV Temperatur: 38°C
                  2013-09-30 09:19:04.248,Mastervolt-Solar,PV Betriebsstunden: 37277.3333333333h
                  2013-09-30 09:19:04.248,Mastervolt-Solar,Daten Abrufen: 0201ffffb6000000b6
                  2013-09-30 09:19:04.321,Mastervolt-Solar,reciv-komplet: 0201ffffb6000000b6
                  2013-09-30 09:19:04.321,Mastervolt-Solar,reciv gekürzt: 
                  2013-09-30 09:19:04.322,Mastervolt-Solar,PV Spannung: 0V
                  2013-09-30 09:19:04.332,Mastervolt-Solar,PV Strom: 0A
                  2013-09-30 09:19:04.341,Mastervolt-Solar,PV Frequenz: 0Hz
                  2013-09-30 09:19:04.345,Mastervolt-Solar,PV Ausgangsspannung: 0V
                  2013-09-30 09:19:04.362,Mastervolt-Solar,PV Ausgangsleistung: 0W
                  2013-09-30 09:19:04.370,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
                  2013-09-30 09:19:04.386,Mastervolt-Solar,PV Temperatur: 0°C
                  2013-09-30 09:19:04.386,Mastervolt-Solar,PV Betriebsstunden: 0h
                  2013-09-30 09:19:04.386,Mastervolt-Solar,Daten Abrufen: 1101ffffb6000000b6
                  2013-09-30 09:19:04.424,Mastervolt-Solar,reciv-komplet: 1101ffffb6000000b6
                  2013-09-30 09:19:04.424,Mastervolt-Solar,reciv gekürzt: 
                  2013-09-30 09:19:04.425,Mastervolt-Solar,PV Spannung: 0V
                  2013-09-30 09:19:04.437,Mastervolt-Solar,PV Strom: 0A
                  2013-09-30 09:19:04.440,Mastervolt-Solar,PV Frequenz: 0Hz
                  2013-09-30 09:19:04.450,Mastervolt-Solar,PV Ausgangsspannung: 0V
                  2013-09-30 09:19:04.458,Mastervolt-Solar,PV Ausgangsleistung: 0W
                  2013-09-30 09:19:04.466,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
                  2013-09-30 09:19:04.474,Mastervolt-Solar,PV Temperatur: 0°C
                  2013-09-30 09:19:04.475,Mastervolt-Solar,PV Betriebsstunden: 0h
                  2013-09-30 09:19:04.475,Mastervolt-Solar,Daten Abrufen: 1201ffffb6000000b6
                  2013-09-30 09:19:04.522,Mastervolt-Solar,reciv-komplet: 1201ffffb6000000b6
                  2013-09-30 09:19:04.523,Mastervolt-Solar,reciv gekürzt: 
                  2013-09-30 09:19:04.523,Mastervolt-Solar,PV Spannung: 0V
                  2013-09-30 09:19:04.533,Mastervolt-Solar,PV Strom: 0A
                  2013-09-30 09:19:04.541,Mastervolt-Solar,PV Frequenz: 0Hz
                  2013-09-30 09:19:04.546,Mastervolt-Solar,PV Ausgangsspannung: 0V
                  2013-09-30 09:19:04.555,Mastervolt-Solar,PV Ausgangsleistung: 0W
                  2013-09-30 09:19:04.564,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
                  2013-09-30 09:19:04.572,Mastervolt-Solar,PV Temperatur: 0°C
                  2013-09-30 09:19:04.573,Mastervolt-Solar,PV Betriebsstunden: 0h
                  2013-09-30 09:19:04.617,Mastervolt-Solar,4,0.6s,
                  GA's
                  (Sollte 7/2/60 nicht ein positiver Wert sein??)
                  Code:
                  #,Zeit,Dienst,Flags ,Prio,Quelladresse,Quelle,Zieladresse,Ziel,Rout,Typ,DPT,Info
                  149,2013-09-30 09:19:02.118,vom Bus,,Low,0.0.0,-,7/2/10,-,6,Schreiben,2 Byte,"24 F4 | 202,88"
                  150,2013-09-30 09:19:02.196,vom Bus,,Low,0.0.0,-,7/2/20,-,6,Schreiben,2 Byte,"00 70 | 1,12"
                  151,2013-09-30 09:19:02.272,vom Bus,,Low,0.0.0,-,7/2/30,-,6,Schreiben,2 Byte,14 E2 | 50
                  152,2013-09-30 09:19:02.349,vom Bus,,Low,0.0.0,-,7/2/40,-,6,Schreiben,2 Byte,25 C3 | 236
                  153,2013-09-30 09:19:02.427,vom Bus,,Low,0.0.0,-,7/2/50,-,6,Schreiben,2 Byte,"25 20 | 209,92"
                  154,2013-09-30 09:19:02.519,vom Bus,,Low,0.0.0,-,7/2/60,-,6,Schreiben,2 Byte,"BD D8 | -706,56"
                  155,2013-09-30 09:19:02.591,vom Bus,,Low,0.0.0,-,7/2/11,-,6,Schreiben,2 Byte,00 00 | 0
                  156,2013-09-30 09:19:02.663,vom Bus,,Low,0.0.0,-,7/2/21,-,6,Schreiben,2 Byte,00 00 | 0
                  157,2013-09-30 09:19:02.737,vom Bus,,Low,0.0.0,-,7/2/31,-,6,Schreiben,2 Byte,00 00 | 0
                  158,2013-09-30 09:19:02.809,vom Bus,,Low,0.0.0,-,7/2/41,-,6,Schreiben,2 Byte,00 00 | 0
                  159,2013-09-30 09:19:02.887,vom Bus,,Low,0.0.0,-,7/2/51,-,6,Schreiben,2 Byte,00 00 | 0
                  160,2013-09-30 09:19:02.960,vom Bus,,Low,0.0.0,-,7/2/61,-,6,Schreiben,2 Byte,00 00 | 0
                  161,2013-09-30 09:19:03.033,vom Bus,,Low,0.0.0,-,7/2/12,-,6,Schreiben,2 Byte,00 00 | 0
                  162,2013-09-30 09:19:03.105,vom Bus,,Low,0.0.0,-,7/2/22,-,6,Schreiben,2 Byte,00 00 | 0
                  163,2013-09-30 09:19:03.190,vom Bus,,Low,0.0.0,-,7/2/32,-,6,Schreiben,2 Byte,00 00 | 0
                  164,2013-09-30 09:19:03.262,vom Bus,,Low,0.0.0,-,7/2/42,-,6,Schreiben,2 Byte,00 00 | 0
                  165,2013-09-30 09:19:03.334,vom Bus,,Low,0.0.0,-,7/2/52,-,6,Schreiben,2 Byte,00 00 | 0
                  166,2013-09-30 09:19:03.407,vom Bus,,Low,0.0.0,-,7/2/62,-,6,Schreiben,2 Byte,00 00 | 0
                  167,2013-09-30 09:19:03.479,vom Bus,,Low,0.0.0,-,7/2/13,-,6,Schreiben,2 Byte,00 00 | 0
                  168,2013-09-30 09:19:03.553,vom Bus,,Low,0.0.0,-,7/2/23,-,6,Schreiben,2 Byte,00 00 | 0
                  169,2013-09-30 09:19:03.625,vom Bus,,Low,0.0.0,-,7/2/33,-,6,Schreiben,2 Byte,00 00 | 0
                  170,2013-09-30 09:19:03.697,vom Bus,,Low,0.0.0,-,7/2/43,-,6,Schreiben,2 Byte,00 00 | 0
                  171,2013-09-30 09:19:03.769,vom Bus,,Low,0.0.0,-,7/2/53,-,6,Schreiben,2 Byte,00 00 | 0
                  172,2013-09-30 09:19:03.841,vom Bus,,Low,0.0.0,-,7/2/63,-,6,Schreiben,2 Byte,00 00 | 0
                  173,2013-09-30 09:19:03.913,vom Bus,,Low,0.0.0,-,7/2/0,-,6,Schreiben,2 Byte,"25 20 | 209,92"
                  Gruß -mfd-
                  KNX-UF-IconSet since 2011

                  Kommentar


                    #39
                    Du hast recht. Ich habe die Checksummenberechnung vergessen. Die Checksumme habe ich anfangs zum testen statsch eingetragen und stimmt natürlich nur für 0101. Jetzt sollte die Checksumme automatisch korrekt berechnet werden und auch die Abfrage der anderen Wechselrichtersegmente klappten

                    Code:
                    # Plugin zum auslesen eines MasterVolt Wechselrichters
                    # Version 0.7.3 30.09.2013 BETA
                    # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                    # Aufbau moeglichst so, dass man unterhalb der Einstellungen nichts veraendern muss!
                    
                     
                    
                    ####################
                    ###Einstellungen:###
                    ####################
                    my @WR_GAs;
                    
                    #Erzeuge Variablen fuer die Zuordnung der Werte zu den Gruppenadressen:
                    
                    push @WR_GAs, { id => "0101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                    push @WR_GAs, { id => "0201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                    push @WR_GAs, { id => "1101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                    push @WR_GAs, { id => "1201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                    
                    my $ga_ausgangsleistung_gesammt = ''; #DPT:9.001
                    
                    
                    #Pfad zur seriellen Schnittstelle oder dem USB-Seriell-Wandler:
                    my $schnittstelle = '/dev/ttyUSB-2-1.2';
                    
                     
                    
                    ######################
                    ##ENDE Einstellungen##
                    ######################
                    
                    
                    #Ab hier nichts mehr aendern.
                    #Hauptverarbeitung
                    
                    #Weitere Variablen die benoetigt werden -> NICHT veraendern!
                    my $seriel;
                    my $sin; #Serial Input = Empangener Datenstrom
                    my $cin; #Counter Input =  Länge des Datenpackets
                    my $exit;
                    my $reciv;
                    my $daten;
                    my $ausgangsleistung_total = '';
                    
                    my $debug=2;
                    my $Zaehler = 200;
                    
                    use Time::Local;
                    
                    $plugin_info{$plugname.'_cycle'}  = 30;
                    
                        if(($plugin_info{$plugname.'_time'}+$plugin_info{$plugname.'_cycle'}) >= $plugin_info{$plugname.'_last'}){
                            return;
                        }
                        $plugin_info{$plugname.'_time'} = time();
                    
                    use Device::SerialPort;
                    
                           $seriel = Device::SerialPort->new($schnittstelle) || die "Kann $schnittstelle nicht öffnen! ($!)\n";
                           $seriel->baudrate(9600);
                           $seriel->parity("none");
                           $seriel->databits(8);
                           $seriel->stopbits(1);
                           if($debug>=1){plugin_log($plugname,'Schnittstelle: ' . $schnittstelle . ' erfolgreich geöffnet')};
                    
                           
                    foreach my $element (@WR_GAs) {
                    
                            $daten = $element->{id}."ffffb6000000";
                            my @checksum_array = map "$_", $daten =~ /(..)/g;
                            my $checksum;
                            
                            foreach my $checksum_element (@checksum_array) {
                                $checksum += hex($checksum_element);
                            }
                            
                            $checksum = substr($checksum,-3,2);
                            
                            $daten .= $checksum;
                            
                            plugin_log($plugname,'Daten Abrufen: '.$daten);
                            
                        my $command = pack("H*",$daten);
                        
                        $seriel->write($command);
                        
                        $reciv = '';
                        $cin = '';
                        $sin = '';
                           
                        $|=1;
                        my $exit=0;
                        while($exit < $Zaehler)
                        {
                            ($cin, $sin) = $seriel->read(45);
                    
                            if($cin > 0){
                                $sin = unpack "H*", $sin;
                                $reciv .= $sin;
                                $exit=0;
                            }else{
                                $exit++
                            }
                           
                            if($debug>=4){plugin_log($plugname,'reciv-direkt: ' . $sin);}
                    
                        }#Ende While 
                        if($debug>=2){plugin_log($plugname,'reciv-komplet: ' . $reciv);}
                    
                        my $len = length($daten);
                        
                        if(substr($reciv,0,$len) eq $daten){
                            
                            $reciv =~ s/$daten//;
                            if($debug>=2){plugin_log($plugname,'reciv gekürzt: ' . $reciv);}
                        
                            my @array = map "$_", $reciv =~ /(..)/g;    
                            
                            my $pv_voltage = $array[9] . $array[8];
                            if($debug>=3){plugin_log($plugname,'substr: ' . $pv_voltage);}
                            $pv_voltage =  hex($pv_voltage);
                            if($debug>=1){plugin_log($plugname,'PV Spannung: ' . $pv_voltage . 'V');}
                            if($element->{ga_pv_spannung} ne ''){knx_write($element->{ga_pv_spannung},$pv_voltage,9.001);}
                    
                            
                            my $pv_ampere = $array[11] . $array[10];
                            if($debug>=3){plugin_log($plugname,'substr: ' . $pv_ampere);}
                            $pv_ampere =  hex($pv_ampere)/100;
                            if($debug>=1){plugin_log($plugname,'PV Strom: ' . $pv_ampere . 'A');}
                            if($element->{ga_pv_strom} ne ''){knx_write($element->{ga_pv_strom},$pv_ampere,9.001);}
                            
                            
                            my $pv_frequecy = $array[13] . $array[12];
                            if($debug>=3){plugin_log($plugname,'substr: ' . $pv_frequecy);}
                            $pv_frequecy =  hex($pv_frequecy)/100;
                            if($debug>=1){plugin_log($plugname,'PV Frequenz: ' . $pv_frequecy . 'Hz');}
                            if($element->{ga_wr_frequenz} ne ''){knx_write($element->{ga_wr_frequenz},$pv_frequecy,9.001);}
                            
                    
                            my $pv_grid_voltage = $array[15] . $array[14];
                            if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_voltage);}
                            $pv_grid_voltage =  hex($pv_grid_voltage);
                            if($debug>=1){plugin_log($plugname,'PV Ausgangsspannung: ' . $pv_grid_voltage . 'V');}
                            if($element->{ga_wr_spannung} ne ''){knx_write($element->{ga_wr_spannung},$pv_grid_voltage,9.001);}
                            
                            
                            my $pv_grid_power = $array[19] . $array[18];
                            if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_power);}
                            $pv_grid_power =  hex($pv_grid_power);
                            if($debug>=1){plugin_log($plugname,'PV Ausgangsleistung: ' . $pv_grid_power . 'W');}
                            if($element->{ga_wr_leistung} ne ''){knx_write($element->{ga_wr_leistung},$pv_grid_power,9.001);}
                            $ausgangsleistung_total += $pv_grid_power;
                            
                            
                            my $pv_total_grid_power = $array[22] . $array[21] . $array[20];
                            if($debug>=3){plugin_log($plugname,'substr: ' . $pv_total_grid_power);}
                            $pv_total_grid_power =  hex($pv_total_grid_power)*100;
                            if($debug>=1){plugin_log($plugname,'PV total Ausgangsleistung: ' . $pv_total_grid_power . 'kWh');}
                            if($element->{ga_wr_leistung_total} ne ''){knx_write($element->{ga_wr_leistung_total},$pv_total_grid_power,9.001);}
                            
                            my $pv_temp = $array[23];
                            if($debug>=3){plugin_log($plugname,'substr: ' . $pv_temp);}
                            $pv_temp =  hex($pv_temp);
                            if($debug>=1){plugin_log($plugname,'PV Temperatur: ' . $pv_temp . '°C');}
                            
                            my $pv_working_time = $array[27] . $array[26] . $array[25] . $array[24];
                            if($debug>=3){plugin_log($plugname,'substr: ' . $pv_working_time);}
                            $pv_working_time =  hex($pv_working_time)/60;
                            if($debug>=1){plugin_log($plugname,'PV Betriebsstunden: ' . $pv_working_time . 'h');}
                        }else{
                            if($debug>=2){plugin_log($plugname,'Falsche Antwort auf: ' . $daten);}
                        }
                    }
                    
                    if($ga_ausgangsleistung_gesammt ne ''){knx_write($ga_ausgangsleistung_gesammt,$ausgangsleistung_total,9.001);}
                    Gruss Patrik alias swiss

                    Kommentar


                      #40
                      jetzt kommen keine Werte mehr an

                      Code:
                      2013-10-01 12:09:29.381,Mastervolt-Solar,Schnittstelle: /dev/ttyUSB-2-1.2 erfolgreich geöffnet
                      2013-10-01 12:09:29.382,Mastervolt-Solar,Daten Abrufen: 0101ffffb600000069
                      2013-10-01 12:09:29.420,Mastervolt-Solar,reciv-komplet: 0101ffffb600000069
                      2013-10-01 12:09:29.421,Mastervolt-Solar,reciv gekürzt: 
                      2013-10-01 12:09:29.421,Mastervolt-Solar,PV Spannung: 0V
                      2013-10-01 12:09:29.431,Mastervolt-Solar,PV Strom: 0A
                      2013-10-01 12:09:29.440,Mastervolt-Solar,PV Frequenz: 0Hz
                      2013-10-01 12:09:29.443,Mastervolt-Solar,PV Ausgangsspannung: 0V
                      2013-10-01 12:09:29.451,Mastervolt-Solar,PV Ausgangsleistung: 0W
                      2013-10-01 12:09:29.459,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
                      2013-10-01 12:09:29.465,Mastervolt-Solar,PV Temperatur: 0°C
                      2013-10-01 12:09:29.466,Mastervolt-Solar,PV Betriebsstunden: 0h
                      2013-10-01 12:09:29.466,Mastervolt-Solar,Daten Abrufen: 0201ffffb600000069
                      2013-10-01 12:09:29.513,Mastervolt-Solar,reciv-komplet: 0201ffffb600000069
                      2013-10-01 12:09:29.514,Mastervolt-Solar,reciv gekürzt: 
                      2013-10-01 12:09:29.514,Mastervolt-Solar,PV Spannung: 0V
                      2013-10-01 12:09:29.522,Mastervolt-Solar,PV Strom: 0A
                      2013-10-01 12:09:29.526,Mastervolt-Solar,PV Frequenz: 0Hz
                      2013-10-01 12:09:29.533,Mastervolt-Solar,PV Ausgangsspannung: 0V
                      2013-10-01 12:09:29.544,Mastervolt-Solar,PV Ausgangsleistung: 0W
                      2013-10-01 12:09:29.553,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
                      2013-10-01 12:09:29.565,Mastervolt-Solar,PV Temperatur: 0°C
                      2013-10-01 12:09:29.566,Mastervolt-Solar,PV Betriebsstunden: 0h
                      2013-10-01 12:09:29.566,Mastervolt-Solar,Daten Abrufen: 1101ffffb600000071
                      2013-10-01 12:09:29.671,Mastervolt-Solar,reciv-komplet: 1101ffffb600000071
                      2013-10-01 12:09:29.671,Mastervolt-Solar,reciv gekürzt: 
                      2013-10-01 12:09:29.672,Mastervolt-Solar,PV Spannung: 0V
                      2013-10-01 12:09:29.682,Mastervolt-Solar,PV Strom: 0A
                      2013-10-01 12:09:29.689,Mastervolt-Solar,PV Frequenz: 0Hz
                      2013-10-01 12:09:29.694,Mastervolt-Solar,PV Ausgangsspannung: 0V
                      2013-10-01 12:09:29.702,Mastervolt-Solar,PV Ausgangsleistung: 0W
                      2013-10-01 12:09:29.710,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
                      2013-10-01 12:09:29.716,Mastervolt-Solar,PV Temperatur: 0°C
                      2013-10-01 12:09:29.716,Mastervolt-Solar,PV Betriebsstunden: 0h
                      2013-10-01 12:09:29.717,Mastervolt-Solar,Daten Abrufen: 1201ffffb600000071
                      2013-10-01 12:09:29.756,Mastervolt-Solar,reciv-komplet: 1201ffffb600000071
                      2013-10-01 12:09:29.757,Mastervolt-Solar,reciv gekürzt: 
                      2013-10-01 12:09:29.757,Mastervolt-Solar,PV Spannung: 0V
                      2013-10-01 12:09:29.765,Mastervolt-Solar,PV Strom: 0A
                      2013-10-01 12:09:29.774,Mastervolt-Solar,PV Frequenz: 0Hz
                      2013-10-01 12:09:29.778,Mastervolt-Solar,PV Ausgangsspannung: 0V
                      2013-10-01 12:09:29.786,Mastervolt-Solar,PV Ausgangsleistung: 0W
                      2013-10-01 12:09:29.794,Mastervolt-Solar,PV total Ausgangsleistung: 0kWh
                      2013-10-01 12:09:29.800,Mastervolt-Solar,PV Temperatur: 0°C
                      2013-10-01 12:09:29.800,Mastervolt-Solar,PV Betriebsstunden: 0h
                      2013-10-01 12:09:29.823,Mastervolt-Solar,4,0.6s,
                      Edit: Irgendwie scheint das ja an der Checksummenberechnung zu liegen.
                      Ich habe auch versucht zu verstehen was da passiert...

                      -OT-
                      ...aber ich glaube irgendwie braucht man den richtigen Rauchstoff um diese Perl-Einführung ernsthaft lesen und verstehen zu können...
                      -OT Ende-
                      Gruß -mfd-
                      KNX-UF-IconSet since 2011

                      Kommentar


                        #41
                        Ja die Checksumme stimmt hinten und vorne nicht Sehr seltsam...

                        Also doch nochmal mit einigen Debugzeilen um zu sehen was intern geschieht...

                        Code:
                        # Plugin zum auslesen eines MasterVolt Wechselrichters
                        # Version 0.7.4 01.10.2013 BETA
                        # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                        # Aufbau moeglichst so, dass man unterhalb der Einstellungen nichts veraendern muss!
                        
                         
                        
                        ####################
                        ###Einstellungen:###
                        ####################
                        my @WR_GAs;
                        
                        #Erzeuge Variablen fuer die Zuordnung der Werte zu den Gruppenadressen:
                        
                        push @WR_GAs, { id => "0101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                        push @WR_GAs, { id => "0201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                        push @WR_GAs, { id => "1101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                        push @WR_GAs, { id => "1201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                        
                        my $ga_ausgangsleistung_gesammt = ''; #DPT:9.001
                        
                        
                        #Pfad zur seriellen Schnittstelle oder dem USB-Seriell-Wandler:
                        my $schnittstelle = '/dev/ttyUSB-2-1.2';
                        
                         
                        
                        ######################
                        ##ENDE Einstellungen##
                        ######################
                        
                        
                        #Ab hier nichts mehr aendern.
                        #Hauptverarbeitung
                        
                        #Weitere Variablen die benoetigt werden -> NICHT veraendern!
                        my $seriel;
                        my $sin; #Serial Input = Empangener Datenstrom
                        my $cin; #Counter Input =  Länge des Datenpackets
                        my $exit;
                        my $reciv;
                        my $daten;
                        my $ausgangsleistung_total = '';
                        
                        my $debug=2;
                        my $Zaehler = 200;
                        
                        use Time::Local;
                        
                        $plugin_info{$plugname.'_cycle'}  = 30;
                        
                            if(($plugin_info{$plugname.'_time'}+$plugin_info{$plugname.'_cycle'}) >= $plugin_info{$plugname.'_last'}){
                                return;
                            }
                            $plugin_info{$plugname.'_time'} = time();
                        
                        use Device::SerialPort;
                        
                               $seriel = Device::SerialPort->new($schnittstelle) || die "Kann $schnittstelle nicht öffnen! ($!)\n";
                               $seriel->baudrate(9600);
                               $seriel->parity("none");
                               $seriel->databits(8);
                               $seriel->stopbits(1);
                               if($debug>=1){plugin_log($plugname,'Schnittstelle: ' . $schnittstelle . ' erfolgreich geöffnet')};
                        
                               
                        foreach my $element (@WR_GAs) {
                        
                                $daten = $element->{id}."ffffb6000000";
                                my @checksum_array = map "$_", $daten =~ /(..)/g;
                                my $checksum = '';
                                
                                foreach my $checksum_element (@checksum_array) {
                                    if($debug>=2){plugin_log($plugname,'substr_checksum: ' . $checksum_element);}
                                    $checksum += hex($checksum_element);
                                    if($debug>=2){plugin_log($plugname,'checksum_addition: ' . $checksum);}
                                }
                                if($debug>=2){plugin_log($plugname,'checksume_vor_kuerzung: ' . $checksum);}
                                
                                $checksum = pack("H*",$checksum)
                                $checksum = substr($checksum,-3,2);
                                
                                $daten .= $checksum;
                                
                                plugin_log($plugname,'Daten Abrufen: '.$daten);
                                
                            my $command = pack("H*",$daten);
                            
                            $seriel->write($command);
                            
                            $reciv = '';
                            $cin = '';
                            $sin = '';
                               
                            $|=1;
                            my $exit=0;
                            while($exit < $Zaehler)
                            {
                                ($cin, $sin) = $seriel->read(45);
                        
                                if($cin > 0){
                                    $sin = unpack "H*", $sin;
                                    $reciv .= $sin;
                                    $exit=0;
                                }else{
                                    $exit++
                                }
                               
                                if($debug>=4){plugin_log($plugname,'reciv-direkt: ' . $sin);}
                        
                            }#Ende While 
                            if($debug>=2){plugin_log($plugname,'reciv-komplet: ' . $reciv);}
                        
                            my $len = length($daten);
                            
                            if(substr($reciv,0,$len) eq $daten){
                                
                                $reciv =~ s/$daten//;
                                if($debug>=2){plugin_log($plugname,'reciv gekürzt: ' . $reciv);}
                            
                                my @array = map "$_", $reciv =~ /(..)/g;    
                                
                                my $pv_voltage = $array[9] . $array[8];
                                if($debug>=3){plugin_log($plugname,'substr: ' . $pv_voltage);}
                                $pv_voltage =  hex($pv_voltage);
                                if($debug>=1){plugin_log($plugname,'PV Spannung: ' . $pv_voltage . 'V');}
                                if($element->{ga_pv_spannung} ne ''){knx_write($element->{ga_pv_spannung},$pv_voltage,9.001);}
                        
                                
                                my $pv_ampere = $array[11] . $array[10];
                                if($debug>=3){plugin_log($plugname,'substr: ' . $pv_ampere);}
                                $pv_ampere =  hex($pv_ampere)/100;
                                if($debug>=1){plugin_log($plugname,'PV Strom: ' . $pv_ampere . 'A');}
                                if($element->{ga_pv_strom} ne ''){knx_write($element->{ga_pv_strom},$pv_ampere,9.001);}
                                
                                
                                my $pv_frequecy = $array[13] . $array[12];
                                if($debug>=3){plugin_log($plugname,'substr: ' . $pv_frequecy);}
                                $pv_frequecy =  hex($pv_frequecy)/100;
                                if($debug>=1){plugin_log($plugname,'PV Frequenz: ' . $pv_frequecy . 'Hz');}
                                if($element->{ga_wr_frequenz} ne ''){knx_write($element->{ga_wr_frequenz},$pv_frequecy,9.001);}
                                
                        
                                my $pv_grid_voltage = $array[15] . $array[14];
                                if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_voltage);}
                                $pv_grid_voltage =  hex($pv_grid_voltage);
                                if($debug>=1){plugin_log($plugname,'PV Ausgangsspannung: ' . $pv_grid_voltage . 'V');}
                                if($element->{ga_wr_spannung} ne ''){knx_write($element->{ga_wr_spannung},$pv_grid_voltage,9.001);}
                                
                                
                                my $pv_grid_power = $array[19] . $array[18];
                                if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_power);}
                                $pv_grid_power =  hex($pv_grid_power);
                                if($debug>=1){plugin_log($plugname,'PV Ausgangsleistung: ' . $pv_grid_power . 'W');}
                                if($element->{ga_wr_leistung} ne ''){knx_write($element->{ga_wr_leistung},$pv_grid_power,9.001);}
                                $ausgangsleistung_total += $pv_grid_power;
                                
                                
                                my $pv_total_grid_power = $array[22] . $array[21] . $array[20];
                                if($debug>=3){plugin_log($plugname,'substr: ' . $pv_total_grid_power);}
                                $pv_total_grid_power =  hex($pv_total_grid_power)*100;
                                if($debug>=1){plugin_log($plugname,'PV total Ausgangsleistung: ' . $pv_total_grid_power . 'kWh');}
                                if($element->{ga_wr_leistung_total} ne ''){knx_write($element->{ga_wr_leistung_total},$pv_total_grid_power,9.001);}
                                
                                my $pv_temp = $array[23];
                                if($debug>=3){plugin_log($plugname,'substr: ' . $pv_temp);}
                                $pv_temp =  hex($pv_temp);
                                if($debug>=1){plugin_log($plugname,'PV Temperatur: ' . $pv_temp . '°C');}
                                
                                my $pv_working_time = $array[27] . $array[26] . $array[25] . $array[24];
                                if($debug>=3){plugin_log($plugname,'substr: ' . $pv_working_time);}
                                $pv_working_time =  hex($pv_working_time)/60;
                                if($debug>=1){plugin_log($plugname,'PV Betriebsstunden: ' . $pv_working_time . 'h');}
                            }else{
                                if($debug>=2){plugin_log($plugname,'Falsche Antwort auf: ' . $daten);}
                            }
                        }
                        
                        if($ga_ausgangsleistung_gesammt ne ''){knx_write($ga_ausgangsleistung_gesammt,$ausgangsleistung_total,9.001);}
                        Ich bin mir ab und zu auch nicht sicher, welches Kraut das richtige ist, um in Perl zu programmieren
                        Gruss Patrik alias swiss

                        Kommentar


                          #42
                          In Zeile 80 hat ein Semikolon gefehlt (syntax error), das konnte ich zum Glück selbst beheben.

                          Ansonsten diese Ausgabe:
                          Code:
                          2013-10-02 09:26:28.605,Mastervolt-Solar,,0s,syntax error at (eval 15659) line 81, near ")
                          2013-10-02 09:33:51.907,Mastervolt-Solar,Schnittstelle: /dev/ttyUSB-2-1.2 erfolgreich geöffnet
                          2013-10-02 09:33:51.907,Mastervolt-Solar,substr_checksum: 01
                          2013-10-02 09:33:51.908,Mastervolt-Solar,checksum_addition: 1
                          2013-10-02 09:33:51.908,Mastervolt-Solar,substr_checksum: 01
                          2013-10-02 09:33:51.908,Mastervolt-Solar,checksum_addition: 2
                          2013-10-02 09:33:51.908,Mastervolt-Solar,substr_checksum: ff
                          2013-10-02 09:33:51.908,Mastervolt-Solar,checksum_addition: 257
                          2013-10-02 09:33:51.909,Mastervolt-Solar,substr_checksum: ff
                          2013-10-02 09:33:51.909,Mastervolt-Solar,checksum_addition: 512
                          2013-10-02 09:33:51.909,Mastervolt-Solar,substr_checksum: b6
                          2013-10-02 09:33:51.909,Mastervolt-Solar,checksum_addition: 694
                          2013-10-02 09:33:51.910,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:51.910,Mastervolt-Solar,checksum_addition: 694
                          2013-10-02 09:33:51.910,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:51.910,Mastervolt-Solar,checksum_addition: 694
                          2013-10-02 09:33:51.910,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:51.911,Mastervolt-Solar,checksum_addition: 694
                          2013-10-02 09:33:51.911,Mastervolt-Solar,checksume_vor_kuerzung: 694
                          2013-10-02 09:33:51.911,Mastervolt-Solar,Daten Abrufen: 0101ffffb6000000i
                          2013-10-02 09:33:51.969,Mastervolt-Solar,reciv-komplet: 0101ffffb600000020
                          2013-10-02 09:33:51.970,Mastervolt-Solar,Falsche Antwort auf: 0101ffffb6000000i
                          2013-10-02 09:33:51.979,Mastervolt-Solar,substr_checksum: 02
                          2013-10-02 09:33:51.979,Mastervolt-Solar,checksum_addition: 2
                          2013-10-02 09:33:51.979,Mastervolt-Solar,substr_checksum: 01
                          2013-10-02 09:33:51.980,Mastervolt-Solar,checksum_addition: 3
                          2013-10-02 09:33:51.980,Mastervolt-Solar,substr_checksum: ff
                          2013-10-02 09:33:51.980,Mastervolt-Solar,checksum_addition: 258
                          2013-10-02 09:33:51.980,Mastervolt-Solar,substr_checksum: ff
                          2013-10-02 09:33:51.980,Mastervolt-Solar,checksum_addition: 513
                          2013-10-02 09:33:51.982,Mastervolt-Solar,substr_checksum: b6
                          2013-10-02 09:33:51.982,Mastervolt-Solar,checksum_addition: 695
                          2013-10-02 09:33:51.982,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:51.982,Mastervolt-Solar,checksum_addition: 695
                          2013-10-02 09:33:51.982,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:51.983,Mastervolt-Solar,checksum_addition: 695
                          2013-10-02 09:33:51.983,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:51.983,Mastervolt-Solar,checksum_addition: 695
                          2013-10-02 09:33:51.983,Mastervolt-Solar,checksume_vor_kuerzung: 695
                          2013-10-02 09:33:51.984,Mastervolt-Solar,Daten Abrufen: 0201ffffb6000000i
                          2013-10-02 09:33:52.032,Mastervolt-Solar,reciv-komplet: 0201ffffb600000020
                          2013-10-02 09:33:52.032,Mastervolt-Solar,Falsche Antwort auf: 0201ffffb6000000i
                          2013-10-02 09:33:52.033,Mastervolt-Solar,substr_checksum: 11
                          2013-10-02 09:33:52.033,Mastervolt-Solar,checksum_addition: 17
                          2013-10-02 09:33:52.033,Mastervolt-Solar,substr_checksum: 01
                          2013-10-02 09:33:52.033,Mastervolt-Solar,checksum_addition: 18
                          2013-10-02 09:33:52.034,Mastervolt-Solar,substr_checksum: ff
                          2013-10-02 09:33:52.034,Mastervolt-Solar,checksum_addition: 273
                          2013-10-02 09:33:52.034,Mastervolt-Solar,substr_checksum: ff
                          2013-10-02 09:33:52.034,Mastervolt-Solar,checksum_addition: 528
                          2013-10-02 09:33:52.034,Mastervolt-Solar,substr_checksum: b6
                          2013-10-02 09:33:52.035,Mastervolt-Solar,checksum_addition: 710
                          2013-10-02 09:33:52.035,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:52.035,Mastervolt-Solar,checksum_addition: 710
                          2013-10-02 09:33:52.035,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:52.036,Mastervolt-Solar,checksum_addition: 710
                          2013-10-02 09:33:52.036,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:52.036,Mastervolt-Solar,checksum_addition: 710
                          2013-10-02 09:33:52.036,Mastervolt-Solar,checksume_vor_kuerzung: 710
                          2013-10-02 09:33:52.036,Mastervolt-Solar,Daten Abrufen: 1101ffffb6000000q
                          2013-10-02 09:33:52.080,Mastervolt-Solar,reciv-komplet: 1101ffffb6000000a0
                          2013-10-02 09:33:52.081,Mastervolt-Solar,Falsche Antwort auf: 1101ffffb6000000q
                          2013-10-02 09:33:52.081,Mastervolt-Solar,substr_checksum: 12
                          2013-10-02 09:33:52.081,Mastervolt-Solar,checksum_addition: 18
                          2013-10-02 09:33:52.082,Mastervolt-Solar,substr_checksum: 01
                          2013-10-02 09:33:52.082,Mastervolt-Solar,checksum_addition: 19
                          2013-10-02 09:33:52.082,Mastervolt-Solar,substr_checksum: ff
                          2013-10-02 09:33:52.082,Mastervolt-Solar,checksum_addition: 274
                          2013-10-02 09:33:52.083,Mastervolt-Solar,substr_checksum: ff
                          2013-10-02 09:33:52.083,Mastervolt-Solar,checksum_addition: 529
                          2013-10-02 09:33:52.083,Mastervolt-Solar,substr_checksum: b6
                          2013-10-02 09:33:52.083,Mastervolt-Solar,checksum_addition: 711
                          2013-10-02 09:33:52.083,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:52.084,Mastervolt-Solar,checksum_addition: 711
                          2013-10-02 09:33:52.084,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:52.084,Mastervolt-Solar,checksum_addition: 711
                          2013-10-02 09:33:52.084,Mastervolt-Solar,substr_checksum: 00
                          2013-10-02 09:33:52.084,Mastervolt-Solar,checksum_addition: 711
                          2013-10-02 09:33:52.085,Mastervolt-Solar,checksume_vor_kuerzung: 711
                          2013-10-02 09:33:52.085,Mastervolt-Solar,Daten Abrufen: 1201ffffb6000000q
                          2013-10-02 09:33:52.128,Mastervolt-Solar,reciv-komplet: 1201ffffb6000000a0
                          2013-10-02 09:33:52.129,Mastervolt-Solar,Falsche Antwort auf: 1201ffffb6000000q
                          2013-10-02 09:33:52.153,Mastervolt-Solar,4,0.3s,
                          die Checksumme 694 müsste doch stimmen (entspricht ja 2B6) aber was macht das "i" und "q" da drin?
                          Gruß -mfd-
                          KNX-UF-IconSet since 2011

                          Kommentar


                            #43
                            Ich glaube ich weiss wo her das i kommt... Das ist ein Problem mit der Umwandlung von interger nach hex.

                            Aber so sollte es hoffentlich gehen...

                            Code:
                            # Plugin zum auslesen eines MasterVolt Wechselrichters
                            # Version 0.7.5 02.10.2013 BETA
                            # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                            # Aufbau moeglichst so, dass man unterhalb der Einstellungen nichts veraendern muss!
                            
                             
                            
                            ####################
                            ###Einstellungen:###
                            ####################
                            my @WR_GAs;
                            
                            #Erzeuge Variablen fuer die Zuordnung der Werte zu den Gruppenadressen:
                            
                            push @WR_GAs, { id => "0101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                            push @WR_GAs, { id => "0201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                            push @WR_GAs, { id => "1101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                            push @WR_GAs, { id => "1201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                            
                            my $ga_ausgangsleistung_gesammt = ''; #DPT:9.001
                            
                            
                            #Pfad zur seriellen Schnittstelle oder dem USB-Seriell-Wandler:
                            my $schnittstelle = '/dev/ttyUSB-2-1.2';
                            
                             
                            
                            ######################
                            ##ENDE Einstellungen##
                            ######################
                            
                            
                            #Ab hier nichts mehr aendern.
                            #Hauptverarbeitung
                            
                            #Weitere Variablen die benoetigt werden -> NICHT veraendern!
                            my $seriel;
                            my $sin; #Serial Input = Empangener Datenstrom
                            my $cin; #Counter Input =  Länge des Datenpackets
                            my $exit;
                            my $reciv;
                            my $daten;
                            my $ausgangsleistung_total = '';
                            
                            my $debug=2;
                            my $Zaehler = 200;
                            
                            use Time::Local;
                            
                            $plugin_info{$plugname.'_cycle'}  = 30;
                            
                                if(($plugin_info{$plugname.'_time'}+$plugin_info{$plugname.'_cycle'}) >= $plugin_info{$plugname.'_last'}){
                                    return;
                                }
                                $plugin_info{$plugname.'_time'} = time();
                            
                            use Device::SerialPort;
                            
                                   $seriel = Device::SerialPort->new($schnittstelle) || die "Kann $schnittstelle nicht öffnen! ($!)\n";
                                   $seriel->baudrate(9600);
                                   $seriel->parity("none");
                                   $seriel->databits(8);
                                   $seriel->stopbits(1);
                                   if($debug>=1){plugin_log($plugname,'Schnittstelle: ' . $schnittstelle . ' erfolgreich geöffnet')};
                            
                                   
                            foreach my $element (@WR_GAs) {
                            
                                    $daten = $element->{id}."ffffb6000000";
                                    my @checksum_array = map "$_", $daten =~ /(..)/g;
                                    my $checksum = '';
                                    
                                    foreach my $checksum_element (@checksum_array) {
                                        if($debug>=3){plugin_log($plugname,'substr_checksum: ' . $checksum_element);}
                                        $checksum += hex($checksum_element);
                                        if($debug>=3){plugin_log($plugname,'checksum_addition: ' . $checksum);}
                                    }
                                    if($debug>=2){plugin_log($plugname,'checksume_integer: ' . $checksum);}
                                    
                                    $checksum = sprintf "%x\n" , $checksum;
                                    if($debug>=2){plugin_log($plugname,'checksume_vor_kuerzung: ' . $checksum);}
                                    $checksum = substr($checksum,-3,2);
                                    if($debug>=2){plugin_log($plugname,'checksume_nach_kuerzung: ' . $checksum);}
                                    
                                    $daten .= $checksum;
                                    
                                    plugin_log($plugname,'Daten Abrufen: '.$daten);
                                    
                                my $command = pack("H*",$daten);
                                
                                $seriel->write($command);
                                
                                $reciv = '';
                                $cin = '';
                                $sin = '';
                                   
                                $|=1;
                                my $exit=0;
                                while($exit < $Zaehler)
                                {
                                    ($cin, $sin) = $seriel->read(45);
                            
                                    if($cin > 0){
                                        $sin = unpack "H*", $sin;
                                        $reciv .= $sin;
                                        $exit=0;
                                    }else{
                                        $exit++
                                    }
                                   
                                    if($debug>=4){plugin_log($plugname,'reciv-direkt: ' . $sin);}
                            
                                }#Ende While 
                                if($debug>=2){plugin_log($plugname,'reciv-komplet: ' . $reciv);}
                            
                                my $len = length($daten);
                                
                                if(substr($reciv,0,$len) eq $daten){
                                    
                                    $reciv =~ s/$daten//;
                                    if($debug>=2){plugin_log($plugname,'reciv gekürzt: ' . $reciv);}
                                
                                    my @array = map "$_", $reciv =~ /(..)/g;    
                                    
                                    my $pv_voltage = $array[9] . $array[8];
                                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_voltage);}
                                    $pv_voltage =  hex($pv_voltage);
                                    if($debug>=1){plugin_log($plugname,'PV Spannung: ' . $pv_voltage . 'V');}
                                    if($element->{ga_pv_spannung} ne ''){knx_write($element->{ga_pv_spannung},$pv_voltage,9.001);}
                            
                                    
                                    my $pv_ampere = $array[11] . $array[10];
                                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_ampere);}
                                    $pv_ampere =  hex($pv_ampere)/100;
                                    if($debug>=1){plugin_log($plugname,'PV Strom: ' . $pv_ampere . 'A');}
                                    if($element->{ga_pv_strom} ne ''){knx_write($element->{ga_pv_strom},$pv_ampere,9.001);}
                                    
                                    
                                    my $pv_frequecy = $array[13] . $array[12];
                                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_frequecy);}
                                    $pv_frequecy =  hex($pv_frequecy)/100;
                                    if($debug>=1){plugin_log($plugname,'PV Frequenz: ' . $pv_frequecy . 'Hz');}
                                    if($element->{ga_wr_frequenz} ne ''){knx_write($element->{ga_wr_frequenz},$pv_frequecy,9.001);}
                                    
                            
                                    my $pv_grid_voltage = $array[15] . $array[14];
                                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_voltage);}
                                    $pv_grid_voltage =  hex($pv_grid_voltage);
                                    if($debug>=1){plugin_log($plugname,'PV Ausgangsspannung: ' . $pv_grid_voltage . 'V');}
                                    if($element->{ga_wr_spannung} ne ''){knx_write($element->{ga_wr_spannung},$pv_grid_voltage,9.001);}
                                    
                                    
                                    my $pv_grid_power = $array[19] . $array[18];
                                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_power);}
                                    $pv_grid_power =  hex($pv_grid_power);
                                    if($debug>=1){plugin_log($plugname,'PV Ausgangsleistung: ' . $pv_grid_power . 'W');}
                                    if($element->{ga_wr_leistung} ne ''){knx_write($element->{ga_wr_leistung},$pv_grid_power,9.001);}
                                    $ausgangsleistung_total += $pv_grid_power;
                                    
                                    
                                    my $pv_total_grid_power = $array[22] . $array[21] . $array[20];
                                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_total_grid_power);}
                                    $pv_total_grid_power =  hex($pv_total_grid_power)*100;
                                    if($debug>=1){plugin_log($plugname,'PV total Ausgangsleistung: ' . $pv_total_grid_power . 'kWh');}
                                    if($element->{ga_wr_leistung_total} ne ''){knx_write($element->{ga_wr_leistung_total},$pv_total_grid_power,9.001);}
                                    
                                    my $pv_temp = $array[23];
                                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_temp);}
                                    $pv_temp =  hex($pv_temp);
                                    if($debug>=1){plugin_log($plugname,'PV Temperatur: ' . $pv_temp . '°C');}
                                    
                                    my $pv_working_time = $array[27] . $array[26] . $array[25] . $array[24];
                                    if($debug>=3){plugin_log($plugname,'substr: ' . $pv_working_time);}
                                    $pv_working_time =  hex($pv_working_time)/60;
                                    if($debug>=1){plugin_log($plugname,'PV Betriebsstunden: ' . $pv_working_time . 'h');}
                                }else{
                                    if($debug>=2){plugin_log($plugname,'Falsche Antwort auf: ' . $daten);}
                                }
                            }
                            
                            if($ga_ausgangsleistung_gesammt ne ''){knx_write($ga_ausgangsleistung_gesammt,$ausgangsleistung_total,9.001);}
                            Gruss Patrik alias swiss

                            Kommentar


                              #44
                              ja, so sieht das sehr gut aus.
                              Lediglich bei den kWh's muss noch das Komma an die richtige Stelle (es müssten pro ID jeweils ca. 12 000 kWh sein) sonst wäre ich ja reich


                              Code:
                              2013-10-03 08:36:11.264,Mastervolt-Solar,Schnittstelle: /dev/ttyUSB-2-1.2 erfolgreich geöffnet
                              2013-10-03 08:36:11.265,Mastervolt-Solar,checksume_integer: 694
                              2013-10-03 08:36:11.265,Mastervolt-Solar,checksume_vor_kuerzung: 2b6
                              2013-10-03 08:36:11.265,Mastervolt-Solar,checksume_nach_kuerzung: b6
                              2013-10-03 08:36:11.265,Mastervolt-Solar,Daten Abrufen: 0101ffffb6000000b6
                              2013-10-03 08:36:11.359,Mastervolt-Solar,reciv-komplet: 0101ffffb6000000b6ffff0101b6ee0080c8002b008713eb0022005000782f131fca282200002520
                              2013-10-03 08:36:11.359,Mastervolt-Solar,reciv gekürzt: ffff0101b6ee0080c8002b008713eb0022005000782f131fca282200002520
                              2013-10-03 08:36:11.360,Mastervolt-Solar,PV Spannung: 200V
                              2013-10-03 08:36:11.369,Mastervolt-Solar,PV Strom: 0.43A
                              2013-10-03 08:36:11.372,Mastervolt-Solar,PV Frequenz: 49.99Hz
                              2013-10-03 08:36:11.380,Mastervolt-Solar,PV Ausgangsspannung: 235V
                              2013-10-03 08:36:11.394,Mastervolt-Solar,PV Ausgangsleistung: 80W
                              2013-10-03 08:36:11.402,Mastervolt-Solar,PV total Ausgangsleistung: 125733600kWh
                              2013-10-03 08:36:11.409,Mastervolt-Solar,PV Temperatur: 31°C
                              2013-10-03 08:36:11.410,Mastervolt-Solar,PV Betriebsstunden: 37311.1h
                              2013-10-03 08:36:11.410,Mastervolt-Solar,checksume_integer: 695
                              2013-10-03 08:36:11.410,Mastervolt-Solar,checksume_vor_kuerzung: 2b7
                              2013-10-03 08:36:11.411,Mastervolt-Solar,checksume_nach_kuerzung: b7
                              2013-10-03 08:36:11.411,Mastervolt-Solar,Daten Abrufen: 0201ffffb6000000b7
                              2013-10-03 08:36:11.507,Mastervolt-Solar,reciv-komplet: 0201ffffb6000000b7ffff0201b6ee0080c80032008713e8002400540015a7121f9c292200002512
                              2013-10-03 08:36:11.508,Mastervolt-Solar,reciv gekürzt: ffff0201b6ee0080c80032008713e8002400540015a7121f9c292200002512
                              2013-10-03 08:36:11.508,Mastervolt-Solar,PV Spannung: 200V
                              2013-10-03 08:36:11.517,Mastervolt-Solar,PV Strom: 0.5A
                              2013-10-03 08:36:11.533,Mastervolt-Solar,PV Frequenz: 49.99Hz
                              2013-10-03 08:36:11.538,Mastervolt-Solar,PV Ausgangsspannung: 232V
                              2013-10-03 08:36:11.545,Mastervolt-Solar,PV Ausgangsleistung: 84W
                              2013-10-03 08:36:11.552,Mastervolt-Solar,PV total Ausgangsleistung: 122242100kWh
                              2013-10-03 08:36:11.561,Mastervolt-Solar,PV Temperatur: 31°C
                              2013-10-03 08:36:11.562,Mastervolt-Solar,PV Betriebsstunden: 37314.6h
                              2013-10-03 08:36:11.562,Mastervolt-Solar,checksume_integer: 710
                              2013-10-03 08:36:11.562,Mastervolt-Solar,checksume_vor_kuerzung: 2c6
                              2013-10-03 08:36:11.562,Mastervolt-Solar,checksume_nach_kuerzung: c6
                              2013-10-03 08:36:11.563,Mastervolt-Solar,Daten Abrufen: 1101ffffb6000000c6
                              2013-10-03 08:36:11.668,Mastervolt-Solar,reciv-komplet: 1101ffffb6000000c6ffff1101b6ef0080c60014008713ea000f002300be93111ed22f2000002a90
                              2013-10-03 08:36:11.668,Mastervolt-Solar,reciv gekürzt: ffff1101b6ef0080c60014008713ea000f002300be93111ed22f2000002a90
                              2013-10-03 08:36:11.669,Mastervolt-Solar,PV Spannung: 198V
                              2013-10-03 08:36:11.677,Mastervolt-Solar,PV Strom: 0.2A
                              2013-10-03 08:36:11.684,Mastervolt-Solar,PV Frequenz: 49.99Hz
                              2013-10-03 08:36:11.688,Mastervolt-Solar,PV Ausgangsspannung: 234V
                              2013-10-03 08:36:11.703,Mastervolt-Solar,PV Ausgangsleistung: 35W
                              2013-10-03 08:36:11.710,Mastervolt-Solar,PV total Ausgangsleistung: 115193400kWh
                              2013-10-03 08:36:11.718,Mastervolt-Solar,PV Temperatur: 30°C
                              2013-10-03 08:36:11.718,Mastervolt-Solar,PV Betriebsstunden: 35156.5666666667h
                              2013-10-03 08:36:11.718,Mastervolt-Solar,checksume_integer: 711
                              2013-10-03 08:36:11.719,Mastervolt-Solar,checksume_vor_kuerzung: 2c7
                              2013-10-03 08:36:11.719,Mastervolt-Solar,checksume_nach_kuerzung: c7
                              2013-10-03 08:36:11.719,Mastervolt-Solar,Daten Abrufen: 1201ffffb6000000c7
                              2013-10-03 08:36:11.819,Mastervolt-Solar,reciv-komplet: 1201ffffb6000000c7ffff1201b6ef0080c7004d008713ed003b008c0003b31321490a2200002a21
                              2013-10-03 08:36:11.819,Mastervolt-Solar,reciv gekürzt: ffff1201b6ef0080c7004d008713ed003b008c0003b31321490a2200002a21
                              2013-10-03 08:36:11.820,Mastervolt-Solar,PV Spannung: 199V
                              2013-10-03 08:36:11.837,Mastervolt-Solar,PV Strom: 0.77A
                              2013-10-03 08:36:11.841,Mastervolt-Solar,PV Frequenz: 49.99Hz
                              2013-10-03 08:36:11.849,Mastervolt-Solar,PV Ausgangsspannung: 237V
                              2013-10-03 08:36:11.856,Mastervolt-Solar,PV Ausgangsleistung: 140W
                              2013-10-03 08:36:11.870,Mastervolt-Solar,PV total Ausgangsleistung: 129101100kWh
                              2013-10-03 08:36:11.878,Mastervolt-Solar,PV Temperatur: 33°C
                              2013-10-03 08:36:11.879,Mastervolt-Solar,PV Betriebsstunden: 37180.95h
                              2013-10-03 08:36:11.911,Mastervolt-Solar,4,0.6s,
                              Gruß -mfd-
                              KNX-UF-IconSet since 2011

                              Kommentar


                                #45
                                Ok das mit dem kWh habe ich mal versucht zu fixen...

                                Bedenke dass die Ausgabe auf dem KNX in Wh erfolgt, da ich nur ganzzahlen sinnvoll übertragen kann.

                                Code:
                                # Plugin zum auslesen eines MasterVolt Wechselrichters
                                # Version 0.7.6 12.10.2013 BETA
                                # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                                # Aufbau moeglichst so, dass man unterhalb der Einstellungen nichts veraendern muss!
                                
                                 
                                
                                ####################
                                ###Einstellungen:###
                                ####################
                                my @WR_GAs;
                                
                                #Erzeuge Variablen fuer die Zuordnung der Werte zu den Gruppenadressen:
                                
                                push @WR_GAs, { id => "0101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                                push @WR_GAs, { id => "0201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                                push @WR_GAs, { id => "1101", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                                push @WR_GAs, { id => "1201", ga_pv_spannung => '', ga_pv_strom => '', ga_wr_frequenz => '', ga_wr_spannung => '', ga_wr_leistung => '', ga_wr_leistung_total => ''};
                                
                                my $ga_ausgangsleistung_gesammt = ''; #DPT:9.001
                                
                                
                                #Pfad zur seriellen Schnittstelle oder dem USB-Seriell-Wandler:
                                my $schnittstelle = '/dev/ttyUSB-2-1.2';
                                
                                 
                                
                                ######################
                                ##ENDE Einstellungen##
                                ######################
                                
                                
                                #Ab hier nichts mehr aendern.
                                #Hauptverarbeitung
                                
                                #Weitere Variablen die benoetigt werden -> NICHT veraendern!
                                my $seriel;
                                my $sin; #Serial Input = Empangener Datenstrom
                                my $cin; #Counter Input =  Länge des Datenpackets
                                my $exit;
                                my $reciv;
                                my $daten;
                                my $ausgangsleistung_total = '';
                                
                                my $debug=1;
                                my $Zaehler = 200;
                                
                                use Time::Local;
                                
                                $plugin_info{$plugname.'_cycle'}  = 30;
                                
                                    if(($plugin_info{$plugname.'_time'}+$plugin_info{$plugname.'_cycle'}) >= $plugin_info{$plugname.'_last'}){
                                        return;
                                    }
                                    $plugin_info{$plugname.'_time'} = time();
                                
                                use Device::SerialPort;
                                
                                       $seriel = Device::SerialPort->new($schnittstelle) || die "Kann $schnittstelle nicht öffnen! ($!)\n";
                                       $seriel->baudrate(9600);
                                       $seriel->parity("none");
                                       $seriel->databits(8);
                                       $seriel->stopbits(1);
                                       if($debug>=1){plugin_log($plugname,'Schnittstelle: ' . $schnittstelle . ' erfolgreich geöffnet')};
                                
                                       
                                foreach my $element (@WR_GAs) {
                                
                                        $daten = $element->{id}."ffffb6000000";
                                        my @checksum_array = map "$_", $daten =~ /(..)/g;
                                        my $checksum = '';
                                        
                                        foreach my $checksum_element (@checksum_array) {
                                            if($debug>=3){plugin_log($plugname,'substr_checksum: ' . $checksum_element);}
                                            $checksum += hex($checksum_element);
                                            if($debug>=3){plugin_log($plugname,'checksum_addition: ' . $checksum);}
                                        }
                                        if($debug>=2){plugin_log($plugname,'checksume_integer: ' . $checksum);}
                                        
                                        $checksum = sprintf "%x\n" , $checksum;
                                        if($debug>=2){plugin_log($plugname,'checksume_vor_kuerzung: ' . $checksum);}
                                        $checksum = substr($checksum,-3,2);
                                        if($debug>=2){plugin_log($plugname,'checksume_nach_kuerzung: ' . $checksum);}
                                        
                                        $daten .= $checksum;
                                        
                                        plugin_log($plugname,'Daten Abrufen: '.$daten);
                                        
                                    my $command = pack("H*",$daten);
                                    
                                    $seriel->write($command);
                                    
                                    $reciv = '';
                                    $cin = '';
                                    $sin = '';
                                       
                                    $|=1;
                                    my $exit=0;
                                    while($exit < $Zaehler)
                                    {
                                        ($cin, $sin) = $seriel->read(45);
                                
                                        if($cin > 0){
                                            $sin = unpack "H*", $sin;
                                            $reciv .= $sin;
                                            $exit=0;
                                        }else{
                                            $exit++
                                        }
                                       
                                        if($debug>=4){plugin_log($plugname,'reciv-direkt: ' . $sin);}
                                
                                    }#Ende While 
                                    if($debug>=2){plugin_log($plugname,'reciv-komplet: ' . $reciv);}
                                
                                    my $len = length($daten);
                                    
                                    if(substr($reciv,0,$len) eq $daten){
                                        
                                        $reciv =~ s/$daten//;
                                        if($debug>=2){plugin_log($plugname,'reciv gekürzt: ' . $reciv);}
                                    
                                        my @array = map "$_", $reciv =~ /(..)/g;    
                                        
                                        my $pv_voltage = $array[9] . $array[8];
                                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_voltage);}
                                        $pv_voltage =  hex($pv_voltage);
                                        if($debug>=1){plugin_log($plugname,'PV Spannung: ' . $pv_voltage . 'V');}
                                        if($element->{ga_pv_spannung} ne ''){knx_write($element->{ga_pv_spannung},$pv_voltage,9.001);}
                                
                                        
                                        my $pv_ampere = $array[11] . $array[10];
                                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_ampere);}
                                        $pv_ampere =  hex($pv_ampere)/100;
                                        if($debug>=1){plugin_log($plugname,'PV Strom: ' . $pv_ampere . 'A');}
                                        if($element->{ga_pv_strom} ne ''){knx_write($element->{ga_pv_strom},$pv_ampere,9.001);}
                                        
                                        
                                        my $pv_frequecy = $array[13] . $array[12];
                                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_frequecy);}
                                        $pv_frequecy =  hex($pv_frequecy)/100;
                                        if($debug>=1){plugin_log($plugname,'PV Frequenz: ' . $pv_frequecy . 'Hz');}
                                        if($element->{ga_wr_frequenz} ne ''){knx_write($element->{ga_wr_frequenz},$pv_frequecy,9.001);}
                                        
                                
                                        my $pv_grid_voltage = $array[15] . $array[14];
                                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_voltage);}
                                        $pv_grid_voltage =  hex($pv_grid_voltage);
                                        if($debug>=1){plugin_log($plugname,'PV Ausgangsspannung: ' . $pv_grid_voltage . 'V');}
                                        if($element->{ga_wr_spannung} ne ''){knx_write($element->{ga_wr_spannung},$pv_grid_voltage,9.001);}
                                        
                                        
                                        my $pv_grid_power = $array[19] . $array[18];
                                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_grid_power);}
                                        $pv_grid_power =  hex($pv_grid_power);
                                        if($debug>=1){plugin_log($plugname,'PV Ausgangsleistung: ' . $pv_grid_power . 'W');}
                                        if($element->{ga_wr_leistung} ne ''){knx_write($element->{ga_wr_leistung},$pv_grid_power,9.001);}
                                        $ausgangsleistung_total += $pv_grid_power;
                                        
                                        
                                        my $pv_total_grid_power = $array[22] . $array[21] . $array[20];
                                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_total_grid_power);}
                                        $pv_total_grid_power =  hex($pv_total_grid_power)*10;
                                        if($debug>=1){plugin_log($plugname,'PV total Ausgangsleistung: ' . ($pv_total_grid_power/100) . 'kWh');}
                                        if($element->{ga_wr_leistung_total} ne ''){knx_write($element->{ga_wr_leistung_total},$pv_total_grid_power,9.001);}
                                        
                                        my $pv_temp = $array[23];
                                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_temp);}
                                        $pv_temp =  hex($pv_temp);
                                        if($debug>=1){plugin_log($plugname,'PV Temperatur: ' . $pv_temp . '°C');}
                                        
                                        my $pv_working_time = $array[27] . $array[26] . $array[25] . $array[24];
                                        if($debug>=3){plugin_log($plugname,'substr: ' . $pv_working_time);}
                                        $pv_working_time =  hex($pv_working_time)/60;
                                        if($debug>=1){plugin_log($plugname,'PV Betriebsstunden: ' . $pv_working_time . 'h');}
                                    }else{
                                        if($debug>=2){plugin_log($plugname,'Falsche Antwort auf: ' . $daten);}
                                    }
                                }
                                
                                if($ga_ausgangsleistung_gesammt ne ''){knx_write($ga_ausgangsleistung_gesammt,$ausgangsleistung_total,9.001);}
                                Gruss Patrik alias swiss

                                Kommentar

                                Lädt...
                                X