Bruger du en Z21 centralstation fra Roco, sammen med en multiMAUS/wlanMAUS?
Synes du at det kunne være sjovt at se mere information om hvad der sker på din modeltogbane? Så er Z21Dashboard måske noget for dig 🙂
Den fungerer som et funktionsrigt, brugerkonfigurerbart dashboard til styring og overvågning af en Roco/Fleischmann Z21-modeljernbane-centralstation.
Vil du blot bruge Z21Dashboard til at se hvad der sker på din modeltogsbane, kan du hente Z21Dashboard installationsfilen her:
https://github.com/J-Wachs/Z21Dashboard/releases
Vil du udforske kildekoden, og måske selv udvikle komponenter til det, eller lave din egen version, så er det her du skal kikke:
https://github.com/J-Wachs/Z21Dashboard
Nyheder i denne version
Version 1.2:
For brugere:
- Z21Dashboard Settings er omdøbt til Konfiguration
- Konfiguration er opdelt i faner
- Tilføjet en fane med indstillinger: temperaturskala og modeltogsskala
- Ændringer i widgets System Status og System Status – Complete, så temperaturen vises i den valgte temperaturskala
- Ny widget “Hastighedsmåling” til måling af modeltogets hastighed og konvertering til hastighed i fuld skala
- Tilføjet knappen “Super Maximize” i titellinjen på dashboardets hovedvindue for at maksimere dashboardet til fuld skærm (på tværs af skærme)
- Tilføjet en “Anerkendelser”-knap og dialog i “Om” widgetten til at anerkende brugen af tredjepartsbiblioteker og -værktøjer i udviklingen af Z21Dashboard
- Tilføjet to ekstra lokomotivstyringer, så der i alt er fire lokomotivstyringer
For udviklere:
- DashboardStateService eksponerer nu en hændelse, som udløses, når indstillinger ændres
- Ny Blazor-komponent DraggableModal.razor til oprettelse af modale dialoger, der kan trækkes. Komponenten anvendes nu i alle widgets med modale dialoger (LocoController, Settings, Speed Measure osv.)
- Som en del af tilføjelsen af to ekstra lokomotivstyringer er koden for lokomotivstyringer blevet refaktoreret til at bruge ét sæt ressourcefiler
Fejlrettelser:
- RBus-widgetten anmodede ikke om RBus’ indledende tilstand
- I “Lokomotivstyring” widgets blev pladsholderteksten for serviceinterval ikke vist korrekt, når værdien ikke var angivet
- Ved opdatering af Z21Dashboard applikationen, blev de tidligere satte positioner og valg af widget nulstillet og alle widgets vist
Målgruppe for applikationen
Der er to målgrupper for Z21Dashboard:
- Modeltogsentusiasten, der ønsker et overblik, som man ikke får ved at bruge multiMAUS, wlanMAUS eller den officielle Z21-app, men på samme tid ikke ønsker en mere kompliceret løsning, som software til at automatisere driften på modelbanen.
- Modeltogsentusiasten, der, udover ovenstående, ønsker at udvikle software til Z21, og derfor kan hente inspiration i Z21Dashboard eller bruge Z21Dashboard som afsæt til en ny applikation. Et ønske kunne være at udvide med CAN-bus og LocoNet-funktionalitet til Z21 (modeller i sort kabinet) centralstationerne.
Egenskaber
Z21Dashboard tilbyder en moderne og interaktiv brugerflade med følgende nøglefunktioner:
- Sprogversionering: Afvikles applikationen med sprog sat til dansk, vises danske tekster, ellers engelske.
- Dynamisk “Træk-og-slip”-dashboard: Brugere kan frit flytte og omarrangere widgets på et “frit lærred” for at skabe et personligt layout.
- Brugerkonfigurerbart Layout: Et centralt indstillingspanel giver brugerne mulighed for at vise eller skjule individuelle widgets, så de kan skræddersy dashboardet til deres specifikke behov.
- Permanent Layout: Brugerens tilpassede layout, inklusiv widgets positioner og synlighed, gemmes automatisk og gendannes mellem applikationens sessioner.
- Clean Architecture: Applikationen er bygget ved hjælp af Clean Architecture-principper, hvilket sikrer en klar adskillelse af ansvarsområder mellem logik, applikationsinfrastruktur og brugergrænsefladen.
- Realtidsovervågning: De forskellige widgets abonnerer på live datastrømme fra
Z21Clientfor at vise statusopdateringer i realtid for:- Lokomotivers hastighed, retning og funktioner
- Status for banestrøm
- Sporskifters position
- Overordnet systemstatus, strømforbrug og spænding
- R-Bus feedback og RailCom-data
- Interaktiv Styring: Tilbyder en dedikeret “Lokomotivstyring” widget til realtidsstyring af et valgt lokomotivs hastighed, retning og funktioner (kræver enten at z21/z21Start er låst op, eller en Z21/Z21 XL).
- Lagring af Indstillinger: Nøgleindstillinger, såsom Z21’ens IP-adresse og brugerdefinerede lokomotivnavne, gemmes lokalt, hvilket giver en gnidningsfri oplevelse ved efterfølgende opstarter.
Dashboard widgets
Dashboardet er sammensat af specialiserede widgets, hver med en specifik funktion. Alle widgets kan flyttes og skjules af brugeren.
- Forbindelses-visning: Bruges til at etablere og overvåge forbindelsen til Z21. Tilbyder også kontroller for skinnestrøm og Nødstop
- Lokomotiv-styring: Lader brugeren vælge og køre samt overvåge et lokomotivs hastighed, retning og funktioner (F0-F31). Widget’en bliver opdateret med aktuelle data for det valgte lokomotiv i realtid, hvis det pågældende lokomotiv bliver styret fra en multiMAUS, wlanMAUS eller Z21 appen
- Lokomotiver med driftstid: Viser en oversigt med lokomotiver som Z21 centralstationen (alle typer) styrer eller tidligere har styret. Den samlede driftstid og nuværende status vises. Brugeren har mulighed for at tildele egne navne til lokomotiv-adresser
- Diagram med strømforbrug: En live-opdaterende graf, der overvåger og viser strømforbrug (mA) og skinnespænding (V) fra Z21’en
- Lokomotiv-slots: Viser status for de 120 interne lokomotiv-“slots” i Z21-hukommelsen, hvilket giver et lav-niveau overblik. Denne komponent er baseret på ikke dokumenterede kald til Z21 centralstationen.
- Sporskifter: En liste, der viser den nuværende position (f.eks. ligeud eller afvigende) for alle sporskifter, der for nylig er blevet betjent
- Systemstatus (Simpel & Fuld): To widgets, der viser tekniske data fra Z21. Den simple visning viser nøgletal som strøm og spænding, mens den fulde visning giver en detaljeret oversigt over alle status-flag.
- R-Bus & RailCom-visninger: Specialiserede widgets til overvågning af feedback fra R-Bus-moduler og data fra RailCom-udstyrede lokomotiver
- Hastighedsmåling: Måler modeltogets hastighed og beregner den til skala 1:1
Hvordan det virker
Z21Dashboard er bygget som en .NET MAUI Blazor Hybrid-applikation ved hjælp af .NET 10. Denne arkitektur gør det muligt for en moderne web-baseret brugerflade (bygget med Blazor-komponenter) at køre som en native desktop-applikation på Windows.
Z21Dashboard modtager hændelser fra Z21 centralstationen, og disse hændelser tolkes og afspejles på dashboardet. Det betyder, at benytter du Z21 appen, multiMAUS eller wlanMAUS, så afspejles aktiviteten på disse, på dashboardet.
Kerne-arkitekturkoncepter
Er du interesseret i applikationens arkitektur og hvordan den er implementeret, så er her nogle af de vigtigste koncepter:
- Dynamisk Komponent-rendering: Dashboard-lærredet bruger Blazors
<DynamicComponent>til kun at rendere de widgets, som brugeren har valgt at gøre synlige. Dette sikrer optimal ydeevne - Centraliseret Tilstandsstyring: En singleton-service,
DashboardStateService, fungerer som den eneste kilde til sandhed for dashboardets layout. Den er ansvarlig for at indlæse, flette og gemme brugerens konfiguration - Brugerdefineret Træk-og-slip: Grundet et kendt problem i .NET MAUI Blazor WebView (dotnet/maui#2205), er en brugerdefineret, robust træk-og-slip-mekanisme baseret på fundamentale muse-events (
mousedown,mousemove,mouseup) blevet implementeret - Event-drevet Brugerflade: Widgets er afkoblede og reagerer på ændringer ved at abonnere på events fra singleton-services (som
IDashboardStateServiceogIZ21Client). - Lagring af Indstillinger: Alle brugerindstillinger gemmes i en enkelt
app_data.json-fil i brugerens lokaleAppData/Roaming-mappe, håndteret af en dedikeretAppDataService.
