feat: KVZ API JSON Data

This commit is contained in:
ISA
2025-07-31 13:44:30 +02:00
parent 97eb40e1c6
commit 421e1f5425
18 changed files with 750 additions and 143 deletions

View File

@@ -44,6 +44,10 @@ interface KueDataState {
memoryInterval: number[];
// Fallsensors
win_fallSensorsActive: number[];
// KVZ System - 32 Slots mit je 4 LEDs
kvzPresence: number[]; // 32 Werte: 1 = KVZ vorhanden, 0 = nicht vorhanden
kvzActive: number[]; // 32 Werte: 1 = KVZ aktiviert, 0 = deaktiviert
kvzStatus: number[]; // 128 Werte: 4 LEDs pro Slot (32 * 4)
}
const initialState: KueDataState = {
@@ -89,6 +93,10 @@ const initialState: KueDataState = {
memoryInterval: [],
// Fallsensors
win_fallSensorsActive: [], // Fallsensors aktiv
// KVZ System - 32 Slots mit je 4 LEDs
kvzPresence: new Array(32).fill(0), // 32 Slots: 1 = KVZ vorhanden, 0 = nicht vorhanden
kvzActive: new Array(32).fill(0), // 32 Slots: 1 = KVZ aktiviert, 0 = deaktiviert
kvzStatus: new Array(128).fill(0), // 128 LEDs: 4 LEDs pro Slot (32 * 4)
};
const kueDataSlice = createSlice({

67
redux/thunks/kvzThunks.ts Normal file
View File

@@ -0,0 +1,67 @@
// redux/thunks/kvzThunks.ts
import { createAsyncThunk } from "@reduxjs/toolkit";
import {
fetchKvzData,
updateKvzSettings,
} from "../../services/fetchKvzDataService";
import { setKueData } from "../slices/kueDataSlice";
/**
* Lädt KVZ-Daten von der API und aktualisiert Redux Store
*/
export const loadKvzData = createAsyncThunk(
"kvz/loadData",
async (_, { dispatch }) => {
try {
const data = await fetchKvzData();
// KVZ-Daten in Redux Store laden
dispatch(
setKueData({
kvzPresence: data.kvzPresence,
kvzActive: data.kvzActive,
kvzStatus: data.kvzStatus,
})
);
return data;
} catch (error) {
console.error("Fehler beim Laden der KVZ-Daten:", error);
throw error;
}
}
);
/**
* Aktualisiert KVZ-Einstellungen und synchronisiert Redux Store
*/
export const updateKvzData = createAsyncThunk(
"kvz/updateData",
async (
updates: Array<{
key: "kvzPresence" | "kvzActive" | "kvzStatus";
slot?: number;
ledIndex?: number;
value: number;
}>,
{ dispatch }
) => {
try {
const data = await updateKvzSettings(updates);
// Aktualisierte Daten in Redux Store laden
dispatch(
setKueData({
kvzPresence: data.kvzPresence,
kvzActive: data.kvzActive,
kvzStatus: data.kvzStatus,
})
);
return data;
} catch (error) {
console.error("Fehler beim Update der KVZ-Daten:", error);
throw error;
}
}
);