/* Das Script fetchMessagesData.mjs lädt Meldungen von einem CPL-Gerät über eine HTTPS-API für einen angegebenen Zeitraum herunter. Es authentifiziert sich mit Benutzername und Passwort, akzeptiert selbst-signierte Zertifikate und speichert die abgerufenen Daten als JSON in zwei Dateien ( messages_all.json) im Verzeichnis meldungen. Das Script dient dazu, Mockdaten für Tests oder Simulationen aktuell zu halten. */ import fetch from "node-fetch"; import https from "https"; import fs from "fs/promises"; import path from "path"; import { fileURLToPath } from "url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const CPL_URL = "https://10.10.0.118/CPL?Service/ae.ACP&MSS1=2025;07;11;2025;08;11;All"; const USERNAME = "Littwin"; const PASSWORD = "Littwin"; const targetDir = path.join(__dirname, "../device-cgi-simulator/meldungen"); async function fetchAndSaveMessages() { console.log("Fetch:", CPL_URL); const agent = new https.Agent({ rejectUnauthorized: false }); const res = await fetch(CPL_URL, { headers: { Authorization: "Basic " + Buffer.from(`${USERNAME}:${PASSWORD}`).toString("base64"), }, agent, }); if (!res.ok) throw new Error(`Fehler beim Abrufen der Meldungen: ${res.status}`); const data = await res.json(); await fs.mkdir(targetDir, { recursive: true }); await fs.writeFile( path.join(targetDir, "messages_all.json"), JSON.stringify(data, null, 2) ); } (async () => { try { await fetchAndSaveMessages(); console.log("Meldungen aktualisiert."); } catch (e) { console.error(e); } })();