The Internet of Things has arrived, and developers are tasked with building working applications and connecting them to the cloud to deliver valuable business data. An IoT gateway and a device software framework provide an effective way to manage the development of IoT applications with a simplified path to production.
Using a Java-based IoT device application framework can result in more deterministic device software development and shorter time from concept to production. The main benefit for the maker/developer community is the ability to build proof of concepts on PCs or virtual machines and then test them using emulation for an early, virtual customer pilot. Once the application has been tested it can be deployed on a single device and then seamlessly expanded to a scalable production environment.
Eurotech recently demonstrated this concept at the Red Hat Summit where a lab was presented on how to provision IoT gateway services. Developers were welcome to use the Eclipse Kura open source Java/OSGi-based framework for IoT gateways to build their applications on laptops running them in a Java Virtual Machine emulator. A Bluetooth sensor attached to the laptop allowed them to simulate Kura running in a gateway and then configure that to simulate the deployment of an IoT service. To take the concept a step further they could use the Eurotech Everyware Cloud to see the data published and then write applications on top of APIs that leverage the device data resident in the cloud. Let’s take a closer look at how a developer could take these steps for a more elegant path from development into production.
Start with a Java and OSGi-based Device Application Framework
Developers are often tasked with building IoT applications quickly, and without spending a lot of money. Starting with a Java/OSGi-based device application framework will smooth this process. A device application framework creates an abstraction layer between the operating system and the business application on the gateway. This collection of cohesive software components lets developers create, modify, reconfigure, and maintain their application over time.
The ideal device application framework is based on Java. Java is a powerful tool in the IoT development environment – it allows for hardware abstraction and portability. Some developers think of Java as a heavy language, but its benefits outweigh the negatives in IoT development, especially considering the power of the developer community of hundreds of thousands of Java developers. Development costs are lower and the time to market is faster because resources are easy to find and most IT departments have Java developers.
Using Java’s IT-centric approach for IoT application development enables easy code development through software simulation before porting onto embedded devices, and provides investment protection and reduced time to market through the abstraction of hardware, networking, security, and OS functionality.
In addition, the Open Services Gateway initiative is a modular platform for Java that implements a complete component model. The OSGi provides a vendor-independent, standards-based approach to modularizing applications and infrastructure, and its proven services model allows components to communicate locally and across a distributed network. The result is a coherent IoT services architecture based on specifications that are highly scalable for long-term remote management and maintenance. Using an OSGi-based container on top of a JVM simplifies application development and optimizes portability across systems and hardware architectures.
The OSGi has a layered model that enables a coherent and scalable IoT services architecture.
Eclipse Kura is an open source device application framework that runs on top of the JVM and leverages OSGi to simplify the process of writing and managing reusable software building blocks. Kura has full Eclipse integration and from the Eclipse IDE, applications can be deployed on a target gateway and remotely provisioned to Kura-enabled devices in the field. The ability to run and debug from Eclipse aids the development process and the target platform can be defined while services are emulated.
Deploy the Application on a Target Gateway
After the application has been developed and tested in a virtual environment using Eclipse Kura, the developer can deploy it to a target such as a maker board for continued development like Raspberry Pi, or a single production grade IoT gateway for a more robust customer pilot. One-click deployment is possible with Eclipse Kura along with remote debugging.
Once the pilot gets further along the developer can provision the application to field devices from the cloud. Eclipse Kura can integrate with any MQTT-enabled cloud solution, such as Eurotech’s Everyware Cloud platform, to manage the device remotely. For instance, a simple water meter application could be developed on a PC. Then, when the application is ready, the developer could deploy it on an industrial gateway, set it on the water well, and manage it from the cloud immediately.
Deploy the Application in a Scalable Production Environment
After the application works on the target hardware, it can be deployed in a scalable environment such as a series of gateways in the field. They can be managed and configured throughout the lifecycle from a cloud platform to reduce or eliminate the need for field visits.
These concepts take an idea from start to production and shorten the development timeline significantly. Without this method a developer would purchase a gateway, and then write embedded code specific to the hardware. Developers can simplify the IoT application development process by emulating on a PC, deploying the application on a target, and then managing it from a cloud.
Jason Walton is in IoT Solutions for Eurotech Inc. (www.eurotech.com).
Edited by Ken Briodagh