diff --git a/infra/docker/index.njk b/infra/docker/index.njk index 4bc4c07..86a48be 100644 --- a/infra/docker/index.njk +++ b/infra/docker/index.njk @@ -53,9 +53,9 @@ layout: base.njk

Application containers

diff --git a/smarthome/air-quality/index.njk b/smarthome/air-quality/index.njk new file mode 100644 index 0000000..3bb2096 --- /dev/null +++ b/smarthome/air-quality/index.njk @@ -0,0 +1,38 @@ +--- +title: "Air Quality Dashboard" +section: "smarthome" +parent: "/" +description: "Real-time temperature and humidity monitoring across all rooms, powered by InfluxDB and Chart.js." +layout: base.njk +--- +

Air Quality Dashboard

+
+ +

A custom HTML5 dashboard that displays real-time temperature and humidity readings from sensors across the apartment. It consumes data from InfluxDB via the Flux query API and visualizes it with Chart.js, auto-refreshing every 30 seconds.

+ +

Architecture

+

The dashboard sits at the end of a sensor data pipeline that starts at physical devices scattered around the flat:

+ + +

Rooms covered

+

The dashboard monitors 10 rooms across the apartment: server room, balcony, living room (desk and iMac areas), kitchen, bathroom, hallway, study, children's room, and bedroom. Each room shows current temperature and humidity, with optional pressure and light-level readings where sensors support it.

+ +

Dashboard features

+ + +

Relationship to other dashboards

+

The air quality dashboard is a standalone page, separate from the main home dashboard and the Tasmota energy monitoring setup. It shares the same InfluxDB instance and MQTT infrastructure but queries different measurement types (temperature/humidity vs. power/energy). The home dashboard shows a summary of room temperatures alongside energy data, while this dashboard provides the detailed view with historical charts for climate monitoring specifically.

+ +
diff --git a/smarthome/home-dashboard-controls/index.njk b/smarthome/home-dashboard-controls/index.njk index 3ca3207..152f019 100644 --- a/smarthome/home-dashboard-controls/index.njk +++ b/smarthome/home-dashboard-controls/index.njk @@ -29,12 +29,13 @@ parent: "/"
  • Single sockets (SP112) — four individually switchable outlets covering hallway, kitchen, dryer and washing machine circuits, each also powering an associated LED matrix or small Pi.
  • Other plug families — additional Nous, Eightree (ESP32-based), Athom and IDS smart plugs cover spare capacity, living-room seating/desk outlets, storage room, kitchen appliances, and a few legacy TV/PC outlets (several currently marked defective).
  • +

    The plug collection has grown over time as different brands became available at different price points. Gosund P1 multi-socket strips handle areas with multiple devices, while the SP112 single sockets cover dedicated appliances. Eightree plugs are ESP32-based and flashable to Tasmota, while the Athom and IDS models round out the remaining circuits. A Tasmota RF Bridge extends the ecosystem to RF-only devices like the 3D printer plug in the study.

    -

    Special devices & status

    +

    Special devices & status

    Network shortcuts

    diff --git a/smarthome/index.njk b/smarthome/index.njk index 73c9fbf..c39975a 100644 --- a/smarthome/index.njk +++ b/smarthome/index.njk @@ -36,6 +36,10 @@ sections: summary: "ESP32 dashboard showing weather, calendar, and MVG departures." href: "https://github.com/skoelle/m5stack-dashboard" emoji: "🖥️" + - title: "Air quality dashboard" + summary: "Real-time temperature and humidity monitoring across all rooms with historical charts." + href: "/air-quality/" + emoji: "🌡️" - heading: "Personal services" cards: - title: "iCloud Contacts Sync" @@ -64,8 +68,8 @@ sections: summary: "Remote 3D printer control and camera streaming." href: "/octoprint/" emoji: "🖨️" - - title: "TubeArchivist" - summary: "Self-hosted YouTube archiving running on the Synology." + - title: "YouTube archiving" + summary: "TubeArchivist and TubeSync for self-hosted YouTube downloading on the Synology." href: "/tubearchivist/" emoji: "📺" --- @@ -82,5 +86,5 @@ sections:

    The goal is subtle automation that improves daily life without being intrusive. Lights turn on when someone enters a room, music starts playing in the bathroom when the light switches on, and LED matrix displays show the time, weather, and laundry status. But nothing talks unless spoken to — no voice assistants, no always-on microphones, just simple sensor-driven automation that runs locally without cloud dependencies.

    Self-hosted services

    -

    Beyond hardware automation, several self-hosted services run on the Synology NAS: TubeArchivist for YouTube archiving, OctoPrint for remote 3D printer control, iCloud Contacts Sync for keeping the address book up to date, and a Google Calendar sync for dashboard widgets. Each service is containerized and backed up as part of the NAS backup strategy.

    +

    Beyond hardware automation, several self-hosted services run on the Synology NAS: TubeArchivist and TubeSync for YouTube archiving, OctoPrint for remote 3D printer control, iCloud Contacts Sync for keeping the address book up to date, and a Google Calendar sync for dashboard widgets. Each service is containerized and backed up as part of the NAS backup strategy.

    diff --git a/smarthome/tasmota-energy/index.njk b/smarthome/tasmota-energy/index.njk index 552c8e3..6fca691 100644 --- a/smarthome/tasmota-energy/index.njk +++ b/smarthome/tasmota-energy/index.njk @@ -54,6 +54,9 @@ via Flux to display real-time and historical usage charts.

  • Alerting when a device draws significantly more than its baseline (e.g., a failing appliance).
  • +

    Air quality and climate data

    +

    The same InfluxDB instance also stores temperature and humidity readings from HomematicIP room sensors and ESP32 DHT22 devices. These feed the air quality dashboard, which visualizes 24-hour climate history across 10 rooms. The energy and climate data share the MQTT-to-InfluxDB pipeline but live in separate measurement categories, keeping power monitoring and environmental sensing cleanly separated.

    +

    Why Tasmota over alternatives

    Tasmota was chosen over alternatives like ESPHome or Tuya firmware for several reasons. The local-only control means no cloud dependency — the diff --git a/smarthome/tubearchivist/index.njk b/smarthome/tubearchivist/index.njk index 5b180c6..8a4f8e7 100644 --- a/smarthome/tubearchivist/index.njk +++ b/smarthome/tubearchivist/index.njk @@ -1,55 +1,43 @@ --- -title: "TubeArchivist" +title: "YouTube Archiving: TubeArchivist & TubeSync" section: "smarthome" parent: "/" -description: "Self-hosted YouTube archiving and media management running on the Synology NAS." +description: "Self-hosted YouTube archiving and media management running on the Synology NAS, comparing TubeArchivist and TubeSync." layout: base.njk --- -

    TubeArchivist

    +

    YouTube Archiving: TubeArchivist & TubeSync

    -

    TubeArchivist runs on the Synology NAS via Docker Compose, self-hosting -a searchable archive of downloaded YouTube content (Elasticsearch + -Redis + the TubeArchivist app itself). It's used to archive channels -worth rewatching — tutorials, long-form content, and anything that might -disappear behind copyright strikes or channel deletions.

    +

    Two self-hosted YouTube tools run on the Synology NAS via Docker Compose, each taking a different approach to the same goal: keeping offline copies of channels worth rewatching. TubeArchivist provides a full archive with search and metadata, while TubeSync focuses on automatic synchronization of playlists into a media server library.

    -

    Why this needed real troubleshooting

    -

    Running Elasticsearch on Synology's DSM kernel isn't fully -straightforward: newer Elasticsearch releases require a Linux kernel -feature (SECCOMP) that Synology's kernel doesn't compile in. The fix is -version-pinning Elasticsearch to the last release that still works -without it, rather than fighting the kernel.

    +

    TubeArchivist

    +

    TubeArchivist self-hosts a searchable archive of downloaded YouTube content (Elasticsearch, Redis, and the TubeArchivist app itself). It's used to archive channels worth rewatching, including tutorials, long-form content, and anything that might disappear behind copyright strikes or channel deletions.

    -

    Other Synology-specific quirks

    +

    Synology-specific troubleshooting

    +

    Running Elasticsearch on Synology's DSM kernel isn't fully straightforward: newer Elasticsearch releases require a Linux kernel feature (SECCOMP) that Synology's kernel doesn't compile in. The fix is version-pinning Elasticsearch to the last release that still works without it, rather than fighting the kernel.

    +

    Playlist detection problems

    +

    The main frustration with TubeArchivist is automatic playlist detection. New playlists added to subscribed channels are not always recognized by the app, meaning videos in those playlists get skipped during automatic downloads. The workaround is manually submitting individual videos or playlists through the TubeArchivist web interface using the built-in submission tool, which works but defeats the purpose of automated archiving. This issue remains unresolved.

    + +

    TubeSync

    +

    TubeSync takes a simpler approach: it syncs YouTube playlists directly into a media server library (like Jellyfin or Plex) without the full archive UI. Everything is manual: playlists must be added by URL, and there's no automatic discovery of new content from subscribed channels. It's a pure download-and-organize tool rather than a searchable archive.

    + +

    Current state

    +

    Both tools run in parallel on docker-host-nas, each with different strengths. TubeArchivist provides the better archive and search experience but has the playlist detection gap. TubeSync is more reliable for syncing specific playlists but requires manual curation. Neither has fully replaced the other yet, and the ideal solution of shutting one down hasn't been found.

    +

    How it fits into the backup strategy

    -

    TubeArchivist data is split into two categories with different backup -priorities. The downloaded media files and Elasticsearch metadata are -backed up as part of the NAS backup volumes, since they take significant -time to re-download and re-index. The Redis cache is excluded — it only -holds session data and can be safely rebuilt on restart.

    +

    Downloaded media files and Elasticsearch metadata are backed up as part of the NAS backup volumes, since they take significant time to re-download and re-index. The Redis cache is excluded, as it only holds session data and can be safely rebuilt on restart.

    -

    What's backed up

    - +
    DataIncluded in NAS backup?
    Downloaded media filesYes, via the NAS's own backup volumes
    Elasticsearch metadata/indexYes, via the NAS's own backup volumes
    Redis cacheNo — safe to delete/rebuild, only holds session data
    Redis cacheNo, safe to delete/rebuild, only holds session data
    -

    Day-to-day usage

    -

    Channels are added via the TubeArchivist web interface, which provides -a YouTube-like browsing experience for the archived content. New videos -from subscribed channels are automatically downloaded on a schedule. The -search function indexes titles, descriptions, and metadata, making it -easy to find specific videos in a large archive. The system runs headless -on the NAS with no dedicated display — all interaction happens through the -web interface or the companion mobile app.

    -
    diff --git a/stefankoelle/index.njk b/stefankoelle/index.njk index 2e6408f..05df960 100644 --- a/stefankoelle/index.njk +++ b/stefankoelle/index.njk @@ -37,7 +37,7 @@ layout: stefankoelle.njk
  • Docker Host (Proxmox PVE)
    Virtualized Docker host with Debian 12.2 running containerized services including Portainer, Prometheus, Grafana, Gitea, monitoring exporters, and more. Full architecture documented on infra.moonweb.org.
  • InfluxDB Time-Series Integration
    Deployed InfluxDB 2.x for sensor data collection from Tasmota smart plugs and HomematicIP thermostats, replacing older MySQL-based storage with modern time-series architecture.
  • LED Matrix ESP32 InfluxDB Integration
    Data persistence layer for LED Matrix ESP32 sensor systems (DHT22 temperature/humidity) with InfluxDB 2.x backend. Automated collection at 60-second intervals for historical trend analysis.
  • -
  • Air Quality Dashboard
    Dynamic HTML5 dashboard consuming real-time sensor data from InfluxDB via Flux query API. Displays temperature and humidity across all network locations, accessible via nginx reverse proxy.
  • +
  • Air Quality Dashboard
    Dynamic HTML5 dashboard consuming real-time sensor data from InfluxDB via Flux query API. Displays temperature and humidity across all network locations, accessible via nginx reverse proxy. See also smarthome.moonweb.org.
  • Tasmota Energy Monitoring
    Smart plug energy tracking with 8 Tasmota-enabled devices, integrating MQTT data collection and visualization. See also smarthome.moonweb.org.
  • Network Hardware & Monitoring
    Four Zyxel GS1200-8HP managed switches in the server room, living room, and study, plus a Multi-WAN OpenWrt router for failover and VLAN segmentation. All switches feed into Prometheus monitoring via SNMP exporters, and IoT devices are isolated in VLAN 189.
  • @@ -45,7 +45,7 @@ layout: stefankoelle.njk

    Retro Computing (2022/2023)

    Upgrade of old Atari Mega 4 (2021)

    @@ -67,10 +67,10 @@ layout: stefankoelle.njk

    Various Docker Systems (since 2016)

    Walk-on Song (2019)

    diff --git a/stefankoelle/pdf/cv.pdf b/stefankoelle/pdf/cv.pdf index 82f5ebe..9c67318 100644 Binary files a/stefankoelle/pdf/cv.pdf and b/stefankoelle/pdf/cv.pdf differ