Idee per realizzare una WebApp di controllo remoto

In questo esperimento ho messo in fila una serie di tecnologie per realizzare la base per un telecomando su smartphone in logica IOT

Il cubo che appare qui sotto è stato disegnato con WebGL che è la tecnologia per disegnare oggetti 3D all'interno di pagine Web. Per interagire con questi oggetti si usa ovviamente il linguaggio Javascript ma il rendering è comunque molto veloce perchè WebGL permette di accedere direttamente alle capacità di accellerazione grafica della vostra scheda video tramite OpenGL.

Useremo questo cubo come oggetto da controllare in remoto tramite il nostro telefono cellulare.

Se provate a leggere, con il vostro smartphone, il QR-code riprodotto qui sotto:

oppure ad aprire questo link: vedrete che sarà possibile muovere il cubo sul video del PC dal telefono semplicemente muovendo il telefono. Ovviamente è richiesto un telefono dotato di accellerometro a bordo ormai presente in tutti gli smartphone. Sul telefono appariranno i dati di lettura rilevati dall'accellerometro di bordo.

Da notare che il telefono riesce a inviare dati al cubo senza dover intervenire in alcun modo nella configurazione della rete dove è connesso il PC. Il tutto funziona perfettamente anche in caso di presenza di un firewall o di un proxy server.

E' anche possibile aprire una seconda finestra con questa pagina, leggere il nuovo QR-code con un altro telefono e controllare in maniera indipendente i due cubi sul video.

Allo stesso modo se qualcun altro fa lo stesso esperimento in un'altra parte del mondo, telefoni e cubi agiranno in maniera del tutto indipendente tra loro.

Se invece farete il refresh della pagina la relazione con il telefono si perderà e andrà riletto il QR-Code. La relazione non si perde se invece fate il refresh della WepApp solo sul telefono in quanto l'identificativo che consente di mantenerla è ancora presente nella url della pagina. Questo è utile per riprendere il controllo dopo che il telefono è andato in stand-by.

Come funziona ?

Nella seguente figura è riportato lo schema di funzionamento del sistema.

Alla base di tutto c'e' un Broker MQTT fornito gratuitamente da Eclipse.org che risponde all'indirizzo iot.eclipse.it. Si tratta di un Broker pubblico senza alcun tipo di privacy per cui si sconsiglia di usarlo per far viaggiare i pacchetti di un sistema di controllo vero.

In questo caso meglio installarsi un Broker MQTT Open Source in un sistema privato. Il broker per eccellezza è Mosquitto ed è installabile gratuitamente su qualsiasi sistema Linux.

Essendo il broker un oggetto che deve essere sempre operativo, pena il blocco totale di tutto il sistema di controllo, l'ideale sarebbe farlo girare su una scheda Linux Embedded. Anche una piccola scheda Arietta G25 andrebbe benissimo.

Per poter far comunicare i due programmi Javascript che stanno girando nel browser del PC e nel browser dello Smartphone ho usato le librerie Eclipse Paho sempre Open Source e disponibili per qualsiasi linguaggio di programmazione.

Il topic MQTT usato

Ogni coppia Smartphone/PC usa un topic MQTT diverso per comunicare. In questo modo non c'è possibilità di interferire con altre coppie Smartphone/PC.

Un esempio di topic è:

tanzolab/[client id]/acc;

Il client id viene generato casualmente dalla pagina web su PC ed inserito nella URL da leggere con il cellulare quello generato da questa pagina ad esempio è:

http://www.tanzolab.it/webapp/acc2mqtt/?client_id=

Nel topic il programma Javascript che gira sullo smartphone invia un messaggio denominato payload. Il formato del messaggio che abbiamo scelto per comunicare con il cubo sul PC è per forza di cose JSON. Nella riga seguente vengono visualizzati i messaggi JSON che sta inviando lo smartphone

In attesa di payloads....

Sorgenti

Link

The TanzoLab Project

Il TanzoLab è una iniziativa senza fini di lucro, nata da un'idea di Sergio Tanzilli socio fondatore di Acme Systems srl nel Novembre 2015, per trasferire ad appassionati di elettronica e informatica, professionisti e aziende nel settore, le conoscenze necessarie per poter creare prodotti embedded adatti per la produzione industriale.

Le attività del TanzoLab si svolgono ogni lunedi sera, salvo casi speciali, dalle ore 18:30 presso i locali della Acme Systems srl e consistono in:

  • Talk monotematici a cura di professionisti in vari settori tecnologici
  • Workshop pratici su elettronica embedded, produzione e informatica
  • Progettazione e realizzazione di nuovi prodotti embedded per l'IT

Le attività vengono coordinate tramite questo sito, in cui vengono pubblicati tutti i lavori svolti o in via di sviluppo, e tramite un gruppo Telegram con cui per interagire direttamente via chat con gli altri membri.