feat: KVZ API JSON Data
This commit is contained in:
@@ -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
67
redux/thunks/kvzThunks.ts
Normal 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;
|
||||
}
|
||||
}
|
||||
);
|
||||
Reference in New Issue
Block a user