Subscrierea la date de energie în timp real prin broker-ul MQTT (ediția 2025)
1. Introducere
IAMMETER-Cloud este o platformă profesională de monitorizare a energiei și de gestionare fotovoltaică. Pe lângă funcțiile sale puternice de vizualizare și raportare, IAMMETER-Cloud oferă și interfețe flexibile de date. Acest lucru permite utilizatorilor cu cerințe personalizate să utilizeze IAMMETER-Cloud ca middleware de date, obținând date programatic, prin cod.
Există două modalități principale de a obține date din IAMMETER-Cloud prin cod:
- Subscrierea la date prin broker-ul MQTT IAMMETER (subiectul acestui articol)
- Apelarea API-urilor oficiale IAMMETER-Cloud
Acest ghid explică modul de subscriere la topic-urile MQTT IAMMETER, interpretarea structurilor de date (atât pentru contoarele monofazate, cât și pentru cele trifazate) și implementarea unor exemple funcționale în Python și Node.js.
2. Prezentare generală a broker-ului MQTT IAMMETER
Notă: Broker-ul MQTT IAMMETER a fost conceput inițial ca un serviciu de dezvoltare și testare, pentru comoditate, și nu face parte din oferta standard IAMMETER-Cloud (deși este stabil și funcționează de peste 5 ani). Pentru implementări de producție sau la scară largă, vă recomandăm să configurați propriul broker MQTT.
Configurarea broker-ului MQTT IAMMETER
| Parametru | Descriere |
|---|---|
| Adresa broker-ului | mqtt.iammeter.com |
| Port | 1883 (fără SSL) |
| Nume de utilizator / Parolă | Trebuie create în IAMMETER Cloud → Settings → MQTT Settings![]() |
| Format topic | device/{SN}/realtime |
| Format payload | JSON |
⚠️ Important: Nu folosiți aici acreditările dvs. de conectare la IAMMETER Cloud. Trebuie să creați un nume de utilizator și o parolă MQTT dedicate în panoul de control IAMMETER Cloud.
Configurarea contorului IAMMETER pentru modul MQTT
Setați contorul IAMMETER în modul de încărcare MQTT (consultați ghidul de configurare a firmware-ului) și introduceți parametrii broker-ului MQTT IAMMETER.

3. Formatul topic-urilor MQTT
Fiecare dispozitiv IAMMETER publică datele sale în timp real sub următorul topic:
device/{SN}/realtime
Unde {SN} este numărul de serie al contorului dvs.
De exemplu, dacă SN-ul dispozitivului este DA2BED94, topic-ul va fi:
device/DA2BED94/realtime
Vă puteți subscrie la acest topic pentru a primi date de măsurare continue, în timp real.
4. Formatul datelor
4.1 Formatul datelor contorului monofazat
Un contor IAMMETER monofazat publică date în timp real în format JSON, astfel:
{
"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 | Câmp | Descriere | Unitate |
|---|---|---|---|
| 1 | Voltage | Tensiunea de linie curentă | V |
| 2 | Current | Curentul de linie curent | A |
| 3 | Power | Puterea activă | W |
| 4 | Forward Energy | Energie importată (consumată) | kWh |
| 5 | Reverse Energy | Energie exportată (injectată, solară) | kWh |
| 6 | Frequency | Frecvența rețelei | Hz |
| 7 | Power Factor | Factorul de putere curent | PF |
🟢 Note:
- Putere pozitivă → consum de energie
- Putere negativă → export de energie (de ex., injectare solară)
4.2 Formatul datelor contorului trifazat (WEM3080T / WEM3046T / WEM3050T)
Contoarele IAMMETER trifazate publică date într-un format JSON similar, cu trei tablouri corespunzătoare fiecărei faze.
{
"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 este o listă care conține trei tablouri, fiecare corespunzând fazelor A, B și C.
Fiecare tablou interior are aceeași structură ca tabloul Data al contorului monofazat.
| Index | Câmp | Descriere | Unitate |
|---|---|---|---|
| 1 | Voltage | Tensiunea de fază | V |
| 2 | Current | Curentul de fază | A |
| 3 | Power | Puterea activă | W |
| 4 | Forward Energy | Energie importată | kWh |
| 5 | Reverse Energy | Energie exportată | kWh |
| 6 | Frequency | Frecvența rețelei | Hz |
| 7 | Power Factor | Factorul de putere al fazei | PF |
Pe lângă datele reale de putere, atunci când măsurarea puterii reactive este activată, veți vedea și secțiunea EA, astfel:
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
}
Această secțiune prezintă datele de măsurare reactivă, care apar doar atunci când funcția de testare reactivă este activată (consultați captura de ecran de mai jos).

Fiecare tablou reprezintă cele trei faze (A, B, C), indicând puterea reactivă (Q în kVar) și energia reactivă (kVARh).
Q (kVar): Putere reactivă — pozitiv = inductiv, negativ = capacitiv kVARh: Energie reactivă — fiecare fază include două valori kVARh: una pentru sarcina inductivă și una pentru sarcina capacitivă.
5. Exemplu în Python: subscrierea la date în timp real
Mai jos este un script Python funcțional care utilizează biblioteca paho-mqtt.
import paho.mqtt.client as mqtt
import json
# MQTT Broker configuration
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username" # Set in IAMMETER Cloud → MQTT Settings
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # Replace with your own device SN
# Callback when connected to the broker
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Connected to IAMMETER MQTT Broker successfully")
client.subscribe(TOPIC)
print(f"📡 Subscribed to topic: {TOPIC}")
else:
print(f"❌ Connection failed with code {rc}")
# Callback when a message is received
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Received real-time data:")
print(json.dumps(payload, indent=2, ensure_ascii=False))
# Initialize MQTT client
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message
# Connect to the broker and start the loop
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Exemplu în Node.js
Vă recomandăm să încercați acest proiect open-source interesant: Acesta utilizează Node.js pentru a se subscrie la datele în timp real de la broker-ul MQTT IAMMETER și pentru a le vizualiza într-o interfață web, creând un tablou de bord impresionant în timp real.
🔗 https://github.com/lewei50/iammeterJS
7. Cazuri practice de utilizare
- Automatizarea casei inteligente Integrați datele de putere în timp real în Home Assistant sau Node-RED pentru a declanșa acțiuni de automatizare (de ex., pornirea unui încălzitor atunci când producția solară este ridicată).
- Vizualizarea locală a datelor Stocați datele MQTT primite în InfluxDB și vizualizați-le cu dashboard-uri Grafana.
- Cloud privat sau Edge Computing Obțineți date de putere în timp real direct prin MQTT pentru analize personalizate sau logică de control, fără a depinde de IAMMETER Cloud.
8. Depanare
| Problemă | Cauză posibilă / Soluție |
|---|---|
| Nu se poate conecta la broker | Verificați dacă numele de utilizator/parola MQTT sunt setate corect în IAMMETER Cloud. |
| Nu se primesc date | Verificați formatul topic-ului (device/{SN}/realtime) și asigurați-vă că contorul este online. |
| Întârzierea datelor | Verificați stabilitatea rețelei sau puterea semnalului Wi-Fi. |
| Mai multe contoare | Vă puteți subscrie la mai multe topic-uri simultan (câte unul pentru fiecare SN). |
9. Concluzie
Folosind broker-ul MQTT IAMMETER, puteți accesa cu ușurință fluxuri de date de energie în timp real de la dispozitivele IAMMETER. Este o metodă puternică și flexibilă pentru a construi tablouri de bord locale, automatizări inteligente sau sisteme de optimizare a energiei bazate pe AI.
📘 Referințe
- Funcțiile de firmware și comunicare IAMMETER
- Documentația API IAMMETER Cloud și MQTT
- Dezvoltați propriul tablou de bord de monitorizare a energiei folosind NodeJS
Doriți să creez o versiune de postare de blog formatată în Markdown (gata de publicare pe blogul oficial IAMMETER, cu evidențierea sintaxei și linkurile de imagini încorporate intacte)?
