Server Reference Implementations

Soluzione che consente di emulare parzialmente la Piattaforma in locale, in modo da poter semplificare lo sviluppo di smart object e web application

Introduzione

L’articolo fornisce le istruzioni per l’installazione e la messa in funzionamento della soluzione di riferimento che emula un sottoinsieme di funzionalità della piattaforma.

La soluzione di riferimento è composta da diverse componenti esterne, la presente guida non ha come obiettivo quello di fornire una documentazione organica di tali software (per cui si rimanda alla relativa documentazione) ma si limita a riportare le informazioni necessarie a replicare il funzionamento in una determinata configurazione.

Componenti

Per poter mettere in funzione la soluzione sono necessarie le seguenti componenti:

N.1 PC/server con sistema operativo Ubuntu (la soluzione di riferimento è stata sviluppata e testata sulla versione 13.04)

N.1 Arduino Mega 2560

N.1 Arduino Ethernet / WiFi Shield

Preparazione del server

La soluzione di riferimento, utilizza un ambiente server che ha l’obiettivo di emulare alcune delle interfacce che Yucca mette a disposizione. In particolare le componenti che occorre installare sul server permettono di emulare le funzioni di acquisizione in MQTT e streaming verso i browser attraverso STOMP / Websockets.

Installazione e utilizzo del broker

Il broker MQTT scelto per la realizzazione della soluzione di riferimento è ActiveMQ. Il software è disponibile al link http://activemq.apache.org/. La versione di software usate è la 5.9.0. Per installare ActiveMQ basta scompattare l’archivio all’interno del sistema Ubuntu

wget http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.tar.gz tar xvf activemq-5.9.0-bin.tar.gz

Una volta estratto il pacchetto per configurare ActiveMQ per la reference implementation basta copiare i file credentials.properties e activemq.xml, fornito tramite GitHub su questo link: https://github.com/csipiemonte/smartlab.

Il topic utilizzato per la reference implementation è “input/sandbox”. Per configurare ActiveMQ i file sono disponibili nel percorso reference-implementation/webapplication/activemq_conf_file.

cp activemq.xml credentials.properties /home/csp/reference/apache-activemq-5.9.0/conf

Per la configurazione dell’ambiente, ActiveMQ utilizza il file “activemq.xml”. Tra le principali configurazioni, effettuabile tramite il file, sono da segnalare:

  • il tag “transportConnectors” per la configurazione dei connettori (mqtt, stomp, etc);
  • il tag “authorizationPlugin” per la configurazione dei permessi di scrittura e lettura sui topic e sulle code;
  • il tag “destinationInterceptors” per poter redirigere particolari topic di input in altri output di output, con l’obbiettivo di liberare l’utente da questo particolare compito.

Nello specifico nel file fornito sono stati aggiunte due modifiche. La prima riguarda la autenticazione degli utenti agli accessi di lettura o scrittura ai topic o alle code. Nel caso specifico al topic “input/sandbox” vengono associate all’utente sandbox i permessi di scrittura e lettura (in grassetto nel testo sottostante).

<authorizationPlugin> <map>

<authorizationMap>
<authorizationEntries>
<authorizationEntry queue=»>» read=»admins» write=»admins» admin=»admins» /> <authorizationEntry topic=»>» read=»admins» write=»admins» admin=»admins» /> <authorizationEntry topic=»ActiveMQ.Advisory.>» read=»guests» write=»guests» admin=»guests»/> <authorizationEntry topic=»input.sandbox» read=»admins,sandboxs» write=»admins,sandboxs» ad min=»admis,sandboxs» /> <authorizationEntry topic=»output.sandbox.>» read=»guests» write=»admins» admin=»admins,sandboxs,guests» />

</authorizationEntries>

<tempDestinationAuthorizationEntry>
<tempDestinationAuthorizationEntry read=»tempDestinationAdmins» write=»tempDestinationAdmins» admin=»tempDestinationAdmins»/>
</tempDestinationAuthorizationEntry>
</authorizationMap>

</map>

</authorizationPlugin>

Sempre nel file activemq.xml viene configurato la riderizione del topic “input/smartlab”. Il nome del topic di uscita viene assegnato tramite il valore physicalName.

<destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<compositeTopic name=»input.sandbox»>
<forwardTo>
<topic physicalName=»output.sandbox.89f84a22-1e2e-5882-bbf0-9c6efffb8ce7_temperature» />

</forwardTo>

</compositeTopic>

</virtualDestinations>

</virtualDestinationInterceptor>

</destinationInterceptors>

Il file credentials.properties viene utilizzato da ActiveMQ per la gestione delle credenziali degli utenti che hanno accesso al broker. In particolare nel file messo a disposizione su github è stata aggiunta una riga con la password per l’utente sandbox (la password configurata è “sandbox$1”)

activemq.username=system activemq.password=manager guest.password=password sandbox.password=sandbox$1

Per avviare ActiveMQ eseguire il comando (dalla home di ActiveMQ). È possibile eseguire il programma sia in modalità debug o in modalità background

cd apache-activemq-5.9.0/bin ./activemq console (modalità debug, Ctrl+c per fermare il servizio) ./activemq start (lancio in background, ./activemq stop per fermare il servizio)

Per testare il funzionamento di ActiveMQ aprire un browser al link http://localhost:8161/hawtio con user “admin” e password “admin”

Installazione dalla pagina html di demo

La parte finale consiste nel inserire la pagina html demo e le necessarie dipendenze Javascript all’interno di una web server. Se ad esempio è stato installato Apache dai repository ufficiali di Ubuntu, basta copiare i file necessari in una cartella sotto “/var/www”. I file sono disponibili sempre su GitHub nel percorso https://github.com/csipiemonte/smartlab/reference-implementation/webapplication/sdp-ref del progetto smartlab.

sudo apt-get install apache2 cd /var/www/ sudo mkdir sdp-ref/ sudo cp -r sdp-ref/* /var/www/sdp-ref/ Usando il browser è quindi possibile connettersi al server preparato per visualizzare la pagina dimostrativa.

http://<indirizzo-server>/sdp-ref/

Configurazione e installazione su Arduino

La soluzione di riferimento, utilizza l’ambiente di sviluppo (IDE) ufficiale di Arduino nella versione 1.5.6-r2 BETA. Si è scelta la versione beta dell’IDE perché supporta già le schede di ultima generazione come Arduino Yún e Arduino Due, anche se non utilizzate in questa implementazione.

L’IDE è scaricabile dal sito ufficiale di Arduino all’indirizzo:

http://arduino.cc/en/Main/Software

sia per Windows che Linux.La procedura di installazione è guidata ed è consigliabile installare tutte le componenti proposte.

Per lanciare l’ambiente di sviluppo di Arduino occorre lanciare l’eseguibile arduino.exe (sotto windows) o arduino (sotto Linux) nella cartella in cui si è installato il software.

Selezionare come scheda utilizzata Arduino Mega o Arduino Mega 2560 dal menu Strumenti la voce Scheda.

Collegare l’Arduino al PC e selezionare quindi la porta dal menu Strumenti la voce Porta

Sotto Windows la porta si chiamerà come COM<n> dove n è un numero intero. Nel caso riportato in figura la porta si chiama COM27. E possibile inoltre vedere con che nome viene visto l’Arduino collegato aprendo dal menu Sistema e sicurezza del Pannello di controllo di Windows l’applicazione Gestione dispositivi .

Sotto Linux la porta avrà il seguente nome: /dev/ttyACM<n> (ad esempio /dev/ttyACM0)

Installazione delle librerie

Per importare una libreria sotto Windows si deve selezionare la voce Aggiungi libreria.. del sottomenu Importa libreria… presente in Sketch .

Installare le seguenti librerie:

  • NetworkManager
  • SDPClient
  • SDPMessage
  • SDPSensor
  • StringParser
  • TimeInterval
  • WiFiManager

Scaricabili dal portale GitHub al seguente indirizzo:

https://github.com/csipiemonte/smartlab/tree/master/reference-realtime/arduino-secure

Installare inoltre le seguenti librerie:

  • PubSubClient
  • aJson
  • Cryptosuite
  • arduino-base64

Scaricali dal portale GitHub nella sezione di CSI Piemonte:

https://github.com/csipiemonte/

Installare quindi le seguenti librerie:

Nota

La libreria TIME potrebbe richiedere un aggiornamento tramite patch. Quest’ultima è disponibile al seguente link di GitHub:

https://github.com/csipiemonte/smartlab/tree/master/reference-realtime/arduino-secure/patch

All’interno di questo percorso risiede il file già modificato da sostituire a quello originale.

Installazione Sketch

Lo sketch rappresenta il codice sorgente del firmware da caricare sull’Arduino.

Per installare lo sketch che implementa il nodo sensore nella Smart Data Platform scaricarlo da GitHub all’indirizzo:

https://github.com/csipiemonte/smartlab/tree/master/reference-realtime/arduino-secure/sketch/MQTTClient_sec

Copiare questa cartella in quella scelta per contenere tutti gli sketch. E’ possibile modificare il percorso si questa cartella selezionando la voce Impostazioni… del menu File.

Configurazione dell’applicazione

Lo sketch supporta alcune funzionalità di sviluppo da tenere disabilitate per avere il comportamento corretto su Yucca versione DEV-0.7

Aprire l’applicazione MQTTClient dal sotto-menu Cartella degli sketch del menu File.

La configurazione dell’applicazione MQTTClient avviene attraverso la modifica di valori definiti attraverso delle macro nel codice.

Per disabilitare le funzionalità in fase di sviluppo commentare le righe riportate in grassetto che definiscono il valore SECURE_JSON e CONFIGURATION.

Successivamente ccorre impostare il modo di funzionamento della gestione di rete: se si utilizza un indirizzamento statico o dinamico e se il broker MQTT è definito come un indirizzo IP o attraverso un dominio. Questo avviene modificando i valori delle macro STATIC_NETWORK_CFG e SDP_SERVER_AS_IP.

Se STATIC_NETWORK_CFG non è commentata, l’indirizzamento sarà statico e bisognerà impostare l’indirizzo IP, la maschera di rete e l’indirizzo del gateway della rete.

Se SDP_SERVER_AS_IP non è commentata il broker di destinazione MQTT sarà da definire come indirizzo IP.