Helium Blog

Helium for Non-Helium Data

When we first set out to design the Helium IoT platform, we knew we had to make it easy to connect off-the-shelf hardware to a wireless layer and aggregate that data in an easy to access timeseries database. But our aspirations didn’t end there.

For Helium, IoT is all about connecting disparate data sources, providing rich context and meaningful insight to our customers. In tangible terms: we know that our users will want to add data sources that already exist and don’t need a new sensor deployment, such as city or municipality-wide weather, air quality, automobile traffic, and similar physical parameters, to enhance their user-facing applications.

Helium is primarily a platform for data from Helium hardware, but this data is often best understood with context from other sources. So we made it possible to add external data feeds alongside the Helium-based sensors you already deployed. The best part of ingesting external data feeds is that it’s free, so if you wanted to enhance web and mobile applications that monitor machinery and assets like buildings, you can easily add something like exterior temperature to make the application and alerts smarter.

Example Use Case

We mentioned external weather feeds above. Imagine you want to track local temperature with Helium hardware, but also correlate this with outdoor temperature to enhance alerts. If your business rules dictate that a monitored asset, like a water pipe, should never go below 32°F, it is possible to predict when the pipe will reach freezing temperature by using a trend alert against the ambient air temperature outside. The Helium Cloud makes it easy to integrate data from a weather API, for example the Dark Sky API.

In this case, if you only monitor the pipe with an alert at 32°F, you will only know when it reaches freezing temperature – likely far too late to actually do anything – resulting in a burst pipe. An alert at water temperatures above 32°F (say, 45°F) may result in false alarms, because the ground temperature might not be cold enough to affect the pipe adversely. If you monitor the trend line of external temperature, it’s more likely you will be able to send an alert with enough time to actually do something that can prevent loss of service or revenue – like shutting off the pipe – before it bursts.

A single pipe can be monitored manually. But exploring this use case a bit more, it’s easy to see why a company managing multiple buildings (or pipes) across a city or varied geographies could use external data sources alongside IoT to avoid disruption of service to customers. With Helium, ingestion of external data feeds scales up very well with the number of monitored assets because it can be managed programmatically, magnifying the impact of deployed sensors dramatically with no additional installation or construction. Any number of external feeds can be mashed up into Helium timeseries data for an asset, ensuring that you can provide the appropriate context to your users.

How to Do It: Virtual Sensors

Helium’s APIs are designed from the ground up to make this possible. Each Helium end node has an associated sensor in the API, but not every sensor in the API has to be associated with physical hardware. Using the Helium command line interface Helium-commander (aka commander) we can easily create a new virtual sensor:

$ helium sensor create --name 'San Francisco Weather'

After creating the sensor, we note its identifier (f626697c in this example). Now, we can create timeseries data for this sensor on the command-line, which simply uses the Helium API:

$ helium sensor timeseries post f626697c t 70

This creates a datapoint with a port of t, and a value of 70. Ports are a simple way to organize different readings from the same sensor, for example t for temperature and h for humidity.

In addition to using commander, you can use the Helium API directly to create a virtual sensor, or to create new timeseries readings.

We’ve written a full guide on creating and managing virtual sensors. Read our docs for the full details.

Timeseries Endpoints Make It Possible

Integrating external data with Helium doesn’t just mean ingesting it to the Helium Cloud. It also means being able to easily export your data to work with new and existing systems. This is easy to do programmatically with the Timeseries API.

Each sensor in Helium (physical or virtual) has a timeseries endpoint, which allows access to the sensor’s entire history of readings, as well as all future readings via a streaming endpoint. This makes it easy to export historic data, as well as hook Helium up to another system in real-time.

So, with this set of endpoints, it’s possible to consume all Helium-generated data as well as external data feeds via Helium directly into business intelligence and enterprise resource planning suites. This provides business stakeholders flexibility to view the data however they need to make smarter decisions.

For more information on exporting data, read Using Helium Commander to Export Sensor Data.

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.