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
Stub. To be written up after a design interview.
Decisions
- acceptedThe 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.
- acceptedMQTT 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.
- acceptedPoints 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.
- acceptedSensors 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.
- acceptedThe 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.
- acceptedNever 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.
- acceptedControl 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.
- acceptedWhen 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.