142 lines
2.7 KiB
Markdown
142 lines
2.7 KiB
Markdown
# 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)
|