[SOLVED]Zeitschaltuhr : Definition des Schaltzustandes

hi…

ich könnte einen kleinen Denkanstoss gebrauchen…

Ich möchte gerne, z.b. nach einem Reset oder nach dem ändern der Schaltzeiten, das sich der Schaltzustand eines Ausganges dem der entsprechenden Uhrzeit anpasst.

Wenn die aktuelle Uhrzeit gleich der Schaltzeit ist, das ist kein Problem im laufenden Programm.

Aber kleines Beispiel:

Aktuelle Uhrzeit 12:53 Uhr = Zeitpunkt des Resets
Schaltzeit Ein : 11:00 Uhr
Schaltzeit Aus : 13:31 Uhr

nach dem resetten (oder manuelles ändern der Schaltzeiten vom Benutzer über Bluetooth) ist es ja immer noch später wie die Einschaltzeit aber früher wie die Ausschaltzeit, also muss der Kanal oja eigentlich geschaltet werden. Komplizierter wieder es noch, wenn die Einschaltdauer über Mitternacht geht.

bis jetzt habe ich probiert über If Anweisungen mit && und || was zu erreichen , hätte das irgendwie funktionert, wäre ich nicht hier …

Was ist mit Unix TimeStamps , die kann man doch einfacher vergleichen ?! Gibt es noch eine elegantere Lösung ?

einer der etlichen Versuche →
die Variablen sind alles Integer

if ((dummyh == chanOnHour[i] && dummym == chanOnMin[i]) || (chanOnHour[i] < chanOffHour[i] && dummyh <= chanOffHour[i] && dummym < chanOffMin[i]) || (chanOnHour[i] > chanOffHour[i] && dummyh <= chanOffHour[i] && dummym < chanOffMin[i]) | (chanOnHour[i] > chanOffHour[i] && dummyh >= chanOnHour[i] ))
   
   {
        digitalWrite(chanPin[i], HIGH);
        chanState[i] = "an";
      }
      else if (dummyh == chanOffHour[i] && dummym == chanOffMin[i])
      {
        digitalWrite(chanPin[i], LOW);
        chanState[i] = "aus";
      }

butalive666:
Was ist mit Unix TimeStamps , die kann man doch einfacher vergleichen ?!

Auf jeden Fall eine funktionierende Möglichkeit, wobei die Minuten ab 1.1.2000 auch reichen.

Zu dieser Fragestellung hat jurs mal was programmiert, einschließlich Sommer- Winterzeitumstellung: Lib von jurs mit kleiner Korrektur von mir. Da werden auch Zeiten über Mitternacht berücksichtigt.

erstmal Danke für die Antwort, die mich weitergebracht hat :slight_smile:

aber , es gab noch ein Problem beim Schalten über Mitternacht…

habe mir erlaubt , diese Zeile :

if (onTime>offTime && thisTime<onTime && thisTime>=offTime) return true;

in diese Version zu ändern:

if ((onTime>offTime && thisTime >= onTime) || (onTime > offTime && thisTime < offTime)) return true;

somit war das Problem weg, wenn die OnTime grösser war, als die OffTime. Denn nach Mitternacht ist die aktuelle Zeit wieder “kleiner” als die OffTime.

der Anhang ist mit meiner Änderung

jursRTCtimeEasy.h (9.15 KB)