Ihr Browser unterstützt leider kein JavaScript!

Abonnement von Echtzeit-Energiedaten über MQTT-Broker (Edition 2025)

1. Einleitung

IAMMETER-Wolkeist eine professionelle Plattform für Energiemonitoring und Photovoltaik-Management. Neben leistungsstarken Visualisierungs- und Berichtsfunktionen bietet IAMMETER-Cloud flexible Datenschnittstellen. Dadurch können Anwender mit individuellen Anforderungen IAMMETER-Cloud als … nutzen.Daten-Middleware, das programmgesteuerte Abrufen von Daten mittels Code.

Es gibt zwei Hauptwege, um Daten aus IAMMETER-Cloud mithilfe von Code zu erhalten:

  • Daten abonnieren überMQTT-Broker von IAMMETER(der Schwerpunkt dieses Artikels)
  • Rufen Sie den offiziellen IAMMETER-Cloud-Kundendienst an.APIs

Dieser Leitfaden erklärt, wie man IAMMETER MQTT-Themen abonniert, Datenstrukturen interpretiert (sowohl für Einphasen- als auch für Dreiphasenzähler) und wie man funktionierende Python- und Node.js-Beispiele implementiert.


2. IAMMETER MQTT Broker – Übersicht

Notiz:Der IAMMETER MQTT Broker wurde ursprünglich als einEntwicklungs- und TestserviceAus praktischen Gründen ist diese Lösung nicht Teil des Standardangebots von IAMMETER-Cloud (obwohl sie seit über 5 Jahren stabil läuft). Für Produktionsumgebungen oder großflächige Implementierungen empfehlen wir die Einrichtung Ihrer eigenen Lösung.eigener MQTT-Broker.

IAMMETER MQTT Broker-Konfiguration

Parameter Beschreibung
Brokeradresse mqtt.iammeter.com
Hafen 1883(nicht SSL)
Benutzername / Passwort Muss erstellt werden inIAMMETER Cloud → Einstellungen → MQTT-EinstellungenScreenshot der MQTT-Einstellungen
Themenformat Gerät/{SN}/Echtzeit
Nutzlastformat JSON

⚠️ Wichtig:TunnichtVerwenden Sie hier Ihre IAMMETER Cloud-Anmeldedaten. Sie müssenErstellen Sie einen dedizierten MQTT-Benutzernamen und ein Passwort.im IAMMETER Cloud-Dashboard.

Konfigurieren Sie den IAMMETER-Zähler für die Verwendung des MQTT-Modus

Stellen Sie Ihr IAMMETER-Messgerät ein aufMQTT-Upload-Modus(sehenFirmware-Konfigurationsleitfaden) und geben Sie die IAMMETER MQTT Broker-Parameter ein.

Stellen Sie den Zähler auf MQTT-Upload-Modus ein und konfigurieren Sie die IAMMETER MQTT Broker-Parameter.


3. MQTT-Themenformat

Jedes IAMMETER-Gerät veröffentlicht seine Echtzeitdaten unter dem folgenden Thema:

Gerät/{SN}/Echtzeit

Wo{SN}ist die Seriennummer Ihres Messgeräts. Beispiel: Die Seriennummer Ihres Geräts lautetDA2BED94Das Thema wird lauten:

Gerät/DA2BED94/Echtzeit

Sie können dieses Thema abonnieren, um kontinuierlich Messdaten in Echtzeit zu erhalten.


4. Datenformat

4.1 Datenformat für Einphasenzä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 Stromspannung Aktuelle Netzspannung V
2 Aktuell Aktueller Leitungsstrom EIN
3 Leistung Wirkleistung W
4 Vorwärtsenergie Importierte Energie (Verbrauch) kWh
5 Umgekehrte Energie Exportierte Energie (Einspeisevergütung, Solarenergie) kWh
6 Frequenz Netzfrequenz Hz
7 Leistungsfaktor Aktueller Leistungsfaktor PF

🟢 Anmerkungen:

  • Positive Leistung → Energieverbrauch
  • Negative Leistung → Energieexport (z. B. Solareinspeisung)

4.2 Dreiphasen-Zählerdatenformat (WEM3080T / WEM3046T / WEM3050T)

Dreiphasige IAMMETER-Zähler veröffentlichen Daten in einem ähnlichen JSON-Format, wobei drei Arrays 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,11; 0,000; 49,99; 0,87],

[225,8; 1,26; 193,0; 302,69; 0,000; 49,99; 0,86],

[225,9; 1,26; 192,0; 300,89; 0,000; 49,99; 0,86]

]
}

Datenist eine Liste, die enthältdrei Anordnungenjeweils entsprechendPhase A, B und CJede innere Anordnung hat die gleiche Struktur wie die einphasige Anordnung.DatenArray.

Index Feld Beschreibung Einheit
1 Stromspannung Phasenspannung V
2 Aktuell Phasenstrom EIN
3 Leistung Wirkleistung W
4 Vorwärtsenergie Importierte Energie kWh
5 Umgekehrte Energie Exportierte Energie kWh
6 Frequenz Netzfrequenz Hz
7 Leistungsfaktor Phasenleistungsfaktor PF

Zusätzlich zu den Daten zur tatsächlichen Leistung, wennBlindleistungsmessungWenn diese Option aktiviert ist, sehen Sie auch dieEAAbschnitt wie folgt:

EA: {
Reaktiv: [
[-111,0, 0,000, 176,750],

[-113,0, 0,000, 179,110],

[-114,0, 36,120, 144,410]

]
}

Dieser Abschnitt zeigtreaktive Messdaten, das nur dann erscheint, wennreaktive Testfunktionist aktiviert (siehe Screenshot unten).

Aktivieren Sie die Blindmessung im Messgerät.

Jedes Array repräsentiert die drei Phasen (A, B, C) und zeigtBlindleistung (Q in kVar)undBlindenergie (kVARh).

Q (kVar):Blindleistung – positiv = induktiv, negativ = kapazitivkVARh:Blindenergie – jede Phase enthält zwei kVARh-Werte: einen fürinduktive Lastund eins fürkapazitive Last.


5. Python-Beispiel: Abonnieren von Echtzeitdaten

Nachfolgend finden Sie ein funktionierendes Python-Skript, das Folgendes verwendet:paho-mqttBibliothek.

import paho.mqtt.client as mqtt
import json

# MQTT-Broker-Konfiguration
MQTT_BROKER = "mqtt.iammeter.com"

MQTT_PORT = 1883
MQTT_USER = "Ihr_MQTT-Benutzername" # In IAMMETER Cloud → MQTT-Einstellungen festlegen
MQTT_PASS = "Ihr_MQTT-Passwort"

TOPIC = "device/DA2BED94/realtime" # Ersetzen Sie dies durch Ihre eigene Geräte-SN

# Callback bei Verbindung zum Broker
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Erfolgreich mit dem IAMMETER MQTT Broker verbunden")
client.subscribe(TOPIC)
print(f"📡 Thema abonniert: {TOPIC}")
else:
print(f"❌ Verbindung fehlgeschlagen mit Code {rc}")

# Callback bei Empfang einer Nachricht
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Echtzeitdaten empfangen:")
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

# Verbindung zum Broker herstellen und Schleife starten
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()

6. Node.js-Beispiel

Wir empfehlen Ihnen, dieses interessante Open-Source-Projekt auszuprobieren: Es verwendetNode.jsum Echtzeitdaten vom IAMMETER MQTT-Broker zu abonnieren und diese in einem zu visualisierenWeb-Benutzeroberfläche, wodurch ein cooles Echtzeit-Dashboard erstellt wird.

🔗 https://github.com/lewei50/iammeterJS


7. Praktische Anwendungsfälle

  1. Intelligente HausautomationIntegrieren Sie Echtzeit-Leistungsdaten inHome-AssistentoderKnoten-REDum Automatisierungsaktionen auszulösen (z. B. die Heizung einschalten, wenn die Solarstromerzeugung hoch ist).
  2. Lokale DatenvisualisierungEingehende MQTT-Daten speichern inInfluxDBund visualisiere es mitGrafana-Dashboards.
  3. Private Cloud oder Edge ComputingRufen Sie Echtzeit-Leistungsdaten direkt über MQTT ab, um benutzerdefinierte Analysen oder Steuerungslogiken zu erstellen, ohne auf IAMMETER Cloud angewiesen zu sein.

8. Fehlerbehebung

Ausgabe Mögliche Ursache / Lösung
Verbindung zum Broker nicht möglich Prüfen Sie, ob Ihr MQTT-Benutzername und Ihr Passwort in IAMMETER Cloud korrekt eingestellt sind.
Keine Daten empfangen Überprüfen Sie Ihr Themenformat (Gerät/{SN}/Echtzeit) und sicherstellen, dass der Zähler online ist.
Datenverzögerung Überprüfen Sie die Stabilität Ihres Netzwerks bzw. die Stärke Ihres WLAN-Signals.
Mehrere Meter Sie können mehrere Themen gleichzeitig abonnieren (eines pro Social-Media-Kanal).

9. Schlussfolgerung

VerwendenIAMMETER MQTT BrokerSie können problemlos darauf zugreifenEchtzeit-Energiedatenströmevon Ihren IAMMETER-Geräten. Es ist eine leistungsstarke und flexible Methode zum Erstellen vonlokale Dashboards, intelligente Automatisierungen oder KI-basierte Energieoptimierungssysteme.


📘 Verweise


Soll ich eins machen?Blogbeitragsversion im Markdown-Format(Bereit zur Veröffentlichung im offiziellen IAMMETER-Blog, inklusive Syntaxhervorhebung und eingebetteten Bildlinks)?

Oberteil