14.06.2016: Anpassungen zum direkten Ausführen des PHP Skript aus DoorPi, Danke an sothoku (siehe Post 35)
15.06.2016: Dito
Hallo zusammen.
Ich kann / möchte keine Fotozelle einsetzen, um die Beleuchtung meiner Sprechstelle ein- bzw. auszuschalten. In PHP gibt es eine Funktion, welche den Zeitpunkt von Sonnenauf- bzw. Untergang berechnet. Ich habe dieses PHP Script erstellt:
#!/usr/bin/php -q
<?php
// Flughafen Düsseldorf (DUS)
$lat = 51.282785; // North
$long = 6.76227; // East
$filenameOn = "/home/pi/keyboard/twilight/input/on";
$filenameOff = "/home/pi/keyboard/twilight/input/off";
$logfilename = "/home/pi/twilight.txt";
If(file_exists($logfilename))
{
unlink($logfilename);
}
$logfile = fopen($logfilename, "wb+");
fwrite($logfile, date(DATE_RFC822));
$offset = 1 + date("I"); // difference between GMT and local time (and daylight saving time) in hours
$now = date("U"); // actual timestamp
$zenith=90+50/60; // best practices for visible twilight
// Calculate surise and sunset for today
$sunrise = date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, $zenith, $offset);
$sunset = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, $zenith, $offset);
If ($now > $sunrise)
{
If($now < $sunset)
{
fwrite($logfile, " - Es ist Tag");
If(file_exists($filenameOn))
{
unlink($filenameOn);
$myfile = fopen($filenameOff, "wb+");
fwrite($myfile, "1");
fclose($myfile);
}
}
Else
{
fwrite($logfile, " - Es ist Abend");
If(file_exists($filenameOff))
{
unlink($filenameOff);
$myfile = fopen($filenameOn, "wb+");
fwrite($myfile, "1");
fclose($myfile);
}
}
}
else
{
fwrite($logfile, " - Es ist Morgen");
If(file_exists($filenameOff))
{
unlink($filenameOff);
$myfile = fopen($filenameOn, "wb+");
fwrite($myfile, "1");
fclose($myfile);
}
}
fclose($logfile)
?>
Alles anzeigen
Das PHP Skript muss anschließend mit chmod u+x ausführbar gemacht werden.
Es legt im Verzeichnis /home/pi/keyboard/twilight/input entweder eine Datei "on" oder "off" an, je nach Tageszeit.
Ausgeführt wird das Script alle 5 Minuten per Event:
Der Rest der doorpi.conf für diesen Teil:
[keyboards]
onboardpins = gpio
twilight = filesystem
[onboardpins_InputPins]
11 = Sleep:0
[onboardpins_OutputPins]
12 = amp
13 = light
22 = alive_led
[onboardpins_keyboard]
bouncetime = 1000
mode = board
polarity = 0
pressed_on_keydown = true
pull_up_down = PUD_DOWN
[twilight_keyboard]
base_path_input = /home/pi/keyboard/twilight/input
base_path_output = /home/pi/keyboard/twilight/output
reset_input = true
pressed_on_keydown = true
[twilight_InputPins]
on = Sleep:0
off = Sleep:0
[EVENT_OnKeyUp_twilight.on]
10 = out:light,1
[EVENT_OnKeyUp_twilight.off]
10 = out:light,0
Alles anzeigen
Ich muss jetzt mal schauen ob das mit der Helligkeit passt. Ggf. kann man noch einen Offset einbauen oder den Zenith ändern.