Files
CPLv4.0/docs/diagrams/analog-inputs-flow.md
Ismail Ali 041bc3e23e feat: jsSimulatedProd-Modus für analoge & digitale Eingänge implementiert
- neuen Modus `jsSimulatedProd` eingeführt für realitätsnahe Simulation auf Basis echter Produktionsdaten
- analoge Eingänge: analogInputsMockData.js eingebunden und dynamisch per Script geladen
- digitale Eingänge: digitalInputsMockData.js eingebunden mit window-Variablen (z. B. win_de_state, win_de_label etc.)
- fetchAnalogInputsService.ts und fetchDigitalInputsService.ts angepasst zur Modusprüfung und Script-Auswertung
- getAnalogInputsHandler.ts und getDigitalInputsHandler.ts geben im jsSimulatedProd-Modus JavaScript-Dateien aus
- .env.development setzt `NEXT_PUBLIC_CPL_MODE=jsSimulatedProd`
2025-06-22 08:42:49 +02:00

2.1 KiB
Raw Blame History

🧩 Datenfluss & Architekturstrategie Analoge Eingänge (Alle Modi)

Diese Dokumentation beschreibt die Architekturstrategie für die Verarbeitung von analogen Eingangsdaten in den drei unterstützten Modi: jsSimulatedProd, json und production.


🎯 Ziel

  • Trennung von Verantwortung (API, Service, UI)
  • Mock-fähige Entwicklung ohne echte Hardware
  • Einheitliches JSON-Format für alle Modi
  • Zukunftssicherheit für moderne Systeme mit nativen JSON-APIs

🔁 Datenfluss (alle Modi)

flowchart TD

    subgraph jsSimulatedProd-Modus
      A1["analogInputsMockData.js - Mockdaten mit window-Variablen"]
      B1["/api/cpl/getAnalogInputsHandler.ts - API gibt Rohdaten zurück"]
      C1["fetchAnalogInputsService.ts - wandelt in JSON"]
      A1 --> B1 --> C1
    end

    subgraph JSON-Modus
      A2["analogInputs.json - Mockdaten im JSON-Format"]
      B2["/api/cpl/getAnalogInputsHandler.ts - gibt JSON direkt weiter"]
      C2["fetchAnalogInputsService.ts - verarbeitet JSON"]
      A2 --> B2 --> C2
    end

    subgraph Production-Modus
      A3["CPL Gerät via CGI - JS mit Platzhaltern (im public-Verzeichnis)"]
      C3["fetchAnalogInputsService.ts - wandelt direkt JS in JSON"]
      A3 --> C3
    end

    C1 --> D["getAnalogInputsThunk.ts"]
    C2 --> D
    C3 --> D
    D --> E["Redux Store und UI"]

Vorteile dieser Struktur

  • 🔄 Austauschbare Datenquellen ohne Frontend-Codeänderung
  • 🧼 Trennung von Datenformaten (JS, JSON, CGI) und deren Umwandlung
  • 🧪 Mock-fähig für Entwickler und CI ohne Backend
  • 🔮 Zukunftssicher für moderne embedded APIs mit echtem JSON

📁 Verzeichnisstruktur (Auszug)

/mocks/device-cgi-simulator/SERVICE/*.js      # jsSimulatedProd-Modus
/mocks/api/SERVICE/*.json                    # json-Modus
/public/CPL/SERVICE/*.js                     # production-Modus (CGI-Daten im JS-Format)
/services/fetchAnalogInputsService.ts        # verarbeitet Rückgabe zu JSON
/redux/thunks/getAnalogInputsThunk.ts        # Redux-Thunk zur Übergabe
/components/AnalogInputsDisplay.tsx          # Anzeige in der UI