Files
AquaMasterMQTT/src/buttonassigh.h
2025-06-05 23:34:11 +02:00

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.");
}