Open IoT Stack for Java

The Internet of Things (IoT) is all about connecting devices, sensors and actuators to the Internet. By some estimates 20+ billion “things” such as automobiles, wearables, homes, industrial factories, etc. will be connected to the Internet. It is an incredible opportunity to modernize existing ‘legacy’ machines and systems and also create new innovative connected “things.”

A key challenge to making IoT a reality is the complexity of implementing an IoT solution. For example, to develop an IoT solution, the developers need to deal with different types of hardware platforms, implement and manage the IoT gateways that connect the devices to the Internet, manage connectivity and network issues, and integrate the IoT data with existing enterprise systems and databases and many other issues.

An important way to reduce the complexity of IoT solutions is to create reusable building blocks and frameworks that abstract and implement key IoT features. The lack of reusable building blocks means developers are required to re-implement common functionalities for each IoT solution. This is similar to the start of the World Wide Web (WWW), where developers were required to create their own HTTP web server. Now there are open source HTTP servers (ex. Apache) that everyone use instead of creating their own.

For IoT to be successful, we need a consistent set of open source frameworks that anyone can use.

Vision

Connect with Open Standards

Eclipse IoT is providing a set of re-usable open source technologies that make it possible to connect and manage the devices for your IoT solutions. Based on open standards and open source, the Open IoT Stack for Java developers provides the building blocks that simplify the creation of IoT solutions.

The Open IoT Stack for Java developers provides support for some of the key IoT open standards, including MQTT, CoAP and Lightweight M2M. These are the standards that help to connect and manage the devices at the heart of an IoT solution. The following Eclipse projects provide open source implementations of these standards:

  • MQTT: Eclipse Paho provides the MQTT client implementation in Java, C, C++. JavaScript, Python, etc. Eclipse Mosquitto is an MQTT broker implemented in C
  • CoAP: Eclipse Californium implements the CoAP standard in Java, including DTLS support
  • Lightweight M2M: Eclipse Wakaama implements the LWM2M client support in C/C++, and Leshan provide a Java-based LWM2M server

Connect and Manage with IoT Gateway Services

IoT Gateways are used to manage the connectivity between the IoT devices and provide a platform for applications to be deployed at the edge of the network. Eclipse IoT provides a set of IoT Gateway services to help developers manage the devices and applications deployed onto IoT gateways.

Eclipse Kura is a Java and OSGi-based framework that implements services to

  • Manage cloud connectivity
  • Support different protocols to connect to different servers or devices (ex. MQTT, Serial, Modbus, CANbus)
  • Configure the network, such as Wi-Fi and cellular bearers, LAN, firewalling and routing, etc
  • Allow for remote application and device management and configuration

IoT Solution Frameworks

In addition to the core Open IoT Stack, Eclipse IoT provides a set of solution-oriented frameworks for Home Automation, SCADA systems and telco service providers.

Home Automation

Eclipse SmartHome is a set of Java and OSGi services for building Smart Home and assisted living solutions. It provides an extensible framework (rules engine, declarative UI, etc.) that allows developers to integrate devices that support different protocols and standards for home automation.

SCADA Systems

Eclipse SCADA is a set of Java and OSGi services that implements many of the services required for a SCADA system, including data acquisition, monitoring, data and event archival, visualization and value processing. Eclipse SCADA supports many of the industrial automation standards, such as Modbus, Siemens PLC, SNMP and OPC.

Telco Service Providers

Eclipse OM2M is an implementation of the ETSI M2M standard. It provides a horizontal Service Capability Layer (SCL) that can be deployed in an M2M network, a gateway, or a device. Each SCL provides Application Enablement, Generic Communication, Reachability, Addressing and Repository, Interworking proxy, Entity Management, etc.