Files
AquaMasterMQTT/mock-server
Carsten Graf a67e29b9e4
Some checks failed
/ build (push) Has been cancelled
Add DevServer (brokern)
2026-01-24 15:08:14 +01:00
..
2026-01-24 15:08:14 +01:00
2026-01-24 15:08:14 +01:00
2026-01-24 15:08:14 +01:00
2026-01-24 15:08:14 +01:00
2026-01-24 15:08:14 +01:00
2026-01-24 15:08:14 +01:00
2026-01-24 15:08:14 +01:00
2026-01-24 15:08:14 +01:00

AquaMaster Mock Server

Mock ESP32 Server und MQTT-Broker für lokales Testing ohne Hardware.

Übersicht

Dieses Projekt simuliert:

  • MQTT-Broker (Port 1883 TCP, Port 9001 WebSocket) - Lokaler MQTT-Broker für Kommunikation
  • Mock ESP32 Server (Port 80) - Simuliert alle ESP32 API-Endpunkte und WebSocket
  • Web Debug UI - Browser-basierte Oberfläche zum Testen von API und MQTT

Voraussetzungen

  • Node.js 16+ (LTS empfohlen)
  • npm

Installation

cd mock-server
npm install

Verwendung

Option 1: Beide Server zusammen starten

npm start
# oder
node start_all.js

Option 2: Server einzeln starten

Terminal 1 - MQTT Broker:

npm run mqtt
# oder
node mqtt_broker.js

Terminal 2 - Mock ESP32 Server:

npm run server
# oder
node mock_esp32_server.js

Web Debug UI öffnen

Nach dem Start der Server:

  1. Öffne einen Browser
  2. Navigiere zu: http://localhost:80
  3. Die Debug-Oberfläche sollte sichtbar sein

Features

MQTT Broker

  • Läuft auf Port 1883 (TCP) und Port 9001 (WebSocket)
  • Unterstützt alle relevanten Topics:
    • aquacross/button/#
    • aquacross/button/rfid/#
    • aquacross/battery/#
    • heartbeat/alive/#
    • aquacross/competition/#
    • sync/time
    • aquacross/lanes/#
  • Loggt alle Nachrichten für Debugging

Mock ESP32 Server

  • Simuliert alle API-Endpunkte aus der ESP32-Firmware
  • WebSocket-Support für Live-Updates
  • MQTT-Client, der sich mit dem Broker verbindet
  • Timer-Logik (Individual/Wettkampf-Modi)
  • Button-Konfigurationen und Learning-Mode

Web Debug UI

  • API Testing Tab: Teste alle API-Endpunkte
  • MQTT Testing Tab: Publish/Subscribe MQTT-Nachrichten
  • Debug Endpoints Tab: Direkte Timer-Kontrolle

API-Endpunkte

Alle Endpunkte sind unter http://localhost:80/api/... verfügbar:

  • GET /api/data - Timer-Daten abrufen
  • POST /api/reset-best - Beste Zeiten zurücksetzen
  • POST /api/unlearn-button - Button-Zuordnungen löschen
  • GET /api/debug/start1 - Lane 1 starten (Debug)
  • GET /api/debug/stop1 - Lane 1 stoppen (Debug)
  • GET /api/debug/start2 - Lane 2 starten (Debug)
  • GET /api/debug/stop2 - Lane 2 stoppen (Debug)
  • ... und viele mehr (siehe ../API.md)

MQTT Topics

Button Topics

  • aquacross/button/{MAC} - Button-Press Nachrichten
    {"type": 2, "timestamp": 1234567890}
    
    • type: 2 = Start-Button
    • type: 1 = Stop-Button

RFID Topics

  • aquacross/button/rfid/{MAC} - RFID-Read Nachrichten
    {"uid": "TEST123456"}
    

Battery Topics

  • aquacross/battery/{MAC} - Batteriestand
    {"voltage": 3600}
    

Heartbeat Topics

  • heartbeat/alive/{MAC} - Heartbeat-Nachrichten
    {"timestamp": 1234567890}
    

Competition Topics

  • aquacross/competition/toMaster - Wettkampf-Start
    "start"
    

Time Sync

  • sync/time - Zeit-Synchronisation (vom Server alle 5 Sekunden)

Troubleshooting

Port bereits belegt

Falls Port 80 oder 1883 bereits belegt sind:

  • Windows: Port 80 benötigt Admin-Rechte, verwende einen anderen Port
  • Linux/Mac: Port 80 benötigt sudo, verwende einen anderen Port

Um Ports zu ändern, editiere:

  • mqtt_broker.js - Zeile mit const port = 1883;
  • mock_esp32_server.js - Zeile mit const PORT = 80;

MQTT-Verbindung fehlgeschlagen

  • Stelle sicher, dass der MQTT-Broker läuft
  • Prüfe, ob Port 1883 (TCP) oder 9001 (WebSocket) erreichbar ist
  • Browser benötigen WebSocket-Verbindung (Port 9001)

WebSocket-Verbindung fehlgeschlagen

  • Stelle sicher, dass der Mock ESP32 Server läuft
  • Prüfe Browser-Konsole auf Fehler
  • Socket.io sollte automatisch geladen werden

Projektstruktur

mock-server/
├── package.json              # Node.js Dependencies
├── README.md                 # Diese Datei
├── .gitignore               # Git ignore
├── mqtt_broker.js           # MQTT-Broker
├── mock_esp32_server.js     # Mock ESP32 Server
├── start_all.js             # Startet beide Server
└── debug_server/
    ├── index.html           # Web Debug UI
    ├── debug.js             # JavaScript-Logik
    └── debug.css            # Styling

Hinweise

  • Der Mock-Server speichert keinen persistenten State (alles im Speicher)
  • Nach Neustart sind alle Einstellungen zurückgesetzt
  • Für Produktionstests sollte der echte ESP32 verwendet werden
  • Dieser Mock-Server ist nur für Entwicklung und Testing gedacht

Lizenz

MIT