Configuration - topological-state/stskit GitHub Wiki

Die Konfiguration eines Stellwerks legt die Zuordnung von Einfahrten/Ausfahrten, Bahnsteigen, Sektoren, Bahnhöfen und Strecken sowie einige weitere Einstellungen fest. Die Konfiguration wird beim ersten Start eines Stellwerks (wenn vorhanden) aus einer im Programmpaket enthaltenen Vorlage übernommen oder sonst mit einer Reihe von Algorithmen automatisch erstellt. Die automatische Konfiguration reicht in den meisten Fällen für den Spielbetrieb aus. In einigen Stellwerken, um kleinere Mängel auszubügeln, oder um eigene Präferenzen umzusetzen, muss die Konfiguration aber manuell nachbearbeitet werden. Solange dafür noch Dialogfenster implementiert ist, muss dies direkt in der Konfigurationsdatei erfolgen.

Name, Speicherort und Format

Die Konfigurationsdateien werden per Voreinstellung im Homeverzeichnis des Users erstellt. Ein anderes Verzeichnis kann über eine Kommandozeilenoption gewählt werden.

Beispiele von Konfigurationsdateien sind im config-Ordner des stskit enthalten. Da die Dokumentation auf dieser Seite möglicherweise nicht aktuell ist, empfiehlt es sich zusätzlich, die Vorlagen oder automatisch erzeugte Konfigurationen zu studieren. Konfigurationsdateien zu weiteren Stellwerken können dem Autor zugeschickt oder via Pull-Request angeboten werden.

Der Name einer Konfigurationsdatei setzt sich aus der Stellwerk-ID und der Endung json zusammen. Das Beispiel unten zeigt die Datei 812.json. Der Inhalt der Konfigurationsdateien ist im JSON-Format. Er gliedert sich in die im weiteren beschriebenen Abschnitte.

Bei JSON-Dateien auf Kommas und Klammern achten! Leerzeichen und Zeilenwechsel ausserhalb von Anführungszeichen können weggelassen werden. Umlaute im UTF-8 Encoding sind erlaubt, werden aber vom Plugin als \u.... Codes geschrieben.

Anschlussgruppen

Anschlussgruppen fassen zusammengehörende Ein- und Ausfahrten zusammen, wenn diese separate Namen oder Gleisnummern haben. Anschlussgruppen erscheinen in stskit v.a. im Modul Ein-/Ausfahrten.

Bahnhöfe und Bahnsteiggruppen

Bahnsteiggruppen fassen zu einem Bahnhof gehörende Bahnsteige zusammen.

Stellwerksim definiert kein separates Konzept eines Bahnhofs (Fahrziele sind immer Gleise). Oft können Bahnhöfe anhand eines Präfix im Gleisnamen erkannt werden, oft aber auch nicht. Ob gewisse Bahnhofteile wie Abstellgruppen als separate Bahnhöfe erfasst werden, ist zu einem gewissen Grad auch Geschmackssache.

In stskit wird die Bahnsteiggruppierung z.B. im Modul Gleisbelegung deutlich.

Sektorzuordnung

Gleise können in Sektoren unterteilt sein, wenn mehrere Züge hintereinander halten. In stskit wird die Sektorzuordnung für Sektorwarnungen im Modul Gleisbelegung verwendet.

Wenn Sektoren wie üblich durch einen Buchstaben hinter der Gleisnummer angegeben werden, arbeitet die automatische Erkennung zuverlässig.

Streckendefinition

...

Beispiel Lötschberg Nord

Die folgende Beispieldatei zeigt, wie im Stellwerk Lötschberg Nord, Anschlüsse (z.b. die unter KA Depot) zusammgefasst werden. Der vorgeschlagene Gruppenname kann manuell abgeändert werden, damit der kurze Name KA für den Bahnhof zur Verfügung steht. Gruppennamen müssen unter allen Anschlussgruppen sowie Bahnsteiggruppen eindeutig sein! Die Reihenfolge der Gleisnamen in den einzelnen Gruppen ist beliebig.

Bei den Bahnhöfen habe ich z.B. die Bahnsteige des Autoverlads und des Personenbahnhofs zusammengefasst. Man kann die Bahnhofsteile auch separat lassen. Je nach Gleisplan eines Stellwerks können dadurch aber Züge im Bildfahrplan fehlen, weil die kürzeste Verbindung an dem Bahnhofsteil vorbei führt.

{
    "_aid": 812,
    "_build": 5832,
    "_name": "L\u00f6tschberg Nord",
    "_region": "Bern - L\u00f6tschberg",
    "_version": 2,
    "anschlussgruppen": {
        "AlpTransit": {
            "__class__": "Set",
            "data": [
                "AlpTransit"
            ]
        },
        "FEB": {
            "__class__": "Set",
            "data": [
                "FEB 503"
            ]
        },
        "Goppenstein": {
            "__class__": "Set",
            "data": [
                "Goppenstein 138",
                "Goppenstein 238"
            ]
        },
        "HOND": {
            "__class__": "Set",
            "data": [
                "HOND"
            ]
        },
        "KA Depot": {
            "__class__": "Set",
            "data": [
                "KA 25-27",
                "KA 13-15"
            ]
        },
        "Spiez": {
            "__class__": "Set",
            "data": [
                "Spiez 202",
                "Spiez 102"
            ]
        },
        "Visp": {
            "__class__": "Set",
            "data": [
                "Visp 842",
                "Visp 742"
            ]
        }
    },
    "bahnsteiggruppen": {
        "BL": {
            "__class__": "Set",
            "data": [
                "BL 3",
                "BL 1",
                "BL 2"
            ]
        },
        "FEB": {
            "__class__": "Set",
            "data": [
                "FEB 502",
                "FEB 501"
            ]
        },
        "FERD": {
            "__class__": "Set",
            "data": [
                "FERD"
            ]
        },
        "FR": {
            "__class__": "Set",
            "data": [
                "FR 6",
                "FR 3",
                "FR 1",
                "FR 4",
                "FR 2",
                "FR 5",
                "FR 7",
                "FR 8"
            ]
        },
        "KA": {
            "__class__": "Set",
            "data": [
                "KA 4",
                "KA 7",
                "KA 2",
                "KA 55",
                "KA 56",
                "KA 3",
                "KA 57",
                "KA 5",
                "KA 6",
                "KA 1"
            ]
        },
        "KG": {
            "__class__": "Set",
            "data": [
                "KG 1",
                "KG 2"
            ]
        },
        "MUE": {
            "__class__": "Set",
            "data": [
                "MUE 2",
                "MUE 1"
            ]
        },
        "REIK": {
            "__class__": "Set",
            "data": [
                "REIK 2",
                "REIK 1"
            ]
        },
        "WENE": {
            "__class__": "Set",
            "data": [
                "WENE"
            ]
        }
    }
}