Skip to content
YYefrixLab

Case study · AI & Automation

Habitat: a self-hosted smart-home hub

One local dashboard for every light, sensor, thermostat and plug in the house. No cloud, no vendor lock-in, works when the internet does not.

Industry
Home automation
Timeline
5 weeks
Year
2026
Services
Product engineering, IoT integration, Self-hosting

The problem

Smart homes are a graveyard of apps. One for the lights, one for the thermostat, one for the blinds, each phoning a different cloud, each one outage or discontinued-product away from a room full of bricks. The moment your internet drops, the “smart” home gets dumber than the dumb one it replaced. And every tap is quietly logged on someone else’s server.

What we built

A single, local control hub for the whole house. Every device, whatever protocol it speaks, shows up in one dashboard: rooms, live sensor readings, lights with brightness, a draggable thermostat dial, blinds, plugs, media, cameras. It runs on a small box at home and keeps working with the router unplugged.

The pieces that make it hold together:

  • Protocol-agnostic device layer. Zigbee devices join a single local mesh; everything else (Wi-Fi plugs, IP cameras, media players) is normalized behind one internal API. The dashboard does not care who made the bulb.
  • Scenes as one-tap state. “Good morning”, “Movie”, “Away”, “Good night” each set dozens of devices at once: lights dim, blinds move, thermostat shifts, plugs cut. A scene is data, so adding one is a config change, not a rebuild.
  • Local-first, cloud-never. State lives on the hub. Control happens over the LAN with sub-100ms response. Remote access, when wanted, is one reverse-proxy hop with TLS, not a third-party cloud account.
  • Live everything. Sensor values, energy draw and device state stream to the UI over WebSockets, so the dashboard is a mirror of the house in real time, not a page you refresh.

Architecture

A Home Assistant core drives device I/O over Zigbee and MQTT; a thin FastAPI layer exposes a clean internal API and a WebSocket feed to a custom dashboard tuned for wall tablets and phones. Everything ships as Docker containers behind the same reverse proxy and monitoring baseline as the rest of the fleet. Automations run on the hub itself, so a dead uplink never means a dead light switch.

Outcome

Sixty-plus devices, one dashboard, zero clouds. Lights respond faster than the old app did, the data never leaves the house, and a discontinued product no longer means a dead room. Adding a device is a pairing step and a tile; adding a scene is a line of config. The boring, load-bearing kind of smart home.

Got a project that "just needs to ship"?

Tell me what you are building, what is blocking it, and when you need it live. You will get an honest answer about scope, cost, and timeline within 24 hours. No discovery-call theater.