Sunlight Sensor Project
An end-to-end data streaming project including:
- ESP32 driven light sensors, using embedded software written in C with ESP-IDF,
- Google Cloud Run Functions written in Python and Go, acting as data processing scripts and a REST API,
- BigQuery and Firestore data storage,
- Google Pub/Sub event handling,
- Web app for viewing light intensity levels built with React/Next.js/Typescript, hosted on Firebase
- Monitoring and alerting
Portfolio Project Goals
In presenting this project, I’m hoping to convince you that:
- As an experienced software engineer, I have a good understanding of the software development cycle and what’s involved in developing and deploying production software,
- I can quickly learn and contribute to projects using technologies I was previously unfamiliar with, and
- Working with AI tools effectively and reliably requires incremental change and testing to produce reliable results. It also takes tenacity to get to the bottom of problems that AI can’t solve.
Project Contents
- Source Code
- Web Application
- Concept
- Minimum Viable Product
- Use cases
- High-Level Software Architecture
- Statement regarding the use of AI
- Nonfunctional Requirements
- Sensor Prototype Hardware Builds
- Test Site Description
- Future Enhancements and Fixes Tracked as issues in GitHub
Source Code
- GitHub repository for webapp, Cloud Run functions, and Terraform files for Google Cloud Platform
- Github repository for firmware for the ESP32-driven light sensor, using ESP-IDF and C
Web Application
At any given time, there may be 1-4 sensors running in the “backyard” sensor set. I am still in the process of experimenting with data flow timing and power consumption in particular. The application has test data under the “Test” sensor set, so you can preview it if the sensors are out for maintenance.