Daten von SMA SunnyBoy Solar-Wechselrichter

Liebe IP-Symcon-User,

vielleicht hat der Eine oder die Andere von euch eine Photovoltaikanlage mit SMA-Wechselrichter. Soweit nur ein Wechselrichter vorhanden ist, kann ich in Form von 5 Skripten eine funktionsfähige Kommunikation zur Verfügung stellen.

Hardware: SMA Sunnyboy Wechselrichter mit RS232 Schnittstelle (optionales COM Piggy Pack gesteckt), 1200 baud, 8 datenbits, 1 stoppbit, keine Parität

Software: Neben IP-Symcon SMA Sunny Data zur Überprüfung der Kommunikation und Extraktion einiger Parameter. Frei zum Download unter:
www.sma.de/de/solartechnik/downloads/index.html
Wen es interessiert: Man findet dort auch die Beschreibung des Kommunikationprotokolls (s. u. Kommunikationsprodukte–> Protokollbeschreibung)

Zu den Skripten:
(1) CMD_GET_NET1 --> muss zuerst ausgeführt werden, sowie im Fehlerfall:
sucht den Wechselrichter und liefert des Netzwerkadresse, Seriennummer und Bezeichnung

(2)CMD_SYN_ONLINE10 --> Sendet den augenblicklichen UNIX-Zeitstempel an Wechselrichter; dieser speichert Spot-Messwerte

(3)CMD_GET_DATA11 --> Messwerte und Parameter anfordern

(4)Ex_SMA_Data --> Auswertung der empfangen Wechselrichterdaten
Hierzu sind einige Parameter zudefinieren, die WR-Typ abhängig sind. Die Daten findet man nach Installation der Sunny Data Software im Ordner …/SMA/Sunny Data/Devices/?.DEF; ? für jeweiliges WR-Modell!

(5)Use_SMA_Data–> Beispiel wie Daten verwendet werden können

Skript sind wegen Größe geZIPt
Viel Spaß beim Ausprobieren!

gruß
Wolfgang

SMA_IPS_2007-03-17.zip (7.88 KB)

Im Nachhinein habe ich noch einen kleinen Fehler aber leider
fatalen Fehler entdeckt.:frowning:

Script: CMD_SYN_ONLINE10
In Zeile 28 muss stehen:
$nrb = 0;
fehlerhaft ist:
$nrb = 4;

Gruß
woboreg

Wolfgang,
vielen Dank für die Bereitstellung dieser IPS-SMA Anbindung !
Das kommt gerade passend, da ich bald mein IPS in Betrieb nehmen möchte und hier 3 SMA Wechselrichter über RS485 anschliesse.
Welchen Fehler behebt Deine Änderung?

Gruss, Martin - IPS mit SMA 2100 und SMA 4200

hallo wolfgang!

ich kriege jetzt endlich die rs232 schnittstelle in den sunny boy. hat leider doch ewig gedauert. ich wollte gerade sunny data runterladen. das gibt es aber nur für windows 2000 und nicht für xp.
angeblich ist der „nachfolger“ sunny data control. das läuft auch unter xp und vista. wird deine lösung wohl damit auch funktionieren ?

happy day und dank ,frank

Hallo MartinH,

benötige ich für 2 SMA-WR eigentlich 2 RS485-Eingänge auf der Schnittstellenkarte oder kann die die WR parallel verdrahten?

Bei RS232 wird ja je Gerät eine Schnittstelle benötigt, ist dies bei RS485 auch so?

Hallo,

RS485 kann als Bussystem bis zu 32 Sender/Empfänger haben. Hier mal ein paar Infos:
Link

Hallo Attain,

vielen Dank für die Info. Einfacher geht es nicht.

übrigens noch kurz zum auslesen von sma-wechselrichtern:
es gibt von sma 2 verschiedene protokolle. ein altes und en neueres. das hier vorgestellte script funktioniert so nur für das alte protokoll.

ich hab lange gekämpft um das festzustellen. mein wr funktioniert mit dem neuen protokoll und daher wollte das ips script auch nicht die daten auslesen.

happy day, frank

Hallo Frank,

hast Du denn für WR mit neuerem Protokoll eine Lösung gefunden und könnte man diese Lösung haben.:rolleyes:

Bekomme voraussichtlich in der 41. KW meine Anlage :slight_smile:

na kla :slight_smile:

also ich habe eine lösung in arbeit und eine fertig und in betrieb. beim sma wr ist eine software dabei. mit der kann man die daten vom wr holen. zusätzlich kann man damit auch eine text-datei mit den werten schreiben (jede minute). und die lese ich dann mit ips aus. klappt wunderbar.

ist halt nur leider keine direkte abfrage und ein extra stück software muss auf dem server laufen. dher versuche ich noch eine dll zum laufen zu bringen mit der man über php direkt den wr anfragen kann.

happy day ,frank

Hallo Frank,

besser als keine. Vielleicht ist die DLL-Variante ja bis zu 41. KW fertig :smiley:

Hallo Frank,

meine PV ist seit vergangenen Wochenende in Betrieb.

Habe 2 WR von SMA am laufen die mit RS485 ausgestattet sind. Kabel sind gelegt, es fehlt nur noch die Schnittstelle für den PC die ich als Ethernet/RS485 Version bestellt habe und die Tage kommen müsste. Das verbinden mit IPS sollte Dank Socket-Clients kein Problem werden, falls doch liegt dem Paket noch eine virtuelle COM-Schnittstelle bei.

also ich habe eine lösung in arbeit und eine fertig und in betrieb. beim sma wr ist eine software dabei. mit der kann man die daten vom wr holen. zusätzlich kann man damit auch eine text-datei mit den werten schreiben (jede minute). und die lese ich dann mit ips aus. klappt wunderbar.

Eine weitere Software auf dem Server stellt kein Problem dar, ist eh schon viel genug drauf :smiley:

Kannst Du mir einmal die funktionierende Version der Skripte zum auslesen der Logfiles von Sunny Data Control zukommen lassen oder besser hier veröffentlich?

ist halt nur leider keine direkte abfrage und ein extra stück software muss auf dem server laufen. dher versuche ich noch eine dll zum laufen zu bringen mit der man über php direkt den wr anfragen kann.

Falls Du mit der reinen IPS-Version weitergekommen bist würde mich diese natürlich auch interessieren.

hallo werner !

das auslesen mit der dll habe ich leider noch nicht. aber das andere klappt halt und da ist der druck nicht so gross :slight_smile:

hier ist mal mein script was ich verwende. in der software sunny data control software muss dann angewählt sein, dass die datenübergabedatei geschrieben wird.

<?
// gesamte Datei in einen String einlesen
$file = file_get_contents('C:\Programme\SMA\Sunny Data Control\Online\Online00.txt');?

// String in Zeilen zerlegen und in ein Array schreiben 
$lines = explode("
", $file);

// letzte Zeile extrahieren      
$lastentry = $lines[count($lines)-2];

// Daten in ein Array schreiben 
$data = explode(";", $lastentry);     

SetValueFloat('SMA-Total',doubleval(str_replace(',','.',trim(substr($data[32],0)))));
SetValueFloat('SMA-Pac',doubleval(str_replace(',','.',trim(substr($data[20],0)))));
SetValueFloat('SMA_Pac',doubleval(str_replace(',','.',trim(substr($data[20],0)))));


$gesamt = GetValueFloat('SMA-Total');
$vortag = GetValueFloat('SMA-Tagesertrag-Vortag');

if($gesamt == 0)
      {
        //
      }
      else
      {
         $tag = $gesamt - $vortag;
         SetValueFloat('SMA-Tagesertrag',$tag);
         SetValueFloat('SMA_Tagesertrag',$tag);
         SetValueFloat('SMA-E-Total',doubleval(str_replace(',','.',trim(substr($data[32],0)))));

      }

$co2tag =  GetValueFloat("SMA_Tagesertrag");
$co2total = GetValueFloat("SMA-E-Total");

$co2tag = ($co2tag * 700) / 1000;
$co2total = ($co2total * 700) / 1000;

SetValueFloat('sma_co2_tag', $co2tag);
SetValueFloat('sma_co2_total', $co2total);

//PV On oder Off
$onoff = GetValueFloat("SMA-Pac");

if ($onoff > 0) {
   SetValueBoolean("SMA_on_off", true);
   }
   else {
   SetValueBoolean("SMA_on_off", false);
   }
   
//Ertrag in Euro ausrechnen
$schotter = (GetValueFloat("SMA-E-Total") * 0.4921);
SetValueFloat("SMA_Gesamtertrag", $schotter);
echo $schotter;
?>

Hallo Frank,

na das ging aber flott.

Da sag ich mal einen riesen Dank für das Skript, jetzt fehlt nur noch die Schnittstelle, obwohl, ich könnte schon mal die BT-Schnittstelle des grossen WR nutzen.

Werde meine Erfolg berichten.

Nachmals Danke.

kein problem …

unten am script ist noch ein wenig schnickschnack den ich um designer anzeige wie co2 einsparung oder ertrag in geld. das eigentliche auslesen ist der obere teil.

frank

Wenn nur schon die Schnittstelle da wäre :rolleyes:

Hallo Werner,

korrigiere aber bei Deinem Script dann unbedingt die Schotter Variante, sie ist ja nur 0,4675 in Deinem Fall.

Die Uhrzeit / Datum ist uebrigens auch in der Software einzustellen, das nur nebenbei.

Hallo torro,

korrigiere aber bei Deinem Script dann unbedingt die Schotter Variante, sie ist ja nur 0,4675 in Deinem Fall.

Danke für den Hinweis:rolleyes:, hatte ich schon gesehen. Da war hmpf99 schneller mit dem Aufbau der PV :smiley:

Die Uhrzeit / Datum ist uebrigens auch in der Software einzustellen, das nur nebenbei.

Kannst Du mir verraten wo. Habe in SunnyDataControl V4.0 nichts gefunden. Das Einzige was ich ändern kann und darf ist die Bezeichnung der Anlage, alles andere ist gesperrt und nur durch ein Installateur-Kennwort zu erreichen.

Hallo Frank,

nach dem ich nun meine 2. RS485 Schnittstelle habe, die erste wollte einfach nicht mit meinen SMA-WR, habe ich das Skript am Anfang des Threads auch durchgetestet mit dem gleichen Ergebnis wie Du, es will mit den neuen WR nicht mehr. Wirklich schade.

Jetzt werde ich mich morgen mal dran machen mit deinem Skript sowie die SMA-Software eine funktionierende Version ans laufen zu bekommen. Melde dann evtl. Erfolge und auch Mißerfolge :rolleyes:

Bis dahin.

hallo werner!

dann drück ich mal die daumen. und hoffe auf möglichst viel sonne noch in diesem jahr. ich hab mein soll noch nicht erreicht :slight_smile:

happy day, frank