MQTT-Display-LaserCutter/include/config.h

105 lines
4.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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 03: Laserzeit in Minuten
#define DISPLAY_ZONE_BOTTOM 1 // Module 47: Countdown / Status
#define DISPLAY_ZONE_COUNT 2
// Module je Zone
#define DISPLAY_MODULES_PER_ZONE (DISPLAY_MODULE_COUNT / DISPLAY_ZONE_COUNT) // 4
// Helligkeit (015)
#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