Free Software tools for the Internet of things
François Revol
[email protected]
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
1
Goals: Ambiant Intelligence ● ●
Harvest physical data Report to back-office servers
●
Take decisions
●
Make physical actions
●
Social interactions
●
Augmented reality
●
Intelligent Cars
●
Building automation ●
●
Energy efficiency ●
●
2011-07-11
Smart Building Smart Grid
…
FLOSS tools for Internet of Things - RMLL 2011
2
Sensor Nodes & Smart Objects ●
Small embedded system - "motes" ●
μController (8/16/32bits) –
●
TI MSP430, AVR, PIC… ARM
Network access – – –
Ethernet IEEE 802.15.4 Power Line Communication
●
Sensors and actuators
●
Power source (battery / mains / energy harvesting)
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
3
Proprietary protocols ●
CAN, LONWorks…
●
Very specialized ●
Automotive, building automation, heating control…
●
Require proprietary (and expensive) software
●
Interoperability requires protocol gateways ●
●
Increases complexity, no 100% semantic mapping
Never really took off
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
4
Internet of Things ●
Interconnection of Smart Objects through open protocols ●
With or without publically accessible address
●
IPv6 \o/
●
Foster interoperability
●
Limits vendor lock-in –
●
Second source easier to find for replacement
No complex protocol gateways
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
5
Ethical Issues ●
Smartphones ●
●
Electrical counters (Linky…) ●
●
Who owns the consomption data that *I* produced?
What about security? ●
●
Location (http://pleaserobme.com)
Crypto requires lots of cpu cycles (hardware accel)
What about Network Neutrality? ●
Will my ISP let me control *my* house as *I* want?
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
6
It's coming anyway ●
So better make it Open Source / Free Software
●
Most University projects use or create ●
Published or Open Hardware
●
Free Software, or software that could be opened
●
Several FOSS projects about Smart Grid
●
OSAmI ●
ITEA2 European Project
●
OpenSource for Ambiant Intelligence
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
7
Hardware: Arduino ●
cf. earlier today http://2011.rmll.info/Arduino :-p
●
Hardware CC-by-SA ; Software LGPL
●
http://www.arduino.cc/
●
ATmega328P 16MHz ●
32KB Flash, 2KB RAM
●
Other models
●
Many "shields" (exp. boards) ●
Ethernet, LoL…
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
8
Hardware: Wismote ●
Hardware: CC-by-SA-NC ●
(hoping to remove -NC)
●
Software: MIT (Contiki), EPL (Eclipse)
●
http://wismote.org/
●
MSP430F5x ●
16kB RAM, 256kB Flash
●
TI CC2520 radio
●
Made in France :-) 2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
9
Protocols ●
Billions of devices... IPv6!
●
6LoWPAN (IPv6 over IEEE 802.15.4) ●
RoLL/RPL routing protocol
●
UDP, TCP
●
Application protocols ●
HTTP, REST, SOAP...
●
CoAP (Constrained Application Protocol) – –
Binary HTTP with resource semantics IETF draft
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
10
6LoWPAN & RPL ●
Low Power and Lossy Networks (LLNs) ●
●
Very low packet delivery ratio !!
6LoWPAN ●
IPv6 over IEEE 802.15.4 –
●
●
Header compression, address prefixes
RFC 4944
RPL ●
Routing Protocol for LLNs
●
IETF draft (March 2011)
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
11
Virtual Machines ●
Java (actually, a small subset of it) or other lang
●
LeJOS (MPL) ●
●
Threads, arrays, synchronization, java.lang.String...
Darjeeling ((L)GPL) ●
Threads, dynamic loading, java.lang.String...
●
TakaTuka (GPLv3)
●
Many others
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
12
Operating Systems ●
●
TinyOS ●
Component based
●
Written in NesC
●
IP stack
●
RTEMS
●
...
Smews ● ●
●
http://smews.gforge.inria.fr Specialized in web servers CeCILL Licence
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
13
Operating System: Contiki ●
http://www.sics.se/contiki/
●
BSD Licence
●
Drives the Internet of Things revolution
●
Event driven - protothreads
●
Many supported plaforms: C64, MSP430, Arduino...
●
Full IPv6 stack (uIPv6)
●
HTTP daemon, REST, CoAP, JSON
●
EMMA (GPLv3) builds on Contiki with Node.js 2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
14
Compilers ●
●
Chip vendors mostly publish proprietary compilers But alternatives exist ●
GCC (GNU Compiler Collection) – – –
●
arm-unknown-gcc mspgcc avrgcc
SDCC (Small Device C Compiler)
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
15
Simulations ●
MSPSim (MSP430)
●
Cooja (uses MSPSim) ●
simulates a whole network
●
WSim (MSP430)
●
WSNet (uses WSim) ●
●
Simulates a whole network
QEMU (ARM)
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
16
Use case: Flukso ●
http://www.flukso.net/
●
Web-based community metering
●
Monitor water & electricity consumption
●
Flukso box
●
●
Atheros AR2317
●
ATmega 128 sensor board
Presented at FOSDEM 2010 & 2011 2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
17
References ●
Interconnecting Smart Objects with IP: The Next Internet (Vasseur/Dunkels)
●
IETF RFCs/drafts
●
Websites
2011-07-11
FLOSS tools for Internet of Things - RMLL 2011
18