I’ve done a few rounds of 100 Days of Code in the past, but never really made it past 2 weeks. Part of the reason for that failure is the weekend portion - I don’t like to computer on the weekend since I computer very hard during the week.

I decided it would be a really good use of my time to work on my Indoor Air Quality platform as a part of my attempt at 100 Days of Code. It’s the next step for me in my career, so I need a way to force my effort.

There are two parts to making my IAQ platform successful, the sensors themselves, and the backend system.

Previous Days

  • Day 1 - Getting the infrastructure setup for development
  • Day 2 - Getting basic data out of Temp/Hum sensor, figuring out scope for others

Day 3

Good progress has been made today, primarily on the Publisher container. The publisher reads data from file (*.json) in a shared volume that all sensor containers mount. Each sensor container write’s it’s data in a relatively simple json format, which then the publisher consumes. Eventually, I’ll want to move this to some sort of API/gRPC call between containers, but I’m not concerned with the wear on the disks for now.

The Publisher then formats the data in a manner in which we can push into InfluxDB. The publisher formats each data point as a “Point” and then writes it to InfluxDB. It writes two copies, one in the customer bucket, the other in vgt_customer_lake. The Data Lake will contain anonymized data, that’s reported at a regional location basis, that we can use to help build and train models for future use.

I then created a very basic dashboard, reporting the Air Quality score, Temperature (f), and Humidity in my office. Once I get the 3D printed case sorted out, I’ll put together a few more units that I can deploy around the house.

Tomorrow I’ll get back to working on getting data out of the other 3 sensors connected to the device.

Wkennedy Office Dashboard

(Yes, it’s hot as balls in my office. Blame my workstation)

I’ve also got Grafana tied in, where we can make charts and dashboards if necessary.

Wkennedy Grafana Dashboard