Sì: stavolta l’Intelligenza Artificiale non è una parola da inserire nel titolo per fare scena. È stata una leva concreta. In meno di un’ora, usando Claude Code, ho messo insieme un progetto completo (firmware + logica di visualizzazione) per avere un display hardware sempre acceso che mostra in tempo reale i dati del mio impianto fotovoltaico, prendendoli da Solar Assistant via MQTT.
Repository: https://github.com/alexlanni/solar-assistant-display
README (principio di funzionamento):
https://github.com/alexlanni/solar-assistant-display/blob/main/README.md
Perché un display fisico, quando esistono app e dashboard?
Perché alcune informazioni non le vuoi “cercare”, le vuoi vedere al volo. Quando sei in casa o nel locale tecnico, un display sempre acceso ti dà subito risposta a domande tipo:
- Sto andando in autoconsumo o sto importando dalla rete?
- La batteria sta caricando o scaricando?
- Quanti watt stanno producendo i pannelli in questo momento?
- Quanto sto consumando adesso?
- Quanto ho prodotto/consumato oggi (energia giornaliera)?
È la differenza tra “apro l’app, carico il grafico, cerco il widget” e “guardo e basta”.
Cosa fa questo progetto (in pratica)
Il sistema è composto da:
- Wemos D1 Mini (ESP8266) come microcontrollore
- Display grafico 128×64 QC12864B con controller ST7920
- Wi-Fi + MQTT per leggere i valori esposti da Solar Assistant
- Una dashboard compatta renderizzata sul display con refresh costante
Il firmware:
(1) si connette al Wi-Fi, (2) si connette al broker MQTT, (3) si sottoscrive ai topic, (4) aggiorna a schermo lo stato dell’impianto a intervalli regolari.
Architettura “semplice ma solida”
La cosa interessante non è solo “leggo MQTT e stampo a schermo”, ma come lo fai senza impiantarti quando la rete cade o il broker non risponde. Ho impostato una logica pratica e robusta:
- Refresh display ogni 2 secondi: abbastanza rapido da essere “live”, senza sprecare risorse.
- Reconnect MQTT non bloccante ogni 5 secondi: se il broker cade, non si pianta tutto.
- Gestione valori “stale” dopo 30 secondi: se non arrivano dati recenti, evito di mostrare numeri vecchi come se fossero attuali.
Quando un valore è stale, le potenze possono diventare ?, la grid può andare a 0 W come fallback e le energie giornaliere restano (sono accumulatori e hanno senso anche con aggiornamenti intermittenti).
Convenzioni dei valori (per non impazzire con i segni)
Per evitare equivoci, ho adottato convenzioni chiare:
- Battery power: positiva = caricamento, negativa = scaricamento
- Grid power: positiva = import, negativa = export
Questo ti consente di capire al volo se stai assorbendo dalla rete o stai immettendo.
Hardware: pochi componenti, poche complicazioni
Il display usa il controller ST7920 in modalità seriale 3-wire (SW SPI) ed è pilotato con la libreria U8g2. Questa scelta è comoda perché riduce i pin e rende il rendering affidabile.
Il risultato è un “cruscotto” minimalista che sta bene anche in un contenitore stampato in 3D o in una scatola da quadro.
La parte “AI”: cosa ha fatto davvero Claude Code
Qui viene il punto interessante: non si tratta di far scrivere a caso del codice. L’approccio che mi ha fatto risparmiare tempo è stato:
- Descrivere obiettivo e vincoli (MCU, display, MQTT, refresh, fallback, segni)
- Iterare velocemente con patch piccole e verificabili (topic, layout, rendering)
- Validare in pratica: compila, flash, guardo il display, correggo
Claude Code è stato un acceleratore su struttura del progetto, gestione degli edge case (reconnect/stale) e pulizia del rendering. Poi però il firmware resta deterministico: l’AI ti fa correre, ma il controllo rimane tuo.
Foto reale del progetto

Come usarlo (senza fare i vaghi)
- Clona il repository.
- Configura Wi-Fi e broker MQTT come indicato nel README.
- Flasha il firmware sul Wemos.
- Verifica che Solar Assistant stia pubblicando i topic attesi.
- Accendi: il display diventa il tuo “strumento da quadro”.
Idee per evolverlo (fase 2)
- Case stampato in 3D con supporto a parete
- Icone (sole, batteria, rete) per migliorare la leggibilità
- Modalità notturna / riduzione luminosità (se supportata)
- Pagine a rotazione: oggi / ieri / medie
- Alert via MQTT quando SOC scende sotto soglia o grid import supera X
Conclusione
Questo è uno di quei progetti dove l’AI non sostituisce il maker: lo potenzia. Con un microcontrollore economico e un display semplice, ti porti a casa un oggetto estremamente pratico: un cruscotto sempre acceso che ti dice la verità dell’impianto in tempo reale.
Se vuoi partire da qui:

Lascia un commento