Architettura SW
Raspberry pi SW
Come avrete letto negli altri post sono un estimatore del pattern Publish-Subscribe e la rete PubNub lo implementa egregiamente.Piu' nello specifico il Raspberry Pi si comporta da Subscriber in quanto ascolta il canale di comunicazione e attende la recezione di messaggi indirizzatti al Raspberri.
Al contrario i vari client (nel mio caso semplicissima web app per mobile e calendario di configurazione per PC) si comportano da Publisher in quanto inviato messaggi di comando indirizzati al Raspberry.
Tutti i messaggi sono protetti da encryption AES e sono veicolati su un canale SSL (PubNub fornisce tutti questi servizi). In aggiunta ho implemntato un semplice meccanismo di autorizzazione in modo da essere sicuro che soltanto i client autorizzati (i miei) possano pilotare la mia caldaia.
Per chi ricorda questo episodio di Big Bang Theory https://www.youtube.com/watch?v=BW9FbjjkKo4 alla fine della puntata dei ragazzi asiatici accendono e spengono le luci di Howard. Ecco noi cerchiamo di evitare questa cosa... :)
Vantaggi
Come e' ovvio altri tipi di arcitetture o meccanismi di comunicazione sono possibili.
Io ho scelto di usare PubNub in quanto:
- PubNub fornisce un SDK praticamente per qualunque piattaforma esistente
- Il software su Raspberry e' semplificato al massimo
- Non devo far girare un webserver e quindi aprire una porta del mio firewall
- Posso implementare semplicemente un mecchanismo di analytics/monitoring
Codice
Ho messo a disposizione di tutti su GitHub il codice che deve girare sul Raspberry.
Chiunque lo puo' scaricare e migliorare.
Client SW
La prima e' una semplice applicazione web che mi permette di controllare lo stato della caldaia e di accenderla e spegnerla su mio comando.
Come potete vedere la veste grafica e' veramente poco attraente. Se qualcuno di voi ha capacita' grafiche si faccia avanti. Aiutera' certamente a migliorare questo progetto
La seconda e' un'applicazione legegrmente piu' complessa che va usata su PC e permette la programmazione settimanale della caldaia. Esattamente come il termostato a muro ma molto piu' flessibile.
Cio' che accende e spegne la caldaia sono solo gli eventi "caldaia" rappresentati in verde nel mio esempio.
Ovviamente le due applicazioni sono utilizzabili parallelamente. Quindi se ho programmato l'accensione della caldaia ad un certo orario e per esempio rietro a casa con 2 ore di ritardo posso decidere di spegnere la caldaia manualmente tramite la prima app.
Il codice di entrambe le applicazioni (e' una sola applicazione Rails) e' disponibile qui SMHAC
Spero questo vi sia utile e spero che qualcuno contribuisca al miglioramento della veste grafica.
Nessun commento:
Posta un commento