Hallo Frank,
ich vermute das du die TXT-Dateien deines Wechselrichters die mit der SMA Software erzeugt werden auslesen möchtest oder?
Ich habe mir mal auf die Schnelle so eine Auslesung zusammen geschustert, ist also nicht sehr elegant geproggt (man könnte einiges mit Schleifen erschlagen), aber es funzt 
Es werden max. 10 Files gesucht (wenn du den Rechner neu startest wird ja jedesmal ein neues File erzeugt).
Du musst das halt noch etwas anpassen da ich drei Wechselrichter habe.
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Textfile_auslesen.ips.php
Trigger :
Interval :
*/
$debug1 = false; //Textausgabe
$sa = GetValueString("Sonne_Auf");
$su = GetValueString("Sonne_Unter");
$tau = date("H:i");
If (($tau > $sa ) and ( $tau < $su )){
$i = 0;
$dir = "d:\\DataSMA\\";
// Datum ermitteln
$monat = date("m");
$tag = date("d");
$jahr = date("y");
//Filename erzeugen
$filename1 = "$dir$jahr$monat$tag 00.SUO";
$filename2 = "$dir$jahr$monat$tag 01.SUO";
$filename3 = "$dir$jahr$monat$tag 02.SUO";
$filename4 = "$dir$jahr$monat$tag 03.SUO";
$filename5 = "$dir$jahr$monat$tag 04.SUO";
$filename5 = "$dir$jahr$monat$tag 05.SUO";
$filename6 = "$dir$jahr$monat$tag 06.SUO";
$filename7 = "$dir$jahr$monat$tag 07.SUO";
$filename8 = "$dir$jahr$monat$tag 08.SUO";
$filename9 = "$dir$jahr$monat$tag 09.SUO";
$filename10 = "$dir$jahr$monat$tag 10.SUO";
$var1 = explode(" ",$filename1);
$file1 = "$var1[0]$var1[1]";
$var2 = explode(" ",$filename2);
$file2 = "$var2[0]$var2[1]";
$var3 = explode(" ",$filename3);
$file3 = "$var3[0]$var3[1]";
$var4 = explode(" ",$filename4);
$file4 = "$var4[0]$var4[1]";
$var5 = explode(" ",$filename5);
$file5 = "$var5[0]$var5[1]";
$var6 = explode(" ",$filename6);
$file6 = "$var6[0]$var6[1]";
$var7 = explode(" ",$filename7);
$file7 = "$var7[0]$var7[1]";
$var8 = explode(" ",$filename8);
$file8 = "$var8[0]$var8[1]";
$var9 = explode(" ",$filename9);
$file9 = "$var9[0]$var9[1]";
$var10 = explode(" ",$filename10);
$file10 = "$var10[0]$var10[1]";
If (file_exists($file1)){
$file = $file1;
$ff = 1;}
If (file_exists($file2)){
$file = $file2;
$ff = 1;}
If (file_exists($file3)){
$file = $file3;
$ff = 1;}
If (file_exists($file4)){
$file = $file4;
$ff = 1;}
If (file_exists($file5)){
$file = $file5;
$ff = 1;}
If (file_exists($file6)){
$file = $file6;
$ff = 1;}
If (file_exists($file7)){
$file = $file7;
$ff = 1;}
If (file_exists($file8)){
$file = $file8;
$ff = 1;}
If (file_exists($file9)){
$file = $file9;
$ff = 1;}
If (file_exists($file10)){
$file = $file10;
$ff = 1;}
If ( $ff == 1){;
//Inhalt des Files auslesen
$inhalt = file($file);
//Anzahl Zeilen ermitteln
$daten = fopen($file, "r") ;
while (!feof($daten)) {
$i = $i + 1;
$zeile = fgets($daten, 10000) ;
;
}
fclose($daten);
If ($i < 2) {$i = 2;}
//Werte aus Zeile holen
$words = split("[
\r ]+", $inhalt[$i-2],200);
$i=1;
$words = explode(";", $words[$i]);
//Werte schreiben
SetValueString("PV_UPV_ist_WR_Ost",$words[1]);
SetValueString("PV_UPV_soll_WR_Ost",$words[2]);
SetValueString("PV_IAC_ist_WR_Ost",$words[3]);
SetValueString("PV_UAC_WR_Ost",$words[4]);
SetValueString("PV_Frequenz_ist_WR_Ost",$words[5]);
Settype($words[6],"Float");
SetValueFloat("PV_PAC_Ist_WR_Ost",$words[6]);
SetValueString("PV_ZAC_ist_WR_Ost",$words[7]);
SetValueString("PV_RErd_WR_Ost",$words[8]);
SetValueString("PV_IPC_ist_WR_Ost",$words[9]);
If ($words[10] > 0){SetValueString("PV_ETotal_WR_Ost",$words[10]);}
SetValueString("PV_hTotal_WR_Ost",$words[11]);
SetValueString("PV_Status_WR_Ost",$words[12]);
SetValueString("PV_Fehler_WR_Ost",$words[13]);
SetValueString("PV_UPV_ist_WR_West",$words[14]);
SetValueString("PV_UPV_soll_WR_West",$words[15]);
SetValueString("PV_IAC_ist_WR_West",$words[16]);
SetValueString("PV_UAC_WR_West",$words[17]);
SetValueString("PV_Frequenz_ist_WR_West",$words[18]);
Settype($words[19],"Float");
SetValueFloat("PV_PAC_Ist_WR_West",$words[19]);
SetValueString("PV_ZAC_ist_WR_West",$words[20]);
SetValueString("PV_RErd_WR_West",$words[21]);
SetValueString("PV_IPV_ist_WR_West",$words[22]);
If ($words[23] > 0){SetValueString("PV_ETotal_WR_West",$words[23]);}
SetValueString("PV_hTotal_WR_West",$words[24]);
SetValueString("PV_Status_WR_West",$words[25]);
SetValueString("PV_Fehler_WR_West",$words[26]);
SetValueString("PV_UPV_ist_WR_Sued",$words[27]);
SetValueString("PV_UPV_soll_WR_Sued",$words[28]);
SetValueString("PV_IAC_ist_WR_Sued",$words[29]);
SetValueString("PV_UAC_WR_Sued",$words[30]);
SetValueString("PV_Frequenz_ist_WR_Sued",$words[31]);
Settype($words[32],"Float");
SetValueFloat("PV_PAC_Ist_WR_Sued",$words[32]);
SetValueString("PV_ZAC_ist_WR_Sued",$words[33]);
SetValueString("PV_RErd_WR_Sued",$words[34]);
SetValueString("PV_IPV_ist_WR_Sued",$words[35]);
If ($words[36] > 0){SetValueString("PV_ETotal_WR_Sued",$words[36]);}
SetValueString("PV_hTotal_WR_Sued",$words[37]);
SetValueString("PV_Status_WR_Sued",$words[38]);
SetValueString("PV_Fehler_WR_Sued",$words[39]);
SetValueFloat("PV_Spannung_L1",floatval($words[5]));
SetValueFloat("PV_Spannung_L2",floatval($words[31]));
SetValueFloat("PV_Spannung_L3",floatval($words[18]));
Settype($words[5],"Float");
SetValueFloat("PV_Netzfrequenz",floatval($words[5]));
SetValueBoolean("PV_Tag-Nachtflag",true);
}
//Debugbereich
If ($debug1 == true) {
echo $inhalt[$i-2]."
";
echo "WR Ost Upv-Ist: ".$words[1]."
";
echo "WR Ost Upv-Soll: ".$words[2]."
";
echo "WR Ost Iac-Ist: ".$words[3]."
";
echo "WR Ost Uac-Ist: ".$words[4]."
";
echo "WR Ost Fac-Ist: ".$words[5]."
";
echo "WR Ost Pac-Ist: ".$words[6]."
";
echo "WR Ost Zac-Ist: ".$words[7]."
";
echo "WR Ost RErd-Start: ".$words[8]."
";
echo "WR Ost Ipv-Ist: ".$words[9]."
";
echo "WR Ost E-Total: ".$words[10]."
";
echo "WR Ost h-Total: ".$words[11]."
";
echo "WR Ost Status: ".$words[12]."
";
echo "WR Ost Fehler: ".$words[13]."
";
echo "WR West Upv-Ist: ".$words[14]."
";
echo "WR West Upv-Soll: ".$words[15]."
";
echo "WR West Iac-Ist: ".$words[16]."
";
echo "WR West Uac-Ist: ".$words[17]."
";
echo "WR West Fac-Ist: ".$words[18]."
";
echo "WR West Pac-Ist: ".$words[19]."
";
echo "WR West Zac-Ist: ".$words[20]."
";
echo "WR West RErd-Start: ".$words[21]."
";
echo "WR West Ipv-Ist: ".$words[22]."
";
echo "WR West E-Total: ".$words[23]."
";
echo "WR West h-Total: ".$words[24]."
";
echo "WR West Status: ".$words[25]."
";
echo "WR West Fehler: ".$words[26]."
";
echo "WR Sued Upv-Ist: ".$words[27]."
";
echo "WR Sued Upv-Soll: ".$words[28]."
";
echo "WR Sued Iac-Ist: ".$words[29]."
";
echo "WR Sued Uac-Ist: ".$words[30]."
";
echo "WR Sued Fac-Ist: ".$words[31]."
";
echo "WR Sued Pac-Ist: ".$words[32]."
";
echo "WR Sued Zac-Ist: ".$words[33]."
";
echo "WR Sued RErd-Start: ".$words[34]."
";
echo "WR Sued Ipv-Ist: ".$words[35]."
";
echo "WR Sued E-Total: ".$words[36]."
";
echo "WR Sued h-Total: ".$words[37]."
";
echo "WR Sued Status: ".$words[38]."
";
echo "WR Sued Fehler: ".$words[39]."
";
}
} else {
SetValueBoolean("PV_Tag-Nachtflag",false);
SetValueFloat("PV_PAC_Ist_WR_Sued",0);
SetValueFloat("PV_PAC_Ist_WR_West",0);
SetValueFloat("PV_PAC_Ist_WR_Ost",0);
$ff = 0;
}
?>
Gruß
Thomas