Das kann in die Byd-Steuerung mit rein (diese ist im Prinzip das gleiche wie eigene_werte.php).
Zuerst Testen ob das Skript läuft (benötigt die astral.lib, diese kommt mit der solcast oder pvlib-prognose mit rein, ansonsten muss diese manuell installiert werden: "pip3 install astral"). Wenn es funktioniert, dann gibt es nur ein paar Zahlen aus (auch z.B. Sonnenaufgang und Sonnenuntergang)
Wenn es läuft, dann könnte das z.B. so aussehen (nach dem schon vorhandenen Auslesen des Schattenmanagement einhängen):
Code: Alles auswählen
/****************************************************************************
// Einfache Steuerungen Schattenmanagement anhand des ausgelesenen Sonnenstandes
****************************************************************************/
$shell_befehl = "python3 /solaranzeige/Sundata.py";
$temp = shell_exec($shell_befehl);
$Einzelwerte = preg_split("/\n/", $temp);
$aktuelleDaten["SunAz"] = floatval($Einzelwerte[0]) - 180;
$aktuelleDaten["SunAlt"] = $Einzelwerte[1];
//$aktuelleDaten["Daemmerung"] = strtotime($Einzelwerte[3]);
//$aktuelleDaten["Sonnenaufgang"] = strtotime($Einzelwerte[4]);
//$aktuelleDaten["Sonnenuntergang"] = strtotime($Einzelwerte[5]);
//$aktuelleDaten["Zwielicht"] = strtotime($Einzelwerte[6]);
if ($aktuelleDaten["SunAz"] < 0 and $aktuelleDaten["SunAlt"] < 8) {
// Sonne steht im Osten und unter 8 Grad, SM Ost an"
if ($SMTest != 2) {
$shell_befehl = "python3 /solaranzeige/Kostal_SM2.py";
$temp = shell_exec($shell_befehl);
$aktuelleDaten["Schattenmanagement"] = "SM Ost";
$funktionen->log_schreiben("Schattenmanagement Ost an (1): " . $SMTest, " ", 8);
}
}
if ($aktuelleDaten["SunAz"] < 0 and $aktuelleDaten["SunAlt"] > 8) {
// Sonne steht im Osten und ueber 8 Grad, SM Ost aus"
if ($SMTest == 2) {
$shell_befehl = "python3 /solaranzeige/Kostal_SM0.py";
$temp = shell_exec($shell_befehl);
$aktuelleDaten["Schattenmanagement"] = "SM aus";
$funktionen->log_schreiben("Schattenmanagement Ost aus (2): " . $SMTest, " ", 8);
}
}
if ($aktuelleDaten["SunAz"] > 1 and $aktuelleDaten["SunAlt"] > 33 and $aktuelleDaten["SunAlt"] < 53) {
// Sonne steht im Westen und ueber 33 Grad, SM Ost an"
if ($SMTest != 2) {
$shell_befehl = "python3 /solaranzeige/Kostal_SM2.py";
$temp = shell_exec($shell_befehl);
$aktuelleDaten["Schattenmanagement"] = "SM Ost";
$funktionen->log_schreiben("Schattenmanagement Ost an (3): " . $SMTest, " ", 8);
}
}
if ($aktuelleDaten["SunAz"] > 1 and ($aktuelleDaten["SunAlt"] < 33 or $aktuelleDaten["SunAlt"] > 53)) {
// Sonne steht im Westen und unter 33 Grad, SM Ost aus"
if ($SMTest == 2) {
$shell_befehl = "python3 /solaranzeige/Kostal_SM0.py";
$temp = shell_exec($shell_befehl);
$aktuelleDaten["Schattenmanagement"] = "SM aus";
$funktionen->log_schreiben("Schattenmanagement Ost aus (4): " . $SMTest, " ", 8);
}
}
if ($aktuelleDaten["SunAz"] < -30 and $aktuelleDaten["SunAlt"] > 32 and $aktuelleDaten["SunAlt"] < 45) {
// Sonne steht im Osten und ueber 32 Grad, SM West an"
if ($SMTest != 1) {
$shell_befehl = "python3 /solaranzeige/Kostal_SM1.py";
$temp = shell_exec($shell_befehl);
$aktuelleDaten["Schattenmanagement"] = "SM West";
$funktionen->log_schreiben("Schattenmanagement West an (5): " . $SMTest, " ", 8);
}
}
if (($aktuelleDaten["SunAz"] > -30 and $aktuelleDaten["SunAlt"] > 6) or ($aktuelleDaten["SunAz"] < -30 and $aktuelleDaten["SunAlt"] > 45)) {
// Sonne steht im Osten aber ausreichend Richtung Sueden, SM West aus"
if ($SMTest == 1) {
$shell_befehl = "python3 /solaranzeige/Kostal_SM0.py";
$temp = shell_exec($shell_befehl);
$aktuelleDaten["Schattenmanagement"] = "SM aus";
$funktionen->log_schreiben("Schattenmanagement West aus (6): " . $SMTest, " ", 8);
}
}
if ($aktuelleDaten["SunAz"] > 0 and $aktuelleDaten["SunAlt"] < 6) {
// Sonne steht im Westen und unter 6 Grad, SM West an"
if ($SMTest != 1) {
$shell_befehl = "python3 /solaranzeige/Kostal_SM1.py";
$temp = shell_exec($shell_befehl);
$aktuelleDaten["Schattenmanagement"] = "SM West";
$funktionen->log_schreiben("Schattenmanagement West an (7): " . $SMTest, " ", 8);
}
}
und am Ende die Query erweitern, damit die zusätzlichen Werte geschrieben werden (Schattenmanagement ist schon vorhanden, darunter einhängen:
Code: Alles auswählen
$query .= ",Schattenmanagement=\"" . $aktuelleDaten["Schattenmanagement"] . "\"";
$query .= ",SunAz=" . $aktuelleDaten["SunAz"];
$query .= ",SunAlt=" . $aktuelleDaten["SunAlt"];
Danach entsprechend Deiner Verschattung die Winkel und Sonnenstände (Höhe) anpassen, wann Du welches Management benötigst. Das sollte es gewesen sein...