#pragma once #include #include "master.h" // Aquacross Timer - ESP32 Master (Webserver + ESP-NOW + Anlernmodus) #include 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."); }