How to Select an IoT Platform
In today’s world of IoT buzzwords, hardware, software and Platform As A Service, it’s logical to assume that all of the pieces needed to create a connected device and use its data already exist in the wild. There are many individual components of IoT in existence, ranging from wireless parts, quick-turn hardware partners to cloud-hosted databases and data analytics systems.
Despite the availability of these tools and (incomplete) platforms, building, integrating, securing, deploying, and managing an IoT solution at scale involves solving a number of daunting infrastructure problems – many of which fall well-outside the specifics, and expected timeframe, of building a user-facing application. These include solving for security, battery life, wireless network connectivity and range, device software upgrades, and integration with internal and external systems to deal with the data that flows in and out of these devices.
An IoT platform should make it easy for you to focus on the key parts of what you are trying to achieve with an IoT deployment, namely, interfacing with or sensing physical assets and exposing the gathered data in systems that allow for fast and accurate business decisions. Ideally the platform would make it easy to prototype, productize, deploy, and manage a solution at scale (including “basic” things like user management and teams) quickly and efficiently.
Let’s work through each of these steps to a solution and identify desirable characteristics of an IoT platform. Full disclosure: As you’ve probably already surmised, these serve as the blueprint for the way we went about building Helium. In simply trying to connect long-range, low-power devices wirelessly to the Internet, we discovered that no single company bothered solving all of the problems in IoT that prevent developers from reaching their full potential to deliver value to customers.
IoT is all about interfacing with the physical world and helping users make sense of disparate data sources, so they can draw non-obvious conclusions and make better decisions. In order for customers to realize the full potential of IoT for their use case, that physical interface is usually very specific to the use case or vertical. Sensors range from simple thermometers and door switches to complex legacy hardware buses and protocols. Sensors for, say, hospital use cases have their own set of requirements on top of the sensing parameters (e.g. temperature). During the prototyping phase, developers trial various sensors, software and firmware, and data the sensors produce, in order to find the right type, accuracy, and resolution of data.
An IoT platform should make it easy to connect with physical sensors by exposing a standard hardware bus that allows a wide variety of sensors to be connected to a common sensor development system.
Once the developer picks the physical sensor, building the software specific to that sensor should ideally be easy with simple, easy-to-use, hardware-independent tooling. To ensure that the device gets shipped as fast as possible, the software that runs on the prototype sensor system should be identical to the software that runs on the production device.
Data coming from IoT devices should flow over a managed, secure physical layer. The IoT platform should take care of connecting, securing, and delivering the data to a back-end system. That back-end system should ensure that data is stored in a secure manner and exposed through secure live and historical programmatic endpoints that enable easy development of the web applications and other business specific integrations.
Sensor data can come from more sources than physical sensors based on any given system. An IoT platform should offer the ability to ingest data from external data sources and expose these as “virtual sensors.” This allows for a consistent view of data which makes it easier to aggregate and analyze data. An example is to use external weather data to make thermostats smarter for a refrigerated warehouse, and set the desired temperature cooler on hot days.
Similarly, an IoT platform will offer a variety of outbound connection options which make it easy to automatically deliver data from the platform into various graphing, analytics, alerting and other business intelligence systems. Commonly, sensor readings in IoT take the form of time series data when consumed online, and the amount of data generated can be staggering. So, if you were to go about building a temperature sensor and associated application for food service, you might want an easy way to export only specific time windows of data to keep your application efficient.
By the way, if you wanted to run an IoT application for years at a time, it helps to have someone store and take care of that data so you never have to worry about maintaining that piece of the infrastructure.
Once you’ve built a prototype sensor, programmed it to deliver just the right data, and are delivering that data to a solution relevant back-end system, it’s time to get ready for rollout.
IoT platform vendors should make it easy to take the prototype and help directly or through a set of partners to package and deliver the sensor products at scale. For large volumes of sensors, it will be important to get a license to the hardware designs to cost reduce and scale up custom manufacturing.
For battery powered devices, battery replacement is going to play a role in the ongoing operational cost. The ability to select the right power source and have the IoT sensor system manage sensor software to maximize battery life is going to be critical to keep maintenance cost in check. On the operations side, it’s critical to have sensors report battery life so users can plan maintenance cycles with alerts, as opposed to only knowing batteries need replacement when a sensor stops sending data.
Wireless sensors inevitably end up not able to send data to the back-end system. Whether because the Internet connection is unavailable, the access point powered off, or transient wireless connectivity happens, a sensor system needs to be able to gracefully handle network connectivity issues. The ideal IoT sensor platform will automatically provide store-and-forward features for data on the sensors, for a significant time during outages, and seamlessly handle uploading data when the connection comes back.
Additionally, an ideal IoT platform will manage upgrades to the underlying sensor system as well as the customer-specific sensor code and configuration at scale. Changes to configuration of sensors and updating the sensor software must be managed by the IoT platform and applied automatically to all appropriate sensors in the wild, even if they’re offline for long periods of time. These upgrades need to happen over-the-air so that physical device maintenance never occurs for software upgrades.
Lastly, the production of sensors requires a close look at security. IoT platforms that consider security a first-order feature will offer a scalable manufacturing setup for security, including:
- Key provisioning
- Post-production manufacturing
- Security key ingestion to safely register newly manufactured devices with the platform
The access point, gateway or base station, if any, needs to be hardened to ensure it does not accept random inbound connections, nor contain usernames or passwords of any kind to avoid becoming an attack vector for security breaches.
In case recent events have not already demonstrated this, trading security for other characteristics can have unintended consequences for Internet users at large. Unless you pay attention at the outset, this is one of those things that’s easy to take for granted until it causes a problem for customers.
Additionally, good IoT platform vendors realize that security is a journey, not a destination. This means that customers get regular security updates and have a way to understand the security architecture of their chosen platform.
Naturally, once the production sensors are built they need to get installed in the target environment. The key to seamless deployment is zero configuration. This means that ideally there is no per-device configuration, pairing or credentials to type in or otherwise configure to get a sensor delivering data. An ideal IoT platform will ensure that produced devices are securely activated and immediately recognized by the system both for data ingestion but also in outbound data connections to externally integrated business systems.
For wireless sensors, having access points that offer quick deployment with long-range will ease the need for elaborate planning or site surveys to get appropriate coverage. Deploying additional access points to improve coverage for part of the network should be seamless with no downtime or reconfiguration of the deployed system.
An IoT platform will deliver customers statistics on the battery life of their devices, wireless connection quality and software and hardware events to make it easy to audit, detect issues, and have a preventative plan for ongoing sensor maintenance. The integration of the platform with external services will allow custom monitoring and alerting functionality that aligns with customers’ needs and allows them to extract the value provided by the sensor data.
In the case a sensor completely fails, it should be possible to physically replace the device, and have the IoT platform seamlessly handle the fact that this is a replacement device. This involves, at a minimum, keeping the new stream of sensor data lined up with the previous stream so that the data looks like a continuous stream from the physical world, uninterrupted for users or applications consuming the data.
Upgrades to configurations of sensors and the associated sensor software should be quick, easy, and handled by the IoT platform regardless of how many sensors there are in a deployment. Similarly, integrations with any business systems need to be visible, logged and easily changed as business requirements change.
Building a customer-ready IoT solution involves a lot more than buying a development kit, wiring up a sensor and collecting the data in a terminal window. Getting the right physical sensor for the task at hand, developing the sensor software and packaging, managing battery life, secure and fault-tolerant communication, upgradability and replacement need to be considered as part of the design and implementation of the sensor itself.
Corresponding integrated back-end systems for provisioning, configuring and upgrading sensors as well as access to both live and historical data all need to come together to build a complete solution that delivers data in the right form, at the at the right time to offer meaningful insights your customers.
As part of evaluating an IoT platform, look for a system that solves most of these hard infrastructure problems for you, allowing you to focus on just the aspects that are specific to the problem you are trying to solve.
At Helium we’re working to offer exactly that IoT infrastructure platform to our customers. Come talk to us if you’re interested in building and deploying an IoT solution. Fast!
Want to Learn More About Helium? Talk to us!
If you’re interested in finding out more about Helium, visit www.helium.com for an overview of our products.
Development kits and all necessary hardware to start building connected products can be purchased at store.helium.com.
Join our Slack community at chat.helium.com and speak directly to the Helium team as well as other Helium developers.
If you’d like to discuss an upcoming project with us, let us know and we’ll get in touch soon.