Home
Drop Mic IoT App Build Out

Drop Mic IoT App Build Out

to : Gunner created an IoT app for a solar-powered embedded device created to monitor sound levels for city ordinance violations.

Showcase & Media

Video Case Study

Post Mortem Discussion

Screenshots

Check out photos of this project

Architectural Diagrams

Check out architectural diagrams of this project

Problem

What was the problem to be solved?

The City of Jupiter, FL had a problem with an upswell in outdoor businesses violating noise ordinances.

Restaurants with outdoor entertainment became vogue in the posh town.

However, these eateries would run afoul of the city ordinances, which regulated sound levels at certain times of days.

The city relied on residents to report the violation and these reports were based on conjecture.

The residents would think the noise is too loud and complain.

This meant that the city would have to respond to the complaints and send out a tech who may arrive only to find out the sound levels were within compliance.

The tech would then have to setup expensive equipment to monitor the establishment for a week or so going forward.

At the same time, the businesses also didn't know if they were in violation so they, too, had to guess at noise levels.

Solution

What was the proposed solution?

Kurtrox proposed a solution that the city jumped on, which was to build devices connected to solar power which could be mounted outside such facilities.

The devices would monitor sound levels and change from green to yellow to red, allowing all parties involved to know if there was a violation.

The businesses would know if there was a violation by looking at the stop-light-like device to see if they were approaching red.

Once the device hit red, the onboard computer would notify the city who would know immediately a violation occurred.

Gunner Technology built the software for Kurtrox's embedded solution.

Challenges

What challenges arose during the project?

There's no question this was a tough project.

Converting a raw volume reading into a decibel ratio required each device be baselined upon deployment.

Over-the-air firmware updates also became a challenge as did the sheer amount of data the software had to send via cellular data and also store for historical review.

Technical

What was the technical approach to the project?

The embedded devices were Beaglebone Blacks that ran off of constant power from a solar panel backed up by a battery.

When the devices came on for the first time, they would use Node.js to capture a baseline and then used this baseline to capture, calculate and broadcast a decibel level every second.

The raw data was stored in Amazon S3 buckets where it was streamed via Amazon Kinesis and AWS Lambda to Amazon DynamoDB.

The insertion into DynamoDB tables placed the data in another Kinesis stream, which another Node.js Lambda process handled responding with the acceptance of the reading via a persistent socket (Green, Yellow, Red).

Additionally, if Red, the Lambda function would notify the city via an email sent by Amazon SNS and Amazon SES.

The entire setup was pretty much headless and Serverless relying heavily on AWS IoT.

If the city desired, the companion web app could generate ad hoc reports based on device from the time it was first turned on.

Management

What was the project management approach to the project?

Finding the right data plan and device was a huge unknown, so the team ended up starting the project with four Research Sprints to determine the best combination.

After that, Gunner used feature/Bug Sprints to build a device prototype that could run Node.js.

After the developers built a functional device prototype, they begin working on a standard sprint schedule until release:

1) One week feature sprint where the team added new functionality

2) One week QA sprint

3) One week bug sprint

Repeat until finished.

This is a typical Agile Scrum approach.

Architectural Description

What platform was built for this project?

Amazon Web Service provided the backbone of the app's infrastructure.

Additionally, the team used the Serverless framework to build and manage the CloudFormation templates used to define and setup the various Microservices the app runs on.

The raw data was stored in Amazon S3 buckets where it was streamed via Amazon Kinesis and AWS Lambda to Amazon DynamoDB.

Finally, for Gunner created three separate environments - development, staging and Production - to implement a Continuous Development, Git-based, DevOps framework leveraging technologies such as AWS CodeCommit, AWS CodeDeploy, AWS CodePipeline and AWS CodeBuild.

Lessons

What did you learn from working on this project?

The team learned a lot about Big Data - especially in conjunction with AWS.

Gunner has tackled many projects in the Big Data realm, but this, perhaps, involved the largest per device volume of data the company has encountered.

Finally the team learned how to use persistent web sockets via IoT to communicate with the remote devices over a Serverless, Microservices framework.

Benefits

How did this project benefit the client?

The City of Jupiter licensed the devices for $10,000 per device per location for a total of 100 devices.

While this was a steep outlay, it paid dividends for both the city (which didn't have to pay contractors to go out and measure sound levels) and businesses (which no longer had to guess whether they were in violation).

The intangible benefits to businesses is hard to measure since they didn't pay directly for the devices, but yet, attracted more businesses to the city when they no longer had to worry about sound ordinances.

The city enjoyed cost savings of nearly 10%.

Why Gunner?

Why was Gunner selected for this project?

Kurtrox had worked with Gunner on a number of IoT projects so there was a built-in familiarity here.

Kurtox also had offices located close to Gunner, which made collaboration relatively easy.

Related Projects

What are similar projects Gunner has worked on?

[object Object]

Suretrac Platform Development

Both Suretrac and Drop Mic were IoT apps that relied heavily on AWS infrastructure.

Proficiencies

What tools, techniques and methodologies were used on this project?

[object Object]

Agile

Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams

[object Object]

Amazon DynamoDB

DynamoDB is a nonrelational database for applications that need performance at any scale

[object Object]

Amazon Kinesis

Store and process terabytes of data each hour from hundreds of thousands of sources

[object Object]

Amazon S3

Object storage built to store and retrieve any amount of data from anywhere

[object Object]

Amazon SES

Flexible, affordable, and highly-scalable email sending and receiving platform for businesses and developers

[object Object]

Amazon SNS

SNS is Pub/Sub messaging and mobile notifications for microservices, distributed systems, and serverless applications.

[object Object]

AWS CloudTrail

Record AWS API calls for your account and have log files delivered to you

[object Object]

AWS CodeCommit

AWS CodeCommit is a fully-managed source control service that hosts secure Git-based repositories.

[object Object]

AWS Lambda

AWS Lambda lets you run code without provisioning or managing servers.

[object Object]

Git

Fast, scalable, distributed revision control system

[object Object]

Node.js

Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications

[object Object]

Serverless Framework

Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more