Releases: radioactive-bbs/shelly_plug_led
Releases · radioactive-bbs/shelly_plug_led
Release list
v1.5.0 — Power Strip support, independent on/off colors, audit fixes
Shelly Power Strip support, independent on/off colors, and an audit pass
This is the first tagged release of this fork. It builds on @ishiharas's original shelly_plug_led and adds the following on top of it.
New features
- Shelly Power Strip (Gen4) support. The device picker now recognizes power strips, not just single plugs, and the RPC client auto-detects whether a device speaks
PLUGS_UI(Plug S) orPOWERSTRIP_UI(Power Strip). - Independent on-color / off-color entities. Each LED now gets two light entities — e.g.
LED Ring On ColorandLED Ring Off Color— matching the device's native switch-mode LED, which already shows a different color depending on the relay's own state. Set red-on/green-off once and the device handles it entirely in firmware, with no Home Assistant automation involved and no dependency on Home Assistant being online. - Fully independent toggles. Turning one color entity off only dims its own color slot to 0 brightness; it no longer forces the shared LED mode off and no longer affects the sibling entity. Previously both entities mirrored one shared on/off state, which made the toggle largely meaningless.
- Diagnostics support.
Settings → Devices & Services → Download diagnosticsnow works for this integration and redacts the stored username/password. - Visible reset failures. The "Reset LEDs to Default" button now raises a real error in the UI if the reset RPC fails, instead of silently doing nothing.
Fixes (from a critical code audit this release)
- Device resolution. The config flow no longer blindly picks
entry_devices[0]for a Shelly config entry. Newer multi-outlet devices register a physical "root" device plus one child device per output, and picking by list position could land on the wrong one (confirmed against real hardware, where it selected a device with no model info). The root device is now resolved deterministically by identifier shape, with sibling devices checked for a model string as a fallback. - Race condition. The on-color and off-color entities for one LED share a single coordinator; a refresh triggered by one entity's write could previously wipe the other entity's still-in-flight optimistic UI state. Each entity now tracks its own pending-write count and only clears its optimistic state once its own writes have settled.
- Digest auth hardening.
realm/nonce/opaquevalues taken from the device'sWWW-Authenticatechallenge are now sanitized before being interpolated into the outgoing Authorization header (defense-in-depth against header-value injection from a compromised device or LAN MITM). - Simplified LED-component probing. Real-hardware testing showed a device only ever answers one of
PLUGS_UI/POWERSTRIP_UIsuccessfully (the other 404s outright), soget_config()now uses simple first-success-wins instead of probing every component and comparing results.
Also in this release
- Manifest
documentation/issue_trackerpoint at this fork;codeownerscredits both the original author and this fork. - README rewritten: features, supported hardware table, entities reference, the on/off-color model explained in depth, the Power Strip's shared-color-slot behavior, and a troubleshooting section.
Full diff: bda05cf...v1.5.0