S4T 2.3.6
IoTronic
IoTronic è utilizzato al fine di gestire dispositivi IoT, fornendo la possibilità di gestire tali dispositivi durante il loro ciclo vitale
Development status: stable
Software functionality
IoT Management
Fleet IoT Management
Comune di Torino
detailed information
S4T 2.3.6
IoTronic
Last release 2019-07-03 (2.3.6)
Type of maintenance internal
Stato publiccode.yml
List of dependencies None
Api documentation S4T API
Extended description
Stack4Things è un framework per l’Internet of Things sviluppato dal Mobile and Distributed Systems Lab (MDSLab), un laboratorio del dipartimento di Ingegneria dell’Università di Messina. Stack4Things è un progetto open-source che aiuta a gestire le flotte di dispositivi IoT senza preoccuparsi della loro posizione fisica, della loro configurazione di rete, della tecnologia sottostante. Si tratta di una soluzione orizzontale orientata al Cloud (che può essere integrata con OpenStack) che fornisce la virtualizzazione, la personalizzazione e l’orchestrazione degli oggetti dell’internet degli oggetti. Stack4Things fornisce un’esperienza “out-of-the-box” su diversi dei più popolari sistemi embedded e mobili.
Stack4Things coinvolge due componenti principali: il servizio IoTronic e la sonda Lightning-rod. IoTronic è il servizio Cloud-side che permette agli utenti di gestire le risorse dell’internet degli oggetti. Lightning-rod è la sonda IoT-side che funge da controparte IoTronic che collega il dispositivo al Cloud. Entrambi i componenti sono implementati in Node.js. Stack4things nella sua versione standalone è solo parzialmente integrato con OpenStack (può utilizzare il servizio Neutron come back-end per la gestione della rete). Questa versione è stata implementata principalmente per motivi di ricerca. Per la versione standalone è disponibile anche una bozza di dashboard Web.
Stack4Things è un IaaS dedicato all’IoT capace di esporre delle REST API che permettano la gestione di device IoT denominati all’interno del framework come “board”. La struttura di tale sistema è conforme a quella dei servizi sviluppati all’interno di OpenStack a cui per l’appunto si può interfacciare per il suo funzionamento. L’architettura del sistema si concentra sulla comunicazione tra gli user e i nodi IoT. Il sistema è caratterizzato da due entità S4T IoTronic (parte Cloud dell’infrastruttura) e S4T lightning-rod (lato IoT dell’infrastruttura). Questo sistema consente di realizzare varie azioni volte alla gestione di dispositivi IoT, come:
● la Gestione di Board – registrazione, cancellazione, invio di comandi -
● Plugin – iniettare pezzi di codice custom da fare eseguire sulla Board
● Servizi – Permettere di accedere a servizi installati su una Board
● Virtual Network – organizzare reti interne tra board
● Web Service – Espone servizi http sulle Board in modo sicuro con encription e2e
In particolare il sistema dal lato della board esegue direttamente sul MPU ed interagisce con gli strumenti del S.O. ed i servizi della board, ovvero avrà accesso ai sensori e agli attuatori forniti dal dispositivo attraverso i pins di I/O. Lightning-rod rappresenta il punto di contatto tra la scheda e il Cloud, permettendo all’user di pilotare la scheda anche se essa è posta dietro un firewall molto restrittivo o un sistema di Natting. La comunicazione viene assicurata attraverso WAMP. La controparte lato Cloud, che abbiamo detto essere il servizio IoTronic di Stack4Things è implementato secondo gli standard dei servizi OpenStack, al fine di fornire la possibilità di gestire uno o più dispositivi IoT remoti.
L’architettura di Stack4Things lato Cloud si basa su un servizio (compatibile anche con la piattaforma OpenStack) chiamato IoTronic. Gli obiettivi principali di IoTronic consistono nella gestione delle risorse di sensing e di attuazione, vale a dire che tale sistema consente l’implementazione del paradigma SAaaS. IoTronic è caratterizzato dall’architettura standard di un servizio OpenStack. Il modulo IoTronic conductor rappresenta il nucleo del servizio, gestendo il database IoTronic, Stack4Things che memorizza tutte le informazioni necessarie (ad esempio identificatori unici, associazione con utenti e tenant, proprietà della scheda e caratteristiche hardware / software), nonché procedura remota di invio chiama tra gli altri componenti. Le IoTronic API espongono un’interfaccia REST per gli user, permettendo loro di interagire con il servizio sia tramite un client personalizzato (client di riga di comando) che tramite un browser Web. Analogamente, l’agente IoTronic WAMP controlla il router WAMP(realizzato con Crossbar) e funge da ponte tra altri componenti e le schede; esso inoltre ha il compito di tradurre i messaggi AMQP in messaggi WAMP e viceversa. AMQP, è un protocollo a livello di applicazione standard aperto per middleware orientato ai messaggi, un bus con orientamento dei messaggi, accodamento, instradamento (compresi point-to-point e publish-subscribe), affidabilità e sicurezza. Seguendo la filosofia standard di OpenStack, tutta la comunicazione tra i componenti IoTronic viene eseguita in rete tramite una coda AMQP. Ciò consente a tutta l’architettura di essere il più scalabile possibile dato che tutti i componenti possono essere implementati su macchine diverse senza influire sulle funzionalità del servizio, oltre al fatto che più di un agente WS tunnel di IoTronic e più di un agente WAMP possono essere istanziati, facendo si che ognuno dei quali si occupi di un sottoinsieme dei dispositivi IoT. In questo modo, sono garantiti anche la ridondanza e l’alta disponibilità. La scelta dell’utilizzo di WAMP fornisce al sistema di messaggistica base AMQP di Openstack le funzioni di RPC (Remote Procedure Calls), oltre che essendo un sotto-protocollo delle WebSocket si adatta bene all’interazione con le WebSocket usata nelle comunicazioni con i dispositivi IoT.