sunset timer Problem

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    habe mit Hilfe von div.Beitraegen ein script gemacht das folgendes machen sollte;

    Um 16.25h schaltet script ein, (wird von Alarmanlage "scharf" gestartet) und laeuft bis
    sleep ${delay[week]} weiter. Nach Ablauf der sunet Zeit laeuft script weiter und fuehrt script fetig aus . (Sunset pro Kalender Woche) Dies funktioniert soweit ohne Probleme wenn vor 16.25h scharf gemacht wird.

    Wird die Alarmanlage erst nach 16.25h scharf gemacht laeuft "Activat scipt at" trotzdem weiter, was gut ist, aber nur bis zu sleep ${delay[week]} und wartet das delay sunset per week ab, bevor es weiter laueft.

    Problem, wird nach 16.25h scharf gemacht faengt das script nicht bei sunset, kuerzer verzoegert, oder sofort an zu laufen, sondern kann um Stunden zu spaet sein.

    Wie kann man erreichen dass wennn nach 16.25h scharf gemacht wird, das script trotdem den richtigen Zeitpunkt findet um zu starten?

    Gruss
    gwaag


    Einmal editiert, zuletzt von gwaag (6. Juni 2014 um 20:06)

    • Offizieller Beitrag

    Ich glaub ich versteh es einfach nicht. Ich seh nur $ und ; ;). Nein Ernsthaft, kannst du das bitte irgenwie anders formulieren? So das man es verstehen kann, ohne das Bash-Scrip auseinanderzunehmen?

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Einmal editiert, zuletzt von dbv (6. Juni 2014 um 21:55)

  • ??? hä

    ein Glück das ich kein Programmierer bin, so ist es verzeihlich das ich grad nix verstehe

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ihr habe alle recht, ich versuche es nochmals anders zu formullieren.

    Also die Alarmanlage wird um 14.00h scharf geschaltet, . Script wird aufgerufen und das script wartet jetzt bis 16.25 h bis es weiter laeuft.
    Das macht sleep $(( $(date -d 1625 +%s) - $(date +%s) ))
    .
    Um 16.25h wird jetzt berechnet in welcher Kalenderwoche wir uns befinden mit week=$(date +%U).
    Dann holt sich der Befehl z.B. fuer die Kalender Woche 22, den Wert delay=16020 Sekunden Verzoegerung.
    So kann man fuer jede Kalederwoche eine andere delay time holen um bei Sonnenuntergang das script weiter laufen zu lassen und die Lichter einschalten.
    Bis hierher funktioniert alles ohne Probleme. (Licht geht bei Sonnenuntergang um 20.52h an.)
    16.25h+16020 Sekunden = 20.52h.
    In Kalenderwoche 23 waere es 16.25h+16500 = 21.00h
    In Kalenderwoche 24 waere es 16.25h+16800 = 21.05h


    Jetzt die Beschreibung des Problems:

    Wird jetzt die Alarmanlage z.B erst um 19.00h scharf gemacht, wird script aufgerufen und
    sleep $(( $(date -d 1625 +%s) - $(date +%s) ))
    geht obwohl schon spaeter als 16.25h ist, trotzdem zum naechsten Befehl week=$(date +%U). Das ist ja gut so.
    Da jetzt aber wieder der Wert 16020 geholt wird fuer die Verzoegerung, wuerde Licht
    erst um 23.27h an gehen. 19.00h +16020 Sekunden =23.27h

    Wie muss nun der code geschrieben sein dass:

    Wird Alarmanlange spaeter als 16.25h scharf gemacht soll Licht trotzdem zum richtigen Zeitpunkt an gehen, oder wenn das delay fuer die Kalenderwoche schon vorbei ist, sofort an gehen.

    Beispiel:
    Alarmanlage wird um z.B. 14.00h scharf gemacht alles funktioniert ohne Probleme.
    Alarmanlage wird erst um z.B. 19.00h scharf gemacht Licht geht viel zu spaet an.
    Alarmanlage wird erst um z.B. 23.30h scharf gemacht Licht soll sofort angehen.

    Ev. gibt es ja schon einen aehnlichen code der das machen kann was ich will, nur bin ich bis jetzt noch nicht fuendig geworden. Falls jemand einen solchen kennt bitte link posten.

    Gruss und Danke fuer Loesungen.
    gwaag

    Einmal editiert, zuletzt von gwaag (7. Juni 2014 um 07:19)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!