Inregelen Koploper voor gebruik meldingen - rwmodeltrain/departure-board GitHub Wiki

Instellingen Koploper

Om departure-board te kunnen laten reageren op gebeurtenissen die in Koploper plaatsvinden, moet een koppeling worden gelegd. Het is software-technisch niet mogelijk om vanuit de RPi rechtstreeks met Koploper te communiceren, er is echter een alternatieve oplossing die goed werkt. Geïnspireerd door het programma 'Omroeper' wordt gebruik gemaakt van een tussenbestand - Koploper kan real-time meldingen in dat tussenbestand wegschrijven en departure-board kan real-time meldingen uit datzelfde bestand lezen. Het tussenbestand wordt weggeschreven in de Windows-share, zodat zowel Koploper als departure-board toegang hebben.

Logging in Koploper mogelijk maken

Koploper heeft de mogelijkheid om verschillende communicatie-berichten vast te leggen in een logbestand. Dit is vooral bedoeld om, wanneer Koploper niet goed werkt, te achterhalen wat er allemaal naar de centrale is gestuurd. Ditzelfde principe kan echter ook worden gebruikt om specifieke berichten in het logbestand te plaatsen, op het moment dat er iets op de baan gebeurt dat interessant is voor departure-board. We maken daarbij gebruik van het feit dat Koploper kan loggen wanneer een geluid wordt afgespeeld. Niet dat dit specifieke geluid interessant is, het is een manier iets in het logbestand te krijgen dat wij interessant vinden.

Scherm communicatielogging

In het scherm 'communicatie-logging' kan opgegeven worden dat de 'herkomst van geluiden' moet worden gelogd. Open daarvoor het scherm met de communicatie-logging en doe de volgende instellingen. Hierbij is C:\Data\Koploper\ de Windows map die ook als share beschikbaar is gesteld voor de RPi.

Hiermee zal Koploper een melding maken in het logbestand op het moment dat een geluid wordt afgespeeld. Nogmaals, het gaat niet om het geluid, maar om het bericht zelf. Om te zorgen dat Koploper 'real-time' gegevens naar het logbestand schrijft, is het nodig om de communicatie naar dit logbestand op gang te houden. Dit kan door Koploper iedere seconde een bericht te laten schrijven. Dit is geen bericht waar departure-board iets mee doet, het is alleen bedoeld om te zorgen dat Koploper een bericht dat wél interessant is voor departure-board direct wegschrijft. Als de communicatie niet op gang wordt gehouden zal Koploper de meldingen niet direct wegschrijven maar af en toe. Dit is voor gebruik op een vertrektijdenbord niet vaak genoeg.

Iedere seconde een bericht

Om te zorgen dat er iedere seconde een bericht wordt weggeschreven in het logbestand, is een zogenaamde 'speciale actie' nodig. Speciale acties kunnen worden aangemaakt via het menu-item 'Onderhouden', 'Baandefinities' en vervolgens 'Speciale acties'. Maak een nieuwe speciale actie aan met als naam 'Iedere seconde een geluid' met de volgende instellingen:

In het tabblad 'actie' kan men instellen welke actie iedere seconde plaats moet vinden. We kiezen dat er een geluidsbestand afgespeeld gaat worden, want dit zorgt ervoor dat een melding wordt gemaakt in het logbestand. Er moet dan ook een geluidsbestand gekozen worden. Aangezien het niet de bedoeling is dat er daadwerkelijk een geluid wordt afgespeeld, kan hier een 'leeg' bestand gekozen worden. Het hoeft dus geen geluid te bevatten, als het maar een bestandje is met de extensie .wav. In dit geval is een leeg bestand gemaakt met de naam 0.wav.

Deze speciale actie vindt iedere seconde plaats, op het moment dat de communicatie met de centrale wordt opgestart (het groene stoplicht in Koploper). Als dan ook het communicatielogging scherm open staat wordt iedere seconde een bericht weggeschreven in het logbestand. Om de communicatielogging plaats te laten vinden moet het communicatielogging scherm open blijven staan!

Berichten voor departure-board in logbestand

Opbouw van bericht voor departure-board

Een speciale actie zorgt voor de logging van een regel in het logbestand. Bij het wegschrijven van het bericht wordt de naam van de speciale actie opgenomen, departure-board reageert dan ook op de naam van de actie. Er zijn een paar eisen die gesteld worden aan de naam van een dergelijk bericht.

  1. De naam van de speciale actie moet beginnen met 'MSG'
  2. De lengte van de naam is 16 tekens lang.

Hieronder een voorbeeld, het is handig om onderstaande opbouw aan te houden ter herkenning:

MSG_R4_E->M_S1_A

  • MSG: Verplicht
  • R4: Suggestie: De vaste-routenaam in Koploper
  • E->M: Suggestie: Beginletters'van' station en 'naar' station. In dit geval 'Epinal' naar 'Metz' als E->M
  • S1: Suggestie: Spoor 1
  • A: Suggestie: A voor arrival (aankomst), D voor Departure (vertrek)

Instellen van speciale actie

De special actie dient een geluid af te spelen, zodat een melding wordt gemaakt in het logbestand. De melding moet alleen worden gemaakt onder een bepaalde voorwaarde: In het voorbeeld alleen als we zeker weten dat de trein van Route nummer 4 aankomt op station Epinal (met bestemming Metz) op spoor 1. Om de speciale actie op het juiste moment af te laten gaan is een logische actie nodig, waarmee we controleren of aan de voorwaarden voldaan is. Logische acties kunnen worden aangemaakt onder 'Onderhoud', 'Baandefinities' en 'Logische acties'. In het voorbeeld weten we zeker als de trein van Route nummer 4 aankomt op station Epinal op spoor 1, als het treintype TGV van blok 23 naar blok 1 beweegt. Er is een logische actie 'R4_TGV van 23->1' aangemaakt met de volgende voorwaarden:

Deze logische actie wordt vervolgens gebruikt in een speciale actie. Deze speciale actie krijgt de juiste naam (beginnend met MSG) en zal onder de voorwaarde dat de logische actie `R4_TGV van 23->1' waar is de juiste actie uitvoeren, namelijk het afspelen van een geluid.

Voor iedere verandering op het vertrektijdenbord is een bericht nodig. Zowel voor aankomst als vertrek van een trein, voor ieder station, voor ieder spoor. Dit zijn dus veel berichten! Op de Epinal-baan zijn dit in totaal 50 berichten geworden, voor 3 stations.

Een voorbeeld: Er is een TGV trein die 2 stations aandoet, Epinal en Remiremont. De TGV rijdt een virtueel rondje via Metz en komt dan weer aan op Epinal. Op de baan is dat dus Epinal->Remiremont->Epinal.

Op het station Epinal kan de trein binnenkomen op slechts één spoor, namelijk op spoor 1. Dit is zo ingesteld via de vaste route. Voor het station Epinal moeten er vervolgens 2 berichten worden gemaakt:

MSG_R4_E->M_S1_A: Aankomst van de trein op spoor 1 Voorwaarde: Treintype TGV rijdt van blok 23 naar blok 1

MSG_R4_E->M_S1_D: Vertrek van de trein van spoor 1 Voorwaarde: Treintype TGV rijdt van blok 1 naar blok 3

De trein komt ook langs Remiremont. Hiervoor zijn 4 berichten nodig, want Remiremont heeft 2 sporen waar de TGV kan stoppen:

MSG_R4_R->M_S1_A: Aankomst van de trein op spoor 1 Voorwaarde: Treintype TGV rijdt van blok 26 naar blok 28 en heeft blok 29 gereserveerd (spoor 1)

MSG_R4_R->M_S1_D: Vertrek van de trein van spoor 1 Voorwaarde: Treintype TGV rijdt van blok 29 naar blok 44

MSG_R4_R->M_S2_A: Aankomst van de trein op spoor 2 Voorwaarde: Treintype TGV rijdt van blok 26 naar blok 28 en heeft blok 30 gereserveerd (spoor 2)

MSG_R4_R->M_S2_D: Vertrek van de trein van spoor 2 Voorwaarde: Treintype TGV rijdt van blok 29 naar blok 44

Voorbeeld logbestand

Hieronder een gedeelte uit een logbestand, als voorbeeld. Er zijn een aantal regels tussenuitgeknipt voor de leesbaarheid:

31	127516	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
32	128531	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
33	129547	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
34	130563	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
35	131578	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
36	132563	(h): Geluid: 0.wav: Speciale actie: msg_r4_r->m_s2_a
37	132594	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
38	133610	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
39	134625	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
40	135641	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
41	135750	(h): Geluid: 0.wav: Speciale actie: msg_r3_e->f_s1_d
42	136656	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
43	137672	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
44	138688	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
45	139703	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
46	140719	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
47	141735	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
48	142750	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
49	143766	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
50	144781	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
51	145797	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
52	146813	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
94	188453	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
95	189469	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
96	190485	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
97	191047	(h): Geluid: 0.wav: Speciale actie: msg_r2_e->m_s2_a
98	191500	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
99	192516	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
100	193531	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
101	194547	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
102	195563	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid
103	196578	(h): Geluid: 0.wav: Speciale actie: iedere seconde een geluid