- API-Handler `updateDigitalOutputsHandler` überarbeitet:
- JSON-Dateien werden jetzt korrekt im gültigen Format gespeichert (`{ key: value }`)
- Schreibzugriff im production-Modus blockiert
- JS-Mock-Struktur vorbereitet (noch nicht aktiv getestet)
- Verzeichnisstruktur vereinheitlicht:
- JSON-Mocks unter `/mocks/api/SERVICE/`
- CGI-Platzhalter unter `/public/CPL/`
- JSMock-Ordner für CPL-Simulation vorbereitet (`/mocks/js-simulator/`)
- README.md um Betriebsmodi erweitert (`NEXT_PUBLIC_CPL_MODE` mit `json`, `jsmock`, `production`)
- `.env`-Dateien angepasst zur besseren Modussteuerung
🧩 Datenfluss CPLv4.0 Digitale Eingänge
classDiagram
class EmbeddedServer {
+ Generiert de.js per CGI
+ Ersetzt Platzhalter wie <%=DES81%>
+ Kein Node.js vorhanden
}
class DeJS {
+ JavaScript mit konkreten Werten
+ Beispiel: win_de_state, win_de_label
}
class FrontendLoader {
+ Lädt de.js dynamisch mit script-Tag
+ Pfad: /CPL?/CPL/SERVICE/de.js
}
class DatenMapper {
+ Wandelt window-Variablen in Objekte
+ Wandelt in strukturierte Eingangs-Daten
}
class ReduxStore {
+ digitalInputsSlice
+ Speichert die Eingänge im State
}
class ReactComponent {
+ DigitalInputs.tsx
+ useSelector: Zugriff auf Redux
+ Darstellung mit Tailwind
}
EmbeddedServer --> DeJS : erstellt per CGI
DeJS --> FrontendLoader : wird per Script geladen
FrontendLoader --> DatenMapper : verarbeitet window-Variablen
DatenMapper --> ReduxStore : dispatch(setInputs)
ReduxStore --> ReactComponent : useSelector() → Anzeige