// ✅ Service: /services/fetchDigitalInputsService.ts export const fetchDigitalInputsService = async () => { const mode = process.env.NEXT_PUBLIC_CPL_MODE; // ✅ PRODUKTIV: lädt JavaScript vom Gerät über CGI if (mode === "production") { console.log("🔄 Lade analoge Eingänge im Produktionsmodus..."); const scriptUrl = "/CPL?/CPL/SERVICE/digitalInputs.js"; await new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = scriptUrl; script.async = true; script.onload = () => resolve(); script.onerror = () => reject("❌ Fehler beim Laden der digitalen Eingänge (production)"); document.body.appendChild(script); }); const win = window as any; return Array.from({ length: 32 }, (_, i) => ({ id: i + 1, value: win.win_de_state[i], label: win.win_de_label[i], invert: !!win.win_de_invert[i], counter: win.win_de_counter[i], timeFilter: win.win_de_time_filter[i], weighting: win.win_de_weighting[i], counterActive: !!win.win_de_counter_active[i], eingangOffline: !!win.win_de_offline[i], status: !!win.win_de_state[i], })); } // ✅ JSON-MODUS (API gibt JSON-Daten zurück) else if (mode === "json") { console.log("🔄 Lade digitale Eingänge im JSON-Modus..."); const res = await fetch("/api/cpl/getDigitalInputsHandler"); if (!res.ok) throw new Error("❌ Fehler beim Laden der digitalen Eingänge (json)"); const data = await res.json(); console.log("📡 JSON-Daten geladen in service:", data); return data.win_de_state.map((_: any, i: number) => ({ id: i + 1, value: data.win_de_state[i], label: data.win_de_label[i], invert: !!data.win_de_invert[i], counter: data.win_de_counter[i], timeFilter: data.win_de_time_filter[i], weighting: data.win_de_weighting[i], counterActive: !!data.win_de_counter_active[i], eingangOffline: !!data.win_de_offline[i], status: !!data.win_de_state[i], })); } // ✅ jsSimulatedProd-MODUS (Script einbinden und aus window lesen) else if (mode === "jsSimulatedProd") { console.log("🔄 Lade digitale Eingänge im jsSimulatedProd-Modus..."); // const res = await fetch("/api/cpl/getDigitalInputsHandler"); //------------------------ const scriptUrl = "/api/cpl/getDigitalInputsHandler"; // gibt JavaScript zurück await new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = scriptUrl; script.async = true; script.onload = () => resolve(); script.onerror = () => reject("❌ Fehler beim Laden des simulierten Scripts"); document.body.appendChild(script); }); // Annahme: Das Script setzt window.win_de_state usw. const data = { win_de_state: (window as any).win_de_state, win_de_label: (window as any).win_de_label, win_de_invert: (window as any).win_de_invert, win_de_counter: (window as any).win_de_counter, win_de_time_filter: (window as any).win_de_time_filter, win_de_weighting: (window as any).win_de_weighting, win_de_counter_active: (window as any).win_de_counter_active, win_de_offline: (window as any).win_de_offline, }; //-------------------------- console.log("📡 jsSimulatedProd-Daten geladen in service:", data); return data.win_de_state.map((_: any, i: number) => ({ id: i + 1, value: data.win_de_state[i], label: data.win_de_label[i], invert: !!data.win_de_invert[i], counter: data.win_de_counter[i], timeFilter: data.win_de_time_filter[i], weighting: data.win_de_weighting[i], counterActive: !!data.win_de_counter_active[i], eingangOffline: !!data.win_de_offline[i], status: !!data.win_de_state[i], })); } // ❌ Unbekannter Modus throw new Error(`❌ Unbekannter NEXT_PUBLIC_CPL_MODE: ${mode}`); };