Skip to content

Implement post-inclusion node setup orchestration #162

Description

@dfederm

Per the Central Static Controller (CSC) role spec (§8.4.1), after including a node the controller MUST perform several setup steps. Currently the only post-inclusion step is an interview - none of the required network configuration happens.

Scope:

  • After successful inclusion (extend Implement Node Add/Remove #17's AddNode flow), perform these steps in order:
    1. Set Lifeline destination - AssociationSet(groupId: 1, nodeIds: [controllerNodeId]) to the new node's root device. If the node supports Multi Channel Association (Implement Multi Channel Association Command Class (0x8E v5) #140), use that instead.
    2. Assign SIS return route - Call AssignSucReturnRoute so the node can reach the SIS/controller.
    3. Configure Wake Up (for battery nodes) - if the node supports WakeUp CC and is a sleeping node type (PEN/RSEN/WOEEN), send WakeUpIntervalSet with the controller's NodeID as the destination and a reasonable interval (use the device's default or advertised min/max).
    4. Interview - the existing interview flow (GetNodeProtocolInfoRequestNodeInfoInterviewCCs)
  • The setup must handle failures gracefully — if lifeline setup fails, still proceed with interview.
  • For battery nodes, steps 1-3 must happen during the initial wake window after inclusion (before the node goes back to sleep).

Design notes: This logic should be a well-defined method on Controller (e.g., ConfigureNewNodeAsync) called after inclusion succeeds. The WakeUp configuration requires awareness of the node's role type, which comes from the GetNodeProtocolInfo response.

Depends on: #17 (Node Add/Remove), #161 (Association CC), #140 (Multi Channel Association - optional, fall back to basic Association)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions