Leider unterstützt Ihr Browser kein JavaScript!
Anmelden

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 werdenMQTT-Einstellungen Screenshot
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.

Zähler auf MQTT-Upload-Modus einstellen und IAMMETER MQTT Broker-Parameter konfigurieren


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).

Blindleistungsmessung im Zähler aktivieren

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

  1. 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).
  2. Lokale Datenvisualisierung Speichern Sie eingehende MQTT-Daten in InfluxDB und visualisieren Sie sie mit Grafana-Dashboards.
  3. 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


Möchten Sie eine als Markdown formatierte Blogbeitragsversion (bereit zur Veröffentlichung im offiziellen IAMMETER-Blog, mit Syntaxhervorhebung und intakten eingebetteten Bildlinks)?

Nach oben