Hello everyone, my name is Adam and I’d like to introduce you to me and my passion project. A little bit about me, I have a background in enterprise infrastructure IT. My latest role I was a product manager for an internal configuration management team. A bit ago my position was eliminated and I started putting all of my attention into Home Assistant and otto Home.
otto Home is my attempt at making my home’s automations and configurations available to others. I’ve spent years getting my room occupancy, lights, fans, etc just the way I like them. I had an idea, maybe I can write all the logic based on groups that could be populated later. So when I set up my Node RED flows, I can reference and call groups rather than individual entities. This would mean with just the population of groups, my logic would be available for distribution.
Ok, so…what have features have I built into this solution, well, honestly, this isn’t all of them, but hopefully it’s enough to get a conversation started:
Home Occupancy (Home/Away based on configurable timer)
Room Occupancy (Auto on/off based on configurable timer)
User Presence (Home/Away/Room/Zone tracking)
Scene Control (Sleep, Auto, Calm, Theater, Workout)
Light Control (ambient light level based brightness logic fades on lights as ambient light decreases) SEE SUMMARY BELOW
Fan Control (scene & temperature based automation)
Climate Control (Home/Away thermostat)
Home Health Alerting (Notification system for leak sensors, exterior doors, etc)
Vacuum Scheduling (timer based system that queues after configurable # of hrs, will run at night or when away depending on preference)
Custom Dashboard
Pressing “Room” buttons loads a menu for that page but the navigation menu stays.
So, this is all a lot, how is it distributed. So far I’ve taken a backup of an image system that had most of the architecture already installed (ie NodeRED, Studio Code Server, card-mod etc). I then use a customizer that allows me to take a yaml preferences file and it installs the features and makes customizations to automations/dashboard as needed. This is the point where the devices get added to the server and to the groups.
I’ve installed this now at my house and 2 pilots so far. Updates are probably the biggest hassle. Config has gotten signrificantly easier since building the cusomizer to apply features, names, etc automatically.
I’ve built all of this, but like I said, I was a product manager not a coder. I’ve found that with AI, a clear vision and some extra time it’s amazing what you can build. However, I will also say that it’s not necessarily the most efficient code. I was thinking it would be good to get people’s input both on whether this is something that the community would like to use or may even be interested in contributing to.
Here is a summary of just the lighting system, but all systems are built modularly and similarly to this:
Home Lighting Automation System Overview
This is an advanced home automation system for managing lights based on various conditions. Here’s a breakdown of the key components:
Core Functionality
- Adaptive Brightness Control: Automatically adjusts light brightness based on ambient light levels
- Room-based Control: Each room (rm01-rm10) has independent lighting control
- Scene Support: Supports various lighting scenes (Auto, Manual, Sleep, Calm, Theater)
- Light Groups: Manages both area lights and accent lights separately
- Occupancy Detection: Integrates with occupancy sensors to control lights based on room usage
Key Features
- Dynamic Light Levels: Uses ambient light sensors to determine appropriate brightness
- Hysteresis Logic: Prevents rapid on/off cycling with intelligent thresholds
- Automated Override: Manual control temporarily disables automation
- Outdoor Integration: Special handling for outdoor and public spaces
- Robust Logging: Comprehensive JSON-based logging system for troubleshooting
Technical Components
- Max Lux Estimation: Intelligently learns the maximum expected light level
- Status Monitoring: Monitors light status changes and maintains state
- Timer-based Validation: Periodically checks all rooms to ensure proper operation
- Dimming Support: Advanced handling for both dimmable and non-dimmable fixtures
Control Flow
- Light changes can be triggered by:
- Occupancy changes
- Light level changes
- Scene selection
- Manual overrides
- Home-wide scene changes
- Timers
The system is built on top of:
NodeRED
Bermuda BLE Trilateration
ESPHome
Card-Mod
Kiosk Mode
Battery Info Card
Spook
Others that I will add as I remember…
I apologize if this isn’t well thought out, there is so much more but I’m just trying to figure out how to communicate it.