The era of the Internet of Things (IoT) has arrived, if somewhat fitfully. Lots of observers (including this blog) have sung the praises of IoT and how transformative it will be, with compelling benefits for both businesses and consumers.
Less is commonly known, however, about how incredibly difficult it is to get a working IoT system of any kind designed, built, tested, and deployed. Whether it’s a mass-produced consumer-grade system intended for people’s homes or highly customized systems for solving individual business problems, a number of fundamental decisions must be made, and with so many “moving parts” that must operate together as a cohesive system, an IoT project can quickly become an engineering nightmare.
The Complexity of IoT Systems
IoT system designers must contend with the following design decisions, among others.
- Communication: IoT devices must naturally communicate, whether among themselves, with a central controller or server, with mobile devices, or some other arrangement. What communication technology will be used—wired or wireless? Full-stack TCP/IP or some other protocol? What data rates are needed? Will communications be continuous or intermittent?
- Processing: Will the computational heavy lifting occur on-board the device, on a user’s mobile device, on a local server, or in the cloud? How much latency is acceptable?
- Power: How much power will the devices need, and how will that power be delivered? Will batteries be involved? Replaceable or rechargeable? For rechargeable, how will they be recharged? Can the devices be powered only by a solar cell, or by some other, more exotic method of harvesting ambient energy?
- Updating: Will the devices need firmware or software updates? How will these updates be delivered and installed?
- Interoperability: Will the system or any of its components need to integrate with other systems? How will this be accomplished?
- Build or buy? Can the system be built with commercial off-the-shelf components or is some custom design and fabrication needed? How can that be done economically?
All this and more has to be figured out before hardware can be designed or code written. So far in the history of IoT, typically, this whole process is started from scratch for each system.
Frameworks to the (Partial) Rescue
In an attempt to simplify at least some of this process and make IoT system development accessible to designers who might lack full end-to-end expertise, a number of providers are supplying what they call “IoT frameworks” or “IoT platforms.” For example:
- Android Things. Google’s contribution focuses on the software that runs on the IoT devices themselves. It provides a well-understood (by Android developers, anyway) development environment that works with certain general-purpose IoT hardware platforms.
- Ayla. Ayla Networks’ line of IoT support products are less about the devices themselves and more about how they communicate with the greater IoT system and how to design and manage applications that take advantage of IoT devices.
- BACnet. BACnet is a standard for communication and interoperability for devices, mainly for building management systems.
Although these are all “IoT frameworks,” they all solve different aspects of the total IoT system development problem. Even those frameworks or platforms that tout themselves as “end-to-end IoT solutions,” such as IBM’s BlueMix, Amazon’s AWS IoT, and Microsoft’s Azure IoT cannot be described as complete solutions. Each works well with specific hardware platforms and within the proprietary, “walled garden” of their cloud environment, but true, easy interoperability with other IoT systems can be realized (if at all) only with others using the same framework.
What the Future Holds
So it’s safe to say that the IoT framework landscape is still somewhat fragmented. It probably will remain so until the various technologies mature and standards are developed for device and system interoperability. Here are some things to look for in the near future:
- Open-source frameworks. The key to interoperability will be open-source. Look for more support in the IoT development community for open-source solutions.
- Hardware agnostics. Currently there is a focus by IoT frameworks on a few selected hardware platforms. Frameworks will become more useful if they are hardware-agnostic, so look for the development of standards in this area.
- More deployment options. Many frameworks and platforms have a cloud-centric view of the world, which makes sense for many use cases, but it’s feasible that some specific business cases will not want to (or cannot, because of limited internet connectivity in some places) rely on the existence of a robust, high-speed, continuous cloud connection. Look for solutions that are equally at home in the cloud, on locally hosted servers, or even on PCs, laptops, and mobile devices.
IoT as a general trend is still in its infancy. Its true potential might not be achieved for some time. Getting there will be a fun ride, though, and AndPlus is excited to be a part of it.