Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:wechselrichter_sma

Dies ist eine alte Version des Dokuments!


Anleitung für den Wechselrichter SMA

Ich besitze den Wechselrichter STP 9000TL-20 http://www.sma.de/produkte/solar-wechselrichter-ohne-transformator/sunny-tripower-5000tl-6000tl-7000tl-8000tl-9000tl.html. Dieser hat direkt einen Ethernetanschluss, der mit dem Tool smaspot https://smaspot.codeplex.com/ angesprochen werden kann. Das Tool smaspot ist zu kompilieren. Sobald es läuft, findet es den Wechselrichter und gibt ein paar Infos aus: SMAspot -sp0 -v

Ich möchte den Gesamtertrag, sowie den Ertrag je String in den Volkszaehler übernehmen: Hierzu habe ich für den Gesamtertrag einen Kanal El. Energie (Zählerstände) und für den Ertrag je String je einen Kanal El. Energie (Leistungswerte) angelegt. Die UUID sind später im Script einzutragen. Anbei das Script:

#!/usr/bin/perl
use LWP::UserAgent;
open STATUS, "/home/markus/hack/sma/smaspot/bin/Release/SMAspot -sp0 -v |"
or die "can't fork: $!";
while (<STATUS>) {
	if (/ETotal:[ ]*(.*)kWh/){
		&submitt("e63106b0-dd25-11e3-9cd5-27aa144849cd",  $1);
		
    	}
    	if (/String 1 Pdc:[ ]*(.*)kW/){
    		$value = $1;
    		$value =~ s/\.//g;
    		&submitt("103ec300-dd27-11e3-84b2-a98f0b16e92d",  $value);
    		
    		
    	}
    	if (/String 2 Pdc:[ ]*(.*)kW/){
    		$value = $1;
    		$value =~ s/\.//g;
    		&submitt("2d130060-dd27-11e3-b78b-738251a19608",  $value);
    	}
} 
close STATUS or die "bad netstat: $! $?";

#------
sub submitt
{
	    $uuid =  $_[0] ;
    $val =  $_[1] ;
    print $uuid . " : " . $val . "\n";


    my $server_endpoint = "http://localhost/volkszaehler.org/htdocs/middleware.php/data/${uuid}.json?value=" . $val;
#    get("http://localhost/volkszaehler.org/htdocs/middleware.php/data/2d130060-dd27-11e3-b78b-738251a19608.json?value=" . $1)."\n";
    #print "serverget = " .  $server_endpoint . "\n";

    # set custom HTTP request header fields
    my $req = HTTP::Request->new(POST => $server_endpoint);
    $req->header('content-type' => 'application/json');
    $req->header('x-auth-token' => 'kfksj48sdfj4jd9d');

    # add POST data to HTTP request body
    $req->content(" ");

    my $ua = LWP::UserAgent->new;
    my $resp = $ua->request($req);
    if ($resp->is_success) {
      my $message = $resp->decoded_content;
      print "Received reply: $message\n";
    } else {
      print "HTTP GET error code: ", $resp->code, "\n";
      print "HTTP GET error message: ", $resp->message, "\n";
    }

}

Das Script wird dabei einmal pro Minute mit cron aufgerufen.

*  * * * *    /usr/bin/perl /home/markus/hack/Volksz/sma.pl
howto/wechselrichter_sma.1400616419.txt.gz · Zuletzt geändert: 2014/05/20 22:06 von mikemiller