L'apparecchio smontato per metà

Mancano ormai solo due giorni a Natale e tutti noi, o almeno chi lo festeggia, abbiamo già sicuramente addobbato la casa a dovere. Come sempre, le regine degli addobbi sono le luci, ma delle semplici luci lampeggianti non sono per niente adatte all’abitazione intelligente di cui si sente tanto parlare! Inizialmente avevo un obiettivo relativamente semplice: costruire un “aggeggio” che funzionasse come una normalissima intermittenza, ma fosse integrabile in un hub di home automation quale Home Assistant (che uso personalmente). In questo modo, sarebbe possibile controllare gli orari di accensione e spegnimento in maniera intelligente, per esempio basandosi su alba e tramonto, oppure sulla presenza delle persone in casa.

Hardware

Lato hardware, il prodotto finale aveva alcuni requisiti da rispettare:

  1. Controllare separatamente 2 carichi a 220V fino a circa 600W l’uno (il perimetro di casa mia è illuminato da un unico tubo a incandescenza che consuma circa 500W).
  2. Resistere a milioni di cicli ON-OFF (con intervallo di 1 secondo, se le luci restassero accese 5 ore a notte un milione di cicli equivarrebbero a 2 mesi circa)
  3. Comunicare con l’interno dell’abitazione tramite Wi-Fi

Per i progetti che richiedono la comunicazione via Wi-Fi, mi piace utilizzare il microcontrollore ESP8266. Tra i punti di forza di questo MCU, troviamo appunto il Wi-Fi onboard, molta più memoria sia Flash che RAM rispetto ad un Arduino UNO (ATmega328), e le sue dimensioni ridotte.

Per pilotare fisicamente i carichi, ho scelto di utilizzare dei relè a stato solido: hanno una vita in cicli di molte volte maggiore rispetto ai relè tradizionali, sono completamente silenziosi e possono essere controllati direttamente dagli output digitali a 3.3V dell’ESP8266 senza causare sovracorrenti. 

Dopo aver lottato con le varie parti per farle entrare tutte in un contenitore di dimensioni appena sufficienti per accomodarle, ho ottenuto un prodotto di costruzione decisamente solida, e anche resistente all’ingresso dei liquidi.

Software

Ad ogni progetto hardware serve però del software adeguato che ne controlli il funzionamento, sebbene in questo caso relativamente basilare. 

Il microcontrollore ESP8266 può essere programmato in molti linguaggi, tra cui il simil-c di Arduino: sicuramente non il più flessibile né performante, ma di semplicissimo utilizzo. Per l’IDE di Arduino si possono inoltre trovare migliaia se non milioni di librerie, alcune di cui in questo caso ho utilizzato per facilitare la connessione al Wi-Fi e la ricezione di pacchetti MQTT (e poi E1.31!)

Il protocollo MQTT

Questo mi sembra un ottimo momento per parlare brevemente del protocollo MQTT, utilizzato in questo progetto per permettere la comunicazione con un hub di automazione casalinga. MQTT è un protocollo a bassa velocità di trasmissione, spesso apprezzato appunto per la sua leggerezza, bassissima latenza e affidabilità. Si basa su un server centrale, chiamato in questo caso broker, a cui tutti i client si collegano. Stabilita la connessione, ognuno dei client può inviare al broker un messaggio (publish) specificando un topic, il messaggio viene poi inoltrato dal server a tutti gli altri client che si sono “iscritti” (subscribe) a quello stesso topic. Quest’architettura permette a molteplici dispositivi di attuare la stessa funzione (per esempio 5 interruttori che controllano la stessa lampadina) in modo estremamente rapido. Nel caso specifico l’intermittenza si iscrive a svariati topic, tra cui /power, /effect, ecc. Oltre a ricevere messaggi, pubblica anche delle conferme di ricezione su /powerState ed /effectState.

Semi-conclusioni

A questo punto avevo ottenuto il risultato desiderato, rispettando tutti i requisiti iniziali. Mi sembrava però un po’ riduttivo aver costruito un tale apparecchio per poi farlo funzionare soltanto come un’intermittenza, sebbene sicuramente più “smart” di una tradizionale. È stato proprio in questo periodo che mi è tornato in mente un video visto qualche anno fa su YouTube, dove veniva dimostrato uno spettacolo di luci natalizie sincronizzate alla musica,  e mi sono chiesto se una funzionalità simile poteva essere implementata nel mio progetto.

The fun stuff

Certo che si può! Ma come? Dopo un paio di pomeriggi di ricerca nelle profondità di forum americani sull’illuminazione natalizia (ormai c’è proprio un forum per tutto) ho scoperto che esistono alcuni software per il sequencing di spettacoli luminosi, tra cui Vixen 3 che è open source. Spiegato brevemente, in questi programmi si può importare un file audio e impostare l’accensione e lo spegnimento (anche intensità e colore) delle luci in un qualunque momento rispetto all’audio. Per fare in modo che la mia intermittenza rispondesse all’output di Vixen, mi è servito solamente aggiungere un terzo “powerstate”. Quando in questa modalità, il microcontrollore riceve pacchetti E1.31 inviati sulla LAN da Vixen, e imposta i relè conseguentemente. 

Il protocollo E1.31

E1.31 (chiamato anche Streaming ACN), ha la funzione di inviare messaggi DMX, lo standard per il controllo dell’illuminazione nel mondo dello spettacolo ormai da qualche decennio, attraverso la rete invece di un cavo dedicato. Il DMX “classico” utilizza un cavo tripolare e un normale connettore XLR, e sfrutta una topologia point-to-point: Il primo nodo è di solito una centralina di controllo, poi viene collegato il primo apparecchio ricevente e così via fino ad un limite massimo di 512 canali di controllo. È abbastanza ovvio che questo tipo di configurazione può risultare al quanto  poco pratico, specialmente quando si vanno a collegare apparecchi in cima ad un palco, su una torre di illuminazione come negli stadi ecc. E1.31 risolve questo problema: viaggiando su una normalissima rete IP, può usufruire di tutte le metodologie di connessione usuali, tra cui switch, hub e perfino link wireless, come nel mio caso.

Dimostrazione

 

Da osservare alcuni problemi di sincronia nelle parti più frenetiche, probabilmente da attribuire alla distanza dall’access point.

 

Sergio Carmine

 

Nota: ogni operazione che richiede l'utilizzo della tensione di rete può risultare mortale e deve essere svolta da professionisti.