// services/fetchAnalogInputsService.ts export const fetchAnalogInputsService = 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/analogInputs.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 analogInputs.js"); document.body.appendChild(script); }); const win = window as any; return Array.from({ length: 8 }, (_, i) => ({ id: i + 1, value: parseFloat(win.win_analogInputsValues[i]), label: win.win_analogInputsLabels[i], unit: win.win_analogInputsUnits[i], offset: parseFloat(win.win_analogInputsOffset[i]), factor: parseFloat(win.win_analogInputsFactor[i]), loggerInterval: parseInt(win.win_analogInputsLoggerIntervall[i]), weighting: parseInt(win.win_analogInputsWeighting[i]), })); } // ✅ jsSimulatedProd-MODUS (Script einbinden und aus window lesen) else if (mode === "jsSimulatedProd") { console.log("🔄 Lade simulierte analoge Eingänge im Produktionsmodus..."); const scriptUrl = "/api/cpl/getAnalogInputsHandler"; // 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); }); const win = window as any; return Array.from({ length: 8 }, (_, i) => ({ id: i + 1, value: parseFloat(win.win_analogInputsValues[i]), label: win.win_analogInputsLabels[i], unit: win.win_analogInputsUnits[i], offset: parseFloat(win.win_analogInputsOffset[i]), factor: parseFloat(win.win_analogInputsFactor[i]), loggerInterval: parseInt(win.win_analogInputsLoggerIntervall[i]), weighting: parseInt(win.win_analogInputsWeighting[i]), })); } // ✅ JSON-MODUS (API gibt JSON-Daten zurück) else if (mode === "json") { console.log("🔄 Lade analoge Eingänge im JSON-Modus..."); const res = await fetch("/api/cpl/getAnalogInputsHandler"); if (!res.ok) throw new Error("❌ Fehler beim Laden der analogen Eingänge"); const data = await res.json(); console.log("📡 Analoge Eingänge geladen:", data); return data.win_analogInputsValues.map((value: number, i: number) => ({ id: i + 1, value, label: data.win_analogInputsLabels[i], unit: data.win_analogInputsUnits[i], offset: parseFloat(data.win_analogInputsOffset[i]), factor: parseFloat(data.win_analogInputsFactor[i]), loggerInterval: parseInt(data.win_analogInputsLoggerIntervall[i]), weighting: parseInt(data.win_analogInputsWeighting[i]), })); } else { throw new Error(`Unbekannter Modus: ${mode}`); } };