200 likes | 337 Views
Tiny CLR . 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”
E N D
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 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 2020 2010 2000
.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 TCP/IP HTTP Digital OUTPUTs Server WEB Analog INPUTs .NET MF Device Browser (Plain HTML/JS) Analog OUTPUTs
DEMO IoT real-time con
Demo «LIVE» • Collegatevi all’Access Point WiFi il cui SSID èTP-LINK_LORENZO_GRANDE • Aprite l’indirizzohttp://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