Model Train-related Notes Blog -- these are personal notes and musings on the subject of model train control, automation, electronics, or whatever I find interesting. I also have more posts in a blog dedicated to the maintenance of the Randall Museum Model Railroad.
2022-08-03 - Conductor 2: An Update on Implementation
Category Rtac
Although I haven’t posted anything here lately, I’ve spent most of the summer time completing the implementation of the engine for Conductor 2. The new kotlin engine is working well, with a suitable battery of unit tests, and I have a functional simulator to exercise the engine before I try it at the museum. I also converted the latest Conductor 1 script to the new Conductor 2 DSL. It’s all in the bitbucket repo under the dev branch:
- conductor/engine2k/src: The new Kotlin-scripting based engine.
- conductor/simul2k/src: The new simulator.
We can compare the Conductor 1 vs Conductor 2 scripts right here:
- script_v4.txt: Script v47 using Conductor 1 ANTLR-based language.
- script_v47_v2.conductor.kts: Script v47 using Conductor Kotlin-based language.
Todo list so far:
- ✅ Block sequence management.
- ✅ Implement regular timers.
- ✅ Implement after-timers.
- ✅ Remove the need for “reset timer” that can’t work in 2k.
- ✅ Simulator: display sensors, blocks, turnouts + simulation toggle.
- ✅ Simulator: display engines + location on track (current node + direction).
- ✅ Simulation: Simulate engine movement.
- ✅ Implement Throttle to JMRI. Daggerize.
- ✅ Implement Sensors / blocks. Daggerize.
- ✅ Blocks are a copy-paste of Sensors right now.
- ✅ Implement Turnouts. Daggerize.
- ✅ Support error recovery mode.
- ✅ Store current state / reload.
- ✅ Compute start state + recovery method.
- ✅ Throttle customization for light, bell, sound. Done via functions for now.
- ❌ Timeout detection (from node to node).
- ❌ “Flaky sensor” detection and compensation.
Actual deployment:
- ✅ Integration with JrmiProvider.
- ✅ Throttles, Sensors, Turnouts.
- ✅ KV Server.
- ✅ Export variables in onExecHandle.
- ✅ ZeroConf advertising.
- ✅ JSON Server.
- ✅ GA export.
There are only two items left to complete on the list. More importantly, this is now ready for actual trial at the museum.