IoT Lessons Learned: Building a Screen-Free Habit Tracker
Let’s talk about IoT?—?the messy, practical reality of connecting machines to the internet. Recently, I built a “habit tracker” that’s purely analog?—?no screens?—?just physical switches and blinking lights (Screens did come into play for analyzing the data). Here’s what I learned:
The Problem: Analog Meets?Digital
The goal was simple: create a device to track daily habits (like drinking water or taking breaks) without burying users in screen time. The catch? The tracker needed to:
Every time I try to track habits on my phone, I end up scrolling. I decided to have fun with the idea and constraints although, it likely won’t see production use. In reality, some of these constraints were taken from Industrial IoT use cases and less applicable for consumer IoT; it was more of a proving ground / test to really understand Industrial IoT with a fun experiment.
The Architecture: Start Simple, Scale?Later
Here’s how the system evolved:
The key? Start small.
See link below for the github repo:
What I Built (and Why It?Worked)
1. Opta: The Arduino?PLC
Overall, the Arduino Opta PLC is a great starter PLC; You can use the standard Arduino IDE to code in C++ or use the PLC IDE to write ladder logic programs and more. I also purchased the wifi one, so I had some flexibility with connectivity (wired or wireless)
2. Tulip Edge MC +?Node-RED
Running Node-RED on Tulip’s Edge MC gave some flexibility to ingest raw data from the PLC and then process the data and write it to a variety of sources such as Tulip apps, InfluxDB, AWS IoT SiteWise, and more. The visual programming of Node-RED makes it pretty easy to get started with data flows that would otherwise be a bit hairy if NodeJS were the only option.
3. Tulip &?InfluxDB
Of course, I stated earlier that I was straying from screens, but I still wanted to analyze some potential trends and patterns in my habits, so I built a quick Tulip app that showed where I spend my time. It was basically a personal “shop floor app” with some OEE-like metrics.
The InfluxDB data was used on a Streamlit app (Python) to built out some quick dashboards and charts.
领英推荐
Key Learnings
The project was great for learning more about some key decisions around when to send data to the cloud, what part of the stack is exposed to public internet, and a balance of when to use distributed streaming tools (e.g., Kafka) vs. basic REST APIs in batches.
It really comes down to the use case and desired functionality with all these questions; the more you can refine and tailor the use case, you may be able to simplify the architecture and reduce the amount of data (and cost) sent to the cloud.
With regards to streaming tools like Kafka, Redpanda, and others, it’s important to understand what desired latency and real-time accuracy looks like. I was using minute-level summaries, so I had little need of streaming tables and other real-time analytics, but if I did, I would have to explore other methods to query data in a streaming fashion (Flink, RisingWave, etc.)
Some additional notes below:
1. Edge vs. Cloud: What Belongs?Where?
2. Security Matters (But Don’t Overcomplicate)
3. APIs Are Underrated
4. The Future of?PLCs
The Bigger?Picture
This project wasn’t just about habits. It’s a blueprint for:
Final Thoughts
IoT projects often drown in complexity. Here’s my mantra:
What’s the most “duct-tape” IoT hack you’ve built? Let me know.
Full Stack IIOT Engineer - Democratizing AI Digital Transformation
4 周Gosh we are all such huge nerds haha. This is so awesome!
Director of Engineering @ Denali Advanced Integration | Industrial Machine Vision and Automation
4 周Awesome write up and very inspiring to build something similar! I’ve been meaning to get my hands on an Opta and try it out.