mirror of
https://github.com/skoelle/moonweb-site.git
synced 2026-09-17 17:00:25 +00:00
content improve 4
This commit is contained in:
@@ -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
|
||||
---
|
||||
<h1>Air Quality Dashboard</h1>
|
||||
<div class="detail-content">
|
||||
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Architecture</h2>
|
||||
<p>The dashboard sits at the end of a sensor data pipeline that starts at physical devices scattered around the flat:</p>
|
||||
<ul>
|
||||
<li><strong>Sensors</strong> HomematicIP room sensors and ESP32 devices with DHT22 sensors publish temperature and humidity readings via MQTT.</li>
|
||||
<li><strong>MQTT broker</strong> Mosquitto receives the per-device topics and makes them available for subscription.</li>
|
||||
<li><strong>Write layer</strong> A small subscription service picks up the MQTT messages and writes them into InfluxDB 2.x, tagged by room, device, and measurement type.</li>
|
||||
<li><strong>InfluxDB</strong> Stores the time-series data in a <code>sensoren</code> bucket, organized by org <code>Heimnetzwerk</code>.</li>
|
||||
<li><strong>Dashboard</strong> A static HTML page queries InfluxDB via Flux every 30 seconds, rendering current values and 24-hour historical charts per room.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Rooms covered</h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Dashboard features</h2>
|
||||
<ul>
|
||||
<li><strong>Current values grid</strong> at-a-glance temperature and humidity for every room.</li>
|
||||
<li><strong>Historical charts</strong> 24-hour temperature and humidity graphs per room with min/max stats.</li>
|
||||
<li><strong>Auto-refresh</strong> Data updates every 30 seconds without page reload.</li>
|
||||
<li><strong>Error handling</strong> Graceful fallback when InfluxDB is unreachable, with loading indicators during initial fetch.</li>
|
||||
<li><strong>Responsive design</strong> Works on phones, tablets, and desktop browsers.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Relationship to other dashboards</h2>
|
||||
<p>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.</p>
|
||||
|
||||
</div>
|
||||
@@ -29,12 +29,13 @@ parent: "/"
|
||||
<li><strong>Single sockets (SP112)</strong> — four individually switchable outlets covering hallway, kitchen, dryer and washing machine circuits, each also powering an associated LED matrix or small Pi.</li>
|
||||
<li><strong>Other plug families</strong> — 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).</li>
|
||||
</ul>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Special devices & status</h2>
|
||||
<h2>Special devices & status</h2>
|
||||
<ul>
|
||||
<li><strong>Tasmota RF Bridge / Delock</strong> — bridges RF-only devices (like the home-office 3D printer plug) into the Tasmota/MQTT ecosystem.</li>
|
||||
<li><strong>LED Matrix restarts</strong> — one-click restart buttons for each room's LED matrix display, avoiding a manual power-cycle.</li>
|
||||
<li><strong>Healthchecks & version info</strong> — direct links into the Healthchecks dashboard and a version/status overview for the connected devices.</li>
|
||||
<li><strong>LED Matrix restarts</strong> — one-click restart buttons for each of the six room LED matrix displays (living room, study, bathroom, kitchen, hallway, Nepomuk room), avoiding a manual power-cycle.</li>
|
||||
<li><strong>Healthchecks & version info</strong> — direct links into the Healthchecks dashboard and a version/status overview for the connected devices.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Network shortcuts</h2>
|
||||
|
||||
+7
-3
@@ -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:
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Self-hosted services</h2>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
</section>
|
||||
|
||||
@@ -54,6 +54,9 @@ via Flux to display real-time and historical usage charts.</p>
|
||||
<li>Alerting when a device draws significantly more than its baseline (e.g., a failing appliance).</li>
|
||||
</ul>
|
||||
|
||||
<h2>Air quality and climate data</h2>
|
||||
<p>The same InfluxDB instance also stores temperature and humidity readings from HomematicIP room sensors and ESP32 DHT22 devices. These feed the <a href="/air-quality/">air quality dashboard</a>, 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.</p>
|
||||
|
||||
<h2>Why Tasmota over alternatives</h2>
|
||||
<p>Tasmota was chosen over alternatives like ESPHome or Tuya firmware for
|
||||
several reasons. The local-only control means no cloud dependency — the
|
||||
|
||||
@@ -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
|
||||
---
|
||||
<h1>TubeArchivist</h1>
|
||||
<h1>YouTube Archiving: TubeArchivist & TubeSync</h1>
|
||||
<div class="detail-content">
|
||||
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Why this needed real troubleshooting</h2>
|
||||
<p>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.</p>
|
||||
<h2>TubeArchivist</h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Other Synology-specific quirks</h2>
|
||||
<h3>Synology-specific troubleshooting</h3>
|
||||
<p>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.</p>
|
||||
<ul>
|
||||
<li>Synology's Container Manager doesn't always auto-join containers to the same Docker network even when they're defined in one Compose file — an explicit named network avoids silent connectivity failures between the app, Elasticsearch, and Redis.</li>
|
||||
<li>Synology's Container Manager doesn't always auto-join containers to the same Docker network even when they're defined in one Compose file, so an explicit named network avoids silent connectivity failures between the app, Elasticsearch, and Redis.</li>
|
||||
<li>A version upgrade of the app itself required a very specific step-by-step path (skipping versions breaks the database migration) rather than jumping straight to the latest release.</li>
|
||||
<li>Initial indexing of large channels takes significant time — Elasticsearch needs to build and optimize indices for full-text search across video titles, descriptions, and metadata.</li>
|
||||
<li>Initial indexing of large channels takes significant time: Elasticsearch needs to build and optimize indices for full-text search across video titles, descriptions, and metadata.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Playlist detection problems</h3>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>TubeSync</h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Current state</h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>How it fits into the backup strategy</h2>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>What's backed up</h2>
|
||||
<table>
|
||||
<tr><th>Data</th><th>Included in NAS backup?</th></tr>
|
||||
<tr><td>Downloaded media files</td><td>Yes, via the NAS's own backup volumes</td></tr>
|
||||
<tr><td>Elasticsearch metadata/index</td><td>Yes, via the NAS's own backup volumes</td></tr>
|
||||
<tr><td>Redis cache</td><td>No — safe to delete/rebuild, only holds session data</td></tr>
|
||||
<tr><td>Redis cache</td><td>No, safe to delete/rebuild, only holds session data</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>Day-to-day usage</h2>
|
||||
<p>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.</p>
|
||||
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user