2. Cosa si intende per IoT?
• IoT: rete globale di sensori/attuatori connessi tramite protocolli
comunemente utilizzati in Internet
• Web-of-Things: insieme di servizi RESTful che misurano e
manipolano proprietà «fisiche»
• M2M:insieme di tecnologie che consentono, attraverso canali wired o
wireless, la comunicazione tra dispositivi
3. Piattaforme per IoT Embedded
• Arduino: non ha uno stack TCP/IP, piattaforma per makers
• Linux Embedded: frammentato, hardware «pompato»
• Mbed: non molto diffuso, la piattaforma è in realtà solo un insieme di librerie
e un IDE on-line
• Sviluppo nativo su ARM, PIC, AVR, MSP430, PSoC: complesso, non
portabile, poco orientato all’IoT
• Java ME: poche piattaforme supportate, poco diffuso, porting non-open
• .NET Micro Framework: ha uno stack TCP/IP nativo,
professionale/industriale, MCU virtualizzato, supporta dual-core,
sempre più diffuso, completamente open!
4. Hello, leds and buttons!
L’immancabile “Salve, mondo!” sviluppato con
.NET Micro Framework
5. Componenti di un’applicazione IoT
• Supporto a TCP/Socket
• Supporto a HTTP client
• Supporto a HTTP server (Connettività? NAT-ting? Security?)
• Supporto a Serializzazione
• Supporto a PTTH (eh?)
• Librerie client specializzate per piattaforme IoT pubbliche:
• Xively (già COSM, già Pachube)
• ThingSpeak
6. 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!
7. PTTH con Yaler.net
Un server HTTP embedded con una chiavetta 3G,
una batteria 9V e 10 righe di C#
8. Piattaforme pubbliche per IoT
• ThingSpeak
• Semplice
• Open
• Dashboard web configurabile
• Xively/COSM/Pachube
• API molto ricca
• Modello di trigger molto potente
• Permette feed privati
• Scalabile su piani business
10. MQTT: finalmente uno standard per M2M
• MQTT : MQ Telemetry Transport per M2M communication
• Inventato nel 1999 da Andy Stanford-Clark (di IBM) e Arlen Nipper
• E’ un protocollo che definisce un modello ultra-lightweight di
messaging publisher/subscriber
• Molto adatto per comunicazioni M2M tra dispositivi anche di basso
profilo e con poca banda
• Da Marzo 2013 è in corso il processo di standardizzazione da parte
dell’OASIS
11. MQTT: broker, librerie e bridge
• Molti broker open (Mosquitto e Apache Apollo tra tutti)
• Librerie client per tutte le piattaforme e moltissimi linguaggi
• Molti tool di pubblicazione/sottoscrizione (mqtt.io tra tutti)
• Molti bridge verso altre piattaforme (mqtt/Xively, mqtt/http, mqtt/REST,
ecc.)
• Il nostro server MQTT (mosquitto su Linux CentOS) è aperto a tutti, e
lo trovate su MQTT.IT