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)