iPad-app (React Native / Expo) om je modeltreinen te besturen via een ESU ECoS (50200/50210) in je eigen netwerk.
De app is ingericht als een Apple-app op de iPad: een zijbalk links (staand smal, liggend breed), grafiet-tinten, één amber accentkleur en rood alleen voor STOP.
- Centrales: profielen voor meerdere ECoS-centrales (bijv. thuisbaan en clubbaan) met IP-adres en poort; verbinden met één tik, of de demo-modus zonder centrale.
- Overzicht: tellers (locs, wissels, rijwegen, rijdende locs, reactietijd), de baanstatus met STOP/GO, recent bestuurde locs en snel schakelen van wissels en rijwegen.
- Rijden: een cab zoals op de ECoS: loc-plaatje met
[adres] · protocol · soorten een balk met de rijstap (bijv.12/28), een snelheidsmeter in de rijstappen van het protocol (14, 27, 28 of 126), een eindeloos verticaal duimwiel (omhoog scrollen is meer gas, omlaag minder; bij vol gas doet verder scrollen niets en terugdraaien neemt meteen gas terug; de pagina scrolt niet mee), knoppen ← → (rijrichting), − + (één rijstap; vasthouden herhaalt), H (rustig stoppen) en ! (noodstop van deze loc), en alle functies F0–F31 in vier kolommen met icoon, nummer en naam (amber = aan; met handje = alleen zolang je drukt). - Loc wisselen in elk rijscherm: op Rijden met de strook recente locs bovenaan of de knop Wissel loc; in Duo, Multi en op het ECoS-scherm met een eigen Wissel loc-knop per regelaar. Het wisselvenster heeft zoeken en de filters Alle, Recent en Favorieten.
- Duo: twee cabs naast elkaar. Multi: tien locs in twee rijen van vijf, elk met meter, duimwiel en de knoppen.
- ECoS-scherm: het echte scherm van de ECoS live via VNC: tik en sleep om te bedienen. VNC-poort (standaard 5900) en wachtwoord stel je per centrale in. Of kies Nagebouwd: een bedienpaneel met twee draaiwielen, STOP/GO en een aanraakscherm voor locs, functies en wissels.
- Loc-afbeeldingen uit de ECoS: de app vraagt per loc op welk plaatje de ECoS gebruikt (
locodesc) en haalt dat op bij de ingebouwde webserver van de ECoS (http://<ecos>/loco/image?type=internal&index=…). Een eigen foto uit de Bibliotheek gaat voor. Lukt het ophalen niet, dan toont de app een silhouet (elektrisch, diesel of stoom). - Bibliotheek: locs in een tabel (sorteren, zoeken, filteren), toevoegen, aanpassen en verwijderen op de ECoS; foto, omschrijving, soort, topsnelheid en eigen functienamen/-iconen bewaart de app op de iPad. Tweede tabblad: wissels en rijwegen.
- STOP/GO voor de hele baan staat altijd rechtsboven.
- Licht en donker thema: in Instellingen kies je Automatisch (volgt de iPad), Licht of Donker.
De app gebruikt een echte TCP-verbinding (react-native-tcp-socket). Dat werkt niet in Expo Go, dus de app moet als eigen app gebouwd worden.
GitHub bouwt de app gratis op een Mac in de cloud. Jij zet hem daarna met Sideloadly en je gewone, gratis Apple ID op de iPad.
1. De app laten bouwen (.ipa)
Optie 1: Codemagic. Werkt meteen en kost niets.
- Maak een gratis account op codemagic.io en log in met GitHub.
- Kies Add application › GitHub › Ecos-Driver. Kies als type codemagic.yaml (dat bestand staat al in de repo).
- Klik op Start new build, kies de branch
claude/ecos-driver-appen de workflow iPad-app (voor Sideloadly). - Na ongeveer 15 minuten download je bij Artifacts het bestand ECoS-Driver.ipa.
Optie 2: GitHub Actions. Dit werkt alleen als Actions op je GitHub-account draait. Start er niets, kijk dan op github.com › Settings › Billing and plans: daar staat waarom het geblokkeerd is. Bij een openbare repo is Actions altijd gratis.
- Ga op github.com naar deze repo › Actions › iPad-app bouwen.
- Open de laatste groene run (met vinkje). Wil je een nieuwe build? Tik op Run workflow. Na elke wijziging aan de app bouwt GitHub ook vanzelf.
- Download onderaan bij Artifacts het bestand ECoS-Driver-ipa en pak de zip uit. Daarin zit
ECoS-Driver.ipa.
2. Op de iPad zetten met Sideloadly (Windows of Mac)
- Installeer Sideloadly. Op Windows heb je ook iTunes en iCloud nodig, de versies van apple.com en niet uit de Microsoft Store.
- Sluit de iPad met een kabel aan en tik op de iPad op Vertrouw deze computer.
- Sleep
ECoS-Driver.ipain Sideloadly, vul je Apple ID in en klik op Start. Je kunt hiervoor ook een apart, gratis Apple ID maken. - Op de iPad: Instellingen › Algemeen › VPN en apparaatbeheer › je Apple ID › Vertrouw.
- Zet op iPadOS 16 of nieuwer de Ontwikkelaarsmodus aan: Instellingen › Privacy en beveiliging › Ontwikkelaarsmodus. De iPad start daarna opnieuw op.
Met een gratis Apple ID werkt de app 7 dagen. Daarna zet je hem op dezelfde manier opnieuw op de iPad. Je instellingen en locs blijven bewaard. In Sideloadly kun je ook automatisch vernieuwen aanzetten: dat gebeurt dan via wifi zolang je computer aan staat.
Je hebt nodig: een computer (Windows, Mac of Linux) met Node.js 20 of nieuwer, een gratis account op expo.dev en een betaald Apple Developer-account (€99 per jaar). Apple staat installeren op je eigen iPad via de cloud alleen toe met dat account.
git clone https://github.com/Luc-nbr/Ecos-Driver.git
cd Ecos-Driver
git checkout claude/ecos-driver-app
npm install
npx eas-cli@latest login # inloggen met je expo.dev-account
npx eas-cli@latest device:create # je iPad aanmelden
npx eas-cli@latest build --profile preview --platform iosdevice:creategeeft een link of QR-code. Open die op de iPad in Safari en installeer het profiel (Instellingen › Profiel gedownload).- Bij
buildvraagt EAS om in te loggen met je Apple-account. Laat EAS de certificaten en profielen zelf regelen (antwoord steeds Yes). - Na ongeveer 15–20 minuten krijg je een link en QR-code. Open die op de iPad en tik op Installeer.
- Zet op iPadOS 16 of nieuwer de Ontwikkelaarsmodus aan: Instellingen › Privacy en beveiliging › Ontwikkelaarsmodus. De iPad start daarna opnieuw op.
Het profiel preview maakt een losse app. Je computer hoeft daarna niet aan te staan.
Installeer Xcode uit de App Store en sluit de iPad met een kabel aan. Vertrouw de Mac als de iPad daarom vraagt.
git clone https://github.com/Luc-nbr/Ecos-Driver.git
cd Ecos-Driver
git checkout claude/ecos-driver-app
npm install
npx expo run:ios --device --configuration Release- Kies je iPad in de lijst.
- Lukt het ondertekenen niet, open dan
ios/ECoSDriver.xcworkspacein Xcode. Kies bij Signing & Capabilities › Team je Apple ID en voer het commando opnieuw uit. - Vertrouw jezelf als ontwikkelaar op de iPad: Instellingen › Algemeen › VPN en apparaatbeheer › [je Apple ID] › Vertrouw.
- Zet ook hier de Ontwikkelaarsmodus aan (zie manier A, stap 4).
Met een gratis Apple ID werkt de app 7 dagen. Daarna voer je het commando opnieuw uit. Met een betaald account werkt hij een jaar.
- Vraagt iOS om toegang tot het lokale netwerk, kies dan Sta toe. Zonder die toestemming kan de app de ECoS niet bereiken. Je kunt het later aanzetten via Instellingen › Privacy en beveiliging › Lokaal netwerk.
- Ga naar Instellingen in de app, vul het IP-adres van je ECoS in en tik op Verbinden. Of probeer eerst de Demo-modus.
- Zet de iPad op hetzelfde netwerk als de ECoS.
- Zoek het IP-adres op de ECoS op onder Setup › Netwerk.
- Vul het in bij Instellingen in de app (poort 15471) en tik op Verbinden.
npm test # protocoltests (ECoS en VNC), ook via echte TCP
npm run sim # nep-ECoS op poort 15471, nep-VNC-scherm op 5900 en loc-plaatjes op poort 80
npm run web # app in de browser (alleen de demo-modus werkt in een browser)Met npm run sim vul je in de app het IP-adres van je computer in. Zo test je de echte TCP-verbinding vanaf de iPad.
| Map | Inhoud |
|---|---|
src/ecos/protocol.ts |
parser voor het ECoS-tekstprotocol (<REPLY …>, <EVENT …>, <END …>) |
src/ecos/client.ts |
ECoS-client: locs, functies, wissels, aanmaken/wijzigen/verwijderen |
src/ecos/simulator.ts |
ECoS-simulator voor de demo-modus en de tests |
src/ecos/tcpTransport.ts |
TCP-verbinding op iOS en Android |
src/vnc/ |
eigen VNC-client (RFB 3.3–3.8, wachtwoord via DES, Raw/CopyRect) en een nagebouwde VNC-server voor demo en tests |
src/store/ |
app-state (zustand) en acties; instellingen worden bewaard op de iPad |
src/app/ |
schermen (Expo Router): Centrales, Overzicht, Rijden, Duo, Multi, ECoS-scherm, Bibliotheek, Instellingen |
src/components/ |
knoppen, snelheidsknop, schuifregelaars, panelen |
codemagic.yaml, .github/workflows/ |
gratis bouwen van de iPad-app in de cloud |
- De ECoS kent snelheid 0–127, waarbij 1 een noodstop is. De app gebruikt daarom stappen 0–126 en slaat 1 over.
- Zodra je een loc bedient, neemt de app de besturing over (
request(id, control, force)). Een loc die je ook op de ECoS of een handregelaar bedient, kan dus "overgenomen" worden. De app meldt dat. - VNC: de ECoS moet een VNC-server aanbieden (ECoS CAB gebruikt dit ook). Lukt verbinden niet, controleer dan op de ECoS of VNC aan staat en welke poort en welk wachtwoord hij gebruikt. Het beeld wordt een paar keer per seconde ververst; dat is genoeg om te bedienen, niet voor vloeiende animaties.
- Stroom, spanning en temperatuur van de baan geeft de ECoS niet door via het netwerk. Het statuspaneel toont daarom wat wel echt is: of er spanning op de baan staat, hoeveel locs rijden en de reactietijd van de verbinding.
| Rijden | Loc wisselen | Overzicht |
|---|---|---|
![]() |
![]() |
![]() |
| Duo | Multi | ECoS-scherm |
|---|---|---|
![]() |
![]() |
![]() |
| Bibliotheek | Centrales | Rijden (staand) |
|---|---|---|
![]() |
![]() |
![]() |
| ECoS live (VNC, demo) | Licht thema: Rijden | Licht thema: Duo |
|---|---|---|
![]() |
![]() |
![]() |











