Project

Layout Orchestration

The backend and operator UI at the centre of the system. It owns the MQTT contract every other part speaks.

Status
active
Platform
Node · TypeScript · React
Source
bazauto/layout-orchestration

Stub. To be written up after a design interview.

Decisions

  • accepted
    The layout starts with track power off

    · Connecting to the command station checks the power state instead of switching it on. Only an operator turns the track on.

  • accepted
    MQTT for hardware, WebSocket for operators

    · Sensors and point feedback talk to the orchestrator over MQTT under a binding contract. Operator devices, including the handheld throttle, use the orchestrator's WebSocket control plane.

  • accepted
    Points are commanded by one device and read back by another

    · Cobalt iP point motors take DCC commands but can't report their position, so position comes from their S2 contacts on a feedback node. That catches hand-thrown points, but creates two mappings nothing cross-checks.

  • accepted
    Sensors must keep talking, and silence is treated differently from lying

    · Every sensor re-sends its reading at least every 30 seconds. A silent sensor degrades only its own blocks, while a garbled message Safe-Stops the layout.

  • accepted
    The track diagram is compiled into the route graph, under operator review

    · Instead of describing the railway twice by hand, as a drawing and as a graph, the drawing is compiled into the graph. The operator reviews the diff and applies it.

  • accepted
    Never guess a stopping distance

    · Automated braking uses only measured track lengths and refuses on unmeasured track. Automation's one invariant is that a train never passes the end of its authority, and where a beam is fitted, the beam breaking is what stops it.

  • accepted
    Control messages are never retained

    · A retained MQTT control message replays to every client that reconnects, which would make a loco move with nobody asking. Control topics are always published unretained.

  • accepted
    When the system is unsure, it stops

    · If sensor, block, MQTT or DCC state becomes unknown, automated movement halts and an operator has to recover it. The system never guesses where a train is.

Log

Nothing logged yet.