# KVZ Mock Data - Dokumentation

## Mock-Daten Struktur

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

### Beispiel-Daten

```json
{
  "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:**

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

### POST /api/kvz/data

Ersetzt komplette KVZ-Daten.

**Request Body:**

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

### POST /api/kvz/updateSettings

Aktualisiert spezifische KVZ-Einstellungen.

**Request Body:**

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

## Service Functions

### fetchKvzData()

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

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

### updateKvzSettings()

```typescript
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:

```typescript
// 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)
