Gerät (ESP32-C6)¶
Überblick¶
Der WattWächter basiert auf dem ESP32-C6 Mikrocontroller und liest Energiedaten über einen IR-Lesekopf vom Smart Meter aus. Die Daten werden lokal gespeichert und per REST API, MQTT oder Cloud-Portal bereitgestellt.
Technische Daten¶
| Eigenschaft | Wert |
|---|---|
| Mikrocontroller | ESP32-C6 (RISC-V, 160 MHz) |
| Konnektivität | WiFi 6, Bluetooth 5.0 LE |
| Schnittstelle | IR-Lesekopf (SML-Protokoll, D0-Schnittstelle) |
| Stromversorgung | USB-C, 5V |
| Speicher | SPIFFS Dateisystem für History-Daten |
| Statusanzeige | RGB-LED |
| Hostname | ww.local (mDNS) |
Funktionsweise¶
Smart Meter ──IR──▶ WattWächter (ESP32-C6) ──WiFi──▶ Heimnetz / Cloud
│
├── REST API (lokal)
├── MQTT (Cloud / Smart Home)
└── LED-Statusanzeige
- Der IR-Lesekopf empfängt SML-Telegramme vom Smart Meter
- Der ESP32-C6 parst die OBIS-Kennzahlen (z.B.
1-0:1.8.0für Gesamtbezug) - Daten werden im SPIFFS gespeichert (HighRes: 15 Tage, LowRes: 1 Jahr)
- Bereitstellung über REST API und/oder MQTT
LED-Statusanzeige¶
Die RGB-LED zeigt den aktuellen Gerätestatus an. Bei mehreren gleichzeitigen Zuständen wird der mit der höchsten Priorität angezeigt.
| Status | Farbe | Modus | Priorität | Bedeutung |
|---|---|---|---|---|
| OK | Grün | Dauerhaft | 1 | Normalbetrieb, alles in Ordnung |
| Startup | Gelb | Dauerhaft | 2 | Gerät startet |
| Info | Gelb | Gedimmt | 3 | Informationsmeldung |
| BLE aktiv | Blau | Pulsierend | 4 | Bluetooth wartet auf Verbindung |
| BLE verbunden | Magenta | Pulsierend | 5 | Bluetooth-Gerät verbunden |
| OTA aktiv | Magenta | Dauerhaft | 6 | Firmware-Update läuft |
| Fehler | Rot | Pulsierend | 7 | Fehler aufgetreten |
| Reset ausstehend | Rot | Dauerhaft | 8 | Factory Reset wird ausgeführt |
LED deaktivieren
Die LED kann über die API deaktiviert werden:
curl -X POST http://ww.local/api/v1/settings \
-H "Authorization: Bearer WRITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ledEnable": false}'
Datenerfassung¶
OBIS-Kennzahlen¶
Der WattWächter liest folgende Werte vom Smart Meter:
| OBIS-Code | Beschreibung | Einheit |
|---|---|---|
1-0:1.8.0 |
Gesamtbezug (Import) | kWh |
1-0:2.8.0 |
Gesamteinspeisung (Export) | kWh |
1-0:16.7.0 |
Aktuelle Leistung | W |
History-Speicher¶
| Auflösung | Intervall | Speicherdauer | Daten |
|---|---|---|---|
| HighRes | 15 Minuten | 15 Tage | Import, Export, Leistung, Deltas |
| LowRes | 1 Tag | 1 Jahr | Tages-Import, Tages-Export |
Authentifizierung¶
Die API verwendet zwei Token-Typen:
| Token | Berechtigung | Verwendung |
|---|---|---|
| READ Token | Lesend | Daten abrufen, Status prüfen |
| WRITE Token | Schreibend | Einstellungen ändern, OTA starten, Reboot |
Tokens werden im Header übergeben:
Authorization: Bearer DEIN_TOKEN
API-Auth deaktivieren
Für lokale Entwicklung kann die Authentifizierung deaktiviert werden:
curl -X POST http://ww.local/api/v1/settings \
-H "Authorization: Bearer WRITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"api_auth_required": false}'
MQTT-Integration¶
Der WattWächter kann Telemetriedaten per MQTT an einen Broker senden (z.B. für Home Assistant oder ioBroker).
Konfiguration¶
curl -X POST http://ww.local/api/v1/settings \
-H "Authorization: Bearer WRITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mqtt": {"enable": true, "host": "mqtt.example.com", "port": 8883}}'
TLS mit eigenem CA-Zertifikat¶
Für MQTT-Broker mit selbstsigniertem Zertifikat kann ein eigenes CA-Zertifikat hochgeladen werden:
curl -X POST http://ww.local/api/v1/mqtt/ca \
-H "Authorization: Bearer WRITE_TOKEN" \
-H "Content-Type: text/plain" \
--data-binary @mein_broker_ca.pem
Fehlerbehebung¶
Gerät nicht erreichbar¶
- LED-Status prüfen (siehe Tabelle oben)
- Ping testen:
ping ww.local - IP-Adresse im Router nachschlagen
- Bei dauerhaft roter LED: Gerät neu starten (USB trennen/verbinden)
Keine Zählerdaten¶
- IR-Lesekopf sitzt korrekt auf der optischen Schnittstelle?
- Smart Meter hat freigeschaltete PIN? (Bei manchen Zählern muss die Datenausgabe beim Netzbetreiber aktiviert werden)
- Aktuelle Werte prüfen:
curl http://ww.local/api/v1/history/latest
Factory Reset¶
Reset-Taster 10 Sekunden gedrückt halten. Die LED wechselt zu rot (dauerhaft), dann startet das Gerät im Setup-Modus neu. Alle Einstellungen werden zurückgesetzt.