Spiacenti, il tuo browser non supporta JavaScript!
Accedi

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

Imposta il contatore in modalità upload MQTT e configura 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).

Abilita la misurazione reattiva nel contatore

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

  1. 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).
  2. Visualizzazione dati locale Archivia i dati MQTT in arrivo in InfluxDB e visualizzali con dashboard Grafana.
  3. 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


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

In alto