Six silent failures found by installing this on a live system
Migrated the reference site off the YAML packages and onto the add-on. Every bug below presented identically: the add-on starts, logs "started", serves its UI, and cannot do its job. - run.sh needs #!/usr/bin/with-contenv sh. s6-overlay sanitises the environment for services, so a plain shebang means SUPERVISOR_TOKEN is absent and every Core API call is 401 - while homeassistant_api: true makes permissions look granted. Startup now prints the token length and probes the API. - Supervisor keys the image by config.yaml `version`, so rebuilding without a bump reuses the old image. Two fixes appeared not to work because of it. - Alpine is musl and has no aiohttp wheel on PyPI; deps now come from apk so nothing compiles on a client's Pi. - Alpine ships paho-mqtt 1.x, which has no CallbackAPIVersion. That raised at construction and took the control loop down with it - so MQTT setup is now wrapped too. Observability must never be able to stop the controller. - MQTT discovery is published from on_connect: paho silently drops QoS-0 publishes issued before the CONNACK, so the previous code announced nothing while logging "MQTT connected". - Repeated failures now log once a minute. Six warnings a second rolled the log buffer and destroyed the startup diagnostics needed to find the 401. - auto_start could never fire, because the store's defaults always supplied auto: False for the fallback to find. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NckgXecasQb2eSsPYNSW6
This commit is contained in:
@@ -1,5 +1,41 @@
|
||||
# Changelog
|
||||
|
||||
## 0.1.6
|
||||
|
||||
Findings from installing this on a live system, replacing a working YAML
|
||||
implementation. Every one of these was silent - the add-on looked healthy while
|
||||
being completely unable to do its job.
|
||||
|
||||
- **`run.sh` must use `#!/usr/bin/with-contenv sh`.** The HA base images run
|
||||
s6-overlay, which starts services with a SANITISED environment. With a plain
|
||||
shebang, SUPERVISOR_TOKEN is simply absent and every Home Assistant call
|
||||
returns 401 - while `homeassistant_api: true` makes the permissions look
|
||||
correctly granted. Startup now logs the token length and probes the Core API,
|
||||
so the next person sees it in one line.
|
||||
- **Bump `version:` for every change.** Supervisor keys the built image by
|
||||
version, so editing source and rebuilding silently reuses the old image. Two
|
||||
fixes appeared not to work because of this.
|
||||
- **Dependencies come from apk, not pip.** Alpine is musl and there are no musl
|
||||
wheels for aiohttp; pip would compile it on the client's Pi.
|
||||
- **paho-mqtt 1.x and 2.x are both supported.** Alpine ships 1.x, which has no
|
||||
`CallbackAPIVersion`; that raised and took the whole add-on down with it.
|
||||
- **MQTT can no longer take down control.** Publisher construction is wrapped -
|
||||
observability must never stop the controller.
|
||||
- **MQTT discovery is published from `on_connect`.** paho drops QoS-0 publishes
|
||||
issued before the CONNACK, so announcing straight after `connect()` published
|
||||
nothing at all while logging "MQTT connected".
|
||||
- **Repeated failures log at most once a minute.** The control loop retries every
|
||||
second; unthrottled warnings rolled the log buffer and destroyed the startup
|
||||
diagnostics needed to debug the 401 above.
|
||||
- **`auto_start` works.** The store's defaults supplied `auto: False`, so the
|
||||
fallback to the option could never fire.
|
||||
|
||||
Known issue: after deleting the MQTT entities from the registry during
|
||||
development, Home Assistant would not re-adopt them from retained discovery -
|
||||
not even after clearing the retained topics and reconnecting. The add-on
|
||||
publishes correct discovery and live state (verified on the broker); this is an
|
||||
HA-side adoption problem and affects status entities only, never control.
|
||||
|
||||
## 0.1.0
|
||||
|
||||
First packaged release. Ports the control loop and the monthly maintenance
|
||||
|
||||
Reference in New Issue
Block a user