TORSDAG
2026-06-11

Too many projects, too many ideas, too few hours — one learning a day anyway

The Lab

Where the physical world meets the stack: the house, the network, and one sixty-year-old boat. Every experiment links its posts — the failures are usually the better reads. Software projects live under Projects.

Home Assistant, ESP32 sensors, and heat meters decoded over the air.

Home Assistant at the center, ESP32 sensors around the house, and the fun part: wireless M-Bus heat meters and floor-heating thermostats decoded straight from 868 MHz radio with an SDR — custom rtl_433 decoders publishing into MQTT with auto-discovery. If a device emits radio waves, it can probably become a sensor entity.

ARCHITECTURE 868 MHz radio → SDR + rtl_433 decoders → MQTT auto-discovery → Home Assistant → automations
Home Assistant · MQTT · ESP32 · rtl_433

UniFi at home, with IPS logs flowing into Elasticsearch.

A UniFi-based home network where the security logs don’t just scroll by: IPS events ship via syslog into Elasticsearch through hand-built Grok pipelines, queryable and dashboarded. Lab-scale infrastructure run with production-scale habits.

ARCHITECTURE UniFi gateway → IPS events → syslog → Grok pipelines → Elasticsearch → dashboards
UniFi · Elasticsearch · Grok

A 1967 mahogany motor yacht with a modern nervous system.

A clinker-built mahogany motor yacht from 1967 — twin Mercedes diesels, continuously restored to preserve her original appearance — quietly fitted with modern electronics: SignalK and NMEA 2000 instrumentation, and telemetry flowing into InfluxDB and Grafana. Her fuel system spawned two projects of its own: Sightglass and Virtual fuel consumption, below.

ARCHITECTURE NMEA 2000 + instruments → SignalK hub → Telegraf → InfluxDB → Grafana
SignalK · NMEA 2000 · InfluxDB · Grafana 2 posts →

A camera that reads the diesel sight glass, because the tanks predate sensors.

The boat’s fuel tanks are older than the idea of a fuel sensor — but they have a sight glass, and a sight glass can be looked at. So a small camera watches it, a vision model reads the level off the image, and the result publishes as an ordinary MQTT sensor. One safeguard worth stealing: a reading is never shown if the camera and the tank sensors disagree — out-of-sync data is worse than no data.

ARCHITECTURE two cameras → vision model reads each glass → coupled-tank divergence check → MQTT sensor
Raspberry Pi · vision AI · MQTT · go2rtc

Fuel-flow measurement for engines that have no flow sensor.

Twin 1960s diesels, no flow sensors, and no desire to cut into fuel lines. Instead: a model estimates burn from engine RPM using a cubic propeller-law curve, then calibrates itself against reality every time the tank level visibly drops — solving for the scale and idle-baseline that make the model match the measured fuel actually consumed. Estimated data is always labeled estimated; it never pretends to be a measurement.

ARCHITECTURE RPM + tank levels (SignalK) → propeller-law burn model → self-calibration on tank drops → MQTT → SignalK fuel paths
Python · SignalK · MQTT · physics