Benjamin Cabé gave a presentation on using Eclipse and Lua for Internet of Things (IoT) applications. He discussed three Eclipse projects - a framework for embedded programming using Lua, the MQTT messaging protocol, and Mihini, an application framework for machine-to-machine applications. He demonstrated developing a greenhouse monitoring application using these tools on a Raspberry Pi to collect sensor data via Modbus and publish to an MQTT broker, with a mobile app to view data and control actuators. The talk promoted these open source Eclipse projects as providing simple and portable solutions for developing IoT applications.
8. Smart
Pill
Box
Near field
Patient
Heartbeat
Sensor
Medical
Services
Gateway Clinical Trial
Weight Internet
Scale of Things
Doctor
Blood
Pressure
Blood
Sugar
11. M2M embedded
programming
• low-level C • read sensor values
• memory • control actuators
management
• consolidate data
• multithreaded
programming • communicate
12. Example: Sending an SMS
int main()
{
unsigned char char1[10];
unsigned char char_buf[8]="AT+CSQn";
// unsigned char sms_buf[20] = "AT+CMGS="xxxxxxxxx";
int wc_fd;
sms.send(
/********* Init of serial port ************/
wc_fd = init_wc(wc_fd);
'+33612345678’,
sleep(3);
//writing to serial port 'My SMS’
)
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 port
struct termios options;
ttys5_fd = open("/dev/ttyS5", O_RDWR );
if (ttys5_fd < 0)
14. What is Lua?
• High-level programming language
• Scripting
• Simple
• Extensible
• Portable
15. 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
16. 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
17. Lua vs. other high-level
languages
• Restricted set of libraries
– Stay simple, the developer brings his own
• Outstanding Lua/C integration
– Performance
– Legacy
18. 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
19. You need an IDE!
• Project structure
• Syntax coloring
• Content assist
• Code navigation
• Code formatting June 2012: first release (0.8)
Dec. 2012: 0.9 release
• Documentation
June 2013: graduate w/ Kepler
• Code templates 30,000+ installations already!
• Debugger
• Remote development
21. 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
24. (optional) bridge
broker broker
topic/#
topic/subtopic
keepalive
publish
last will & testament
subscribe
username/password
25. 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
27. 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
30. 101
• http://www.eclipse.org/proposals/
technology.mihini
• http://eclipse.org/mihini
• Code will be available (very) soon
– Initial contribution planned for Q1
32. 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)
33. m2m.eclipse.org MQTT broker
Raspberry Pi Mobile phone
Modbus RTU
humidity
temperature
illuminance
light ON/OFF
34. Two Lua applications
Embedded Mobile
Corona SDK
– Uses Modbus library to – Subscribes to MQTT
communicate w/ Arduino messages
– Collects sensor data/ – Displays sensor data
controls actuators with a fancy UI
– Publishes MQTT messages – Publish command to
– Subscribe to commands switch on/off the light
35. 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
36. Telco*
M2M server
Billing* etc…*
Rugged wireless
Mobile phones
gateways
Modbus Web applications
IT applications
control sensors &
actuators
…
37. 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