Node.js per il controllo via web di sistemi embedded


Node.js è un framework javascript lato server, molto potente e poco oneroso in termini di risorse, basato sul motore javascript V8 utilizzato da Google Chrome.

Nell’ambito embedded si pone in una posizione favorevole per gli sviluppatori che provengono da Web e/o hanno intenzione di dotare il loro dispositivo di una interfaccia grafica utilizzando gli strumenti come HTML/CSS e sopratutto Javascript.

A differenza degli altri framework, Node è orientato agli eventi, si presta quindi molto bene per una gestione asincrona dei progetti.

Il talk racconta l’esperienza dello sviluppo di un sistema web per azionare comandi e fare monitoring su un dispositivo embedded in ambito audio processing. Questo dispositivo, le cui specifiche tecniche per la comunicazione con l’hardware sono state scritte in C++, è stato dotato di una interfaccia Web basata su Node.js tramite l’utilizzo di WebSocket per la comunicazione Client-Server.

Il sistema comprende anche l’utilizzo di un database Sqlite e l’accesso a componenti fisici di un dispositivo embedded (i.e. raspberry PI) tramite il binding con il C++.

I casi d’uso principali sono: gestire led e pulsanti tramite interfaccia, abilitare e disabilitare webcam etc, leggere i valori in modo continuo di alcune grandezze del sistema fisico..

La scelta di utilizzare i WebSocket è strategica in quanto, avendo bisogno di una comunicazione costante e performante con il server, il lato client (in un uso comune) andrebbe a generare delle chiamate http ogni tot millisecondi, e ricevere allo stesso tempo una determinata risposta. I WebSocket invece instaurano una connessione continua tra client e server, non vi è più lo spreco di dati per la trasmissione (tutti gli headers http inviati, ricevuti ed interpretati), inoltre, molto più fondamentale, il server può interagire direttamente verso il client comunicandogli (in modo asincrono) i cambiamenti ricevuti dai dispositivi hardware.

Il lato di comunicazione con l’hardware è stato colmato dal modulo node-gyp che permette di creare dei moduli nativi per Node attraverso altri linguaggi di programmazione, nel nostro caso il C++ (ed essendo il motore V8 scritto in C++ questa integrazione è molto semplice).

Node ci permette quindi di passare da un modello a “pagine”, con dei loop per la gestione dei processi, ad un modello ad eventi (e quindi asincrono) caratteristico del mondo Javascript.
In questo caso si risparmia non solo CPU, ma anche una notevole quantità nello sviluppo di una applicazione adatta a rispondere alle nostre esigenze.

Edizione 2014 nella track Track2.

Download


Livello
intermediate
Lingua
IT
Durata
60 minuti
Tag
Mobile Raspberry DSP