Anpassung Zeitmessung, Batterie Backend to Frontend

This commit is contained in:
Carsten Graf
2025-07-11 22:07:13 +02:00
parent 393a0b718b
commit 2bd47a10a5
4 changed files with 96 additions and 34 deletions

View File

@@ -24,52 +24,54 @@
const char* firmwareversion = "1.0.0"; // Version der Firmware
void handleStart1() {
void handleStart1(uint64_t timestamp = 0) {
if (!timerData.isRunning1 && timerData.isReady1) {
timerData.isReady1 = false; // Setze auf "Nicht bereit" bis Stopp
timerData.startTime1 = millis();
timerData.isReady1 = false;
timerData.startTime1 = (timestamp > 0) ? timestamp : millis();
timerData.localStartTime1 = millis(); // Set local start time
timerData.isRunning1 = true;
timerData.endTime1 = 0;
Serial.println("Bahn 1 gestartet");
}
}
void handleStop1() {
void handleStop1(uint64_t timestamp = 0) {
if (timerData.isRunning1) {
timerData.endTime1 = millis();
timerData.endTime1 = (timestamp > 0) ? timestamp : millis();
timerData.finishedSince1 = millis(); // Set finished time
timerData.isRunning1 = false;
unsigned long currentTime = timerData.endTime1 - timerData.startTime1;
if (timerData.bestTime1 == 0 || currentTime < timerData.bestTime1) {
timerData.bestTime1 = currentTime;
saveBestTimes();
}
timerData.finishedSince1 = millis();
Serial.println("Bahn 1 gestoppt - Zeit: " + String(currentTime/1000.0) + "s");
}
}
void handleStart2() {
void handleStart2(uint64_t timestamp = 0) {
if (!timerData.isRunning2 && timerData.isReady2) {
timerData.isReady2 = false; // Setze auf "Nicht bereit" bis Stopp
timerData.startTime2 = millis();
timerData.isReady2 = false;
timerData.startTime2 = (timestamp > 0) ? timestamp : millis();
timerData.localStartTime2 = millis(); // Set local start time
timerData.isRunning2 = true;
timerData.endTime2 = 0;
Serial.println("Bahn 2 gestartet");
}
}
void handleStop2() {
void handleStop2(uint64_t timestamp = 0) {
if (timerData.isRunning2) {
timerData.endTime2 = millis();
timerData.endTime2 = (timestamp > 0) ? timestamp : millis();
timerData.finishedSince2 = millis(); // Set finished time
timerData.isRunning2 = false;
unsigned long currentTime = timerData.endTime2 - timerData.startTime2;
if (timerData.bestTime2 == 0 || currentTime < timerData.bestTime2) {
timerData.bestTime2 = currentTime;
saveBestTimes();
}
timerData.finishedSince2 = millis();
Serial.println("Bahn 2 gestoppt - Zeit: " + String(currentTime/1000.0) + "s");
}
}
@@ -77,13 +79,13 @@ void handleStop2() {
void checkAutoReset() {
unsigned long currentTime = millis();
if (timerData.isRunning1 && (currentTime - timerData.startTime1 > maxTimeBeforeReset)) {
if (timerData.isRunning1 && (currentTime - timerData.localStartTime1 > maxTimeBeforeReset)) {
timerData.isRunning1 = false;
timerData.startTime1 = 0;
Serial.println("Bahn 1 automatisch zurückgesetzt");
}
if (timerData.isRunning2 && (currentTime - timerData.startTime2 > maxTimeBeforeReset)) {
if (timerData.isRunning2 && (currentTime - timerData.localStartTime2 > maxTimeBeforeReset)) {
timerData.isRunning2 = false;
timerData.startTime2 = 0;
Serial.println("Bahn 2 automatisch zurückgesetzt");
@@ -91,7 +93,7 @@ void checkAutoReset() {
// Automatischer Reset nach 10 Sekunden "Beendet"
if (!timerData.isRunning1 && timerData.endTime1 > 0 && timerData.finishedSince1 > 0) {
if (currentTime - timerData.finishedSince1 > maxTimeDisplay) {
if (millis() - timerData.finishedSince1 > maxTimeDisplay) {
timerData.startTime1 = 0;
timerData.endTime1 = 0;
timerData.finishedSince1 = 0;
@@ -226,7 +228,7 @@ String getTimerDataJSON() {
unsigned long currentTime = millis();
// Bahn 1
if (timerData.isRunning1) {
doc["time1"] = (currentTime - timerData.startTime1) / 1000.0;
doc["time1"] = (currentTime - timerData.localStartTime1) / 1000.0;
doc["status1"] = "running";
} else if (timerData.endTime1 > 0) {
doc["time1"] = (timerData.endTime1 - timerData.startTime1) / 1000.0;
@@ -238,7 +240,7 @@ String getTimerDataJSON() {
// Bahn 2
if (timerData.isRunning2) {
doc["time2"] = (currentTime - timerData.startTime2) / 1000.0;
doc["time2"] = (currentTime - timerData.localStartTime2) / 1000.0;
doc["status2"] = "running";
} else if (timerData.endTime2 > 0) {
doc["time2"] = (timerData.endTime2 - timerData.startTime2) / 1000.0;