jager.io
All experiments

10 Sept 2026

Running a KNX house from a git repo

Why the smart home config for our new build lives in version control, and what that makes possible.

KNXHome AssistantSmart home

When we built our house I specified KNX for the lighting, blinds and climate. It is a wired, decentralised bus standard that has been around since the nineties, which is exactly why I picked it: the devices will outlive whichever app is fashionable this year.

The catch is that KNX is programmed with a Windows tool called ETS, and the project file is a binary blob. Everything you decide, from which wall button dims which light to what a "whole house off" press actually does, disappears into that file. Six months later nobody can tell you why a relay is spare.

What I did instead

I keep a repo next to the house.

  • Home Assistant config is the single source of truth. Every KNX entity is defined in one YAML file, not clicked together in a UI. Dashboards, scripts and automations sit beside it.
  • The ETS project is exported as JSON after every integrator visit. A small diff tool compares exports, so I can see what changed on the bus between visits and ask why.
  • A switchboard app renders the actual distribution board from data: every module, its physical address, and which group addresses hang off each channel. It's a Next.js app, and it is the first thing I open when something misbehaves.
  • Work logs and a work order for the integrator live in the same place, so on-site time is spent fixing, not rediscovering.

What it bought me

Two things, mostly.

The first is that I can reason about the house the way I reason about a codebase. When a status address is pointed at the wrong group and a light shows the wrong state, the fix is a diff, a note in the work order and a commit.

The second is that I can hand an AI assistant the repo and get useful help. Bringing up a DMX gateway for the stair lights, for instance, involved a vendor manual, a DIP switch table that turned out to be wrong, and a group address plan that already existed in ETS. Having all of it in one tree made that a two hour job rather than a lost weekend.

The house is a product. It has a roadmap, a backlog and release notes. It just also has walls.