Mit CTC Version 5 erhalten RGB-Leds (LED-Bus, WS2812) Einzug in CTC. Unser neues CTC-Multi-IO-Board-4 kann bis zu 250 LEDs an einem Anschluss individuell steuern uns zwar nicht nur an/aus sondern auch Helligkeit und Farbe. Passende Lichtsignale erscheinen zeitgleich von Schneider Modellbahnzubehör .
Über die Unterstützung von RGB-LEDs hinaus bietet CTC 5 eine Vielzahl weiterer Neuigkeiten und Verbesserungen:
- DCC-Sniffer erlaubt Schalten von an CTC-Modulen angeschlossenen Produktion über eine Digitalzentrale
- Support für ESU CabControl Drehregler in CTC-Android-App - damit gibt es endlich einen Handregler mit direkter CTC-Unterstützung
- Höhere Stabilität und Robustheit bei wackeligen WLAN-Verbindungen
- Zufallszahlen und Rechenoperationen in Skripten, u.a. um Licheffekte mit den neuen RGB-LEDs zu ermöglichen.
- Komplette Konfigurations-Dialoge für Android und in Kürze auch für iOS
- Basistechnologie der CTC-App auf Java 25 aktualisiert und Abhängigkeit von Python entfernt
Migration
Bei den CTC-Modulen wurde das Dateisystem umgestellt von SPIFFS auf LittleFS. Das erfordert eine Migration, siehe Bedienungsanleitung Anhang A5 .
Außerdem wurden die NFC-Balisen an die IR-Balisen weiter angeglcihen: Sie werden nun in der Modul-Config gespeichert, statt wie bisher in der Automatisierung. Der Umzug passiert automatisch beim Hochladen des Gleisbildes im Gleisbildeditor.
Stabilität CTC-Module
Vor allem bei wackeligem WLAN gab es immer wieder Probleme mit defekten Config-Dateien, wenn während des Uploads dei WLAN-Verbindung abriss. CTC 5.x löst dieses Prblem wie folgt:
- Der Http-Server des CTC-Moduls schreibt während des Uploads eine Temporär-Datei und löscht die alte Datei erst, wenn die Neue komplett angekommen ist.
- Umstellung des Dateisystems von SPIFFS auf LittleFS: LittleFS beschädigt das Dateisystem selbst dann nicht, wenn der Strom während des Schreibens ausfällt. LitteFS kann außerdem das Dateisystem im Falle eines Defekts selbst neu initialisieren.
- Umstellung des Http-Servers von ESPAsyncWebServer auf esp_http_server. Letzterer soll deutlich stabiler sein.
- Edit-Funktion aus dem Http-Server entfernt, da er große Dateien verstümmelte (zu wenig Arbeitsspeicher).
- Klick auf "download" lädt die entsprechende Datei explizit herunter (kein Preview)
- CTC-Modul startet auch wenn Config-Dateien (nach Dateisystem-Defekt) fehlen.
Sync-Optimierung:
- PIRailComm: Msg-Slot vergrößert auf 2 ms
- Weitere Tuninng-Parameter werden mit einer der nächsten App-Versionen angeboten.
- Unterstützung für CTC 2.x entfernt
- UdpConnection startet für Paketverarbeitung einen neuen Thread
- Zustände der NFC-Balisen werden zyklisch in den Sync-Block eingeflochten, statt zusätzlicher Pakete je Sync.
- Bug fix Sync: msInterval hatte keine Toleranz, was zu doppeltem Send seitens der CTC-Module führen konnte.
- Eine Option, den Sync auf mehrere kürzere Blöcke zu reduzieren, musste vorerst deaktiviert werden, wegen Bug in alter Firmware (ignoriert ersten und letzten des Blocks)
Optimierung bzgl. Wärmeentwicklung:
- Kurze (Verschnauf-) Pause von 2 ms am Ende der Hauptschleife
- Testweise eingebautes WiFi.setSleep(false) bei Loks wieder entfernt
NFC-Balisen
NFC-Balisen werden jetzt wie IR-Balisen in der Config (statt der Automatisierung) gespeichert. Das verhindert Probleme beim Ändern des Zustands, wenn mehr als eine CTC-App aktiv ist.
Der Gleisbildeditor ändert NFC-Balsie automatisch von TrackMsg in trackCfg.xml zu EnumAction in cfg.xml
Im Config-Dialog werden neu gelesene NFC-Balisen mit "Produkt hinzufügen" angezeigt.
Skripte
Die Möglichkeiten der Skripte wurden stark erweitert:
- Erzeugung von Zufallszahlen
- Zufälliger Aufruf eines State-Scripts einer Funktion (EnumAction)
- Rechenoperationen beim Setzen von numerischen Werten
- Übernehmen des Werts (Zahl oder Buchstabe) eines Parameters
- Übernehmen des States (Zahl oder Buchstabe) einer anderen Action
- ÜÜbernehmen des aktuellen (zuletzt eingestellten) Werts eines OutPins
- Verzögerung per "Delay" entfernt, stattdessen kann ein Timer genutzt werden
- If-Kommando ergänzt umd "else if" und "else"
- EnumAction hat zusätzlich default für int value (defInt)
- Neuer Datentyp rgbValue für Farben
- R,G,B-Anteile von Farben können einzeln gesetzt werden
- Konsequente Nutzung von tgt/tgtI bei Beginn von setValue und Setzen von cur/curI nur bei erfolgreichem Ablauf (Script) in setValue
- Bug fix: Selbstaufruf von Timer ging nicht
- SetIO kann neuen Wert relativ zu zuletzt eingestelltem Wert setzen.
- Parameter hiunzufügen um rgbValue ergänzt
Die zugehörigen Teile des Dialogs "Config ändern" wurden entsprechend ergänzt:
- Unterstützung beim Bearbeiten der Skripte mit Auswahllisten erheblich verbessert.
- UI und Usability überarbeitet: value, intValue werden passend ausgeblendet; Operation als separate Auswahl
- Anzeige der RGB-Farbe als Unterlegung bei Parametern und bei Wert-Feldern
- Dialog zur Farbauswahl (Color-Picker)
- Life-Verstellung der Farbe von am LED-Bus angeschlossenen RGB-LEDs
Im neuen Kapitel 11 der Bedienungsanleitung wird das Erstellen von Skripten ausführlich behandelt.
LED-Bus
Am LED-Bus können (derzeit bis 250) RGB-LEDs (WS2812) angeschlossen werden. Passende Lichtsignale gibt es von Schneider Modellbahnzubehör .
Neue Funktionalität (Konfiguration):
- Direktes Einfügen am Ende des LED-Bus bei "Produkt hinzufügen"
- Buttons zum Ändern der Reihenfolge der angeschlossenen Produkte (Ports) am LED-Bus
- Löschen von LED-Config löscht auch Port in ExtCfg; unverbundene Ports in ExtCfg "LedBus" können gelöscht werden.
- Anzeige der LED-Farbe am Parameter (ValueType "rgbVal")
- NEU: Editor für Parameter mit ValueType "rgbVal" inklusive Live-Verstellung der LED
- Test-Button schaltet alle LEDs eines Led-Bus-Ports (Produkts) ein
- Die Tabelle Ports und Pins zeigt bei einem Port die Anzahl der darunter definierten Pins an (LED-Bus)
- LEDBus hat nur eine ExtCfg, die sich aus PortCfgs (LED-Arrays) zusammensetzt, deren Größe ist die Anzahl der OutPins am verbundenen Port
Gleisplan
Der Gleisplan kann ein Hintergundbild haben, z.B. ein Haus, um Lcihtschalter auf Fenster zu platzieren
Gleisplan ändern:
- Button für Auswahl Hintergrundbild sowie Anzeige und Upload
- Labels für Zeile/Spalte waren vertauscht
WiFi Einbuchen per Balise
- NDEF Library hinzugefügt und lauffähig gemacht
- Loko_G ergänzt um tempWifi
Firmware Basis
- Umstellung des Dateisystems von SPIFFS auf LittleFS und des Http-Servers von ESPAsyncWebServer auf esp_http_server (sieh Abschnitt Stabilität).
- Status-Anzeige alternativ per RGB-LED (Farbe) statt Blink-Codes
- NEU: Bibliothek für IO-Baustein DRV89xx
- Initialisierung jetzt zweistufig: Erst alle Actions initialisieren und in zweiter Schleife defaults setzen - Reihenfolge der Actions in der Config hat somit keienn Einfluss mehr auf die Initialisierung.
- SetIO bricht Skript nicht mehr ab, wenn outCfg oder pinCfg nicht gefunden wurden.
- Bug fix: ItemConn.getIntVal hatte "defaultValue" ignoriert
- doSendMsg erweitert um Parameter msgLen: Ist er > 0 so wird die msg nur geschickt, wenn der Puffer der Seriellen genug Platz hat (bei ESP32 UART 128 Bytes)
UI-Verbesserungen
Config-Dialoge:
- Baum "Pin, Ports und Erweiterungen" ist jetzt auf der rechten Seite, nicht mehr links
- Bearbeiten von Skripten komplett überarbeitet - siehe Abschnitt "Skripte"
- Die Darstellung der neuen NFC-Balise zeigt jetzt beim Produkt und der Balise (EnumAction) die PosID der Balise
- Bei Darstellung der Produkte (ItemConn) wird Suffix "-conn" entfernt
- Anzeige von Device-Heap in EditSwitchBox
Modul-Liste:
- Farbige Darstellung FW Version und Status
- NEU in RailDevice: deviceState und stateColor
- Modul-Liste zeigt deviceState mit Background stateColor
- RailDevice setzt deviceState für config load success/error
- NEU: Retry für TrackCfg bei loadError; Anzeige im deviceState
- UpdateFirmware zeigt progress und success/error in deviceState
Icons: Neue Icons für SBB-5er-Signal
Sonstiges:
- Statuszeile zeigt an, wer Sync-Master ist
- Dialog Statistics ergänzt um Spalte "dB"
- NEU: Firmware wird farbig unterlegt, wenn veraltet: orange=CTC4, gelb=älter als FW in CTC-App
- Config-Backup sichert nun alle Dateien vom CTC-Modul (außer netCfg.xml und temp. WiFi)
- Neue Funktion Restore Config: Lädt alle Dateien aus einem Config-Backup-Ordner auf ein CTC-Modul
- Memory-Optimierung: Während der Verarbeitung der State-Messages wird erheblich weniger Speicher benötigt
Fehlerkorrekturen CTC-App UI
- Baumdarstellungen wurden bei Änderungen nicht immer aktualisiert
- Mehrere Abstürze beim Hochladen im Gleisbild-Editor (Endlos-Sanduhr)
- MessageBox, InputDialog und PasswordDialog weren im Dark-Mode kaum zu lesen: Feste Farbe durch passenden Style ersetzt
Fehlerkorrekturen CTC-App
- Exception in WiFiManagerLinux wenn WiFi aus war (leeres Ergbnis)
- StatusBar: ID des Labels für wifi_name war kaputt
- Exception bei Fehelermeldung in "IO-Config ersetzen" wenn Firmware/Version null
- (IO-)Config ersetzen: Die internen Ordner (standard, ...) wurden nicht angezeigt
Produktkataloge
- NEU: Produktkatalog schneider-singale.xml
- Anpassung der Konvention für Signale: Halt liegt auf Position 0 und Freie Fahrt auf Position 1
- Bug fix: Bei Signalen war teilw, rechts/links vertauscht
- universell-licht.xml um "Haus-RGB-LED-8" und LED leiste 60 ergänzt
- anpassung und erweiterung der Signal xmls von schneiter viesmann und universell, Alle für den LED-Bus
XML-Strukturen (pi-rail.xsd)
- Anpassung Config, sodass Produkte auch eine ExtCfg enthalten können
- Port kann nun auch inPin und outPin enthalten
- TrackMsg aus XML-Schema entfernt und Code für Rückwärtskompatibilität in CTC-App eingebaut
- NEU: ValueType "rgbVal"
- Enum "valueType" ergänzt um "rgbVal"
- ifCmd ergänzt um attribut "varID"
- Skripte um "else" ergänzt
- NEU: Pin-Arrays: outPin ergänzt um size (Array), sowie setIO ergänzt um i (index) für
- NEU: Attribut "BSSID" in WifiCfg
- Neuer inModeType "DCC" und Attribut "DCC" an stateScript für DCC-Sniffer
Internationalisierung
Diverse Übersetzugnslöcher in der App gestopft:
- Anpassung der Meldungen (messages.properties)
- Texte für Script-Add und Script-Remove entfernt (sind Buttons in Android)
- Korrektur der Umlaute ü, ö, ä nach der Umstellung, dass alle Sprachdateien (properties) ISO-8859-1 sind
Config-Dialoge Android und iOS
Android:
- Config-Dialoge auf Stand von Desktop gebracht
- Layout Portrait (Handy) bedienbar gemacht
- NEU: ListViewNonScroll für Liste die genauso groß ist wie ihr Inhalt
- EditCfg: Layout gestreckt (Scrollbar ganz außen)
- Konfigurator: Stift-Button repariert (war im Layout versteckt)
iOS:
- Aktualisierung auf CTC 5
- backgroundBinding (Hintergrundfarbe) funktionierte nicht
- Bilder in Tabellen funktionierten nicht (WiFi- und Lok-Icon)
- Erweiterung auf Umfang der Android-Version ist in Arbeit
DCC-Sniffer
Am neuen IO-Board-4 kann an den Sensor-Eingang das DCC-Signal einer Digitalzentrale mitgelesen werden. Damit ist es möglich von der Digitalzentrale aus Funktionen des CTC-Moduls zu aktivieren.
- universell-sensoren.xml ergänzt um DCC-Sniffer
- Config bearbeiten ergänzt um DCC-Addresse und -Status (am State-Script)