MQTT per MQTT_ENABLED ein-/ausschaltbar (einsteigerfreundlich)

- MQTT_ENABLED=false -> App startet ohne Broker, keine Events/LWT
- publish_crossing wird zum No-Op, kein Reconnect-Rauschen
- README: optional gekennzeichnet, Env-Tabelle + .env-Beispiel ergaenzt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-01 14:49:18 +02:00
parent b20f4c582c
commit 2b930b3e47
2 changed files with 36 additions and 19 deletions

View File

@@ -17,7 +17,7 @@ Eine webbasierte Anwendung zur Echtzeit-Objekterkennung und -Verfolgung mittels
- Python 3.12 oder höher
- **NVIDIA-Grafikkarte mit CUDA-Unterstützung** für die Echtzeit-Erkennung erforderlich (siehe [Hardware & CUDA](#hardware--cuda))
- **ESP32-CAM** als Live-Quelle, die einen MJPEG-Stream im Netzwerk bereitstellt (siehe [Kamera / Livestream (ESP32-CAM)](#kamera--livestream-esp32-cam))
- **MQTT-Broker** zum Empfang der Zähl-Events (z. B. [Mosquitto](https://mosquitto.org/); siehe [MQTT / Zähl-Events](#mqtt--zähl-events))
- **MQTT-Broker** (*optional*) zum Empfang der Zähl-Events (z. B. [Mosquitto](https://mosquitto.org/)); per `MQTT_ENABLED=false` abschaltbar (siehe [MQTT / Zähl-Events](#mqtt--zähl-events))
- Die YOLO-Modelle werden beim ersten Start automatisch von Ultralytics geladen (Internetverbindung erforderlich)
> ⚠️ **Wichtig:** Für die flüssige Live-Erkennung wird eine **NVIDIA-GPU mit CUDA** benötigt. Ohne CUDA läuft die Inferenz auf der CPU und ist für Echtzeit-Streams zu langsam.
@@ -66,12 +66,18 @@ beim Start **automatisch geladen** (`python-dotenv`):
```bash
export CAMERA_URL="http://CAMERA-IP:81/stream"
export MQTT_ENABLED="true" # auf "false" setzen, wenn kein Broker vorhanden
export MQTT_HOST="MQTT-HOST"
export MQTT_PORT=1883
export MQTT_TOPIC="counter/cam1"
export CAMERA_ID="cam1"
```
> 💡 **Ohne MQTT-Broker?** Setze `MQTT_ENABLED="false"` dann startet die App
> ganz normal, zählt und streamt, sendet aber keine MQTT-Events. Ideal zum
> Ausprobieren ohne Broker-Setup. (Auch mit `true` startet die App übrigens,
> wenn der Broker gerade nicht erreichbar ist sie verbindet sich dann später.)
> ⚠️ Beim Betrieb über einen Prozess-Manager (z. B. **supervisord**) muss das
> Arbeitsverzeichnis auf das Projekt zeigen (`directory=/pfad/zum/projekt`),
> sonst wird die `.env` nicht gefunden und es greifen die Defaults.
@@ -155,8 +161,9 @@ Datenbank wie **NocoDB** ablegen.
```
- Konfiguriert wird der Broker über Umgebungsvariablen:
| Variable | Standard | Beschreibung |
| ------------ | ---------------------- | ------------------------------------ |
| Variable | Standard | Beschreibung |
| -------------- | ---------------------- | ------------------------------------ |
| `MQTT_ENABLED` | `true` | MQTT komplett ein-/ausschalten |
| `MQTT_HOST` | `127.0.0.1` | Adresse des MQTT-Brokers |
| `MQTT_PORT` | `1883` | Broker-Port |
| `MQTT_USER` | | Benutzername (optional) |