105 lines
4.6 KiB
C
105 lines
4.6 KiB
C
#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 <MD_MAX72xx.h>
|
||
|
||
// -----------------------------------------------------------------------------
|
||
// 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"
|
||
|
||
// 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
|
||
|
||
// -----------------------------------------------------------------------------
|
||
// 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__)
|
||
|
||
// -----------------------------------------------------------------------------
|
||
// Watchdog
|
||
// -----------------------------------------------------------------------------
|
||
#define WDT_TIMEOUT_S 30 // Watchdog-Timeout in Sekunden
|