using eclipse and lua for the internet of things - eclipseday googleplex 2012

39
Using Eclipse & Lua for the Internet of Things EclipseDay Googleplex Dec. 12 th , 2012 Benjamin Cabé [email protected]

Upload: benjamin-cabe

Post on 19-May-2015

1.772 views

Category:

Technology


2 download

DESCRIPTION

The Internet of Things (IoT) or Machine to Machine (M2M), is a technological field that will radically change the global network by enabling the communication of virtually every single object with each other. Studies state that more than 50 billions objects may be connected to the Internet by 2020. In a near future, everything from a light bulb to a power plant, from a pacemaker to an hospital, from a car to a road network will be part of the Internet. While this revolution is already happening (your house or your car may be "connected" already!), there are still lots of barriers to its growth, especially since existing solutions are almost always proprietary, and cannot interoperate easily. There are several very active M2M initiatives at Eclipse aiming at lowering these barriers, all under the umbrella of the M2M Industry Working Group. Last year, projects Paho (communication protocols for M2M) and Koneki (tools for M2M developers, in particular a complete IDE for Lua development) were created, and in July 2012 project Mihini was proposed to establish Lua as a reference platform for building M2M and IoT solutions. The purpose of this talk is to give you a clear understanding of the afore mentioned Eclipse projects, as well as to show you that real M2M solutions can already be developed thanks to them. We will briefly introduce the Lua programming language, explain why it is a good fit for embedded M2M development, and then demonstrate the development of an actual working solution making use of the Mihini framework, a Paho MQTT client, and the Koneki tooling. The use case will also leverages Open Hardware plaforms such as Arduino and Raspberry Pi.

TRANSCRIPT

Page 1: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Using Eclipse & Lua for the Internet of Things

EclipseDay Googleplex Dec. 12th, 2012

Benjamin Cabé [email protected]

Page 2: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Who I am

•  Benjamin Cabé •  Open Source M2M

Evangelist at Sierra Wireless •  Long-time Eclipse lover

Page 3: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

� M2M? IoT?

Technology that supports wired or wireless communication between devices

Page 4: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
Page 5: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
Page 6: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
Page 7: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
Page 8: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Communication Infrastructure

Smart Pill Box

Heartbeat Sensor

Weight Scale

Blood Pressure

Medical Services Gateway

Near field

Blood Sugar

Internet of Things

Patient

Clinical Trial

Doctor

Page 9: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
Page 10: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Framework

Tools

3 projects

Protocols

Page 11: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

M2M embedded programming

•  low-level C

•  memory management

•  multithreaded programming

•  read sensor values

•  control actuators

•  consolidate data

•  communicate

Page 12: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Example: Sending an SMS int main(){ unsigned char char1[10]; unsigned char char_buf[8]="AT+CSQ\n"; // unsigned char sms_buf[20] = "AT+CMGS="xxxxxxxxx"; int wc_fd; /********* Init of serial port ************/ wc_fd = init_wc(wc_fd); sleep(3); //writing to serial port write(wc_fd,char_buf,sizeof(char_buf)); usleep(40000); //reading from serial port read(wc_fd,char1,sizeof(char1)); sleep(2); close(wc_fd); return 0;} // end of main// initialization of serial portstruct termios options;ttys5_fd = open("/dev/ttyS5", O_RDWR );if (ttys5_fd < 0){ printf("\nFail to open serial port 2\n"); return 0;}init_tty( ttys5_fd ,BAUD_RATE);return ttys5_fd;-----------------------------------//initializing baud rateint init_tty( int fd ,long wBaud){ long baud; switch (wBaud) {

sms.send( '+33612345678’, 'My SMS’ )

Page 13: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Simplify M2M programming

Page 14: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

What is Lua?

•  High-level programming language

•  Scripting

•  Simple

•  Extensible

•  Portable

Page 15: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Extensible by design

•  Small – Trivial syntax and reduced keyword set

•  Simple but not stupid – Simple enough for new users, powerful

enough for advanced users (first-class functions, garbage collection, closures, tail calls, coercion, coroutines, metatables)

•  Lua core is tiny – Compiled size is ~150kB – Lua uses libraries for its extensions

Page 16: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Lua vs. other high-level languages

•  Same core features as Python, Ruby, Javascript

•  Better concurrency management – Built-in – doesn’t rely on the OS

•  Cutting-edge execution technology & performances

Page 17: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Lua vs. other high-level languages

•  Restricted set of libraries – Stay simple, the developer brings his own

•  Outstanding Lua/C integration – Performance – Legacy

Page 18: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Lua for embedded and M2M?

•  High-level languages usually trade hardware resources for development & maintenance resources

Lua allows to reconcile high-level languages accomplishments with embedded constraints

Page 19: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

You need an IDE! •  Project structure

•  Syntax coloring

•  Content assist

•  Code navigation

•  Code formatting

•  Documentation

•  Code templates

•  Debugger

•  Remote development

June 2012: first release (0.8) Dec. 2012: 0.9 release June 2013: graduate w/ Kepler 30,000+ installations already!

Page 20: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

DEMO

Using Koneki LDT for remote Lua development

Page 21: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

101

•  http://www.eclipse.org/koneki/ldt •  Download standalone IDE •  Or install in existing Eclipse

–  from Juno repository –  from nightly/milestones repositories

•  Execution environments on Koneki wiki –  http://goo.gl/f6T80

•  Contact the team –  http://eclipse.org/forums/eclipse.koneki

Page 22: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

http://www.sxc.hu/photo/1036004

Page 23: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

•  Messaging protocol

•  Low-bandwidth / Low-power

•  Payload agnostic

•  Adjustable QoS

•  Large ecosystem

Page 24: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

broker broker

(optional) bridge

publishsubscribe

keepalivelast will & testamentusername/password

topic/subtopic

topic/#

Page 25: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

101 •  http://eclipse.org/paho/ •  Eclipse Paho delivers clients for MQTT in C and

Java –  http://eclipse.org/paho/download.php

•  Lua client available soon –  https://github.com/geekscape/mqtt_lua

•  MQTT view in Eclipse –  http://git.eclipse.org/c/paho/org.eclipse.paho.esf.git/

•  Free broker hosted at Eclipse: m2m.eclipse.org

•  Contact the team –  paho-dev mailing-list

Page 26: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Lua VM + MQTT client to go?

Page 27: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Application framework for M2M

•  Set of libraries providing building blocks to develop M2M applications: – Serial and I/O management, – Networking (FTP, HTTP, e-mail, …),

– GPS, – Cryptography, – Modbus,

– Local storage – etc. http://www.eclipse.org/mihini

Page 28: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Smart agent for M2M

•  M2M data queues

•  Network bearers

•  Device management

•  Application container

•  Application configuration

http://www.eclipse.org/mihini

Page 29: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Overall architecture

Page 30: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

101

•  http://www.eclipse.org/proposals/technology.mihini

•  http://eclipse.org/mihini

•  Code will be available (very) soon –  Initial contribution planned for Q1

Page 31: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Let me show you!

Page 32: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

A very common use case

•  Greenhouse business – Connect gardening equipment – Remote monitoring of sensors – Remote control

•  M2M Gateway not selected yet, neither is the rest of the equipment (PLCs)

Page 33: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

m2m.eclipse.org MQTT broker

Raspberry Pi Mobile phone

humidity temperature illuminance

light ON/OFF

Modbus RTU

Page 34: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Two Lua applications

Embedded

–  Uses Modbus library to communicate w/ Arduino

–  Collects sensor data/controls actuators

–  Publishes MQTT messages

–  Subscribe to commands

Mobile

Corona SDK

–  Subscribes to MQTT messages

–  Displays sensor data with a fancy UI

–  Publish command to switch on/o! the light

Page 35: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

M2M Developer Kit

•  Actual hardware early in the dev. process is key

Affordable* Simple* Industrial*

•  http://wiki.eclipse.org/Mihini/Developer_Kit •  Arduino code & schematics will be available soon

Page 36: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Rugged wireless gateways

control sensors & actuators

Mobile phones

Web applications

IT applications

Modbus

M2M server

Telco*

Billing* etc…*

Page 37: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Wrapping up

•  Developing an M2M app with Mihini is simple – Demo app written in a couple of hours

•  Mihini apps are portable

•  Mihini itself is easily portable – make install !

•  Koneki provides support for editing, debugging and deploying M2M apps

Page 38: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Join the party!

Page 39: Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012

Thank you!