IoT · Edge device · Q3 2025 – oggi

PV Inverter Monitor

ruolo Progettazione & sviluppo completo
hardware Raspberry Pi · RS485 · Inverter FV
protocolli Modbus RTU · SunSpec · MQTT
scala Residenziale 6 kWp → commerciale ~100 kWp
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