Internet-of-Things : un mondo di device interconnessi TinyCLR.it – Innovactive – Internet-of-Things : un mondo di device interconnessi Lorenzo Maiorfi & Gianluca Ruta
IoT : cos’è… Il termine nasce nel 1999 per indicare una tecnologia di identificazione univoca di oggetti all’interno di una “rete” Con il tempo, il termine assume significati sempre più ampi, che mano a mano si “confondono” con le applicazioni della tecnologia: Wireless Sensor Networks Machine to Machine (M2M) Physical computing Connected Environments Physical Internet …e molti altri!
…e cosa non è! Oggi il “focus” di IoT è più definito, dal momento che si è comunemente convenuto che IoT NON è (o meglio, non solo, o non necessariamente): ubiquitous/pervasive computing Internet Protocol communication technologies embedded devices the applications The Internet of Things is a global network of computers, sensors and actuators connected through Internet protocols. The Web of Things consists of RESTful Web services that measure or manipulate physical properties.
Roadmap di IoT Livello tecnologico Physical-World-Web Teleoperation and telepresence: ability to monitor and control distant objects Livello tecnologico Ubiquitous Positioning Locating people and everyday objects Vertical-Market Applications Surveillance, security, healthcare, transport, food safety, document management Supply-chain Helpers RFID tags for facilitating routing, inventorying and loss prevention 2000 2010 2020
.NET Micro Framework & IoT Gli stack di rete “embedded” implementano ogni layer del modello ISO/OSI, dall’applicativo al fisico (non c’è un sistema operativo, non c’è un device driver, e mano a mano che si scende nello stack le cose si fanno meno portabili !) Lo stack open-source più diffuso è lwIP, .NETMF lo ha integrato nel proprio PAL, ma ogni porting richiede lo sviluppo di componenti software specifici (ad es. driver per controller MAC e PHY, oppure per controller autonomi, come ENC28 o WizNet5100) .NETMF definisce uno strato di astrazione dello stack di rete basato su due “modelli”: Network Interface Socket Gli strati più alti (HTTP, FTP, ecc.) sono “managed”
DEMO Socket programming con .NETMF
HTTP server, client o entrambi! A seconda degli scenari, una soluzione “Web-of- things” tipica richiede che il dispositivo sia un client REST, un server REST, o entrambi allo stesso tempo Le funzionalità HTTP client sono implementate dalla classe HttpWebRequest Le funzionalità HTTP server sono implementate dalla classe HttpListener Esistono molti contributi della community per l’interazione con servizi che espongono API REST (twitter, facebook, google, flickr, ecc.) Nei casi in cui sia applicabile, ci sono WCF e DPWS
DEMO HTTP programming con .NETMF
PTTH? Come sarebbe a dire? In molti casi l’esposizione di un endpoint HTTP server non è possibile o conveniente (IP statico, NAT-ting, DNS dinamico, firewall, ecc.)… …ma le sole funzionalità HTTP client non bastano (ad es. per servizi on-demand)…quindi? Si può utilizzare un servizio che gestisca il PTTH, come Yaler (http://yaler.net) La libreria open Gsiot.Server di Cuno Pfister (autore di “Getting Started with IoT”) permette di implementare un server HTTP o PTTH configurabile a run-time!
DEMO HTTP/PTTH programming con Gsiot.Server
Piattaforme publiche per IoT ThingSpeak Pro: Molto veloce da configurare API semplice e funzionale Update delle dashboard veloce (5-10 secondi) Libreria client per .NETMF disponibile come parte della strepitosa “μP” di Paolo Patierno (http://uplibrary.codeplex.com) Contro Modello dei trigger poco flessibile e complicato Numero dei field di un datastream limitato a 10 Sito web di amministrazione migliorabile Poche applicazioni disponibili per la piattaforma
DEMO ThingSpeak programming con «μP» di Paolo Patierno
Piattaforme publiche per IoT COSM (Pachube) Pro: Piattaforma attiva da diversi anni senza discontinuità di servizio API flessibile e potente (CSV, XML, JSON) Modello di trigger molto ricco Engine per il rendering dei grafici utilizzabile in applicazioni esterne Grande flessibilità nella definizione dei datastream Supporto a Websocket e TCP Socket (in realtà usano una API TCP/JSON per definire richieste HTTP/JSON!) Contro Interfaccia web poco adatta al monitoraggio continuo Il supporto ai trigger è possibile solo in formato JSON (no XML, no CSV) Piani commerciali non più chiari come quando si chiamava Pachube
DEMO Cosm programming e trigger Cosm/ThingSpeak con Yaler
Ultima frontiera: IoT real-time COSM e ThingSpeak sono piattaforme che favoriscono un modello di comunicazione simplex rispetto al full- duplex In COSM e ThingSpeak le variazioni dello stato del device sono campionate ogni 5-10 secondi, quindi c’è poca «banda» e poca «responsività» Serve una piattaforma per il monitoraggio ed il controllo remoto che possa agire entro 0.1 secondi, full-duplex e che permetta un modello di interazione arbitrario In Innovactive stiamo mettendo a punto un framework per lo sviluppo di applicazioni Iot real-time: TiberJS
IoT real-time con Tiber.js Digital INPUTs HTTP TCP/IP Digital OUTPUTs Server WEB Analog INPUTs .NET MF Device Browser (Plain HTML/JS) Analog OUTPUTs
DEMO IoT real-time con
Collegatevi all’Access Point WiFi il cui SSID è TP-LINK_LORENZO_GRANDE Demo «LIVE» Collegatevi all’Access Point WiFi il cui SSID è TP-LINK_LORENZO_GRANDE Aprite l’indirizzo http://192.168.0.51/demoiot
IoT: quali evoluzioni a breve? Integrazione con il cloud-computing (ad es. StreamInsight) Sviluppo delle tecnologie per la creazione di reti periferiche wireless mesh (Bluetooth low-energy, ZigBee, ANT) Sviluppo e diffusione di dispositivi IoT indossabili (bracciali, orologi, collane, cinture, giacche, scarpe sono stati in gran parte già sviluppati come prototipi!) Maggiore diffusione nel campo della domotica Integrazione più spinta nel settore professionale della automazione industriale
Ringraziamo gli sponsor!
Agenda Punto 1 Punto 2 Punto 3
Pagina con Contenuto
DEMO TITOLO DELLA DEMO
Pagina con solo titolo