If an OEM decides to collect and store data from distributed devices in the cloud, there are important considerations during the product development cycle that can make connecting to the cloud simpler. While the hardware and operating system are important building blocks of the device, an ideal device-to-cloud solution also includes an efficient interconnect protocol and application framework.
A variety of protocols connect embedded devices, such as HTTP or SOAP. Some of the drawbacks associated with these options include thousands of bytes sent as a header for the message, rigid formats and point-to-point communication. HTTP and SOAP provide access to a single embedded device, and some network topologies cannot handle the bandwidth required as it builds up with hundreds of embedded devices. Making efficient use of bandwidth is also a cost-saving measure since some networks charge by the byte of data.
IBM and Eurotech developed the Message Queuing Telemetry Transport (MQTT) protocol 10 years ago. As described at www.mqtt.org, the MQTT protocol enables a publish-and-subscribe messaging model for connections with remote locations where a small code footprint is required or network bandwidth is at a premium.
With a single publisher and many subscribers, engineers send information from a single point to many devices interested in receiving the information. Embedded devices can utilize the MQTT protocol to collect data from multiple devices while using limited bandwidth and providing the information to many subscribers.
In addition to a lightweight and flexible interconnect protocol, device-to-cloud solutions need a device application framework built to ensure connecting to the cloud and adding the business logic is a simple, reusable and effective part of the final product development.
In most cases this application framework includes functionality such as:
- Device management (OS updates, application updates, configuration management)
- Application abstraction (running multiple applications or plug-ins in the same environment)
- Application log management (Dynamic log level, Log file rotates)
- Application messaging infrastructureApplication event infrastructure
- Application module management (Start/Stop/Unload/Load)
- Runtime statistics and meta data
- Configuration management
- Version management
Fortunately, the open source community has provided an application framework that performs these functions and more. The specification to this framework has been provided by the OSGi Alliance.
The OSGi framework can run on any Java platform, and OSGi technology adopters benefit from improved time-to-market and reduced development costs because the technology allows the integration of pre-built and pre-tested component subsystems.