Drop the phone and talk to the physical world: Programming the internet of things with Erlang

We present ELIOT, an Erlang-based development framework expressly conceived for heterogeneous and massively decentralized sensing/actuation systems: a vision commonly regarded as the “Internet of Things”. We choose Erlang due to the functional high-level programming model and the native support for concurrency and distributed programming. Both are assets when developing applications as well as system-level functionality in our target domain. Our design enriches the Erlang framework with a custom library for programming sensing/actuation distributed systems along with a dedicated run-time support, while we wipe off unnecessary language and run-time features. We couple the resulting platform with adhoc tools for simulation and testing, supporting developers throughout the development cycle. We assess our solution by implementing three sensor network distributed protocols. A comparison with traditional sensor network programming platforms demonstrates the advantages in terms of terseness of code, readability, and maintainability.

[1]  Friedemann Mattern,et al.  ICT for Green – How Computers Can Help Us to Conserve Energy , 2010 .

[2]  Vijay Raghunathan,et al.  μSETL: A set based programming abstraction for wireless sensor networks , 2011, Proceedings of the 10th ACM/IEEE International Conference on Information Processing in Sensor Networks.

[3]  Carsten Bormann,et al.  The Constrained Application Protocol (CoAP) , 2014, RFC.

[4]  JeongGil Ko,et al.  Wireless Sensor Networks for Healthcare , 2010, Proceedings of the IEEE.

[5]  Deborah Estrin,et al.  EmStar: A Software Environment for Developing and Deploying Wireless Sensor Networks , 2004, USENIX ATC, General Track.

[6]  David E. Culler,et al.  TinyOS: An Operating System for Sensor Networks , 2005, Ambient Intelligence.

[7]  Gerd Kortuem,et al.  Supporting interaction with the Internet of Things across objects, time and space , 2010, 2010 Internet of Things (IOT).

[8]  M. Welsh,et al.  The Regiment Macroprogramming System , 2007, 2007 6th International Symposium on Information Processing in Sensor Networks.

[9]  Gian Pietro Picco Software engineering and wireless sensor networks: happy marriage or consensual divorce? , 2010, FoSER '10.

[10]  Luca Mottola,et al.  Programming wireless sensor networks , 2011, ACM Comput. Surv..

[11]  Adam Dunkels,et al.  A Low-Power CoAP for Contiki , 2011, 2011 IEEE Eighth International Conference on Mobile Ad-Hoc and Sensor Systems.

[12]  Lars-Åke Fredlund,et al.  Model-Checking Erlang - A Comparison between EtomCRL2 and McErlang , 2010, TAIC PART.

[13]  Ryan Newton,et al.  Sensor network programming with Flask , 2007, SenSys '07.

[14]  Pedro José Marrón,et al.  COOJA/MSPSim: interoperability testing for wireless sensor networks , 2009, SimuTools.

[15]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[16]  Philip Levis,et al.  The design and implementation of a declarative sensor network system , 2007, SenSys '07.

[17]  Matteo Migliavacca,et al.  A Context and Content-Based Routing Protocol for Mobile Sensor Networks , 2009, EWSN.

[18]  Yu-Chee Tseng,et al.  The Broadcast Storm Problem in a Mobile Ad Hoc Network , 1999, Wirel. Networks.

[19]  Philip Levis,et al.  Collection tree protocol , 2009, SenSys '09.

[20]  Adam Dunkels,et al.  Contiki - a lightweight and flexible operating system for tiny networked sensors , 2004, 29th Annual IEEE International Conference on Local Computer Networks.

[21]  David E. Culler,et al.  TOSSIM: accurate and scalable simulation of entire TinyOS applications , 2003, SenSys '03.

[22]  Kay Römer,et al.  Meta-Debugging Pervasive Computers , 2010, Pervasive 2010.