In EEP kann man schon seit einiger Zeit einen Zugverband (ZV) auf eine andere Anlage senden über ein Netzwerk. Dazu sind die virtuellen Depots mit zwei IP-Adresseinträgen ausgestattet worden. Ein Eintrag für die IP-Adresse des Rechners, auf dem das Empfänger-Depot aktiv ist und einer für eine Gegenstelle, von der ein ZV empfangen werden soll.
Das funktioniert übrigens auch mit zwei verschiedenen Gegenstellen (Beispiel in Datei „Anlagen ABC.zip“). Und um weitere Informationen auszutauschen, kann man das Modul LuaSocket von Diego Nehab benutzen.
Ein Listener-Talker-Beispiel dazu (Datei „Lua53ListenTalk.zip“), erstmal noch unabhängig von EEP, habe ich ebenfalls prinzipiell getestet.
Und in einem dritten Beispiel (Datei „AnlageSender.zip“) habe ich getestet, ob EEP-Lua eine Nachricht an einen Zuhörer senden kann. Das EEP-Lua auch Text-Dateien einlesen und speichern kann, ist bekannt.
Die o.g. Dateien habe auf meiner Hompage gesichert. Neugierige dürfen sich die natürlich gerne anschauen und ggf. kommentieren (http://www.moevenbaer.de rechts oben und dann im Ordner „LuaAddOns-Test mit Lua53“).
Idee zu einem möglichen Grundprinzip:
Auf jedem Rechner läuft eine Anlage und eine extra Lua-Instanz (eLI). Aus dem Anlagen-Script heraus werden Nachrichten versendet. Diese Nachrichten werden von der eLI empfangen und ausgewertet.
Die eLI ist sinnvoll, weil der Empfang von Nachrichten ein Lua-Script „blockiert“ bis eine Nachricht eintrifft und eine Benutzng von „Timeout-Funktionen“ den zuverlässigen Datenverkehr erschwert.
Für jede Zielanlage gibt es eine Depot-Einfahrt, deren Depot-Ausfahrt mit einem Sende-IP-Eintrag versehen und aktiviert ist. Es kann sinnvoll sein (und es ist m.E.), eine sinnvolle Ausfahrt zu ermöglichen, wenn keine LAN-Verbindung zustande kommt.
Weiterhin gibt es eine Depot-Ausfahrt, die auf Wunsch mit einer Gegenstelle verbunden wird, die einen ZV senden möchte. Das kann die gleiche Depot-Ausfahrt sein, oder eine andere.
Vorschlag für einen Grundaufbau:
Vor der Depot-Ausfahrt gibt es ein Einfahrtsignal ES. Vor dem ES liegt ein Fahrzeugkontakt FKE und hinter ihm ein Signalkontakt SKES zum Rücksetzen des Signals. Der FKE löst die Zuganmeldung aus. Das Signal wird auf Fahrt gestellt, wenn die positive Rückmeldung zur Empfangsbereitschaft erfolgte.
Bei der Gegenstelle gibt es ein Empfangs-Depot, aus welchem der gesendete Zug ausfährt. Hinter der Depot-Ausfahrt gibt es anlog zum Sende-Depot ein Ausfahrtsignal AS mit vorgelagertem Fahrzeugkontakt FKA und dem nachgelagerten SKAS. Der FKA löst die Zugankunftsquittung aus.
Anmeldungen und Rückmeldungen erfolgen über Nachrichten. Jede Nachricht enthält den Namen des ZV, weitere Angaben zum ZV, die nicht mit übertragen werden, weitere notwendige Informationen und einen Kommunikationsstatus.
Der Nachrichtenaustausch zwischen dem Empfänger (eLI) und der zugehörenden Anlage erfolgt mit Hilfe einer Kommunikations-Textdatei (KTD), die eine Nachrichtentabelle enthält.
Herausforderungen:
- Was passiert beim gleichzeitigen Zugriff auf die KTD? Das eLI greift schreibend auf diese Datei zu, ein EEP-Lua-Script lesend. Das Senden von Nachrichten erfolgt aus einem EEP-Lua-Script.
- Wie verfährt man mit „eigenen“ Zugverbänden, die noch nicht zurück gesendet wurden?
- Wie verfährt man mit „eigenen“ Zugverbänden, die noch nicht „abgeliefert“ werden konnten? Hilft dabei die Funktion EEPGetTrainFromTrainyard weiter?
- Wie verfährt man mit „fremden“ Zugverbänden, die noch nicht zurück gesendet werden konnten?
- Wie verfährt man mit „fremden“ Zugverbänden, die zwar angemeldet sind, aber nicht mehr eingetroffen sind?