IoT · Edge device · Q3 2025 – oggi
PV Inverter Monitor
01 Contesto e obiettivo
Gli inverter fotovoltaici espongono dati operativi (potenza, tensione, corrente, energia cumulata, stato storage) tramite RS485 con protocollo Modbus RTU. I sistemi di monitoraggio forniti dai vendor sono spesso cloud-dipendenti, con accesso ai dati raw limitato o assente, e non sempre integrabili con piattaforme proprietarie.
L'obiettivo è un edge device autonomo che acquisisce i dati localmente in standard SunSpec, li pubblica via MQTT per l'integrazione con qualsiasi backend, e, soprattutto, può essere installato dal cliente finale o dal suo elettricista senza preconfigurazione, grazie a una webview di onboarding guidato.
02 Onboarding self-service
Il device esce "vuoto" dal nostro magazzino. Una volta alimentato espone una webview standalone raggiungibile in rete locale (o tramite hotspot generato dal device stesso) che guida l'installatore attraverso tutte le scelte necessarie
Step di configurazione
1 · ReteWi-Fi/Ethernet, hotspot fallback
2 · Bus serialePorta, baudrate, slave ID discovery
3 · InverterAuto-detect modelli SunSpec presenti
4 · MQTT brokerURL, credenziali, topic prefix, TLS
5 · AnagraficaID impianto, intervallo polling
6 · Test & salvaLettura di prova + publish test sul broker
Perché conta
LogisticaStesso firmware per ogni impianto
TempiInstallazione in minuti, non ore
RuoloL'elettricista basta a sé stesso
RobustezzaWizard validato, errori parlanti
RiconfigStesso wizard anche post-deploy
03 Architettura
hardware
Raspberry Pi (Raspberry Pi OS)
Adattatore USB → RS485
Inverter fotovoltaico (SunSpec-compliant)
Battery storage system (opzionale)
↓ Modbus RTU seriale
acquisizione dati
Python (pymodbus)
SunSpec Models 701 · 702 · 703 · 713
Polling configurabile (default 5 min)
Scale factor correction (SUNSSF)
↓
trasporto & servizi locali
MQTT publisher (paho-mqtt, QoS configurabile)
Buffer locale per riconnessione (store-and-forward)
SQLite, serie storica di backup
Webview di configurazione (Flask + hotspot)
↓
consumatori (a valle del broker)
Energine Manager (dashboard, alert)
Backend cliente (qualsiasi servizio MQTT-subscriber)
Time-series DB (es. InfluxDB / Timescale)
04 SunSpec Models, dettaglio tecnico
Lo standard SunSpec Alliance definisce un insieme di modelli Modbus con registri a offset fisso per ogni tipo di dispositivo. Il sistema implementa quattro modelli:
Model 701, AC meter
WPotenza attiva totale
VAPotenza apparente
PFPower factor
HzFrequenza rete
Model 702, PV string
DCVTensione stringa DC
DCACorrente stringa DC
DCWPotenza stringa DC
TmpTemperatura moduli
Model 703, storage
SoCState of Charge (%)
WPotenza carica/scarica
StStato operativo storage
ChaStStato di carica
Model 713, controllo
ConnConnessione rete
WMaxLimPctLimite potenza (%)
OutPFSetPower factor setpoint
VArPctReactive power (%)
Scale factor bug (SUNSSF). I registri SunSpec usano fattori di scala a 16 bit con segno (int16) accoppiati ai valori grezzi. Interpretarli come uint16 portava a letture sbagliate di ordini di grandezza, potenze negative lette come decine di kW. Il fix ha richiesto il cast esplicito a ctypes.c_int16 prima dell'applicazione del fattore.
05 Deploy & scala
6 → 100kWp
range impianti supportati
0
preconfigurazione richiesta
MQTT
integrazione standard con qualsiasi backend
Il device è in produzione su impianti che vanno dal residenziale (6 kWp + 10 kWh storage) al commerciale fino a ~100 kWp. Lo stesso firmware copre entrambi i casi: cambia solo la configurazione, fatta dall'installatore tramite la webview al momento della messa in servizio. I dati raccolti alimentano analisi di autoconsumo, ottimizzazione fasce orarie di carica e valutazione dell'efficienza del sistema di accumulo nel tempo.
06 Stack completo
***REMOVED***
Modbus RTU
SunSpec
MQTT
pymodbus
paho-mqtt
RS485
Raspberry Pi
SQLite
Flask (webview)
hostapd / dnsmasq (hotspot)
systemd
Linux ARM