Files
CPLv4.0/docs/KVZ/mock-data.md
2025-07-31 13:44:30 +02:00

2.7 KiB

KVZ Mock Data - Dokumentation

Mock-Daten Struktur

Die KVZ Mock-Daten befinden sich in mocks/kvzData.json und haben folgende Struktur:

Beispiel-Daten

{
  "kvzPresence": [1, 0, 1, 0, ...], // 32 Elemente
  "kvzStatus": [1, 0, 1, 0, ...],   // 128 Elemente
  "timestamp": "2025-01-31T12:00:00.000Z"
}

kvzPresence Array (32 Elemente)

  • Index 0-31: Repräsentiert Slots 0-31
  • Wert 1: KVZ-Gerät vorhanden
  • Wert 0: KVZ-Gerät nicht vorhanden

Aktuelle Mock-Daten:

  • Slot 0: KVZ vorhanden (1)
  • Slot 1: KVZ nicht vorhanden (0)
  • Slot 2: KVZ vorhanden (1)
  • Slot 3-31: KVZ nicht vorhanden (0)

kvzStatus Array (128 Elemente)

  • Index Berechnung: slotIndex * 4 + ledIndex
  • 4 LEDs pro Slot: LED 0, LED 1, LED 2, LED 3
  • Wert 1: LED aktiv (grün)
  • Wert 0: LED inaktiv (rot)

Aktuelle Mock-Daten:

  • Slot 0 LEDs (Index 0-3): [1, 0, 1, 0] → LED1=grün, LED2=rot, LED3=grün, LED4=rot
  • Slot 1 LEDs (Index 4-7): [0, 0, 0, 0] → Alle LEDs rot (KVZ nicht vorhanden)
  • Slot 2 LEDs (Index 8-11): [1, 1, 0, 1] → LED1=grün, LED2=grün, LED3=rot, LED4=grün
  • Slot 3-31: Alle LEDs rot (0)

API Endpunkte

GET /api/kvz/data

Holt alle KVZ-Daten.

Response:

{
  "kvzPresence": [...],
  "kvzStatus": [...],
  "timestamp": "2025-01-31T12:00:00.000Z"
}

POST /api/kvz/data

Ersetzt komplette KVZ-Daten.

Request Body:

{
  "kvzPresence": [...],
  "kvzStatus": [...]
}

POST /api/kvz/updateSettings

Aktualisiert spezifische KVZ-Einstellungen.

Request Body:

{
  "updates": [
    {
      "key": "kvzPresence",
      "slot": 0,
      "value": 1
    },
    {
      "key": "kvzStatus",
      "slot": 0,
      "ledIndex": 1,
      "value": 1
    }
  ]
}

Service Functions

fetchKvzData()

import { fetchKvzData } from "../services/fetchKvzDataService";

const data = await fetchKvzData();
console.log(data.kvzPresence); // [1, 0, 1, 0, ...]

updateKvzSettings()

import { updateKvzSettings } from "../services/fetchKvzDataService";

await updateKvzSettings([
  { key: "kvzPresence", slot: 0, value: 1 },
  { key: "kvzStatus", slot: 0, ledIndex: 1, value: 1 },
]);

Redux Integration

Die Mock-Daten können in Redux geladen werden:

// In einem Thunk oder useEffect
const data = await fetchKvzData();
dispatch(
  setKueData({
    kvzPresence: data.kvzPresence,
    kvzStatus: data.kvzStatus,
  })
);

Testen

Die Mock-Daten ermöglichen es:

  1. KVZ-Geräte zu simulieren (Slots 0 und 2 haben KVZ)
  2. LED-Status zu testen (verschiedene Kombinationen)
  3. API-Updates zu testen (Presence und Status ändern)
  4. UI-Verhalten zu validieren (bedingte Anzeige, Farben)