feat: Script zum Abrufen und Speichern von CPL-Meldungen als Mockdaten hinzugefügt
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
// Script zum Aktualisieren der Mockdaten für analoge Eingänge von CPL-Gerät
|
||||
// Benötigt: node-fetch und fs/promises
|
||||
// npm install node-fetch
|
||||
// In package.json: "type": "module"
|
||||
/*
|
||||
Das Script fetchAnalogInputsData.mjs lädt historische Messdaten für analoge Eingänge eines CPL-Geräts (über HTTP-API) für die
|
||||
letzten 30 Tage herunter und speichert sie als JSON-Dateien in einem lokalen Verzeichnis.
|
||||
Es verwendet die Zugangsdaten Littwin und ruft für jeden Eingang (100–107) und jeden DIA-Typ (DIA0, DIA1, DIA2)
|
||||
die Daten ab. Die Ergebnisse werden in mocks/device-cgi-simulator/chartsData/analogInputs/<Eingang>/<DIA>.json gespeichert.
|
||||
Das Script dient zur Aktualisierung von Mockdaten für Tests oder Simulationen.
|
||||
*/
|
||||
|
||||
import fetch from "node-fetch";
|
||||
import fs from "fs/promises";
|
||||
|
||||
52
mocks/scripts/fetchMessagesData.mjs
Normal file
52
mocks/scripts/fetchMessagesData.mjs
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
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.json und 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;02;2025;08;01;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.json"),
|
||||
JSON.stringify(data, null, 2)
|
||||
);
|
||||
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);
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user