99 lines
3.1 KiB
C
99 lines
3.1 KiB
C
#pragma once
|
|
#include <Arduino.h>
|
|
#include "master.h"
|
|
// Aquacross Timer - ESP32 Master (Webserver + ESP-NOW + Anlernmodus)
|
|
#include <ESPAsyncWebServer.h>
|
|
|
|
|
|
|
|
void handleLearningMode(const uint8_t* mac) {
|
|
// Prüfen ob MAC bereits einem anderen Button zugewiesen ist
|
|
if (buttonConfigs.start1.isAssigned && memcmp(buttonConfigs.start1.mac, mac, 6) == 0) {
|
|
Serial.println("Diese MAC ist bereits zugewiesen - wird ignoriert");
|
|
return;
|
|
}
|
|
if (buttonConfigs.stop1.isAssigned && memcmp(buttonConfigs.stop1.mac, mac, 6) == 0) {
|
|
Serial.println("Diese MAC ist bereits zugewiesen - wird ignoriert");
|
|
return;
|
|
}
|
|
if (buttonConfigs.start2.isAssigned && memcmp(buttonConfigs.start2.mac, mac, 6) == 0) {
|
|
Serial.println("Diese MAC ist bereits zugewiesen - wird ignoriert");
|
|
return;
|
|
}
|
|
if (buttonConfigs.stop2.isAssigned && memcmp(buttonConfigs.stop2.mac, mac, 6) == 0) {
|
|
Serial.println("Diese MAC ist bereits zugewiesen - wird ignoriert");
|
|
return;
|
|
}
|
|
|
|
// MAC ist noch nicht zugewiesen, normal fortfahren
|
|
switch(learningStep) {
|
|
case 0: // Start1
|
|
memcpy(buttonConfigs.start1.mac, mac, 6);
|
|
buttonConfigs.start1.isAssigned = true;
|
|
Serial.println("Start1 Button zugewiesen");
|
|
break;
|
|
case 1: // Stop1
|
|
memcpy(buttonConfigs.stop1.mac, mac, 6);
|
|
buttonConfigs.stop1.isAssigned = true;
|
|
Serial.println("Stop1 Button zugewiesen");
|
|
break;
|
|
case 2: // Start2
|
|
memcpy(buttonConfigs.start2.mac, mac, 6);
|
|
buttonConfigs.start2.isAssigned = true;
|
|
Serial.println("Start2 Button zugewiesen");
|
|
break;
|
|
case 3: // Stop2
|
|
memcpy(buttonConfigs.stop2.mac, mac, 6);
|
|
buttonConfigs.stop2.isAssigned = true;
|
|
Serial.println("Stop2 Button zugewiesen");
|
|
break;
|
|
}
|
|
|
|
learningStep++;
|
|
if (learningStep >= 4) {
|
|
learningMode = false;
|
|
learningStep = 0;
|
|
saveButtonConfig();
|
|
Serial.println("Lernmodus beendet!");
|
|
}
|
|
}
|
|
|
|
void handleStartLearning() {
|
|
learningMode = true;
|
|
|
|
// Count assigned buttons and set appropriate learning step
|
|
int assignedButtons = 0;
|
|
if (buttonConfigs.start1.isAssigned) assignedButtons++;
|
|
if (buttonConfigs.stop1.isAssigned) assignedButtons++;
|
|
if (buttonConfigs.start2.isAssigned) assignedButtons++;
|
|
if (buttonConfigs.stop2.isAssigned) assignedButtons++;
|
|
|
|
learningStep = assignedButtons;
|
|
|
|
Serial.printf("Learning mode started - %d buttons already assigned, continuing at step %d\n",
|
|
assignedButtons, learningStep);
|
|
}
|
|
|
|
void handleLearningStatus() {
|
|
DynamicJsonDocument doc(256);
|
|
doc["active"] = learningMode;
|
|
doc["step"] = learningStep;
|
|
|
|
String response;
|
|
serializeJson(doc, response);
|
|
}
|
|
|
|
void unlearnButton() {
|
|
|
|
memset(buttonConfigs.start1.mac, 0, 6);
|
|
buttonConfigs.start1.isAssigned = false;
|
|
memset(buttonConfigs.stop1.mac, 0, 6);
|
|
buttonConfigs.stop1.isAssigned = false;
|
|
memset(buttonConfigs.start2.mac, 0, 6);
|
|
buttonConfigs.start2.isAssigned = false;
|
|
memset(buttonConfigs.stop2.mac, 0, 6);
|
|
buttonConfigs.stop2.isAssigned = false;
|
|
|
|
saveButtonConfig();
|
|
Serial.println("Buttons wurden verlernt.");
|
|
} |