Skip to content

Show DEGRADED node health in the CONNECTED NODES view #40

Description

@mottihoresh

Context

PanelGroup nodes report health to the PanelBridge over CAN; the bridge surfaces the connected-node list to this client via the DCS-BIOS node-status export — the CONNECTED NODES panel (id · up-time · rx). Today a node is binary: online (green) or gone.

But a node can be alive and serving inputs while a peripheral has failed — e.g. an I2C OLED/expander that the firmware circuit breaker (OpenSkyhawk#164) has taken offline. That node is DEGRADED, not down, and the operator should see the difference.

What's needed here (client)

Once the firmware extends the node-status export with a per-node health field (HEALTHY / DEGRADED) + a fault code (which peripheral/subsystem tripped):

  • Parse the new field from the node-status message.
  • Render DEGRADED distinctly in the CONNECTED NODES list — e.g. an amber dot/badge instead of green (keep online = green, offline = dropped, as today).
  • Surface which peripheral failed (tooltip or sub-line) from the fault code.

Dependencies / coordination

  • Blocked on OpenSkyhawk#163 (firmware: HeartbeatPayload health field → PanelBridge node-status export). The exact wire encoding is defined there — coordinate the field layout before implementing.
  • Firmware seed already in place: DrumDisplay reports Fault::Mux / Fault::Device (OpenSkyhawk#166), the per-peripheral signal this rolls up.

Acceptance

  • A node with a circuit-broken peripheral shows DEGRADED (amber) + the failed peripheral, while staying in the list (not dropped as offline).
  • Healthy nodes render unchanged (green).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority: lowNice-to-have; not critical

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions