EDIT 01/2021:
Mittlerweile gibt es mit homebridge-sunsensors ein passendes Plugin. Danke, Beyon
Es folgt der ursprüngliche Beitrag
––––––––––––––––––––––––––
Hallo zusammen!
Nachdem ich endlich unsere alten Somfy RTS Rollläden dank HomeWizard sowie zeit- und anwesenheitsbasierten Automationen smart gemacht habe, war ich (getrieben durch die aktuellen Temperaturen) auf der Suche nach einem Homebridge-Plugin, das mir erlaubt, einzelne Rollläden abhängig vom Sonnenstand zu automatisieren. Dabei kam es mir nicht auf die Höhe überm Horizont an, sondern auf die aktuelle Himmelsrichtung (Azimut).
Ich hab sogar ein Plugin gefunden, das mir genau diesen Wert ausspuckt. Nur leider konnte ich damit weder in der Home-, noch in der Eve-App etwas anfangen.
Eine andere Lösung musste her! Ich stieß auf die suncalc JavaScript Library (gibt es auch als npm package). Doch da mir JavaScript nicht liegt habe ich im Anschluss eine PHP-Adaption gesucht und gefunden. Mit meinen rudimentären PHP-Kenntnissen und mittels homebridge-http-webhooks habe ich mir jetzt drei Sensoren angelegt. Einen für Osten, einen für Süden und einen für Westen.
Für alle die sich dafür interessieren hänge ich im Spoiler mal mein PHP-Skript an.
// initialise library class with date and coordinates of today's sunlight times for Duisburg
$sc = new AurorasLive\SunCalc(new DateTime(), 51.54, 6.71);
// get sun's current position
$currentPos = $sc->getSunPosition();
// position to degrees || north 0° - east 90° - south 180° - west 270°
$sd = $currentPos->azimuth * 180 / M_PI + 180;
if($sd >= 90 && $sd <= 138) {
$ch = curl_init("http://localhost:51830/?accessoryId=sun_east&state=true");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
} else {
$ch = curl_init("http://localhost:51830/?accessoryId=sun_east&state=false");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
}
if ($sd >= 132 && $sd <= 228){
$ch = curl_init("http://localhost:51830/?accessoryId=sun_south&state=true");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
} else {
$ch = curl_init("http://localhost:51830/?accessoryId=sun_south&state=false");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
}
if ($sd >= 222 && $sd <= 300){
$ch = curl_init("http://localhost:51830/?accessoryId=sun_west&state=true");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
} else {
$ch = curl_init("http://localhost:51830/?accessoryId=sun_west&state=false");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
}
Alles anzeigen
Wenn die Außentemperatur >= 28°C beträgt fahren bei mir nun an den lichtgefluteten Fenstern die Rollos runter und im Haus bleibt es (halbwegs) kühl!
Da ich wohl nicht der einzige bin, der seine Rollos über HomeKit/Homebridge steuert und ja recht bald die HomeKit-Jalousien von IKEA auf den Markt kommen, dachte ich es wäre total super, wenn sich jemand erbarmen könnte ein Homebridge-Plugin für genau diesen Zweck zu basteln. Den Teil der config.json hab ich sogar schon fertig
{
"platform": "Sonnenstand",
"lat": 51.5435,
"long": 6.7193,
"sensors": [
{
"name": "Sonne Ost",
"start": 90,
"stop": 138,
"type": "occupancy"
},
{
"name": "Sonne Süd",
"start": 132,
"stop": 228,
"type": "occupancy"
},
{
"name": "Sonne West",
"start": 222,
"stop": 300,
"type": "occupancy"
},
]
},
Alles anzeigen
Was haltet ihr von der Idee? Oder gibt es vielleicht sogar schon GANZ GENAU so ein Plugin und ich war einfach zu blöd es zu finden?
Gruß,
Gerrit