All-In-One Smart Home Sensor Case V2.1
Makerworld
🆕 Also check out the Ultimate Version
The V2.1 is the budget-friendly version of this series and will continue to be maintained and improved. For rooms where you need more — multi-target tracking, zone tracking, reliable presence detection for very still people (e.g. watching TV or sleeping), more accurate temperature & humidity, more sophisticated air quality measurements, or a more reliable PIR sensor — check out the Ultimate Smart Home Sensor Case. It comes at a higher component cost, but offers significantly more capability where it counts.
Please read the disclaimer at the bottom before printing
Hello everyone 👋, this has been one of my biggest projects so far. If you have any questions about the project please ask them in the comments then I can answer them and everyone can learn from that.
When I started building my smart home, I realized that most devices only cover very specific use cases. To get full functionality in each room, you usually need to buy multiple different devices.
My goal with this project was to create the ultimate DIY smart home sensor device that integrates all the essential sensors needed to achieve the following:
🎯 Goals
- Control the lighting in a room by turning it on when motion is detected and keeping it on as long as someone is present (even if the person is not moving).
- Monitor the brightness in the room and only turn lights on if needed (and off again when no longer required).
- Measure air quality, humidity, and temperature.
- Use Bluetooth to track a person’s smartphone and thereby determine which room they are in, so the smart home can react accordingly.
- Keep the footprint as small as possible.
- Powered by a single cable. USB-C in particular.
- Ensure the design is unobtrusive and blends seamlessly into the living room.
- Integrate with Home Assistant.
- No cloud dependency.
🖨️ Print Instructions
- Material: PLA/PETG
- Layer Height: 0.20 mm
- Nozzle: 0.4 mm
- Infill: 15 %
- Walls: 2
- Divider: print upright with a brim, flat side on the build plate. If you orient it differently, it won’t print correctly.
- Brightness sensor shield: print with transparent material, or omit it entirely. It’s not required but hides the sensor a bit and improves the look.
🛠️ Assembly Instructions
- Download the V2.1 assembly instructions PDF from below
- Follow the assembly instructions in the PDF file
🆕 Changelog
V2.1.3
- Occupancy LED color adjusted to a lighter, more neutral warm white
- The Occupied sensor now turns back on if presence is detected within 10 seconds of it turning off
- Update ESPHome to 2026.6
- BME680 air quality status now uses translated labels ("Good", "Warning", "Critical") instead of hardcoded English strings
V2.1.2
- Air quality state is now always visible in Home Assistant (no longer hidden by default)
- Air quality state now shows translated values ("Good", "Warning", "Critical") instead of internal strings
- Air quality state and occupancy no longer show "unknown" after the device boots — they start at "Good" and "not occupied" immediately
- Humidity is now clamped to 0–100% so offset calibration can never push the value out of range
- All Home Assistant entities now have icons
V2.1.1
- Changed LD2410B seat to reduce reflections.
- If you had any problems with the ld2410b detecting very high values while no one is in the room, this will fix it.
- I now got idle values of 3-5%.
- It makes such a huge difference, that I even upgraded all fronts of my sensors to this new version
- Changed LED automation colors slightly
- Color for occupancy is now warm white
- effect of occupancy is now explicitly "none"
- Updated Instructions accordingly
V2.1.0
- Add an LED to show status for e.g. Improv BLE
- Smaller Enclosure for the ESP32 Large variant
- Software changes
- Precompiled binaries
- Add Improv BLE instead of captive Portal
- No need to change any secrets or variables
- An optional occupancy automation which shows the occupancy status via the status led
- An optional air quality automation which shows the air quality status via the status led
V2.0.0
- 3 different versions for different boards
- Version for the ESP32 D1 Mini (no need to desolder the pins anymore 🥳).
- Version for the ESP32 Super Mini (it should work with ESP32 C3/C6/S3, but i only tested it with the C6)
- Version for the ESP32 Large Version
- No need for jumper headers and wires / everything is soldered so it is a more secure connection
- Separated wifi antenna and motion sensor farther apart to reduce false positive detections
- Incorporate the ball head mount into the design, which is fully printable now and does not need a screw anymore.
- The brightness sensor shield is now a solid part of the body. To print it you need an AMS or you have to remove that part before printing.
- Tweaked the software
- easier calibration experience
- use of esp-idf framework which results in way less memory usage, so more features can be activated
- added captive portal out of the box
- german and english variant
- used other uart pins, because using the uart0 will hinder from flashing the device via usb
⚠️ Disclaimer
This project is not easy: you have to solder a lot. You have been warned — but I’d love to see people try it 😊
The finished product is not perfect — that’s why the title is not “Ultimate Smart Home Sensor Device” 😅. I plan to release a revised version with other sensors when I have time and when the sensors I want become more accessible. Since I don’t know when that will be, I’m sharing this version for now.
Things that bug me on the current version:
- (This got a lot better on the V2 version, to a point where its not really an issue anymore, but it might happen and therefore is still listed here) The motion sensor is very cheap and sometimes triggers when no one is in the room. (This can be minimized by reducing the ESP’s Wi-Fi signal strength, as cheap motion sensors are prone to misfire due to Wi-Fi interference.)
- My latest firmware contains an optional slider to set the max wifi power. I recommend using the lowest value possible that still enables a stable wifi connection.
- The motion sensor can trigger when you air the room, as it detects heat changes.
- The presence sensor uses 24 GHz. While it can detect mostly stationary humans, it cannot detect very small movements or someone under a blanket. (This mostly applies to my girlfriend — somehow I am tracked a bit better 😅).
- The presence sensor is extremely hard to solder. I actually broke a sensor by accidentally desoldering the resistor right next to the pins. That is why I recommend using the separately available cable for it.