Scaling Connectivity for Safe, Healthy Air Quality Monitoring
Awair is on a mission to empower people to thrive in an indoor environment. The Awair products track invisible fine dust and chemicals in the air of a house or building and give personalized recommendations to help the occupants to stay safe and healthy. For the last 5 years, the San Francisco based startup has successfully delivered a suite of connected products designed for air quality monitoring in residential and commercial real estate market.
Awair uses HiveMQ and MQTT for connecting all their devices to the Awair hosted cloud platform. All the sensor data ingestion from Awair devices is done through HiveMQ. On average HiveMQ is processing more than 100 million messages a day. Awair also uses HiveMQ and MQTT messages to control each device and initiate over the air updates of the device firmware. For example, the Awair Glow smart-plug sends sensor data to HiveMQ for processing on the Awair cloud. The data from the sensor is analyzed to look for anomalies and if an issue is identified, Awair will send an MQTT message to the smart plug to turn on or off the appliance plugged into Awair Glow.
Awair selected MQTT as their connectivity protocol since it future proofed their software architecture. Before implementing MQTT, Awair looked at web technologies like HTTP and WebSockets. However, they quickly realized MQTT was the default IoT standard for device connectivity and communication. MQTT implements a bi-directional protocol that is well suited for different network topologies. This means Awair has a software architecture that allows for future products to be connected via different networks technologies, like WiFi, cellular, LoRa and others.
Awair has been using HiveMQ in production since April 2018 but HiveMQ is not their first MQTT broker. In the past Awair had deployed different MQTT brokers, including an open source MQTT broker, RabbitMQ with an MQTT plugin, a Scala MQTT broker developed in-house and they evaluated AWS IoT and Google Cloud IoT. Each of these options proved to not meet the expectations of their customers and the development team. Deploying RabbitMQ with an MQTT plugin, resulted in complicated levels of abstraction that made it difficult to implement device authentication and authorization. AWS IoT was rejected since it imposes a specific device provisioning model that was not compatible with the Awair model. Google Cloud IoT was not ready for production scalability and reliability. Maintaining their own in-house broker was time-consuming and difficult to implement a scalable solution. HiveMQ has proven to be the solution that pays for itself and just works.
“HiveMQ is high-quality software with no surprises. It works as expected, can scale horizontally, and is very reliable. We have had no operational issues using HiveMQ.” explains Simon D. Kim, Director of Software Engineering at Awair. “For us, it would have been cheaper to start out with HiveMQ from the beginning and not make all the mistakes with the different options we explored before using HiveMQ.”
In addition to the reliability of HiveMQ, Awair also benefits from the HiveMQ extension framework that makes it easy to integrate HiveMQ into their platform. Awair wrote their own HiveMQ extension to move the telemetry data from HiveMQ into Google Pub/Sub for storage in a time series database on Google Cloud. They wrote their own device authorization logic for HiveMQ that connects with the Awair device repository.
“HiveMQ has really removed the complexity of using MQTT. It provides the APIs to make it easy to integrate the sensor data and MQTT messages into our infrastructure," states Simon.
Recommendation for Connect Products
Simon has some recommendations for others who are building their own connected products.
“Any connected product will need some type of publish/subscribe bi-directional communications that can be supported over different network topologies. HiveMQ and MQTT is the best solution we have found in the industry. It is a standards based approach so we don’t worry about vendor lock-in. The other alternative is to build your own connectivity solution but that is a non-trivial task that takes time, a lot of resources and is prone to errors. If you are building an IoT solution and looking for a reliable, scalable and also flexible publish/subscribe system, I would definitely recommend using HiveMQ.”