Skip to Content
DevelopersDecision records0013 Core-level MQTT bridge for Home Assistant

ADR 0013: Core-level MQTT bridge for Home Assistant

Status: Accepted Date: 2026-10-31

Context

hald publishes Home Assistant discovery for everything physical (ADR-0007), so HA works with no core at all. What HA cannot see from the daemon is what only core knows: the grow cycle, reminders, light hours.

Decision

src/mqtt/bridge.ts is an in-process MQTT client on the operator’s broker (sleepypod  ADR 0019 shape): dormant until settings.mqttUrl, LWT on seedypod/<unit>/core/availability, TLS opt-in with a separate mqttTlsInsecure flag, reconnects on settings change. It publishes retained discovery for reminder binary_sensors with buttons to mark them done, grow day/stage and light-hour sensors, and a “water now” button whose press runs a bounded pump cycle through the HAL (refusals surface via the daemon’s own alert entities).

Consequences

  • Two discovery sources, one HA device (shared identifiers).
  • Core never republishes the daemon’s entities; no duplication, no drift.

Sources: sleepypod/core (conventions and ADR precedents) 

Imported from docs/adr/0013-ha-bridge.md in seedypod/core. Edit it there, not here.

Last updated on