Sorry, uw browser ondersteunt geen JavaScript!
Inloggen

Realtime energiegegevensabonnement via MQTT Broker (2025 Editie)

1. Inleiding

IAMMETER-Cloud is een professioneel platform voor energiemonitoring en fotovoltaïsch beheer. Naast de krachtige visualisatie- en rapportagefuncties biedt IAMMETER-Cloud ook flexibele data-interfaces. Hierdoor kunnen gebruikers met maatwerkvereisten IAMMETER-Cloud gebruiken als datatussenlaag, waarbij ze gegevens programmatisch ophalen via code.

Er zijn twee manieren om gegevens uit IAMMETER-Cloud te verkrijgen via code:

  • Abonneer op gegevens via de MQTT Broker van IAMMETER (de focus van dit artikel)
  • Roep de officiële API's van IAMMETER-Cloud aan

Deze handleiding legt uit hoe u zich kunt abonneren op IAMMETER MQTT-topics, hoe u gegevensstructuren interpreteert (voor zowel enkelfasige als driefasige meters) en hoe u werkende Python- en Node.js-voorbeelden implementeert.


2. Overzicht van de IAMMETER MQTT Broker

Opmerking: De IAMMETER MQTT Broker is oorspronkelijk ontworpen als een ontwikkel- en testservice voor het gemak en maakt geen deel uit van het standaard IAMMETER-Cloud-aanbod (hoewel het al meer dan 5 jaar stabiel draait). Voor productie- of grootschalige implementaties raden we aan om uw eigen MQTT-broker op te zetten.

Configuratie van de IAMMETER MQTT Broker

Parameter Beschrijving
Brokeradres mqtt.iammeter.com
Poort 1883 (niet-SSL)
Gebruikersnaam / Wachtwoord Moet worden aangemaakt in IAMMETER Cloud → Instellingen → MQTT-instellingenMQTT-instellingen Schermafbeelding
Topic-indeling device/{SN}/realtime
Payload-indeling JSON

⚠️ Belangrijk: Gebruik hier niet uw IAMMETER Cloud-inloggegevens. U moet een speciale MQTT-gebruikersnaam en -wachtwoord aanmaken in het IAMMETER Cloud-dashboard.

Configureer de IAMMETER-meter voor MQTT-modus

Stel uw IAMMETER-meter in op MQTT-uploadmodus (zie firmwareconfiguratiehandleiding) en voer de parameters van de IAMMETER MQTT Broker in.

Stel meter in op MQTT-uploadmodus en configureer IAMMETER MQTT Broker-parameters


3. MQTT Topic-indeling

Elk IAMMETER-apparaat publiceert zijn real-time gegevens onder het volgende topic:

device/{SN}/realtime

Waarbij {SN} het serienummer van uw meter is. Als uw apparaat-SN bijvoorbeeld DA2BED94 is, wordt het topic:

device/DA2BED94/realtime

U kunt zich op dit topic abonneren om continu real-time meetgegevens te ontvangen.


4. Gegevensformaat

4.1 Gegevensformaat voor enkelfasige meter

Een enkelfasige IAMMETER-meter publiceert real-time gegevens in JSON-formaat als volgt:

{
  "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 Veld Beschrijving Eenheid
1 Voltage Huidige lijnspanning V
2 Current Huidige lijnstroom A
3 Power Actief vermogen W
4 Forward Energy Geïmporteerde energie (verbruikt) kWh
5 Reverse Energy Geëxporteerde energie (teruglevering, zonne-energie) kWh
6 Frequency Netfrequentie Hz
7 Power Factor Huidige arbeidsfactor PF

🟢 Opmerkingen:

  • Positief vermogen → energieverbruik
  • Negatief vermogen → energie-export (bijv. teruglevering van zonne-energie)

4.2 Gegevensformaat voor driefasige meter (WEM3080T / WEM3046T / WEM3050T)

Driefasige IAMMETER-meters publiceren gegevens in een vergelijkbaar JSON-formaat, met drie arrays die overeenkomen met elke fase.

{
  "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 is een lijst met drie arrays, die elk overeenkomen met fase A, B en C. Elke interne array heeft dezelfde structuur als de enkelfasige Data-array.

Index Veld Beschrijving Eenheid
1 Voltage Fasespanning V
2 Current Fasestroom A
3 Power Actief vermogen W
4 Forward Energy Geïmporteerde energie kWh
5 Reverse Energy Geëxporteerde energie kWh
6 Frequency Netfrequentie Hz
7 Power Factor Arbeidsfactor per fase PF

Naast de actieve vermogensgegevens, wanneer blindvermogenmeting is ingeschakeld, ziet u ook de EA-sectie als volgt:

"EA": {
  "Reactive": [
    [-111.0, 0.000, 176.750],
    [-113.0, 0.000, 179.110],
    [-114.0, 36.120, 144.410]
  ]
}

Deze sectie toont blindvermogenmeetgegevens, die alleen verschijnen wanneer de blindtestfunctie is ingeschakeld (zie onderstaande schermafbeelding).

Blindvermogenmeting inschakelen in de meter

Elke array vertegenwoordigt de drie fasen (A, B, C) en toont blindvermogen (Q in kVar) en blindenenergie (kVARh).

Q (kVar): Blindvermogen — positief = inductief, negatief = capacitief kVARh: Blindenenergie — elke fase bevat twee kVARh-waarden: één voor inductieve belasting en één voor capacitieve belasting.


5. Python-voorbeeld: Abonneren op real-time gegevens

Hieronder staat een werkend Python-script met behulp van de paho-mqtt-bibliotheek.

import paho.mqtt.client as mqtt
import json

# MQTT Broker-configuratie
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username"  # Ingesteld in IAMMETER Cloud → MQTT-instellingen
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime"  # Vervang door het SN van uw eigen apparaat

# Callback wanneer verbonden met de broker
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("✅ Verbonden met IAMMETER MQTT Broker")
        client.subscribe(TOPIC)
        print(f"📡 Geabonneerd op topic: {TOPIC}")
    else:
        print(f"❌ Verbinding mislukt met code {rc}")

# Callback wanneer een bericht wordt ontvangen
def on_message(client, userdata, msg):
    payload = json.loads(msg.payload.decode())
    print("📊 Real-time gegevens ontvangen:")
    print(json.dumps(payload, indent=2, ensure_ascii=False))

# MQTT-client initialiseren
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message

# Verbinden met de broker en de lus starten
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()

6. Node.js-voorbeeld

We raden aan dit interessante open-sourceproject te proberen: Het gebruikt Node.js om zich te abonneren op real-time gegevens van de IAMMETER MQTT-broker en deze te visualiseren in een web-UI, waarmee een coole real-time dashboard ontstaat.

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


7. Praktische gebruiksscenario's

  1. Smart Home-automatisering Integreer real-time vermogensgegevens in Home Assistant of Node-RED om automatiseringsacties te activeren (bijv. een verwarming inschakelen wanneer de zonne-opwekking hoog is).
  2. Lokale datavisualisatie Sla inkomende MQTT-gegevens op in InfluxDB en visualiseer ze met Grafana-dashboards.
  3. Private Cloud of Edge Computing Haal real-time vermogensgegevens rechtstreeks op via MQTT voor aangepaste analyses of besturingslogica zonder afhankelijk te zijn van IAMMETER Cloud.

8. Probleemoplossing

Probleem Mogelijke oorzaak / oplossing
Kan geen verbinding maken met broker Controleer of uw MQTT-gebruikersnaam/-wachtwoord correct zijn ingesteld in IAMMETER Cloud.
Geen gegevens ontvangen Controleer uw topic-indeling (device/{SN}/realtime) en zorg ervoor dat de meter online is.
Vertraging in gegevens Controleer uw netwerkstabiliteit of Wi-Fi-signaalsterkte.
Meerdere meters U kunt zich tegelijkertijd op meerdere topics abonneren (één per SN).

9. Conclusie

Met behulp van de IAMMETER MQTT Broker kunt u eenvoudig real-time energiedatastromen van uw IAMMETER-apparaten benaderen. Het is een krachtige en flexibele methode om lokale dashboards, slimme automatiseringen of AI-gebaseerde energieoptimalisatiesystemen te bouwen.


📘 Referenties


Zou u een Markdown-opgemaakte blogpostversie willen (klaar om te publiceren op de officiële IAMMETER-blog, met syntaxishighlighting en ingesloten afbeeldingslinks intact)?

Boven