#pragma once // ============================================================================= // config.h – Zentrale Pin-Definitionen und Projekt-Konstanten // Projekt: MQTT-Display LaserCutter // Board: AZ-Delivery ESP32 DevKit V4 // ============================================================================= // MD_MAX72XX wird hier für den Hardware-Typ-Enum benötigt #include // ----------------------------------------------------------------------------- // MAX7219 / GYMAX7219 SPI-Pinbelegung (VSPI) // ----------------------------------------------------------------------------- #define DISPLAY_MOSI_PIN 23 // SPI Data #define DISPLAY_CLK_PIN 18 // SPI Clock #define DISPLAY_CS_PIN 5 // SPI Chip Select // Anzahl der MAX7219-Module in der Kette (4 Spalten × 2 Reihen) #define DISPLAY_MODULE_COUNT 8 // Hardware-Typ: GENERIC_HW für GYMAX7219 Module (verifiziert durch Hardware-Test) // FC16_HW und PAROLA_HW erzeugen kopfstehende Ziffern #define DISPLAY_HW_TYPE MD_MAX72XX::GENERIC_HW // Zonenaufteilung (MD_Parola zones, Zone 0 = obere Reihe, Zone 1 = untere Reihe) #define DISPLAY_ZONE_TOP 0 // Module 0–3: Laserzeit in Minuten #define DISPLAY_ZONE_BOTTOM 1 // Module 4–7: Countdown / Status #define DISPLAY_ZONE_COUNT 2 // Module je Zone #define DISPLAY_MODULES_PER_ZONE (DISPLAY_MODULE_COUNT / DISPLAY_ZONE_COUNT) // 4 // Helligkeit (0–15) #define DISPLAY_BRIGHTNESS 7 // ----------------------------------------------------------------------------- // Laser-Signal GPIO // ----------------------------------------------------------------------------- #define LASER_SIGNAL_PIN 4 // Digitaler Eingang, potentialfreier Schalter // Debounce-Zeit in Millisekunden #define LASER_DEBOUNCE_MS 50 // ----------------------------------------------------------------------------- // Gratiszeit (Default, überschreibbar aus NVS) // ----------------------------------------------------------------------------- #define DEFAULT_GRATIS_SECONDS 20 // Sekunden #define MIN_GRATIS_SECONDS 0 #define MAX_GRATIS_SECONDS 120 // ----------------------------------------------------------------------------- // MQTT – Default-Konfiguration (überschreibbar aus NVS) // ----------------------------------------------------------------------------- #define DEFAULT_MQTT_BROKER "broker.hivemq.com" // Oeffentlicher Testbroker #define DEFAULT_MQTT_PORT 1883 #define DEFAULT_MQTT_USER "" #define DEFAULT_MQTT_PASSWORD "" #define MQTT_CLIENT_ID "lasercutter-display" #define MQTT_RECONNECT_MS 10000 // Reconnect-Intervall in ms #define MQTT_HEARTBEAT_MS 60000 // Heartbeat-Intervall in ms // MQTT Topics #define MQTT_TOPIC_SESSION "lasercutter/session" // Publish beim Session-Ende #define MQTT_TOPIC_STATUS "lasercutter/status" // Publish Heartbeat #define MQTT_TOPIC_RESET "lasercutter/reset" // Subscribe Reset-Befehl // ----------------------------------------------------------------------------- // WiFiManager // ----------------------------------------------------------------------------- #define WIFI_AP_NAME "LaserCutter-Setup" #define WIFI_AP_TIMEOUT_S 120 // Sekunden bis AP-Timeout und Neustart // ----------------------------------------------------------------------------- // NVS Namespace // ----------------------------------------------------------------------------- #define NVS_NAMESPACE "lasercutter" // NVS Keys #define NVS_KEY_MQTT_BROKER "mqtt_broker" #define NVS_KEY_MQTT_PORT "mqtt_port" #define NVS_KEY_MQTT_USER "mqtt_user" #define NVS_KEY_MQTT_PASSWORD "mqtt_pass" #define NVS_KEY_GRATIS_SEC "gratis_sec" #define NVS_KEY_SIGNAL_POL "signal_pol" // 0 = LOW_ACTIVE, 1 = HIGH_ACTIVE #define NVS_KEY_TOTAL_MINUTES "total_min" #define NVS_KEY_WEB_USER "web_user" #define NVS_KEY_WEB_PASSWORD "web_pass" // Signal-Polarität Werte #define SIGNAL_POL_LOW_ACTIVE 0 // LOW = Laser aktiv (INPUT_PULLUP Default) #define SIGNAL_POL_HIGH_ACTIVE 1 // HIGH = Laser aktiv // Webinterface-Authentifizierung #define DEFAULT_WEB_USER "admin" #define DEFAULT_WEB_PASSWORD "" // leer = kein Passwortschutz // ----------------------------------------------------------------------------- // Serielles Debugging // ----------------------------------------------------------------------------- #define SERIAL_BAUD_RATE 115200 // Log-Makros (nur wenn CORE_DEBUG_LEVEL >= 1 via build_flags) #define LOG_I(tag, fmt, ...) Serial.printf("[I][%s] " fmt "\n", tag, ##__VA_ARGS__) #define LOG_E(tag, fmt, ...) Serial.printf("[E][%s] " fmt "\n", tag, ##__VA_ARGS__) #if CORE_DEBUG_LEVEL >= 3 #define LOG_D(tag, fmt, ...) Serial.printf("[D][%s] " fmt "\n", tag, ##__VA_ARGS__) #else #define LOG_D(tag, fmt, ...) do {} while(0) #endif // ----------------------------------------------------------------------------- // Watchdog // ----------------------------------------------------------------------------- #define WDT_TIMEOUT_S 30 // Watchdog-Timeout in Sekunden