Zum Inhalt springen

← Sensor-Kalibrierung | Inhaltsverzeichnis | Weiter: Home Assistant Integration →

11. MQTT-Integrationsanleitung

Version: 1.2.0
Date: 2025-12-24

Vollständige Anleitung zur MQTT-Anbindung des ACRouter, einschließlich Topic-Struktur und Home Assistant Integration.




Inhaltsverzeichnis




Übersicht

ACRouter unterstützt das MQTT-Protokoll für:

  • Echtzeit-Überwachung — Leistungskennzahlen, Spannung, Ströme, Router-Status
  • Fernsteuerung — Moduswechsel, Dimmer-Steuerung, Not-Aus
  • Konfiguration — Parameter aus der Ferne anpassen
  • Home Assistant Integration — Auto-Discovery für nahtlose Smart-Home-Integration

The MQTT client is based on ESP-IDF's esp-mqtt library with automatic reconnection, Last Will & Testament (LWT), and QoS support.




Funktionen

Funktion Beschreibung
Auto-Reconnect Verbindet sich automatisch neu, wenn die Verbindung unterbrochen wird
LWT (Last Will) Publishes "offline" status when device disconnects
Retained Messages Status- und Konfigurations-Topics werden gespeichert
QoS-Stufen QoS 0 für Messwerte, QoS 1 für Befehle
HA Discovery Automatische Erstellung von Home Assistant Entitäten
JSON-Aggregation Zusammengefasste Messwerte in einer einzelnen JSON-Nachricht
NVS-Persistenz Konfiguration wird über Neustarts hinweg gespeichert



Schnellstart


1. MQTT über die serielle Konsole aktivieren

bash
# Set broker URL (replace with your broker IP)
mqtt-broker mqtt://192.168.1.10:1883

# Enable MQTT
mqtt-enable

# Check status
mqtt-status


2. Verbindung überprüfen

text
======================================================
  MQTT Status
======================================================
State:         Connected
Enabled:       Yes
Broker:        mqtt://192.168.1.10:1883
Device ID:     039C7C
Device Name:   (default)
HA Discovery:  Enabled
Pub Interval:  5000 ms
------------------------------------------------------
Uptime:        125 sec
Published:     250 messages
Received:      3 messages
======================================================


3. Topics abonnieren

Verwendung der Mosquitto-Client-Tools als Beispiel:

bash
# Subscribe to all ACRouter topics
mosquitto_sub -h 192.168.1.10 -t "acrouter/#" -v



Topic-Struktur

Alle Topics folgen dem Muster: acrouter/{device_id}/category/name

Die {device_id} wird automatisch aus den letzten 6 Zeichen der MAC-Adresse generiert (z. B. 039C7C) oder kann manuell gesetzt werden.


Status-Topics (Retained)

Topic Beschreibung Beispielwert
status/online Geräteverfügbarkeit (LWT) online / offline
status/mode Aktueller Router-Modus auto, manual, boost...
status/state Controller-Zustand idle, increasing, at_max...
status/dimmer Dimmer-Stufe 0 - 100 (%)
status/wifi_rssi WLAN-Signalstärke -65 (dBm)


Messwert-Topics (nicht Retained)

Veröffentlichung alle 5 Sekunden (konfigurierbar).

Topic Beschreibung Einheit
metrics/voltage AC-Spannung RMS V
metrics/power_grid Netzleistung (+ Bezug, - Einspeisung) W
metrics/power_solar Solar-/Erzeugungsleistung W
metrics/power_load Leistungsaufnahme der Last W
metrics/current_grid Netzstrom A
metrics/current_solar Solarstrom A
metrics/current_load Laststrom A
metrics/direction Energieflussrichtung consuming, supplying, balanced


Konfigurations-Topics (Retained)

Topic Beschreibung Bereich
config/control_gain P-Regler-Verstärkung 10 - 1000
config/balance_threshold Balance-Totzone 0 - 1000 W
config/manual_level Manueller Dimmer-Pegel 0 - 100 %


Befehls-Topics (nur Schreiben)

Befehle werden durch Veröffentlichung an diese Topics gesendet:

Topic Beschreibung Payload
command/mode Router-Modus setzen off, auto, eco, offgrid, manual, boost
command/dimmer Dimmer setzen (manueller Modus) 0 - 100
command/emergency_stop Not-Aus beliebiger Wert
command/reboot Gerät neu starten beliebiger Wert
command/refresh Alle Daten sofort veröffentlichen beliebiger Wert


System-Topics (Retained)

Topic Beschreibung Beispiel
system/version Firmware-Version 1.1.0
system/ip IP-Adresse des Geräts 192.168.1.100
system/mac MAC-Adresse AA:BB:CC:DD:EE:FF
system/uptime Betriebszeit in Sekunden 3600
system/free_heap Freier Heap-Speicher 150000


JSON-aggregierte Topics

Zur Effizienzsteigerung werden Messwerte auch als aggregiertes JSON veröffentlicht:

Topic: json/metrics

json
{
  "voltage": 230.5,
  "power_grid": -150.2,
  "power_solar": 1250.0,
  "power_load": 1100.0,
  "current_grid": 0.65,
  "current_solar": 5.43,
  "current_load": 4.78,
  "direction": "supplying"
}



Konsolenbefehle


Verbindungsverwaltung

Befehl Beschreibung
mqtt-status Verbindungsstatus und Statistiken anzeigen
mqtt-enable MQTT-Client aktivieren
mqtt-disable MQTT-Client deaktivieren
mqtt-reconnect Neuverbindung erzwingen
mqtt-publish Alle Daten sofort veröffentlichen


Konfiguration

Befehl Beschreibung
mqtt-config Gesamte MQTT-Konfiguration anzeigen
mqtt-broker Broker-URL setzen (z. B. mqtt://192.168.1.10:1883)
mqtt-user Benutzername für Authentifizierung setzen
mqtt-pass Passwort für Authentifizierung setzen
mqtt-device-id Benutzerdefinierte Geräte-ID für Topics setzen
mqtt-device-name Gerätename setzen (für Home Assistant)
mqtt-interval Veröffentlichungsintervall setzen (1000–60000 ms)
mqtt-ha-discovery <0\|1> Home Assistant Discovery aktivieren/deaktivieren


Beispiele

bash
# Configure broker with authentication
mqtt-broker mqtt://192.168.1.10:1883
mqtt-user myuser
mqtt-pass mypassword
mqtt-enable

# Set custom device name for Home Assistant
mqtt-device-name "Solar Router Kitchen"

# Reduce publish frequency to 10 seconds
mqtt-interval 10000

# Disable Home Assistant auto-discovery
mqtt-ha-discovery 0



Konfiguration


NVS-Speicherschlüssel

Alle MQTT-Einstellungen werden im NVS (Non-Volatile Storage) gespeichert:

Schlüssel Beschreibung
mqtt_enabled MQTT-Aktivierungsflag
mqtt_broker Broker-URL
mqtt_user Benutzername
mqtt_pass Passwort
mqtt_dev_id Geräte-ID
mqtt_dev_name Gerätename
mqtt_interval Veröffentlichungsintervall
mqtt_ha_disc HA Discovery Flag


Standardwerte

Parameter Standard
Aktiviert Nein
Broker (leer)
Geräte-ID Automatisch aus MAC generiert
Veröffentlichungsintervall 5000 ms
HA Discovery Aktiviert



Topics testen

Sie können jeden MQTT-Client zum Testen der Topics verwenden. Die folgenden Beispiele nutzen die Mosquitto-Client-Tools (mosquitto_sub / mosquitto_pub).


Alle Topics abonnieren

bash
mosquitto_sub -h 192.168.1.10 -t "acrouter/#" -v


Bestimmte Topics abonnieren

bash
# Status only
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/status/#" -v

# Metrics only
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/metrics/#" -v

# JSON aggregated
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/json/#" -v


Befehle senden

bash
# Change mode to AUTO
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/mode" -m "auto"

# Set dimmer to 50% (in MANUAL mode)
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/dimmer" -m "50"

# Emergency stop
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/emergency_stop" -m "1"

# Reboot device
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/reboot" -m "1"

# Force refresh all data
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/refresh" -m "1"


Konfiguration über MQTT aktualisieren

bash
# Set control gain
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/config/control_gain/set" -m "200"

# Set balance threshold
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/config/balance_threshold/set" -m "25"



Fehlerbehebung


Verbindungsprobleme

Symptom: esp-tls: select() timeout

Lösungen:

  1. Prüfen Sie, ob der Broker läuft und erreichbar ist
  2. Prüfen Sie, ob die Firewall Port 1883 zulässt
  3. Überprüfen Sie das Broker-URL-Format: mqtt://IP:PORT
  4. Testen Sie die Broker-Konnektivität von einem anderen Client aus


"Client has started" Error

Symptom: Wiederholte mqtt_client: Client has started-Fehler

Lösung: Dies war ein Fehler in früheren Versionen. Aktualisieren Sie auf die neueste Firmware, in der esp_mqtt_client_start() nur einmal aufgerufen wird.


WLAN nicht verbunden

Symptom: MQTT doesn't connect on boot

Erklärung: MQTT wartet nun auf die WLAN-Verbindung, bevor ein Verbindungsversuch unternommen wird. Prüfen Sie zuerst den WLAN-Status:

bash
wifi-status


Nachrichten werden nicht empfangen

Symptom: Befehle wurden gesendet, aber nicht verarbeitet

Lösungen:

  1. Prüfen Sie die Topic-Schreibweise (Groß-/Kleinschreibung beachten)
  2. Überprüfen Sie, ob die Geräte-ID übereinstimmt: mqtt-status
  3. Prüfen Sie, ob die Nachricht empfangen wurde: Das Geräteprotokoll zeigt MQTT: Command: mode = auto


Home Assistant erkennt das Gerät nicht

Symptom: Device doesn't appear in Home Assistant

Lösungen:

  1. Überprüfen Sie, ob HA Discovery aktiviert ist: mqtt-ha-discovery 1
  2. Prüfen Sie, ob die HA MQTT-Integration konfiguriert ist
  3. Erzwingen Sie eine erneute Veröffentlichung: mqtt-publish oder starten Sie das Gerät neu
  4. Prüfen Sie die HA-Protokolle auf Discovery-Nachrichten



Siehe auch


Zuletzt aktualisiert: 2025-12-24

← Sensor-Kalibrierung | Inhaltsverzeichnis | Weiter: Home Assistant Integration →