From bebdb29974fb67cc8166f01b341b7a8702c68ea1 Mon Sep 17 00:00:00 2001 From: "MEGADragon2.0" <106551997+MEGADragon20@users.noreply.github.com> Date: Sat, 22 Nov 2025 16:07:11 +0100 Subject: [PATCH 1/3] Learntime logic Learntime logic implemented --- .../Main-Code _WemosD1mini/src/learn.cpp | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp b/Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp index 82c9038..c06672d 100644 --- a/Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp +++ b/Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp @@ -1,9 +1,47 @@ // Make functions to learn. E.g. the LED management during learning times, starting, pausing, stopping, etc. #include +#include -void startLearningSession(const String &name, int duration, int breaktime) { - Serial.println("Lernsession gestartet für: " + name); - Serial.println("Dauer: " + String(duration) + " Minuten"); - Serial.println("Pausenzeit: " + String(breaktime) + " Minuten"); - // Hier können weitere Aktionen hinzugefügt werden, z.B. LED steuerung oder timer keine Ahnung wie ihr das machen wollt +class Learntime { + public: + Learntime(const String &name, const std::vector &durations) + : name(name), durations(durations) {} + + String getName() const { return name; } + const std::vector& getDurations() const { return durations; } + + private: + String name; + std::vector durations; +}; + + +void runLearntime(const Learntime <) { + Serial.println("Starte Lernprogramm: " + lt.getName()); + + const std::vector &durs = lt.getDurations(); + + for (size_t i = 0; i < durs.size(); i++) { + int mins = durs[i]; + bool isBreak = (i % 2 == 1); + + if (isBreak) { + Serial.println("Pause: " + String(mins) + " Minuten"); + } else { + Serial.println("Lernen: " + String(mins) + " Minuten"); + } + + unsigned long interval = mins * 60000UL; + unsigned long start = millis(); + + while (millis() - start < interval) { + // Hier kommt LED-Steuerung, Button-Check, Webserver-Refresh, was auch immer + // Aber bitte *keine* busy-waits . + } + } + + Serial.println("Learntime beendet."); } + + + From 10f2d24228c690849a1975717769e5b72a448370 Mon Sep 17 00:00:00 2001 From: "MEGADragon2.0" <106551997+MEGADragon20@users.noreply.github.com> Date: Sat, 22 Nov 2025 18:02:36 +0100 Subject: [PATCH 2/3] Learntime logic Learntimes can be started only when none are running --- .../Main-Code _WemosD1mini/include/learn.h | 3 ++- .../Main-Code _WemosD1mini/src/learn.cpp | 17 ++++++++++++++++- .../Main-Code _WemosD1mini/src/network.cpp | 8 ++++++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Software/MC_Code/Main-Code _WemosD1mini/include/learn.h b/Software/MC_Code/Main-Code _WemosD1mini/include/learn.h index 7a0d2a1..ebeb4b5 100644 --- a/Software/MC_Code/Main-Code _WemosD1mini/include/learn.h +++ b/Software/MC_Code/Main-Code _WemosD1mini/include/learn.h @@ -2,5 +2,6 @@ #define LEARN_H #include -void startLearningSession(const String &name, int duration, int breaktime); +void runNewLearntime(const String &name, int duration, int breaktime); +const bool isLearning; #endif \ No newline at end of file diff --git a/Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp b/Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp index c06672d..edeaf40 100644 --- a/Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp +++ b/Software/MC_Code/Main-Code _WemosD1mini/src/learn.cpp @@ -2,6 +2,8 @@ #include #include +bool isLearning = false; + class Learntime { public: Learntime(const String &name, const std::vector &durations) @@ -43,5 +45,18 @@ void runLearntime(const Learntime <) { Serial.println("Learntime beendet."); } +Learntime createLearntime(const String &name, int duration, int breaktime) { + std::vector durations; + for (int i = 0; i < 4; i++) { // 4 Lernphasen + durations.push_back(duration); + if (i < 3) { // Pause nach jeder Lernphase außer der letzten + durations.push_back(breaktime); + } + } + return Learntime(name, durations); +} - +void runNewLearntime(const String &name, int duration, int breaktime) { + Learntime lt = createLearntime(name, duration, breaktime); + runLearntime(lt); +} diff --git a/Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp b/Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp index 052f2d8..f514c19 100644 --- a/Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp +++ b/Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp @@ -16,7 +16,7 @@ extern void writeWiFiCredentials(const String &ssid, const String &password); extern String readSSID(); extern String readPassword(); extern void saveLearntime(String name, String duration, String breaktime); -extern void startLearningSession(const String &name, int duration, int breaktime); +extern void runNewLearntime(const String &name, int duration, int breaktime); //* WLAN Verbindung bool tryConnectToWiFi(String ssid, String password) { @@ -197,13 +197,17 @@ void setupInterfaceServer(ESP8266WebServer &server) { }); server.on("/start_learntime", HTTP_GET, [&server]() { // Read parameters from URL query string + if (isLearning) { + server.send(200, "text/html", "

Ein Lernprogramm läuft bereits. Bitte abbrechen.

"); + return; + } String name = server.arg("name"); String duration = server.arg("duration"); String breaktime = server.arg("breaktime"); Serial.println("Start Learntime requested"); - startLearningSession(name, duration.toInt(), breaktime.toInt()); + runNewLearntime(name, duration.toInt(), breaktime.toInt()); server.sendHeader("Location", "/"); server.send(303); From a978371be767bfdaec3df6286ceb4f4dba247182 Mon Sep 17 00:00:00 2001 From: "MEGADragon2.0" <106551997+MEGADragon20@users.noreply.github.com> Date: Mon, 1 Dec 2025 17:05:34 +0100 Subject: [PATCH 3/3] Idk --- Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp b/Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp index f514c19..e2082a9 100644 --- a/Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp +++ b/Software/MC_Code/Main-Code _WemosD1mini/src/network.cpp @@ -212,4 +212,5 @@ void setupInterfaceServer(ESP8266WebServer &server) { server.send(303); }); -} \ No newline at end of file +} +// divide this file into more1S \ No newline at end of file