Hallo,
jetzt läuft die Batterie einige Tage. Ich frage die Werte am API alle 5 sec ab.
Allerdings habe ich immer nachts zwischen 2 und 3 Aussetzer. Eventuell bootet die Batterie da, oder es ist der Zeitpunkt, wo der Akku leer ist. Da sind dann scheinbar ein Wert nicht im json String enthalten.
Von Sonnen habe ich als Antwort zum Thema API bekommen, dass für Endkunden kein API zur Verfügung steht, dies aber in Q2 2018 kommen soll. Eine Doku zu den Werten habe ich nicht bekommen.
Hier mal der aktuelle Stand meines Scripts:
<?
IPSUtils_Include ("IPSLogger.inc.php", "IPSLibrary::app::core::IPSLogger");
define ("c_LogId", "Sonnenbatterie");
$json = Sys_GetURLContent("http://10.0.111.12:8080/api/v1/status");
if ($json == false) {
IPSLogger_Inf(c_LogId, "Konnte Batterie nicht auslesen");
return;
}
$array = json_decode($json);
//print_r($array);
if (property_exists($array, "Consumption_W")) {
SetValueFloat (56837 /*[Script\Sonnenbatterie\PV Anlage Stromverbrauch]*/,floatval($array->Consumption_W));
}
if (property_exists($array, "USOC")) {
SetValueFloat (38158 /*[Script\Sonnenbatterie\Batteriestand (SOC)]*/,floatval($array->USOC));
}
if (property_exists($array, "Production_W")) {
SetValueFloat (53115 /*[Script\Sonnenbatterie\PV Anlage erzeugte Leistung]*/,floatval($array->Production_W));
}
if (property_exists($array, "Ubat")) {
SetValueFloat (50708 /*[Script\Sonnenbatterie\PV Anlage Batteriespannung]*/,floatval($array->Ubat));
}
if (property_exists($array, "GridFeedIn_W")) {
if ($array->GridFeedIn_W < 0){// Netzbezug
SetValueBoolean(45736 /*[Script\Sonnenbatterie\Bezug/Einspeisen]*/, false);
SetValueBoolean(51251 /*[Script\Sonnenbatterie\PV Anlage Netzbezug sichtbar]*/, true);
SetValueBoolean(18831 /*[Script\Sonnenbatterie\PV Anlage Netzeinspeisung sichtbar]*/, false);
SetValueFloat (26356 /*[Script\Sonnenbatterie\PV Anlage Netzbezug]*/,-1*(floatval($array->GridFeedIn_W)));
}elseif ($array->GridFeedIn_W == 0){// neutral
SetValueBoolean(45736 /*[Script\Sonnenbatterie\Bezug/Einspeisen]*/, false);
SetValueBoolean(51251 /*[Script\Sonnenbatterie\PV Anlage Netzbezug sichtbar]*/, true);
SetValueBoolean(18831 /*[Script\Sonnenbatterie\PV Anlage Netzeinspeisung sichtbar]*/, false);
SetValueFloat (26356 /*[Script\Sonnenbatterie\PV Anlage Netzbezug]*/,-1*(floatval($array->GridFeedIn_W)));
}
else { //Netzeinspeisung
SetValueBoolean(45736 /*[Script\Sonnenbatterie\Bezug/Einspeisen]*/, true);
SetValueBoolean(51251 /*[Script\Sonnenbatterie\PV Anlage Netzbezug sichtbar]*/, false);
SetValueBoolean(18831 /*[Script\Sonnenbatterie\PV Anlage Netzeinspeisung sichtbar]*/, true);
SetValueFloat (23905 /*[Script\Sonnenbatterie\PV Anlage Netzeinspeisung]*/,floatval($array->GridFeedIn_W));
}
}
if (property_exists($array, "Pac_total_W")) {
if ($array->Pac_total_W < 0){ //Batterie Laden
SetValueBoolean(31317 /*[Script\Sonnenbatterie\Laden/Entladen]*/, false);
SetValueBoolean(54044 /*[Script\Sonnenbatterie\PV Anlage Batterieentladung sichtbar]*/, false);
SetValueBoolean(26609 /*[Script\Sonnenbatterie\PV Anlage Batterieladung sichtbar]*/, true);
SetValueFloat (42788 /*[Script\Sonnenbatterie\PV Anlage Batterieladeleistung]*/,-1*(floatval($array->Pac_total_W)));
}elseif ($array->Pac_total_W == 0){ //Batterie neutral
SetValueBoolean(31317 /*[Script\Sonnenbatterie\Laden/Entladen]*/, true);
SetValueBoolean(54044 /*[Script\Sonnenbatterie\PV Anlage Batterieentladung sichtbar]*/, true);
SetValueBoolean(26609 /*[Script\Sonnenbatterie\PV Anlage Batterieladung sichtbar]*/, false);
SetValueFloat (44567 /*[Script\Sonnenbatterie\PV Anlage Batterieentladeleistung]*/,floatval($array->Pac_total_W));
}else { //Batterie entladen
SetValueBoolean(31317 /*[Script\Sonnenbatterie\Laden/Entladen]*/, true);
SetValueBoolean(54044 /*[Script\Sonnenbatterie\PV Anlage Batterieentladung sichtbar]*/, true);
SetValueBoolean(26609 /*[Script\Sonnenbatterie\PV Anlage Batterieladung sichtbar]*/, false);
SetValueFloat (44567 /*[Script\Sonnenbatterie\PV Anlage Batterieentladeleistung]*/,floatval($array->Pac_total_W));
}
}
?>
Gruß
Christian