Releases: weddas/DSC-HUB
Release list
DSC-HUB 8.1.0
First full cut of the 8.x line after the v8.0.0-AlphaPi alpha — 102 commits.
Brain / SPA 8.1.0 · kit firmware train 8.0.0.0 (unchanged — no fleet reflash required by this release).
⚠️ Important: 8.0.0 AlphaPi cards cannot flash a kit
The 8.0.0 image shipped nine zero-byte kit firmware binaries. bake-firmware.sh falls back to writing empty placeholder .bin files when it cannot compile, and refuses to do so only under DSC_RELEASE=1 — which the 8.0.0 bake did not set. Anyone who flashed that card and ran the SPA USB-flash wizard got nothing flashable.
8.1.0 is the first image to carry real kit firmware. All eight roles are compiled from source and verified non-empty by a release guard that now aborts the bake if any binary is empty.
| Role | Chip | Bytes |
|---|---|---|
hub |
esp32 | 1,283,136 |
control |
esp32 | 1,381,600 |
pot1 |
esp32 | 1,134,704 |
pot2 |
esp32 | 1,134,688 |
heater |
esp8266 | 476,960 |
heatmat |
esp8266 | 476,960 |
humidifier |
esp8266 | 476,976 |
dehumidifier |
esp8266 | 476,976 |
Per-role sha256 provenance ships in kit-build.json on the card.
What's new
| Area | |
|---|---|
| Dashboard v2 | Desks, zone model, icon set v5, gauge hover readout, motion + type-scale pass |
| 3D twin | Composed live scene at #/twin, 134-GLB model pipeline, twin field model |
| Settings & preferences | Passes S1–S5 — ~190 knobs across a 12-section IA |
| Cameras | Fixed-mount IP camera per tent, timelapse, plant regions |
| Light / PPFD | Maker PPFD map + 3D surface, per-fixture CannaLib catalog binding |
| Automation | Rule engine v2 — compound triggers, window/debounce/hysteresis/max-age |
| Zigbee | UX phases 0–4, device-type catalog, every bound datapoint becomes a fleet entity |
| Tuya | Local lane T1 |
| ESPHome toolchain | Host update helper, rollback, canary-first fleet rollout, capped below ESPHome 2026.8 |
| HA removal | Lovelace loader, HA scaffolding and Twin IIFE path deleted; SNTP-only time |
| Naming | SPA identifiers Seat/POT → Probe/Plant |
| Fixes | ~45 live-audit items, Sonoff relay honesty, history bucketing, calibration bounds |
Build fixes behind this release
The kit firmware build had been dead for weeks — unnoticed, because the live hub firmware does not use the affected component and only the image bake exercises that path.
dsc_fleet_setupdid not compile on ESPHome 2026.6.5 —wifi::ScanResultsLockwas removed upstream,WiFiScanResult::get_ssid()became aStringRef, andhub_mac_str()/panel_mac_str()were defined without header declarations.esp_http_clientis excluded from ESP-IDF builds by default — so pureesp-idftargets (panel, probes) could not find the header while thearduinohub resolved it by accident. Now declared viainclude_builtin_idf_component().- Kit binaries were located with a
find -newerprobe that assumed every compile relinks; a cached build is a success that rewrites nothing, so the bake aborted on valid binaries. Now scoped to the build path ESPHome itself reports. - The
thin-catalogcannalib service could not start on a card — neither its build context nor a prebuilt image shipped. Both now do.
Upgrade notes
- No fleet reflash is required. Expected firmware stays
8.0.0.0; the version only moves when the ESPHome source changes and a flash happens. - Flash
dsc-hub-8.1.0-arm64.img.xzwith Raspberry Pi Imager (Use custom) for Pi 4 / Pi 5 aarch64, prefer Ethernet on first boot, then open#/setup. - The thin catalog is opt-in:
docker compose --profile thin-catalog up -d.
Assets
dsc-hub-8.1.0-arm64.img.xz is the flashable image. The uncompressed 2.6 GB .img is not attached — it exceeds GitHub's 2 GiB per-asset limit. Decompress the .xz, or rebuild with services/dsc-hub/image/bake-on-linux.sh.
sha256 dsc-hub-8.1.0-arm64.img.xz 7eb0895b8cc5b0d85aaefce92f62c135852329036f1d8b902867d6a135f602b2
sha256 dsc-hub-8.1.0-arm64.img 62577365edf1f784aef5bf4f787ca31ad6833a1b293c196157a203cb1c1e77ae
sha256 dsc-hub-8.1.0-docker.tar.gz 0587681bf2b843667e92b5bf9a6773171ff8f99f7b0ef91e61311283d6069b53
Docker tar contains dsc-hub-brain:8.1.0, dsc-hub-cannalib:8.1.0, eclipse-mosquitto:2, koenkk/zigbee2mqtt:2.
DSC-HUB 8.0.0 AlphaPi
DSC-HUB 8.0.0 AlphaPi
First alpha of the Pi-only kit release: factory SD image path, Setup wizard, USB-on-Pi flash APIs, Ethernet-first SoftAP policy.
Product front door: README.md
Flash
- Raspberry Pi Imager → Use custom →
dsc-hub-8.0.0-arm64.img.xz - Boot Pi 4/5 → SPA on LAN (
dsc-brain.local:8787) or Pi SoftAP if no Ethernet - Open
#/setupand follow USB flash / fleet join / Zigbee
Artifacts
| File | Notes |
|---|---|
dsc-hub-8.0.0-arm64.img.xz |
Flashable SD (~608 MB) |
dsc-hub-8.0.0-docker.tar.gz |
Preloaded brain 8.0.0 + mosquitto + z2m |
dsc-hub-8.0.0-payload.tar.gz |
Compose/units overlay (SPA is inside brain image) |
Alpha caveats
- Kit firmware
.binplaceholders — replace with real ESPHome kit builds before production flash - Stock Lite may still need Docker present for first-boot image preload
- HA lab removed from repo; brain keeps HA-shaped entity dialect
Docs
- README — kit get-started, fleet, develop
- Spec:
docs/superpowers/specs/2026-09-06-dsc-kit-sd-installer-design.md - Fleet SoftAP detail:
SETUP.md
DSC-HUB v5.1.0
DSC-HUB v5.1.0
Full-fleet force to 5.1.0: lab + kit firmwares, Sonoffs, Sync add-on,
HA packages, DSC-HUB Pro dashboard, and Learn Phase B (opt-in wait clamps).
| GitHub tag | v5.1.0 |
| Hub / panel / pots / Sonoffs | 5.1.0 |
| Sync add-on | 5.1.0 (sync_esphome: true default) |
| HA surface | sensor.dsc_ha_surface_version = 5.1.0 |
| Dashboard | DSC-HUB Pro · URL dsc-hub-pro |
| ESP-NOW tag | 54727 (0xD5C7) |
| Phase B | Default off — wait bases only |
Install: INSTALL.md · Upgrade: UPGRADE.md ·
Add-on: scripts/ADDON.md ·
QA: docs/qa/
Repo: https://github.com/weddas/DSC-HUB · branch master
What’s new in v5.1.0
| Layer | Change |
|---|---|
| Fleet version | Force 5.1.0 on hub, panel, pots, Sonoffs, all kits, add-on, stubs |
| Learn Phase B | Opt-in HA→hub ladder wait writes; floors/ceils; lock; never failsafe/min-off/fans |
| Learning UI | Phase A+B status, wait entities, resets, last-sample age |
| Fleet chip | sensor.dsc_fleet_version_status on Home + System table |
| Root zone | sensor.dsc_coldest_root_zone_temp / hottest (voted + plausible) |
| Notify | input_text.dsc_notify_service + script.dsc_notify |
| Sync | Atomic stage copy, last-good rollback, version/SHA marker, broader reloads, sync_esphome default true |
| Door magnet | Lab lock.4x8_* labeled as room door release |
| QoL | Multi-lever sample skip, alert-count plant-spec zeros, dead-demand chip, AC/mister NO ACTUATOR cues |
Not in this cut: auto-flash ESP devices; hub reconnect snapshot-restore;
remote ESP log capture; renaming dsc_v4_* filenames.
Rollout on all systems
- Push
master/ tagv5.1.0 - On each HAOS: Update DSC-HUB Sync add-on to 5.1.0 → Start/restart → wait for “Synced to …”
- Restart HA Core once (new Learning / version helpers)
- Confirm
/dsc-hub-pro/home+ fleet chip shows HA surface 5.1.0 - ESPHome: Validate/Install each device to firmware 5.1.0 (lab + field kits)
- Chip → ok
Firmware Install remains manual per device.
Beyond OTA
| Surface | Deploy |
|---|---|
| Packages / Pro dashboard / www | Sync add-on on push |
ESPHome stubs (ref: v5.1.0) |
Sync (sync_esphome: true) |
| Sync add-on binary | Supervisor Update once per HAOS |
| Device firmware | Manual Validate/Install |
Cursor edit → push master → DSC-HUB Sync (~60s)
→ ESPHome Install (devices, manual)
DSC-HUB v5.0.0
DSC-HUB v5.0.0
First major cut after the v4 alpha line. Headline: Home Assistant surfaces
ship through a first-party HAOS add-on (push master → sync to /config).
Hub firmware string matches the GitHub tag.
| GitHub tag | v5.0.0 |
Hub sensor.dsc_hub_firmware_version |
5.0.0 |
| Panel | DSC-CONTROL 4.0.11 (flash with hub if ESP-NOW tag/wire changed) |
| Pots | dsc-pot-common 4.0.1 |
| Dashboard | UX v0.2 · URL dsc-hub-v4 (YAML mode) |
| ESP-NOW tag | 54727 (0xD5C7) on hub and panel |
| HA delivery | DSC-HUB Sync add-on · scripts/ADDON.md |
Install from scratch: INSTALL.md · add-on: scripts/ADDON.md
Kit SoftAP (no HA): SETUP.md
Repo: https://github.com/weddas/DSC-HUB · branch master
What’s new in v5.0.0
| Layer | Change |
|---|---|
| HAOS Sync add-on | Custom add-on repo = this GitHub URL; polls master, copies packages / dashboard / www, reloads HA |
| Automations package | packages/dsc_v4_automations.yaml (no more merge into live automations.yaml) |
| YAML Lovelace | configuration.snippet.yaml — dashboard file under /config/dashboards/ |
| HACS (optional) | SYSTEM MAP card via Dashboard custom repo (dist/ + hacs.json) |
| Kit SoftAP setup | Optional factory path without HA (SETUP.md, *-kit.yaml, dsc_fleet_setup) |
| Hub firmware | 5.0.0 — WiFi moved to lab/kit packages; SoftAP provisioning path |
Still true from v4 alpha: ESP-NOW-primary panel↔hub, climate ladder on hub,
Phase A learn gauges, SYSTEM MAP card.
From-scratch file map (summary)
| Repo | HA destination |
|---|---|
homeassistant/packages/dsc_v4_*.yaml |
/config/packages/ (helpers + automations + learn) |
homeassistant/dashboards/dsc-hub-v4-dashboard.yaml |
/config/dashboards/ (YAML-mode URL dsc-hub-v4) |
homeassistant/esphome/dsc-*.yaml |
/config/esphome/ |
homeassistant/www/dsc-system-map.* |
/config/www/ (or HACS) |
firmware/v4/secrets.yaml.template |
/config/esphome/secrets.yaml |
Prefer the DSC-HUB Sync add-on over hand-copy after the first boot:
scripts/ADDON.md.
Full steps: INSTALL.md.
Beyond OTA — HA surfaces vs firmware
ESPHome Install only updates device firmware (still manual per device).
Primary HA delivery: DSC-HUB Sync add-on
(dsc-hub-sync/ · scripts/ADDON.md).
| Surface | Path | Deploy |
|---|---|---|
| Packages + automations | homeassistant/packages/dsc_v4_*.yaml |
HAOS add-on |
| Lovelace dashboard YAML | homeassistant/dashboards/dsc-hub-v4-dashboard.yaml |
HAOS add-on |
| www SYSTEM MAP assets | homeassistant/www/dsc-system-map.* |
HAOS add-on (optional) |
| SYSTEM MAP card (alt) | dist/DSC-HUB.js |
HACS Dashboard (optional) |
| ESPHome stubs | homeassistant/esphome/dsc-*.yaml |
Add-on option / manual · ref: v5.0.0 |
| Device firmware | firmware/v4/ via stubs |
Manual Validate/Install |
Cursor edit → commit/push master → DSC-HUB Sync add-on (~60s)
→ ESPHome Validate/Install (devices)
Hub + panel: flash together when tag, MAC, or 0xD* wire contract changes.
Flash order (first bring-up / hub major bump)
- Hub (
dsc-hub.yamlordsc-hub-kit.yaml) → expect firmware5.0.0 - Panel (
dsc-control.yaml) → 4.0.11 (USB if heap-sensitive) - Pots → Sonoffs
Not in this cut (backlog)
- AC / clone-mister followers (hardware)
- Auto-flash fleet on git push (intentionally never)
- Bidirectional HA→git sync
Previous cut
v4.0.0-alpha.1 — first published ESP-NOW-primary alpha (hub string matched tag).
v4.0.0-alpha.1
DSC-HUB 4.0.0-alpha.1 (hub primary brain)
First published alpha of the v4 ESP-NOW-primary fleet. Tag matches sensor.dsc_hub_firmware_version.
Pairing
| Piece | Version |
|---|---|
| Hub | 4.0.0-alpha.1 |
| Panel | DSC-CONTROL 4.0.11 |
| Pots | dsc-pot-common 4.0.1 |
| Dashboard | UX v0.2 · URL dsc-hub-v4 |
| ESP-NOW tag | 54727 (0xD5C7) |
From-scratch install
Follow INSTALL.md — copy map:
| Repo | HA destination |
|---|---|
homeassistant/packages/dsc_v4_*.yaml |
/config/packages/ |
homeassistant/automations.yaml |
merge / include |
homeassistant/dashboards/dsc-hub-v4-dashboard.yaml |
Lovelace URL dsc-hub-v4 |
homeassistant/esphome/dsc-*.yaml |
/config/esphome/ (stubs pin ref: v4.0.0-alpha.1) |
homeassistant/www/dsc-system-map.* |
/config/www/ + Lovelace resource |
firmware/v4/secrets.yaml.template |
/config/esphome/secrets.yaml |
Notes
- Pot/tank push notifiers removed (bad notify service); alert binary sensors remain.
- Climate/safety automations now target
notify.mobile_app_chriss_iphone_max(edit to match your devices). - Backlog / Beyond OTA: see RELEASE.md.
Flash order: hub → panel → pots → Sonoffs. Expect hub firmware string 4.0.0-alpha.1 after Install.