Abbonamento ai dati energetici in tempo reale tramite broker MQTT (Edizione 2025)
1. Introduzione
IAMMETER-Cloud è una piattaforma professionale per il monitoraggio energetico e la gestione del fotovoltaico. Oltre alle sue potenti funzioni di visualizzazione e reportistica, IAMMETER-Cloud offre anche interfacce dati flessibili. Ciò consente agli utenti con esigenze personalizzate di utilizzare IAMMETER-Cloud come middleware dati, recuperando i dati tramite codice.
Esistono due modi principali per ottenere dati da IAMMETER-Cloud tramite codice:
- Abbonarsi ai dati tramite il broker MQTT di IAMMETER (l'argomento principale di questo articolo)
- Chiamare le API ufficiali di IAMMETER-Cloud
Questa guida spiega come abbonarsi ai topic MQTT di IAMMETER, interpretare le strutture dati (sia per contatori monofase che trifase) e implementare esempi funzionanti in Python e Node.js.
2. Panoramica del broker MQTT IAMMETER
Nota: Il broker MQTT IAMMETER è stato originariamente progettato come servizio di sviluppo e test per comodità e non fa parte dell'offerta standard di IAMMETER-Cloud (sebbene sia stabile e in esecuzione da oltre 5 anni). Per distribuzioni in produzione o su larga scala, consigliamo di configurare il proprio broker MQTT.
Configurazione del broker MQTT IAMMETER
| Parametro | Descrizione |
|---|---|
| Indirizzo broker | mqtt.iammeter.com |
| Porta | 1883 (non SSL) |
| Nome utente / Password | Deve essere creato in IAMMETER Cloud → Impostazioni → Impostazioni MQTT ![]() |
| Formato topic | device/{SN}/realtime |
| Formato payload | JSON |
⚠️ Importante: Non utilizzare qui le credenziali di accesso a IAMMETER Cloud. È necessario creare un nome utente e una password MQTT dedicati nel pannello di IAMMETER Cloud.
Configurare il contatore IAMMETER per utilizzare la modalità MQTT
Imposta il tuo contatore IAMMETER in modalità di upload MQTT (vedi guida alla configurazione del firmware) e inserisci i parametri del broker MQTT IAMMETER.

3. Formato del topic MQTT
Ogni dispositivo IAMMETER pubblica i propri dati in tempo reale sotto il seguente topic:
device/{SN}/realtime
Dove {SN} è il numero di serie del tuo contatore.
Ad esempio, se il SN del tuo dispositivo è DA2BED94, il topic sarà:
device/DA2BED94/realtime
Puoi abbonarti a questo topic per ricevere dati di misurazione continui in tempo reale.
4. Formato dei dati
4.1 Formato dati contatore monofase
Un contatore IAMMETER monofase pubblica i dati in tempo reale in formato JSON come segue:
{
"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]
}
| Indice | Campo | Descrizione | Unità |
|---|---|---|---|
| 1 | Voltage | Tensione di linea corrente | V |
| 2 | Current | Corrente di linea corrente | A |
| 3 | Power | Potenza attiva | W |
| 4 | Forward Energy | Energia importata (consumata) | kWh |
| 5 | Reverse Energy | Energia esportata (immissione solare) | kWh |
| 6 | Frequency | Frequenza di rete | Hz |
| 7 | Power Factor | Fattore di potenza corrente | PF |
🟢 Note:
- Potenza positiva → consumo energetico
- Potenza negativa → esportazione di energia (es. immissione solare)
4.2 Formato dati contatore trifase (WEM3080T / WEM3046T / WEM3050T)
I contatori trifase IAMMETER pubblicano i dati in un formato JSON simile, con tre array corrispondenti a ciascuna 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 è un elenco contenente tre array, ciascuno corrispondente alle fasi A, B e C.
Ogni array interno ha la stessa struttura dell'array Data monofase.
| Indice | Campo | Descrizione | Unità |
|---|---|---|---|
| 1 | Voltage | Tensione di fase | V |
| 2 | Current | Corrente di fase | A |
| 3 | Power | Potenza attiva | W |
| 4 | Forward Energy | Energia importata | kWh |
| 5 | Reverse Energy | Energia esportata | kWh |
| 6 | Frequency | Frequenza di rete | Hz |
| 7 | Power Factor | Fattore di potenza di fase | PF |
Oltre ai dati di potenza reale, quando la misurazione della potenza reattiva è abilitata, vedrai anche la sezione EA come segue:
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
}
Questa sezione mostra i dati di misurazione reattiva, che appaiono solo quando la funzione di test reattivo è abilitata (vedi screenshot sotto).

Ogni array rappresenta le tre fasi (A, B, C), mostrando la potenza reattiva (Q in kVar) e l'energia reattiva (kVARh).
Q (kVar): Potenza reattiva — positiva = induttiva, negativa = capacitiva kVARh: Energia reattiva — ogni fase include due valori kVARh: uno per il carico induttivo e uno per il carico capacitivo.
5. Esempio Python: Abbonamento ai dati in tempo reale
Di seguito è riportato uno script Python funzionante che utilizza la libreria paho-mqtt.
import paho.mqtt.client as mqtt
import json
# Configurazione del broker MQTT
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username" # Imposta in IAMMETER Cloud → Impostazioni MQTT
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # Sostituisci con il SN del tuo dispositivo
# Callback quando connesso al broker
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Connesso al broker MQTT IAMMETER con successo")
client.subscribe(TOPIC)
print(f"📡 Abbonato al topic: {TOPIC}")
else:
print(f"❌ Connessione fallita con codice {rc}")
# Callback quando viene ricevuto un messaggio
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Dati in tempo reale ricevuti:")
print(json.dumps(payload, indent=2, ensure_ascii=False))
# Inizializza il client MQTT
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message
# Connetti al broker e avvia il loop
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Esempio Node.js
Consigliamo di provare questo interessante progetto open-source: Utilizza Node.js per abbonarsi ai dati in tempo reale dal broker MQTT IAMMETER e visualizzarli in una interfaccia web, creando una fantastica dashboard in tempo reale.
🔗 https://github.com/lewei50/iammeterJS
7. Casi d'uso pratici
- Automazione della Smart Home Integra i dati di potenza in tempo reale in Home Assistant o Node-RED per attivare azioni di automazione (es. avviare un riscaldatore quando la generazione solare è alta).
- Visualizzazione dati locale Archivia i dati MQTT in arrivo in InfluxDB e visualizzali con dashboard Grafana.
- Cloud privato o Edge Computing Recupera i dati di potenza in tempo reale direttamente tramite MQTT per analisi personalizzate o logiche di controllo senza dipendere da IAMMETER Cloud.
8. Risoluzione dei problemi
| Problema | Causa possibile / Soluzione |
|---|---|
| Impossibile connettersi al broker | Verifica che il nome utente e la password MQTT siano impostati correttamente in IAMMETER Cloud. |
| Nessun dato ricevuto | Verifica il formato del tuo topic (device/{SN}/realtime) e assicurati che il contatore sia online. |
| Ritardo nei dati | Controlla la stabilità della tua rete o la potenza del segnale Wi-Fi. |
| Più contatori | Puoi abbonarti a più topic simultaneamente (uno per SN). |
9. Conclusione
Utilizzando il broker MQTT IAMMETER, puoi accedere facilmente ai flussi di dati energetici in tempo reale dai tuoi dispositivi IAMMETER. È un metodo potente e flessibile per creare dashboard locali, automazioni intelligenti o sistemi di ottimizzazione energetica basati sull'IA.
📘 Riferimenti
- Funzionalità del firmware e della comunicazione IAMMETER
- Documentazione API IAMMETER Cloud e MQTT
- Sviluppa la tua dashboard di monitoraggio energetico con NodeJS
Vorresti che creassi una versione formattata in Markdown del post del blog (pronta per la pubblicazione sul blog ufficiale IAMMETER, con evidenziazione della sintassi e link alle immagini intatti)?
