Daten von SMA SunnyBoy Solar-Wechselrichter

Hallo Frank,

so, Dein Skript ist zumindest bei einem Wechselrichter in Betrieb und ich muss sagen es läuft hervorragen. Schon einmal vielen Dank dafür.

Da meine Software von SMA (SunnyDataControl 4.0) für jeden Tag und auch noch für jeden Neustart des Loggings eine neu Logdatei schreibt mußte ich in deinem Skript ein paar Zeilen ergänzen. Bei Interesse werde ich die Zeilen oder dein ergänztes Skript nochmals posten.

Eine kleine Frage hätte ich aber noch.

Du hast in den Zeilen

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))))); 

      } 

oben eine Kommentierung, bei der ich vermute es ist für das Rücksetzen des Tagesertrages. Hast du hier schon eine Lösung gefunden?

hallo werner !

das freut mich, wenn das script funktioniert :slight_smile:

ich habe ein paar tageserträge und andere tageswerte wie kesselstarts die ich mit einem kleinen script per timer immer um 23.59 uhr zurücksetze.

happy day, frank

Hallo Frank,

wie angekündigt setzt ich hier Dein angepasstes Skript für die Version 4 der SunnyDataControl rein, ich hoffe Du hast nichts dagegen.


<? 
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : PV_einlesen.ips.php
Trigger  : Events
Interval : 15 Sekunden
*/
// Debug ja/nein
$debug = true;
// Verzeichnis der SMA-Logdateien
$dir     = "C:/Programme/IP-Symcon/Export/";
// Lese Verzeichnis in Array
$dircontent = scandir($dir);
// Zähle Verzeichnisinhalt -1 da Array bei 0 beginnt
$last       = count($dircontent)-1;
// Schreibe letzte Datei in VAR
$file       = $dircontent[$last];
// Schreibe Dateinamen in VAR
SetValueString('Last_Logfile',$file);
// Ergänze Dateinamen um Pfad
$file       = $dir.$file;
// Debugausgabe
if ($debug) echo $file."
";
// gesamte Datei in einen String einlesen 
$file = file_get_contents($file);
// 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[36],0)))));
SetValueFloat('SMA-Pac',doubleval(str_replace(',','.',trim(substr($data[14],0)))));
SetValueFloat('SMA_Pac',doubleval(str_replace(',','.',trim(substr($data[14],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[36],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  ,4675 für das Jahr 2008
$schotter = (GetValueFloat("SMA-E-Total") * 0.4675);
SetValueFloat("SMA_Gesamtertrag", $schotter); 
echo $schotter; 
?> 


Es wurden nur die ersten paar Zeilen ergänzt um die Funktion das immer die aktuellste Datei geladen wird.

hallo werner !

ich suche noch immer nach einer möglichkeit, die wr-daten einfach ins internet zu bringen mit entsprechenden übersichts-seiten. für die entsprechenden datenlogger gibt es ja das SMA Solar Technology AG - SunnyPortal .

hast du dir das schon mal angesehen? angeblich kann man da auch mitmachen, wenn man „nur“ die software data control verwendet. das wäre ja noch eine nette lösung, wenn die sowieso läuft.

happy day, frank

Hallo Frank,

mit diesem Thema habe ich mich ca. 3 Wochen gespielt, mit dem Ergebnis das ich nach wochenlangenen Mailverkehr von SMA die Nachricht bekam das dies nur von den Datenloggern selbst unterstützt wird, leider nicht von der Software.

Muss anscheinend mal funktioniert haben, aber laut deren Aussage jetzt nicht mehr.

Habe zwar Daten senden können aber immer die Nachricht erhalten das das Datumsformat falsch sei und dies kann man in der Software nicht ändern. :mad:

na toll. irgendwie habe ich mir sowas schon gedacht. wäre ja auch zu schön gewesen.

dann muss man halt mal eben einen datenloggern für 400 euro kaufen :mad:

es muss doch auch ein portal geben, wo man seine daten so loswerden kann.

happy day, frank

Ich gebe meine Daten per Hand bei Solarstrom und Photovoltaik Erträge | Erneuerbare Energie | Sonnenertrag.eu ein. Ist ganz OK wenn auch nicht so detailiert, aber Du hast zumindest auch andere Anlagen drin wie SMA.

Nachteil: Alles mit Hand einpflegen :mad:

Hier mein Datensatz.

per hand eintragen scheidet für mich aus :slight_smile:

Hallo Ihr beiden,

nun wartet doch mal ab, ich habe doch schon gesagt, dass ich was dafuer in Arbeit habe, dass dann ohne haendisches Eintragen geht. Also einfach mal etwas entspannen und abwarten.

Ich warte doch :smiley: und das total entspannt :rolleyes:

und ich hab gelesen , dass man mit sunny data control auch ins sunny-portal „darf“ …

Sorry das ich das Thema hier mal hochhole, mein PV ist seit April 09 in Betrieb und ich würde jetzt gerne die ersten Anfänge in IPS damit machen. Die Daten werden über Datenlogger zu dem neuen Solarworld-Portal übertragen, bzw, hier im eigenen Netz dargestellt als Visualisierung. Das klappt ganz gut nur soll es jetzt in IPS rein. Die Daten stehen an einer Ethernet-Schnittstelle zur Verfügung. kann ich diese Daten wie in dem script weiter oben beschrieben einlesen???
Gruss Dieter

hallo dieter !

ich habe eine rs232 schnittstelle im wechselrichter eingebaut. von dort geht ein serielles kabel an den ips server. ob das per lan auch geht, kann ich nicht sagen.

ein direktes auslesen habe ich ja auch nicht geschafft. ich lese eine datei vom sunny data control aus.

happy day, frank

Hallo Dieter,

wie Frank benutze ich auch die CSV-Datei der Sunny Data Control Software. Das Protokoll von SMA war mir zu kompliziert, insbesondere bei 2 Wechselrichtern.

Falls Du hier weiterkommen solltest nehmen wir jeden Tip an.

Hallo Werner und @ all. Ich habe auch eine Solaranlage mit 2 Sunnyboy`s. Ich habe jedoch einen Sunny Beam der die Daten per Funk bekommt. Die Daten werden dann auf den PC per USB übertragen. Das Programm SDC schreibt 2 Übergabedateien, eine im ini Format und eine im XML Format. DIese werden wie im SDC eingestellt geschrieben. Bei mir Minütlich.
Nun könnt Ihr Euch denken was nun kommt.
Macht Ihr / Du das auch damit? Weil leider ist der Pfad der Datei nicht änderbar und somit kann ich diese beiden Dateien nicht ins IPS Verzeichnis schreiben lassen.

Gruss
Frank

hallo frank !

also im prinzip kannst du mit ips jede datei auslesen. wo sie gespeichert wird, ist dabei egal. du kannst ips ja sagen, wo deine datei liegt.

meine datei liegt auch im sma verzeichnis. mit den skripten weiter oben kann man die datei zerpflücken und einzelne teile in ips-variablen füllen. es muss nur klare regeln geben, wann wieder ein neuer wert in der datei anfängt.

wenn in der datei z.b. steht: 10,5;12;1;0;0;0

kann man das „;“ als trennzeichen nehmen und die werte dazwischen immer einzeln in ips-variablen packen. vielleicht schaust du dir das skript oben einfach mal an. vielleicht wird das prinzip dann schon klarer.

happy day, frank

Hallo Frank?
Ich dachte das die Datei zwingend im IPS Verzeichnis liegen muss.
Da die Datei jede Minute neu geschrieben wird ist es mit neuen Datensätzen nicht so schwer.
Ich wusste nicht genau welche Struktur einfacher einzulesen ist. Im prinzip ist es egal, da beide ihre klare Trennung haben.
Mal sehen obn ich das hin bekomme. Aber alles macht man schliesslich zum ersten mal :stuck_out_tongue:

Gruss
Frank

ja, ich auch frank :slight_smile:

du gibst im skript an, wo deine datei liegt. viel erfolg !

happy day ,frank

Prima vielen dank und auch einen
schönen Sommertag.

Frank

Evtl. kannst Du mir doch helfen bitte .
Ich muss ja aus der XMl einen Bestimmten Zweig auslesen. Das geht ja mittels eines Textparser. So weit so gut. Nur die Übergeordnete Instanz , ich weiss nicht welche ich da anlegen soll?
Hast Du da einen Tipp?

Danke
Frank