This commit is contained in:
Jannis 2026-09-23 00:10:14 +02:00
parent bad613780e
commit eb2309a6d7

View file

@ -1,4 +1,5 @@
#include <Arduino.h>
#include <Preferences.h>
#include <FastAccelStepper.h>
#include <WiFi.h>
#include <time.h>
@ -53,7 +54,7 @@ struct settings{
int endMin = 0;
bool timerEnabled = false;
bool editMaxTemp = false;
int maxTemp = 70; //in °C
int16_t maxTemp = 70; //in °C
bool editAcc = false;
int32_t accelRate = 2000;
}
@ -68,12 +69,67 @@ enum TimeEditStep {
TimeEditStep timeEditStep = EDIT_NONE;
// fest in den Speicher schreiben
Preferences prefs;
// Dein Einstellungs-Struct
struct SystemSettings {
uint8_t startHour = 0;
uint8_t startMin = 0;
uint8_t endHour = 0;
uint8_t endMin = 0;
bool timerEnabled = false;
int16_t maxTemp = 70;
int32_t accelRate = 2000;
};
SystemSettings settings;
//#####################################
//########### Hilfsfunktion ###########
//#####################################
// Überladung des Präfix-Operators (++timeEditStep)
TimeEditStep& operator++(TimeEditStep& step) {
step = (step == EDIT_END_MIN) ? EDIT_NONE : static_cast<TimeEditStep>(step + 1);
return step;
}
// Werte aus dem Flash speicher laden
void loadSettings() {
// Namespace öffnen (Name max. 15 Zeichen, "true" = read-only)
prefs.begin("timer_cfg", true);
// Werte auslesen
settings.startHour = prefs.getUChar("s_hour", 0);
settings.startMin = prefs.getUChar("s_min", 0);
settings.endHour = prefs.getUChar("e_hour", 0);
settings.endMin = prefs.getUChar("e_min", 0);
settings.timerEnabled = prefs.getBool("t_on", false);
settings.maxTemp = prefs.getShort("max_temp", 70);
settings.accelRate = prefs.getInt("accel_rate", 2000);
prefs.end();
Serial.println("[NVS] Einstellungen erfolgreich geladen.");
}
// Save Settings in Flash Speichern
void saveSettings() {
prefs.begin("timer_cfg", false); // "false" = Read/Write
prefs.putUChar("s_hour", settings.startHour);
prefs.putUChar("s_min", settings.startMin);
prefs.putUChar("e_hour", settings.endHour);
prefs.putUChar("e_min", settings.endMin);
prefs.putBool("t_on", settings.timerEnabled);
prefs.putShort("max_temp", settings.maxTemp);
prefs.putInt("accel_rate", settings.accelRate);
prefs.end();
Serial.println("[NVS] Einstellungen im Flash gespeichert.");
}
void initWiFiAndTime() {
WiFi.begin(ssid, password);
@ -287,6 +343,8 @@ void setting(){
}else if (settings.settingIdx == 4) {
// Menü verlassen
bSettings = false;
// Einstellungen Speichern
saveSettings();
}
}
}
@ -338,6 +396,9 @@ void printStatus(FastAccelStepper *stepper, int speed, int clickPlus, int clickM
void loop() {
int32_t speed = 0;
// Daten aus Flash speicher laden
loadSettings();
if (!stepper) {
Serial.println("[HALT] Kein Stepper-Objekt aktiv.");
delay(1000);