← back to portfolio

Case Study / FIG. C1

Home Automation & Aquarium Monitoring — Two Real-Time Platforms, One Source of Truth

Role Sole engineer, design through operations Stack Home Assistant, Vue 3, FastAPI, ESPHome, Zigbee/Matter, MQTT

Context

I run a self-hosted Home Assistant deployment covering security (alarm, gate, entry), climate, lighting, and camera-triggered automations (Frigate). Sitting alongside it is Project Nemo, a purpose-built aquarium monitoring platform I designed and built from scratch — real-time sensor dashboards, dosing/maintenance schedules, and AI-assisted water testing, all talking to the same Home Assistant instance for device control.

Architecture

Project Nemo is a bilingual (Polish/English) Vue 3 + Pinia PWA backed by a FastAPI + SQLite service. A WebSocket pushes live sensor and smart-plug state every 30 seconds; Home Assistant's REST API drives the physical devices (Tapo smart plugs for filter/heater/light), MQTT and Zigbee2MQTT bring in a Zigbee temperature probe, and InfluxDB stores the sensor time-series for trend charts. APScheduler runs the background jobs — daily summaries, overdue-maintenance checks, and auto-resuming devices after a feeding pause — with n8n and ntfy handling the Telegram/push notifications.

Engineering Problems Worth Describing

The interesting engineering problem here isn't any single sensor — it's getting three different ecosystems (Home Assistant's entity model, a bespoke FastAPI backend, and ESPHome firmware) to agree on the same source of truth in real time, in two languages, on hardware that has to run unattended.

Related Work — Matter/Zigbee Interoperability

The Matter/Zigbee compatibility layer described above is ongoing work — the kind of protocol-bridging problem that mirrors integration challenges in much larger distributed systems, just running at home-lab scale.