🌐 Lees deze README in het Nederlands
🎯 An open-source project to automate model railways.
JCS (Java Central Station) lets you design, control, and automate your model railway. With JCS you can:
- Draw and edit the layout (tracks, blocks, turnouts, sensors).
- Place locomotives manually or via command stations and run them in manual or autopilot mode.
- View live feedback: sensor events, switch (turnout) positions, block occupancy.
- Simulate the system with a Virtual Command Station if you don’t yet have physical hardware.
- Remote visibility via VNC for supported command stations.
It’s built for hobbyists who like software, trains, and tinkering.
Many commercial model railway automation tools are powerful but not open, or are restricted in flexibility. JCS is about:
- Learning & experimentation
- Open source: free to use, inspect, modify
- Flexibility: support for different hardware, and growing modularity
- Fun: hobby projects don’t always need to be ultra polished—they should let you play, experiment, and learn
- Support for multiple command stations: Märklin CS2/CS3, ESU ECoS, DCC‑EX, HSI‑S88, etc.
- Automatic train running via Autopilot
- Manual driving via Throttle or Driver Cab
- Graphical layout editor and live sensor/block feedback
- Virtual Command Station mode (no hardware required)
- Dispatcher view, Cruise Control, turnout control
- Multi-language support (NL/EN) in progress
The Autopilot module allows fully automatic train operations once locomotives are placed in blocks with directions set.
- Each train gets its own dispatcher.
- Locomotives move block-by-block into free neighboring blocks.
- Sensors confirm departure and arrival.
- Autopilot marks blocks free/occupied dynamically to prevent collisions.
- Start one locomotive manually or all at once via Cruise Control.
➡️ See full details in AUTOPILOT.MD
Before you run or build:
- Java 21 (e.g., Temurin JDK or equivalent)
- A supported command station or virtual mode setup
- Layout must satisfy some constraints:
- Each block has working feedback sensors
- Turnouts (switches) are not part of blocks
- At least two blocks (for meaningful autopilot behavior)
- Clone the repo
- Run in Virtual Command Station mode
- Use the layout editor to draw a simple layout
- Place a locomotive, set its direction, enable Autopilot or manual driving
- Ensure your command station is connected and configured
- Set up feedback sensors, blocks, turnouts, etc.
- Draw the layout in the layout editor
- Place trains, set directions
- Enable Autopilot or use manual Driver Cab
- Full build instructions are in BUILDING.md
- Use Maven (or your IDE) to compile sources
- A prebuilt JAR may be available via Releases
| Status | What works | In progress / Planned |
|---|---|---|
| ✅ Stable features | Layout editor, Autopilot, manual driving, CS2/CS3/ECoS support, sensor feedback | Signal displays in autopilot, GUI polish, unit tests |
| Internationalization, documentation, more command station backends | Multi-language UI, better styling & UX, enhanced autopilot decision logic |
We welcome all kinds of contributions:
- Bug reports & issue suggestions
- Feature requests & pull requests
- Help with docs (especially translations)
- Test writing
- GUI / UX improvements
- A Chat or email
- Cup of coffee
Please follow the project’s conventions and open an issue to discuss large changes.
This project is licensed under Apache‑2.0. See the LICENSE file for details.
Thanks to all contributors, testers, and model railway enthusiasts who help make JCS better every day.
|
Support this project and keep the trains rolling! |
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Thanks for being a part of the JCS-community — every contribution, suggestion or cup of coffee keeps this project alive! 🚂✨