Building an IoT Remote Monitoring Solution for Energy Usage

We worked with Saunders Electric to develop a custom operational dashboard for their onsite operators along with data aggregation to a centrally managed cloud platform powered by Amazon Web Services.


Saunders Electric

IoT Services

Hardware Engineering, Software Development, Product Design

Project Timeline

12 weeks

Tech Stack

Python, Flask, React, AWS, SQLite, MQTT

Saunders Electric has provided reliable portable power for live broadcasts and Hollywood productions since 1952. Family owned and operated, the company is an innovation leader in energy-saving systems and is an alternative energy partner with Sandia National Laboratories.

Very teamed up with Saunders Electric to develop a custom operational dashboard for their onsite operators along with data aggregation to a centrally managed cloud platform powered by Amazon Web Services.

The Challenge

Each of Saunder’s Power Distribution Units ensures that their customer's power is uninterrupted and consistent. This involves local power conversion along with battery and generator backup in the event of a local outage. Not only is it important for the operators to monitor for the local power supplies, but it is important to record the customer’s power draw and total utilization on-site for historical analysis.

Existing Technology

All power conversion, distribution, and backups are provided by a mobile container, called a POD, that is deployed on-site. These PODs manage at minimum power input from the local grid and power input from the local generator backup.

Saunders Electric previously had the means to monitor these power inputs and outputs locally through a C++ utility which interfaces directly to Modbus, giving the Saunders team the ability to read voltage and current from each of their inputs.

While this tool provided visibility into the current state of each POD, there was no way to view the data as a time series or to push what had been captured to a centrally managed service for remote monitoring. Saunders wanted a new foundation to make the product both more extensible and easier to maintain.

Project Goals

  1. To leverage the existing interfaces to hardware peripherals made available through the local network and Modbus interface
  2. To give POD operators real-time operational insights into the quality of service and overall utilization of power on-site

  3. To alert operators and management when input levels are out of an acceptable range

  4. To aggregate all data in a central location to allow for future analytics and reporting

The Process

In Q4 of 2018, Very established the initial conceptualization, design, and deployment of hardware, software, and cloud-driven application. The purpose of this product was to monitor, record, and analyze metrics from the power and UPS systems. Specifically, this system gives on-site operators the ability to monitor multiple metrics in a single real-time dashboard and easily spot deviations from standard operations and set options for alarms and their respective notification mechanisms. This system is currently in “active beta” running in parallel with the existing monitoring software on multiple PODs.

System Architecture


Hardware Stack

  • Raspberry Pi 3 - Model B
  • 32Gb SD card local storage
  • Powered via micro USB
  • Communication to Modbus and internet over local ethernet connection

Software Stack

  • Python software stack running on the Raspberry Pi
  • Flask micro-framework utilized to build RESTful API for data publication to the front end
  • React single page Javascript application served via Flask as a static asset
  • Python application polls Modbus for data collection through regular intervals
  • SQLite database stores measurements locally on the Pi
  • Data is recorded to the cloud through AWS MQTT
  • Alerts are managed byAWS Lambda functions, which communicate to Twilio for issuing notifications and handling the responses

Cloud / AWS

  • All cloud-based services at this time are hosted in Amazon Web Services
  • Utilizing MQTT for receiving measurements from the field
  • Measurements are stored inAWS S3 for future analysis

A Python application running on a local Raspberry Pi 3.0 polls real-time data through the local Modbus interface. This data was then made available to the dashboard through a local RESTful API, which is also hosted on the Raspberry Pi. The operator interfaces and dashboards were all built using modern web technologies so that this product could be installed and utilized by the other computers already running in each POD (a modern web browser). The only requirement for the administrators of these PODs is to install a Raspberry Pi, connect it to the local ethernet, and configure the appropriate network addresses.

Each Raspberry Pi is responsible for polling the Modbus, storing the metrics and data in a local SQL database and hosting the dashboard web application and the local API serving the web application. When the devices have internet access, data is streamed to AWS over MQTT and stored to AWS S3 for future analysis. Additionally, text message alerts are issued by AWS Lambda functions to Twilio if measurements go outside of acceptable ranges.

Updates to this system are deployed without any operator/system administrator intervention, utilizing modern continuous deployment strategies leveraging Yocto and Mender.


The Results

In just a few months, Very developed a custom operational dashboard for Saunders Electric's onsite operators along with data aggregation to a centrally managed cloud platform powered by Amazon Web Services.

In addition to the efficiency gains, Saunders Electric now has access to robust reporting tools. Instead of using spreadsheets to explain the ROI of investments to their clients, they’re able to use dashboards, providing a modern and intuitive customer experience.


Tell Us About Your Next Development Project

Get inspired

Discover how we deliver results for our customers.