Zeitschaltung: Wie gehe ich am besten vor?

  • Hallo Zusammen,


    ich möchte eine Zeitsteuerung in meine Haussteuerung einbauen und benötige eine kleine Starthilfe.
    IST Zustand: Haussteuerung mit Funksteckern die per php Aufruf (shell_exec --> pilight) über ein Webinterface EIN und AUS geschaltet werden können.
    Jetzt möchte ich eine Möglichkeit eine Lame EIN zu schalten und nach einer Stunde wieder automatisch AUS. Ein zusätzlicher Abbruch der Funktion, also dass das Licht gar nicht ausgeht, wäre schön, ist aber erstmal kein Muss.
    Anwendung ist ein Nachtlicht als Einschlafhilfe fürs Kindchen.


    Wie setzte ich das am besten um? Habe schon ein paar Ideen, weiß aber nicht so recht, welche sich am besten eignet:


    1) per timestamp unix code +1 Stunde in Logdatei schreiben und dann regelmäßig abfragen, ob timestamp erreicht wurde. Ist php dafür geeignet? oder doch besser pythonscript dafür?


    2) per crontab eventuell. Geht das überhaupt? Scheint mir nicht sonderlich geeignet.


    3) pytonscript mit EIN -> sleep(60*60) -> AUS . Da macht mir das sleep aber ein wenig Sorgen. Der nachträgliche Abbruch scheint auch nicht realisierbar.


    Vielleicht hat ein etwas erfahrener Entwickler eine bessere Lösung, die ich als Einsteiger noch nicht kenne. Googlen ist immer leicht, wenn man weiß, wonach man suchen muss :s

  • Ok, kannte bis grade das 'at' noch gar nicht und tue mich schwer eine passende Dokumentation zu finden. Googlen nach 'at' ist gestaltet sich schwierig.
    Ich würde es jetzt so lösen:


    [code=php]
    <?php
    shell_exec('pilight-send -p rev2_switch -i E5 -u 0 -f'); //anschalten
    shell_exec('pilight-send -p rev2_switch -i E5 -u 0 -t') | at "now + 1 hour" ; //ausschalten in einer Stunde
    ?>
    [/php]


    Hört sich das plausibel an oder verwende ich das at bzw. das "now + 1 hour" falsch? muss ich das mit echo umsetzen? Oh Mann sorry für die ganzen dummen Fragen, aber bin echt neu in php.
    Dazu kommt, dass ich das jetzt grade nicht am laufenden Objekt testen kann, da ich auf der Arbeit hänge

  • "man at" sollte Dir die Dokumentation liefern.


    Ich kann selbst gar kein PHP, aber ich würde es mit


    [code=php]shell_exec('echo pilight-send -p rev2_switch -i E5 -u 0 -t | at "now + 1 hour"');[/php]


    (bzw. zum Testen "now + 1 minute") versuchen. Falls es nicht installiert ist, at gehört übrigens zum Paket "at" ("sudo apt-get install at").

    Edited once, last by Manul ().