Skip to content

[Bug]: Group/scene status never updates — no member-change notification (pyisy-3.x regression) #173

Description

@shbatm

Summary

Group is pull-only: group_all_on / group_any_on are computed on access from the member node registry, with no event-subscription plumbing. pyisy 3.x's Group.__init__ subscribed to every member's status_events and re-published its own status_events, so consumers got pushed updates. pyisyox dropped that and never replaced it.

Impact

The controller emits no wire event for a group address (groups have no wire status). Consumers that subscribe per-address for the group never get notified when a member changes, so a scene/group entity freezes at its load-time value. Found in a live isy994→udi_iox cutover: a [p] follower scene switch stayed on regardless of the real member state, so HA never re-read it (a curtain follower automation's stale-check could never pass on voice/dashboard changes).

Root cause

Regression from pyisy 3.x (pyisy/nodes/group.py subscribed to member status_events; pyisyox runtime/group.py is computed-on-access only, deliberately "no event-subscription plumbing"). The consumer can't reasonably own this — it doesn't know group membership at the event layer.

Fix

PR #172EventDispatcher takes the group registry, builds a member → groups reverse index, and re-emits a synthetic group-addressed ST event after each member property update. Notification only (not fed back through feed(), cannot recurse). Consumer-transparent.

Related

hacs-udi-iox#85 is a separate concern (event-only KPL buttons lose steady ST visibility); this issue is the actual cause of the frozen-scene-switch symptom.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions