Ich habe einen Socket auf den Port 15000 vom Solarview gesetzt und darunter ein Script zum aktivieren/deaktivieren der Schnittstelle bzw. zum pollen der Daten.
<?
$id = 19383 /*[Socket Solarview]*/;
IPS_SetProperty($id, "Open", true); //I/O Instanz soll aktiviert sein.
IPS_ApplyChanges($id); //Neue Konfiguration übernehmen
IPS_Sleep(500);
CSCK_SendText($id,"01*");
IPS_Sleep(2000);
IPS_SetProperty($id, "Open", false); //I/O Instanz soll aktiviert sein.
IPS_ApplyChanges($id); //Neue Konfiguration übernehmen
?>
Das Ergebnis landet über einen Cutter in einer Registervariable, die dann das Script triggert.
Cutter links: 7B (HEX)
Cutter rechts: 7D (HEX)
<?
// Auswertung der Daten von Solarview
if($_IPS['SENDER'] == "RegisterVariable") {
//Datensatz = 00,16,09,2014,11,06,0000.7,00353,004703,00026559,02475,000,000.0,000,000.0,000,000.0,000,000.0,00
//WR, Tag, Monat, Jahr, Stunde, Minute, KDY, KMT, KYR, KT0,PAC, UDC, IDC, UDCB, IDCB, UDCC, IDCC,UL1, IL1, TKK
//*************************************************************************
//Bedeutung der Werte:
//KDY= Tagesertrag (kWh)
//KMT= Monatsertrag (kWh)
//KYR= Jahresertrag (kWh)
//KT0= Gesamtertrag (kWh)
//PAC= Generatorleistung in W
//UDC, UDCB, UDCC = Generator-Spannungen in Volt pro MPP-Tracker IDC,
//IDCB, IDCC = Generator-Ströme in Ampere pro MPP-Tracker
//UL1, IL1 = Netzspannung, Netzstrom
//TKK= Temperatur Wechselrichter
//*************************************************************************
$wr = explode(",", $_IPS['VALUE']);
SetValueString(13178 /*[Energie\PV_Anlage\Abfragezeitpunkt]*/, $wr[1].".".$wr[2].".".$wr[3]." ".$wr[4].":".$wr[5]." Uhr");
SetValueFloat(44395 /*[Energie\PV_Anlage\Tagesertrag]*/, floatval($wr[6]));
SetValueFloat(26579 /*[Energie\PV_Anlage\Monat]*/, floatval($wr[7]));
SetValueFloat(51166 /*[Energie\PV_Anlage\Jahr]*/, floatval($wr[8]));
SetValueFloat(40181 /*[Energie\PV_Anlage\Anlagengesamtertrag]*/, floatval($wr[9]));
SetValueFloat(34628 /*[Energie\PV_Anlage\Max. Leistung]*/, floatval($wr[10]));
SetValueFloat(34886 /*[Energie\PV_Anlage\Temperatur WR]*/, floatval($wr[19]));
}
?>
Gruß
Jens