#pragma once #define FW_VERSION "5.1" // ── ntfy.sh ── #define NTFY_SERVER "ntfy.sh" #define ALERT_TOPIC "ALERT_klubhaus_topic" #define SILENCE_TOPIC "SILENCE_klubhaus_topic" #define ADMIN_TOPIC "ADMIN_klubhaus_topic" #define STATUS_TOPIC "STATUS_klubhaus_topic" // ── Timing ── #define POLL_INTERVAL_MS 15000 #define HEARTBEAT_INTERVAL_MS 300000 #define BOOT_GRACE_MS 5000 #define HOLD_TO_SILENCE_MS 2000 #define ALERT_TIMEOUT_MS 120000 #define SILENCE_DISPLAY_MS 10000 #define INACTIVITY_TIMEOUT_MS 30000 #define WIFI_CONNECT_TIMEOUT_MS 15000 #define HTTP_TIMEOUT_MS 10000 #define HINT_ANIMATION_MS 2000 #define HINT_MIN_BRIGHTNESS 30 #define HINT_MAX_BRIGHTNESS 60 #define TOUCH_DEBOUNCE_MS 100 // ── Loop yield (prevents Task Watchdog on ESP32) ── #ifndef LOOP_YIELD_MS #define LOOP_YIELD_MS 10 #endif // ── WiFi credential struct (populated in each board's secrets.h) ── struct WiFiCred { const char* ssid; const char* pass; };