02
// domain 02
Intelligent Environments
Home Assistant paired with local and frontier language models. Calm automation, presence-aware spaces, environmental intelligence. Research and practice in making homes that learn the cadence of the people inside them.
// live · environment dashboard
The house, room by room.
A realtime 3D map rendered in three.js and fed by Home Assistant. The hub at the center is the home; each orbiting orb is a room, sized by how many devices live there. The spoke to each room thickens with its device count and brightens with reachability (a room with offline devices reads dimmer), while the packets along it stream faster the busier the room is. Smaller satellites are device categories (colored by type). Presence stays aggregate: which room is occupied is never shown. Drag to orbit, tap any orb for its live metrics.
environment · home-assistant · realtime
drag · scroll · tap
// connecting to home assistant…
// philosophy
The most intelligent automation is the one that does not act.
Smart-home demos love showing what a system can do. Mine spends more time deciding what not to do. A debounced inference is worth more than a fast wrong one. A house that knows when to wait is calmer than one that always responds.
The goal is friction reduction, not assistance theater. If a person notices an automation, it usually misfired.
// home assistant
The hub I would not replace.
HAOS in a VM with USB and serial passthrough for Zigbee, Z-Wave, and Thread. Configuration lives in Git; secrets via Vault; backups land in TrueNAS and to the cloud nightly.
Climate
Ecobee thermostats, mini-splits, and a heat-recovery ventilator coordinated by occupancy and outdoor conditions.
Lighting
Lutron Caséta and Hue, scheduled around circadian color temperature with manual override always honored.
Security
UniFi Protect cameras, Aqara contact sensors, Frigate for object detection. Notifications only on the things I actually care about.
Energy
Solar inverter and Span panel feeding Home Assistant. Smart distribution favors batteries during peak rates.
Media
Apple TV state, Sonos rooms, Plex transcoding signals. Used as context, not destination.
Voice
Local Whisper + Piper TTS satellites in three rooms. Frontier LLM only when local cannot answer.
// presence detection
Where you are, not who you are.
mmWave sensors detect occupancy per zone, not per body. The inference is "is this room being used?" and never "who is in it?" That distinction is the difference between a calm home and a surveillance state.
Six Aqara FP2 sensors cover the rooms that matter; contact and light-level sensors fill in the rest. Decision logic lives in Home Assistant scripts, not in the sensor firmware.
sensor-inventory.yaml
70 endpoints
- Aqara FP2mmWave presence · per-zone occupancy6 units
- Aqara contactdoor / window state14 units
- Aqara temp / humidityper-room environmental11 units
- Ecobee remote sensorsclimate averaging5 units
- PurpleAirindoor + outdoor air quality2 units
- Spancircuit-level power32 circuits
// voice & ai
A house that listens, mostly to itself.
Three voice satellites running Whisper locally, with Piper TTS for the reply. The pipeline routes to local LLMs first; a frontier model is consulted only when local intent classification flags a request as ambiguous.
speech-to-text
Local Whisper
Wyoming Protocol satellite to the cluster. ~140ms median STT for command-length utterances; never leaves the LAN.
text-to-speech
Piper TTS
Calm reading voice, paced for the room. No bell, no chime: the spoken response is the acknowledgment.
contextual response
Intent → action
A small Llama model handles intent classification; HA scripts execute. The frontier model only enters when the intent is genuinely open-ended.
// environmental intelligence
Telemetry that informs behavior.
Temperature, humidity, occupancy, lighting, energy. Every entity in Home Assistant is classified by type and aggregated server-side, so only safe, non-identifying numbers reach this page. Live when the controller is reachable, representative demo data otherwise.
avg temp
–
whole-home
humidity
–
target 40–55
comfort
–
0–100 index
rooms active
–
where, not who
lights on
–
Hue + Lutron
energy now
–
live draw
shades open
–
Neo
reachable
–
entities online
// featured automations
Four that earned their place.
Out of a hundred or so live automations, these are the ones I would defend at dinner.
// 01
Server room thermal
When the rack inlet temperature exceeds 26°C, the ventilator switches to high and the mini-split lowers by 2°C for 20 minutes. Self-quieting at night.
// 02
Sunset lighting flow
Over 18 minutes, color temperature warms from 4000K to 2400K across the main floor, paced to actual sunset rather than wall-clock time.
// 03
Contextual voice
A request like "turn off the lights" first asks the room you are in, then the cluster of rooms you have occupied in the last ten minutes, not the whole house.
// 04
Quiet mornings
On a non-work day, the house notices and behaves more like a hotel: slower wake, gentler audio cues, weather summary deferred.