Ich steh bei einem Logikproblem auf dem berühmten Schlauch ![]()
Zum Verständnis:
Eigenbau Uhr mit einem ESP Modul
Daran ist eine rgb led verbaut. Diese soll jeden Monat die Farbe wechseln.
Die Uhr holt die Zeit und Datum bei jedem einschalten von einem NTP und aktualisiert damit das RTC Modul
Die Uhr wird mit einem Netzzeil betrieben. Das Netzteil kann mehrmals täglich vom Strom getrennt sein. Die Uhr ist dann also komplett stromlos.
Eigentlich wäre das sehr einfach jeden 1. im Monat die LED Farbe zu ändern:
Bei jedem Start der Uhr wird abgefragt ob heute der 1. im Monat ist. Wenn ja,
dann wird die Farbe gewechselt. Wenn nein, dann passiert nichts.
Hierbei ist das Problem:
Wenn die Uhr am 1. ausgeschaltet wird und später wieder an, dann ist immer noch der 1.
und die Uhr würde die Farbe ein weiteres mal an gleichen Tag wechseln. Bei jedem
einschalten am 1.
Daher müsste eine bool Kontrollvariable her. Woran man feststellt ob die Led Farbe bereits
gewechselt wurde oder nicht.
Bei jedem Start der Uhr wird eine Textdatei gelesen in der einfach nur true oder false steht.
Wenn heute der 1. und false, dann wechsle Led Farbe und schreibe true in datei.
oder
Wenn heute der 1. und true, dann mache nichts
und
Wenn heute > 1. und true, dann schreibe false in datei. Damit am nächsten 1. wieder der Farbwechsel statt findet.
Hierbei das Problem:
Wenn die Uhr am 1. nicht eingeschaltet wird, dann wird der nächste Farbwechsel erst im kommenden Monat gemacht. Und es war zwei Monate die gleiche Farbe eingestellt.
Klar könnte man sagen, macht doch nichts. Aber ich denke es müsste eine Logik geben die auch das berücksichtigt.
Ich komme nur nicht drauf.
Ich glaube mein Fehler liegt darin das ich den 1. abfrage.
Besser wäre vielleicht:
Wenn heute >= der 1. ist und false geladen wurde, dann wechsel Farbe und schreibe true in Datei
wenn heute >= der 1. ist und true geladen wurde, dann mache nichts.
Hierbei das Problem:
Ich müsste dann irgend wann wieder false in die Datei schreiben, damit im nächsten Monat wieder ein Farbwechsel statt findet. Theoretisch könnte ich das ab dem 15. eines Monats machen. und vorher >= 1 && < 14
Das wäre notfalls ein Kompromiss.
Vielleicht gibt es auch einen komplett anderen Ansatz.
Daher meine Frage an euch, habt ihr eine Idee wie die Uhr auf jeden Fall einmal
im Monat die Farbe wechselt?