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 leverage Open Hardware such as Arduino and a RaspberryPi, therefore you can expect nice demos!
10. Smart
Pill
Box
Near field
Patient
Heartbeat
Sensor
Medical
Services
Gateway Clinical Trial
Weight Internet
Scale of Things
Communication
Infrastructure Doctor
Blood
Pressure
Blood
Sugar
19. M2M embedded
programming
• low-level C • read sensor values
• memory • control actuators
management
• consolidate data
• multithreaded
programming • communicate
20. 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)
25. 101
• http://www.eclipse.org/koneki/ldt
• Download standalone IDE
• Or install in existing Eclipse
– from Juno repository
– from nightly/milestones repositories
• Execution environments:
– http://sierrawireless.github.com/lua-execution-
environments/
• Contact the team
– http://eclipse.org/forums/eclipse.koneki
28. (optional) bridge
broker broker
topic/#
topic/subtopic
keepalive
publish
last will & testament
subscribe
username/password
29. 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
31. Application framework for M2M
• Set of libraries providing building
blocks to develop user M2M
applications:
– Serial and I/O management,
– Networking (FTP, HTTP, E-mail clients),
– GPS,
– Cryptography,
– Modbus,
– Local storage
– etc. http://www.eclipse.org/mihini
33. 101
• http://www.eclipse.org/proposals/
technology.mihini
• http://eclipse.org/mihini
• Code will be available on Github soon
• Initial contribution planned for Q1
35. Step 1 – Early prototyping
• Greenhouse business
– Connect gardening equipments to each
other
– Remote monitoring of sensors
– Remote control
• M2M Gateway not selected yet,
neither is the rest of the equipment
(PLCs)
36. m2m.eclipse.org MQTT broker
Raspberry Pi Mobile phone
Modbus RTU
humidity
temperature
illuminance
light ON/OFF
37. Two Lua applications
Embedded Mobile
Corona SDK
– Uses Modbus library – Subscribes to MQTT
to talk to Arduino PLC messages
– Collects sensor data/ – Displays sensor data
controls actuators with a fancy UI
– Publishes MQTT – Publish command to
messages switch on/off the
– Subscribe to light
commands
38. 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 available after the conference
39. Step 2 – Use an industrial
gateway
• Need for rugged, industrial-grade
M2M gateway
• Take the Mihini codebase and
compile it against the gateway’s
toolchain
• Mihini porting layer
– straightforward for Linux-based devices
with AT modem
– porting layer for other solutions
40. m2m.eclipse.org MQTT broker
Rugged Mobile phone
wireless gateway
Modbus RTU
humidity
temperature
illuminance
light ON/OFF
41. Step 3 – Industrial deployment
• Use a real PLC
– Mihini dev. kit is replaced by a real PLC
– Only the configuration of the application
(modbus registries #) will have to be
updated
• Use a reliable, multi-tenant, M2M
server
42. Telco!
M2M server
Billing! etc…!
Rugged Mobile phone
wireless gateway
Modbus RTU
humidity
temperature
illuminance
light ON/OFF
43. Conclusion
• Developing an M2M app with Mihini
is simple
– Demo app written in a couple hours
• Mihini apps are portable
• Mihini itself is easily portable
– make install
• Koneki provides support for editing,
debugging and deploying M2M apps