The open source Internet of Things: platforms and applications for developers

6 min reading
25 August 2015
The open source Internet of Things: platforms and applications for developers
The open source Internet of Things: platforms and applications for developers

BBVA API Market

Development tools, hardware, smart home software, integration platforms, monitoring processes, operating systems… The Internet of Things (IoT) is one of the technological fields where strong growth is expected: 17 billion dollars by 2020, there times the current business volume. It is an expanding market, where more and more companies value the connectivity between devices and with the Net.

In fact, according to a survey conducted by Forrester Research, more than 80% of international companies believe that the Internet of Things is the most appealing field for their interests over the next decade. And what is probably more important: 25% of those companies are already implementing IoT solutions. According to Gartner, growth is unstoppable: the consultancy firm estimates that in 2020 there will be 25 billion connected devices, 30 time more than in 2009. It forecasts that in 2015 there will be 4.9 billion IoT devices, 30% more than in 2014.

This intends to be a list of some of the best known open source platforms on the market, divided into the different fields of activity:

Hardware and software development tools

1. Node-RED:

Node-RED is a simple, open source visualization tool that connects devices for the Internet of Things. Developed by the Emerging Technology department of IBM, the tool enables a piece of hardware, an API or on online service to be connected. Node-RED provides a user-friendly interface for developers to connect devices easily and quickly. Node-RED has been developed in node.js, a server-side JavaScript platform widely used in IoT projects, and can be run in the cloud.

It is also a tool that enables the deployment of new nodes for connecting more devices or services without any problems. It is a scalable solution. The entire project is available in GitHub under an Apache version 2.0 license.

 

Node-RED could be used, for instance, to create a chat application using the Bluemix environment, IBM’s cloud platform for building, managing and running all kinds of applications. If you are a developer and are interested in using Node-RED to create a chat app, read this tutorial. This is an example of the HTML page’s structure, which contains a <div> that receives the chat messages and a footer with the send fields. The entire data handling process is done through the JavaScript language.

2. Kinoma Create:

Kinoma Create is a construction kit that enables connections between devices without the need for having too much knowledge of programming in JavaScript. Kinoma Create already has everything needed to start developing small IoT projects. Its main components are:

– A touchscreen.

– An ARM SoC 800 MHz processor.

– Bluetooth and WiFi wireless connection.

– Several ports for connecting peripherals, including a USB 2.0 port.

– 128 MB RAM and 16 MB flash memory.

– A microSD card slot.

– Loudspeaker and microphone.

– Linux distribution.

Kinoma Create can be used for all kinds of projects: you can connect temperature, light or motion sensors for a specific purpose and receive notices on the cellphone when there is a change. And you can also change the light or temperature conditions from your own device.

On the Kinoma Create website there are many tutorials on the practical applications of this technology, with access to the development code uploaded in GitHub: with Kinoma Create you can create a synthesizer (Kinoma provides the open code for developing the user interface), a camera trap (it takes pictures if an animal or object stands in the way of the laser beam) or an automatic alarm-bell that goes off to alert us of a situation.

3. Eclipse IoT:

Eclipse IoT is an open source platform that enables Internet of Things applications to be developed in Java. It provides a set of open source technologies for connecting and managing several devices in an IoT environment.

It also supports some of the fundamental open standards for any Internet of Things solution: MQTT (a machine-to-machine connection protocol), CoAP (a protocol for simple connection of devices to the Internet) and Lightweight M2M (a server-client communication protocol that enables data transmission or the administration of sensors or cellphones).

Eclipse IoT offers gateway services for the Internet of Things to help developers handle both IoT applications and devices. Within this platform programmers have the Kura development framework, based on Java, and OSGi, that implements services as important as:

– Connectivity administration in the cloud.

– Support for protocols for connection between devices and servers.

– WiFi network configuration.

– Remote application and device configuration and administration.

Kura is not the only project or the only framework that enables the development of Eclipse IoT. There are also other interesting initiatives:

–       Mihini: An open code development framework based on Linux. It provides an API for developing machine-to-machine applications with a very short learning curve. Developments with Mihini use Lua as the programming language.

–       OM2M: Implements the SmartM2M standard. It provides an M2M service platform for developing independent services that enable the deployment of vertical applications and different types of devices. It has a REST API for machine authentication, application registration, asynchronous communications, access management…

–       Eclipse SCADA: A set of tools that provides libraries for developing both front-end and back-end projects, an application interface… It is a scalable and completely customizable solution.

Smart home software

4. OpenHUB

As homes are packed with more and more devices, there is a greater need to connect them to enjoy a true smart home experience. OpenHUB provides a platform for integrating devices that, for obvious reasons, speak and communicate in completely different ‘languages’. How does it achieve this? Through automation processes and user interface units.

– It can run on any device capable of running a Java Virtual Machine under a Linux, Mac or Windows operating system.

– Rules engine to meet automation needs.

– Several native user interfaces.

– Open code solution.

– Continuous improvement through its community.

– It has APIs for integrating with other systems or platforms.

Information exchange between applications and devices

5. IoTSyS

IoTSyS provides a device communication system based on IPv6, 6LoWPAN, Constrained Application Protocol and Efficient XML Interchange protocols and standards. Its aim is to provide interoperable interfaces that enable connection between devices, for example, sensor systems. The platform originated within the framework of the IoT6 European research project and is maintained by the Automation Systems Group of the Vienna University of Technology. Its utilities are diverse: connecting light and motion sensors on a blind, air conditioning systems, acoustic alarm…

Operating systems

6. Contiki

Contiki is an open code operating system for Internet of Things systems. It enables the connection of 8-bit computer systems or systems integrated on microcontrollers, including sensor network nodes. It is used for noise monitoring, electric power measurement, alarm systems, home automation, remote surveillance… It is based on protocols and standards such as IPv4, IPv6, 6lowpan, RPL and CoAP. Its features are:

– Execution protothreads.

– Web browser.

– Web server.

– TCP/IP connectivity.

– Multi-task kernel.

– Remote client using VNC (Virtual Network Computing).

7. RIOT

It is defined by its creators as “the user-friendly operating system for the Internet of Things”. RIOT is based on a microkernel architecture. It runs on 8, 16 and 32-bit hardware and, through a native port, in both Linux and Mac OS environments. It enables application development through standard programming in C and C++ languages. It is offered under an LGPL license.

8. TinyOS

TinyOS is an open source operating system for wireless sensor networks. It is written in the nesC programming language, a dialect of the C syntax optimized to avoid the problems derived from the memory limitations existing in sensor networks. TinyOS is a joint project by the University of California, Berkeley and Intel. There are tools and libraries in C and Java that increase its functionality and opportunities for use.

9. Brillo

Brillo, Google’s open code operating system for connecting wearables on the Internet of Things, is based on the Weave communication language, a common system that would enable all devices to speak and communicate in the same ‘language’. In this case it would not be necessary for the devices to run with Android.

Google’s aim with Brillo and Weave is to create a true Internet of Things, where each and every device can actually be connected: household appliances, sensor networks, mobile or electric devices

Integration platforms and tools

10. Nimbits

Nimbits is a PaaS data registration platform for connecting sensors in the cloud. This open code service enables connection to socials networks such as Facebook or Twitter, to databases, to the WolframAlpha computational knowledge engine… Some of its basic features are:

–       It uses the Spring development framework.

–       It has a REST API.

–       Data can be uploaded and downloaded in CSV format.

Follow us on @BBVAAPIMarket

It may interest you