Hub-Daten — Entwickler
Warum DTOs?
Der Server bekommt die Daten 1:1 so, wie die Lua-Seite sie aufbereitet. Ein einheitliches Format sorgt dafür, dass Server und Web App dieselbe Struktur erwarten können, unabhängig davon, welche EEP-Daten gerade gemeldet werden.
DTO-Konvention: CeTypes und Listen
Alle Daten werden in eine dreistufige Map-Struktur einsortiert:
ceType : string
└─ dtoId : string | number
└─ dto : table
ceTypeist die stabile Typkennung des Datenbereichs, z.B."ce.hub.TrainStatic"oder"ce.hub.Signal".dtoIdist ein eindeutiger Schlüssel innerhalb des CeTypes, z.B. der Zugname oder die Signal-ID.dtoist eine flache Tabelle mit serialisierbaren Werten — keine Funktionen, keine gemischten Schlüsseltypen.
Ablauf: Wie kommt ein DTO auf den Bus?
- Ein
*DataCollectorliest den aktuellen Zustand aus EEP oder einer Registry. - Eine
*DtoFactorywandelt den Zustand in ein DTO um. - Das DTO wird unter dem richtigen
ceTypeund der richtigendtoIdeinsortiert. - Der zugehörige
*StatePublisherveröffentlicht Änderungen überDataChangeBus.fire*().
Vollständige DTO-Strukturen
Alle CeTypes und ihre DTO-Felder sind in DTO.md dokumentiert.
Informationen für Anwender: README.md