Custom Residential Smart Home Specialist
A 1,400-entity Apple-grade home in London — designed, built, and commissioned end-to-end. Whole-home integration across lighting, climate, AV, energy, and security.
Try a scene →
3610 K · daytime balance
At a Glance
A self-directed project built to demonstrate three things relevant to high-end residential integration: that I can think in whole systems, communicate technical decisions in plain language, and deliver to a premium standard of polish.
The Dashboard
Each room follows the same structure — status bar, contextual controls, fixed dock — but the content respects the room. Kitchen tracks appliances, Lounge centres on media, Bathroom stays minimal.






Status colours map to Apple HIG semantics — yellow for attention, green for active, red for alert. Lights show their actual RGB output; inactive states are grey. Every coloured pixel earns its place, a discipline that maps directly to commercial lighting scene design.
Every view, automation, and template lives in a version-controlled file — reproducible, diff-able, reviewable. The same engineering standard expected on a commissioning project.
Where Home Assistant's native popups work, I use them. Where they don't, I intervene at the shadow DOM level rather than reinvent the control. The Mitsubishi AC popup was deliberately left native — the engineering cost didn't justify the marginal gain. Knowing when not to build is part of the job.
A polished surface earns trust; the details under it earn respect. Powercalc models, Adaptive Lighting curves, shadow DOM fixes — the unglamorous work is documented as evidence, not hidden.
Centerpiece Case Study
A direct translation of Natural Light principles into a working interface. Five preset scenes spanning the cool–warm spectrum, each bound to a single tap and identified by its own Apple HIG status colour.
| Scene | Kelvin | Purpose |
|---|---|---|
| Focus | 4440 K | Cool work light, daylight-equivalent |
| Neutral | 3610 K | Default — daytime balance |
| Relax | 2710 K | Warm evening light |
| Wind Down | 2200 K | Pre-sleep, melatonin-friendly |
| Off | — | "All Off", Lutron seeTouch-style separator |
Conic-gradient colour ring with dual mapping — hue direct, colour temperature
mapped to a 20°–55° angular sub-range. The marker position is computed live
from the light's color_mode and color_temp_kelvin attributes.
# Each scene binds one Kelvin value; state template detects active scene - type: custom:button-card template: keypad_btn name: Focus tap_action: action: call-service service: light.turn_on service_data: color_temp_kelvin: 4440 state: - operator: template value: | [[[ return entity.state === 'on' && Math.abs((entity.attributes.color_temp_kelvin || 0) - 4440) < 100; ]]] styles: card: [{ background: 'rgba(255,214,10,0.15)' }] name: [{ color: '#FFD60A' }]
Case Study
The UK has half-hourly wholesale electricity pricing (Octopus Agile). I integrated the API to expose 48 forward prices, and built a template sensor that computes the cheapest 3-hour window in the next 24 hours — directly usable as an automation trigger.
Devices without their own meter (hob, oven, fridge, immersion heater) are modelled via Powercalc, then reconciled against the Hildebrand Glow CAD whole-home measurement for drift detection.
The immersion heater runs only inside the cheapest 3-hour window each day, scheduled by automation rather than a fixed timer.
Glow CAD over MQTT gives 10-second whole-home power, with the full SMETS2 dataset available to the automation layer — no third-party cloud dependency.
Real-World Diagnostic
Eight months into occupancy, the baseline power never dropped below ~570 W — even with every controllable load off. Here's what happened next.
Whole-home power monitored via Hildebrand Glow CAD from day one.
Idle baseline persistently 500–600 W. Bills consistently higher than modelled. All known loads accounted for; the gap remains.
Hot-swapped the gateway and router onto a UPS to keep telemetry live, then cut the property's main breaker. Power should have read zero. It read 5.2 kW — proof an upstream circuit was billing this meter for an adjacent flat's HVAC.
Quantified eight months of overcharge (£487 net) from half-hourly settlement data. Evidence pack circulated to Octopus Energy's senior team and the freeholder simultaneously.
Ex-gratia settlement signed. A separate BS 7671 compliance concern (an HVAC circuit bypassing the main isolation switch) was rectified as part of the remediation.
What this demonstrated
System-level diagnostic thinking — designing a controlled test that isolated the variable, not just reading a sensor. Using technical data as commercial leverage in a stakeholder negotiation. End-to-end ownership from anomaly to settlement, closed in 27 days.
Under the Hood
Sixty-plus automations run the home. A few that show the level of logic involved.
PIR for instant trigger, mmWave for presence maintenance, plus a cross-zone occupancy-exclusion template that infers bathroom occupancy from recent activity elsewhere in the home — with a 30-minute fallback timeout so lights never stay on indefinitely. Four trigger paths handled in one mode: restart automation.
A vibration sensor drives a multi-stage state machine: double-shake confirmation to filter transient noise, a 20-minute refractory period to skip internal baseline cycles, and a debounced 5-minute checkout to detect true cycle end. On completion, it increments a cycle counter and fires a predictive-maintenance alert at 40 cycles.
When wholesale prices turn negative, an automation parses the API's forward window, applies a 2-minute debounce to filter transient dips, and pushes a notification telling me exactly when the negative-price period ends — so high-draw appliances can be run while being paid to consume.
Tech
Smart Building & Lighting
KNX (ETS6) · Adaptive Lighting · tunable white scene logic · Lutron-style keypad UX · Apple HomeKit
Home Assistant Layer
Home Assistant Core · YAML · Lovelace Sections · button-card · card-mod · browser_mod · Mushroom · ApexCharts
Protocols & Integrations
Zigbee2MQTT · MQTT (Mosquitto) · SmartIR · Broadlink IR · Sonos · Music Assistant · Octopus Energy API · Hildebrand Glow CAD (SMETS2) · Powercalc · Cloudflare Tunnel
Infrastructure
UGREEN NAS (Ubuntu VM) · Docker · Eaton UPS via NUT · GitHub · VS Code · Chrome DevTools (shadow DOM)