Beetje technisch

 

Naast een Raspbery Pi met daarop Mosquitto en Rocrail, is er nog een WiFi router nodig. Deze router maakt het WiFi netwerk dat gemeenschappelijk wordt gebruikt. Rocrail wisselt berichten uit met de decoders via het "Message Queue Telemetry Transport" (MQTT)  protocol. Mosquitto is de MQTT broker, het "postkantoor".

WiFi netwerk

Binnen het WiFi netwerk moeten de deelnemers een verbinding opzetten. Dit kan met het "User Datagram Protocol" (UDP) of met het "Transport Control Protocol / Internet Protocol" (TCT/IP). Het belangrijkste verschil tussen beide is dat UDP een “fire and forget” protocol is terwijl TCP/IP de overdracht van data peckets binnen bepaalde grenzen zeker stelt. Aan de andere kant biedt UDP de mogelijkheid dezelfde informatie aan meerdere deelnemers te sturen (broadcasting). 

Eltraco past TCP/IP toe vanwege de gegarandeerde overdracht van informatie. Zonodig wordt de verdeling van informatie aan meerdere belanghebbende decoders gedaan door een daaropafgestemd gebruik van de abonnementen van Mosquitto.

Een IP-adres bestaat uit vier tripletten. Binnen het netwerk voor Eltraco wordt voorlopig alleen het meest rechtse triplet gebruikt. Dit geeft de mogelijkheid om ±250 decoders te adresseren. 

Vast toegewezen zijn:

192.168.xxx.1 Rocrail server

192.168.xxx.251 Router

192.168.xxx.253 DCC++ Command Station

192.168.xxx.254 Rasp/Rocrail/Mosquitto

Rocnet protocol

Binnen rocrail is het “Rocnet protocol” gedefiniëerd. Het kan vrijelijk gebruikt worden. Eltraco gebruikt het Rocnet protocol voor het uitwisselen van informatie tussen Rocrail en decoders. De inhoud van het protocol is uiteen gezet in de Rocrail wiki.  

Onderdeel van het protocol is de adressering van de Rocnet berichten. Iedere deelnemer van het Rocnet netwerk is een uniek "knooppunt nummer" toegewezen. Knooppunt nummer 1 is voorbehouden aan de Rocrail server.

Rocnet berichten

Rocnet gebruikt knooppunt nummers voor ieder element in het netwerk.  Zo'n nummer bestaat uit twee bytes, een "Most Significant Byte" (MSB) en een "Least Significant Byte" (LSB). Voor Eltraco wordt het LSB gebruikt. Een byte heeft een maximum waarde van 255, evenals het meest rechtse triplet van een IP-adres.

In Rocrail moet dit knooppunt nummer ingevuld worden in het veld "Bus". Dus het knooppunt nummer is het bus-nummer.

Verder kan een Rocnet deelnemer meerdere poorten hebben. In Rocrail moet het poort nummer ingevoerd worden in het veld "Address". Dat veld accepteert een waarde van 1 tot 255.

MQTT

MQTT is een "Internet of Things" (IOT) protocol om berichten uit te wisselen tussen netwerk deelnemers. Het vergt heel weinig "overhead" en is eenvoudig te gebruiken. Berichten gaan van de zender naar het "postkantoor" Mosquitto. Die berichten komen in een brievenbus met een zekere "topic", onderwerp, dat is toegekend door de gebruiker. Belanghebbende componenten zijn geabonneerd op onderwerpen.

De belangrijkste reden om dit protocol toe te passen binnen Eltraco is de ontkoppeling tussen zenden en ontvangen die ermee bereikt wordt. Het is niet nodig om een synchronisatie procedure te programmeren. Bovendien levert het galvanische scheiding van componenten.

Proces

In andere woorden, Rocrail maakt berichten om te sturen naar decoders. Die berichten worden in een envelop gedaan en naar Mosquitto gestuurd. Mosquitto zorgt ervoor dat die enveloppen bij de decoders komen. Dedecoder haalt het bericht uit de envelop en reageert op de inhoud van het bericht. Dit werkt twee kanten op.

Adressering

Met dit in gedachten is het volgende adres schema ontwikkeld:

Voor decoders is het knooppunt nummer gelijk aan het rechter triplet van het IP-adres van de decoder. Elk poort/uitgang van een decoder wordt aangesproken met zijn poort-nummer te beginnen met "1". Bijvoorbeeld sensor decoder met IP-adres 192.168.xxx.123 heeft bus-nummer 123. De sensoren hebben ieder een nummer uit de serie 1 .. 8. Schakel decoder met IP-triplet 83 heeft bus-nummer 83 terwijl iedere uitgang een nummer heeft uit de serie "1 .. 8". Bij een dubbele wissel decoder is het bus-nummer gelijk aan het IP-triplet terwijl de bezetmeldingen nummer 1 en 2 hebben. Bij een enkele wissel decoder hebben de bezetmeldingen de nummers 1 .. 5.

Bus-nummer "1" is voorbehouden aan Rocrail server.