Sesena 2012

Preview:

DESCRIPTION

Presentation of my PhD research at SESENA 2012

Citation preview

Drop the Phone and Talk to the Physical World:

Programming the Internet of Things with Erlang

Alessandro Sivieri Luca Mottola Gianpaolo Cugola

DEEPSE GroupDipartimento di Elettronica e Informazione

Politecnico di Milano

Third International Workshop on

Software Engineering for Sensor Network Applications

June 2nd, 2012

Scenario

Internet of Things

I Sensing and actuation systems

I Massively decentralized

I Heterogeneous devices

Wireless Sensor Networks

I Forerunner and key component of IoT

I WSN community was the �rst to tackle the IoT issues

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 2

Motivation

Current approaches

I Low-level frameworks (i.e., TinyOS, Contiki): full control of

resources vs. di�culties in testing and maintaining applications

I High-level frameworks (i.e., Regiment, Flask): ease of

programming vs. generality and performance

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 3

ErLang meets IoT

Why Erlang

I Actor-like concurrency

model

I Declarative programming

I . . .

ELIoT

I Dedicated libraries and customized syntax for many-to-many

IPC

I Reduced hardware requirements for the run-time system

I Dedicated simulator (full and mixed con�gurations)

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 4

Outline

Erlang

ELIoT

Preliminary results

Conclusions

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 5

Erlang

Main characteristics

I Concurrent execution without shared memory, side-e�ects free

computation

I Transparency of the network distribution

I Single-assignment semantics, improving testing and debugging

I Libraries for fault detection

I Code hot-swap

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 6

Erlang - A Brief Example

Creating processes

1 start(X) ->2 Pid = spawn(fun operations/0),3 Pid ! {self(), X},4 receive5 {Sender , Result} ->6 Result7 end.89 operations () ->

10 receive11 {Sender , Number} ->12 Sender ! {self(), Number * Number};13 {Sender , Number1 , Number2} ->14 Sender ! {self(), Number1 * Number2}15 end.

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 7

Erlang - A Brief Example

Sending messages

1 start(X) ->2 Pid = spawn(fun operations /0),3 Pid ! {self(), X},4 receive5 {Sender , Result} ->6 Result7 end.89 operations () ->

10 receive11 {Sender , Number} ->12 Sender ! {self(), Number * Number};13 {Sender , Number1 , Number2} ->14 Sender ! {self(), Number1 * Number2}15 end.

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 7

Erlang - A Brief Example

Receiving messages using pattern matching

1 start(X) ->2 Pid = spawn(fun operations /0),3 Pid ! {self(), X},4 receive5 {Sender , Result} ->6 Result7 end.89 operations () ->

10 receive11 {Sender, Number} ->12 Sender ! {self(), Number * Number};13 {Sender , Number1 , Number2} ->14 Sender ! {self(), Number1 * Number2}15 end.

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 7

Outline

Erlang

ELIoT

Preliminary results

Conclusions

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 8

ELIoTThe library

I Processes must be explicitly allowed to receive messages from

other devices

I The send operator (!) also supports broadcast operations

1 myprocess () ->2 erlang:register(somename , self()),3 erlang:export(somename),4 Data = eliot_gpio:get(? TEMPERATURE),5 {somename , all} ! {temperature , Data}.

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 9

ELIoTThe library

I Processes can be spawned on other nodes of the network,

nodes can specify properties that can be used to choose on

which of them these processes will be executed

mysensor_init() ->eliot:put(room, 301).

mysink_update () ->Cnd = fun() ->

eliot:get(room) == 301end ,eliot:spawn(fun newfunction /0, Cnd).

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 10

ELIoTThe library

I Processes can be spawned on other nodes of the network,

nodes can specify properties that can be used to choose on

which of them these processes will be executed

mysensor_init () ->eliot:put(room , 301).

mysink_update() ->Cnd = fun() ->

eliot:get(room) == 301end,eliot:spawn(fun newfunction/0, Cnd).

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 10

ELIoTThe interpreter

I Removed all functionalities integrated in the platform but not

required for IoT applications

I Support for sensing and actuation devices

I Support for broadcast operations directly integrated in the

interpreter

Microprocessor Ralink RT3050RAM 32 MBROM 8 MBFreq. 320 MHzNetworking Ethernet, WiFiInterfaces GPIO/SPI/I2C/Serial

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 11

ELIoTThe simulator

I Leverage Erlang native transparency of the network distribution

I Full simulation using virtual nodes and unmodi�ed code,

model the virtual communication using di�erent techniques

I Mixed simulation using virtual and real nodes at the same time

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 12

ELIoTThe simulator

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 13

Outline

Erlang

ELIoT

Preliminary results

Conclusions

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 14

Preliminary results

Example applications

I Trickle, a propagation algorithm

I Opportunistic �ooder, another propagation algorithm

I Collection Tree Protocol, a data collection algorithm

Some numbers

Algorithm TinyOS Contiki ELIoT % gained

Opportunistic �ooder 495 187 178 5-64%Trickle 219 194 148 24-32%CTP 2169 1470 450 70-80%

Lines of code

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 15

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 16

Outline

Erlang

ELIoT

Preliminary results

Conclusions

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 17

Conclusions

I Leverage Erlang native characteristics, introduce new

mechanisms required by IoT

I Single node programming, reprogramming of the entire

network

I Testing and simulation in full or mixed con�gurations

Future Works

I Integration of IoT idioms into the language

I Further customization of the interpreter

I Formal veri�cation (correctness) of applications

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 18

Thank You

Questions?

A. Sivieri, L. Mottola, G. Cugola ErLang for the Internet of Things 19

Recommended