Echtzeit-Energiedatenabonnement per MQTT Broker (Ausgabe 2025)
1. Einleitung
IAMMETER-Cloud ist eine professionelle Plattform für Energiemonitoring und Photovoltaik-Management. Neben ihren leistungsstarken Visualisierungs- und Berichtsfunktionen bietet die IAMMETER-Cloud auch flexible Datenschnittstellen. Dies ermöglicht Benutzern mit maßgeschneiderten Anforderungen, die IAMMETER-Cloud als Daten-Middleware zu nutzen und Daten programmatisch per Code abzurufen.
Es gibt zwei Hauptmethoden, um Daten von der IAMMETER-Cloud per Code zu erhalten:
- Datenabonnement über den IAMMETER MQTT Broker (Schwerpunkt dieses Artikels)
- Aufruf der offiziellen APIs der IAMMETER-Cloud
Diese Anleitung erklärt, wie Sie IAMMETER MQTT-Themen abonnieren, Datenstrukturen interpretieren (für einphasige und dreiphasige Zähler) und funktionierende Beispiele in Python und Node.js implementieren.
2. Übersicht über den IAMMETER MQTT Broker
Hinweis: Der IAMMETER MQTT Broker wurde ursprünglich als Entwicklungs- und Testdienst zur Vereinfachung konzipiert und ist kein Bestandteil des standardmäßigen IAMMETER-Cloud-Angebots (obwohl er seit über 5 Jahren stabil läuft). Für Produktions- oder groß angelegte Bereitstellungen empfehlen wir die Einrichtung Ihres eigenen MQTT Brokers.
Konfiguration des IAMMETER MQTT Brokers
| Parameter | Beschreibung |
|---|---|
| Broker-Adresse | mqtt.iammeter.com |
| Port | 1883 (ohne SSL) |
| Benutzername / Passwort | Muss in IAMMETER Cloud → Einstellungen → MQTT-Einstellungen erstellt werden![]() |
| Themenformat | device/{SN}/realtime |
| Nutzdatenformat | JSON |
⚠️ Wichtig: Verwenden Sie hier nicht Ihre IAMMETER-Cloud-Anmeldedaten. Sie müssen im IAMMETER-Cloud-Dashboard einen dedizierten MQTT-Benutzernamen und ein Passwort erstellen.
Konfiguration des IAMMETER-Zählers für den MQTT-Modus
Stellen Sie Ihren IAMMETER-Zähler auf den MQTT-Upload-Modus ein (siehe Firmware-Konfigurationsanleitung) und geben Sie die Parameter des IAMMETER MQTT Brokers ein.

3. MQTT-Themenformat
Jedes IAMMETER-Gerät veröffentlicht seine Echtzeitdaten unter dem folgenden Thema:
device/{SN}/realtime
Wobei {SN} die Seriennummer Ihres Zählers ist.
Wenn die Geräte-SN beispielsweise DA2BED94 lautet, lautet das Thema:
device/DA2BED94/realtime
Sie können dieses Thema abonnieren, um kontinuierlich Echtzeit-Messdaten zu empfangen.
4. Datenformat
4.1 Datenformat für einphasige Zähler
Ein einphasiger IAMMETER-Zähler veröffentlicht Echtzeitdaten im JSON-Format wie folgt:
{
"method": "1-272",
"mac": "B0F8932A295C",
"version": "i.91.062T6",
"server": "em",
"SN": "DA2BED94",
"Data": [227.02, 1.81, 296.0, 21699.98, 0.00, 50.01, 0.72]
}
| Index | Feld | Beschreibung | Einheit |
|---|---|---|---|
| 1 | Voltage | Aktuelle Netzspannung | V |
| 2 | Current | Aktueller Strom | A |
| 3 | Power | Wirkleistung | W |
| 4 | Forward Energy | Bezogene Energie (Verbrauch) | kWh |
| 5 | Reverse Energy | Exportierte Energie (Einspeisung, Solar) | kWh |
| 6 | Frequency | Netzfrequenz | Hz |
| 7 | Power Factor | Aktueller Leistungsfaktor | PF |
🟢 Hinweise:
- Positive Leistung → Energieverbrauch
- Negative Leistung → Energieexport (z. B. Solar-Einspeisung)
4.2 Datenformat für dreiphasige Zähler (WEM3080T / WEM3046T / WEM3050T)
Dreiphasige IAMMETER-Zähler veröffentlichen Daten in einem ähnlichen JSON-Format, mit drei Arrays, die jeweils einer Phase entsprechen.
{
"method": "4-9",
"mac": "849DC2CEC625",
"version": "i.91.062T6",
"server": "em",
"SN": "CB0A0CFB",
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
},
"Datas": [
[225.9, 1.260, 194.0, 305.110, 0.000, 49.99, 0.87],
[225.8, 1.260, 193.0, 302.690, 0.000, 49.99, 0.86],
[225.9, 1.260, 192.0, 300.890, 0.000, 49.99, 0.86]
]
}
Datas ist eine Liste mit drei Arrays, die jeweils den Phasen A, B und C entsprechen.
Jedes innere Array hat die gleiche Struktur wie das einphasige Data-Array.
| Index | Feld | Beschreibung | Einheit |
|---|---|---|---|
| 1 | Voltage | Phasenspannung | V |
| 2 | Current | Phasenstrom | A |
| 3 | Power | Wirkleistung | W |
| 4 | Forward Energy | Bezogene Energie | kWh |
| 5 | Reverse Energy | Exportierte Energie | kWh |
| 6 | Frequency | Netzfrequenz | Hz |
| 7 | Power Factor | Phasenleistungsfaktor | PF |
Zusätzlich zu den Wirkleistungsdaten sehen Sie, wenn die Blindleistungsmessung aktiviert ist, auch den Abschnitt EA wie folgt:
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
}
Dieser Abschnitt zeigt Blindleistungs-Messdaten, die nur erscheinen, wenn die Blindtestfunktion aktiviert ist (siehe Screenshot unten).

Jedes Array repräsentiert die drei Phasen (A, B, C) und zeigt die Blindleistung (Q in kVar) und die Blindenergie (kVARh) an.
Q (kVar): Blindleistung — positiv = induktiv, negativ = kapazitiv kVARh: Blindenergie — jede Phase enthält zwei kVARh-Werte: einen für induktive Last und einen für kapazitive Last.
5. Python-Beispiel: Abonnieren von Echtzeitdaten
Nachfolgend finden Sie ein funktionierendes Python-Skript unter Verwendung der Bibliothek paho-mqtt.
import paho.mqtt.client as mqtt
import json
# MQTT Broker-Konfiguration
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username" # Festlegen in IAMMETER Cloud → MQTT-Einstellungen
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # Durch Ihre eigene Geräte-SN ersetzen
# Callback bei erfolgreicher Verbindung zum Broker
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Erfolgreich mit IAMMETER MQTT Broker verbunden")
client.subscribe(TOPIC)
print(f"📡 Abonniertes Thema: {TOPIC}")
else:
print(f"❌ Verbindung fehlgeschlagen mit Code {rc}")
# Callback beim Empfang einer Nachricht
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Empfangene Echtzeitdaten:")
print(json.dumps(payload, indent=2, ensure_ascii=False))
# MQTT-Client initialisieren
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message
# Mit dem Broker verbinden und die Schleife starten
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Node.js-Beispiel
Wir empfehlen, dieses interessante Open-Source-Projekt auszuprobieren: Es verwendet Node.js, um Echtzeitdaten vom IAMMETER MQTT Broker zu abonnieren und in einer Web-Benutzeroberfläche zu visualisieren, wodurch ein ansprechendes Echtzeit-Dashboard entsteht.
🔗 https://github.com/lewei50/iammeterJS
7. Praktische Anwendungsfälle
- Smart-Home-Automatisierung Integrieren Sie Echtzeit-Energiedaten in Home Assistant oder Node-RED, um Automatisierungsaktionen auszulösen (z. B. Einschalten einer Heizung bei hoher Solarproduktion).
- Lokale Datenvisualisierung Speichern Sie eingehende MQTT-Daten in InfluxDB und visualisieren Sie sie mit Grafana-Dashboards.
- Private Cloud oder Edge-Computing Rufen Sie Echtzeit-Energiedaten direkt per MQTT für benutzerdefinierte Analysen oder Steuerungslogik ab, ohne auf die IAMMETER-Cloud angewiesen zu sein.
8. Fehlerbehebung
| Problem | Mögliche Ursache / Lösung |
|---|---|
| Keine Verbindung zum Broker | Überprüfen Sie, ob Ihr MQTT-Benutzername und Ihr Passwort in der IAMMETER-Cloud korrekt eingestellt sind. |
| Keine Daten empfangen | Überprüfen Sie Ihr Themenformat (device/{SN}/realtime) und stellen Sie sicher, dass der Zähler online ist. |
| Datenverzögerung | Überprüfen Sie Ihre Netzwerkstabilität oder die Wi-Fi-Signalstärke. |
| Mehrere Zähler | Sie können mehrere Themen gleichzeitig abonnieren (eines pro SN). |
9. Fazit
Mit dem IAMMETER MQTT Broker können Sie problemlos auf Echtzeit-Energiedatenströme Ihrer IAMMETER-Geräte zugreifen. Es handelt sich um eine leistungsstarke und flexible Methode, um lokale Dashboards, intelligente Automatisierungen oder KI-basierte Energieoptimierungssysteme zu erstellen.
📘 Referenzen
- IAMMETER Firmware- und Kommunikationsfunktionen
- IAMMETER-Cloud- und MQTT-API-Dokumentation
- Entwickeln Sie Ihr eigenes Energie-Monitoring-Dashboard mit NodeJS
Möchten Sie eine als Markdown formatierte Blogbeitragsversion (bereit zur Veröffentlichung im offiziellen IAMMETER-Blog, mit Syntaxhervorhebung und intakten eingebetteten Bildlinks)?
