feat(mock): Script fetchAnalogInputsData auf ES-Module (.mjs) umgestellt, Datum automatisch gesetzt
This commit is contained in:
69
mocks/scripts/fetchAnalogInputsData.mjs
Normal file
69
mocks/scripts/fetchAnalogInputsData.mjs
Normal file
@@ -0,0 +1,69 @@
|
||||
// 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"
|
||||
|
||||
import fetch from "node-fetch";
|
||||
import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
const CPL_HOST = "http://10.10.0.118"; // ggf. anpassen
|
||||
const USERNAME = "Littwin";
|
||||
const PASSWORD = "Littwin";
|
||||
const DIA_TYPES = ["DIA0", "DIA1", "DIA2"];
|
||||
const INPUTS = Array.from({ length: 8 }, (_, i) => 100 + i); // 100-107
|
||||
|
||||
function formatDate(date) {
|
||||
return date.toISOString().slice(0, 10);
|
||||
}
|
||||
const today = new Date();
|
||||
const TO_DATE = formatDate(today);
|
||||
const fromDateObj = new Date(today);
|
||||
fromDateObj.setDate(today.getDate() - 30);
|
||||
const FROM_DATE = formatDate(fromDateObj);
|
||||
|
||||
function getUrl(dia, eingang) {
|
||||
const [vonJahr, vonMonat, vonTag] = FROM_DATE.split("-");
|
||||
const [bisJahr, bisMonat, bisTag] = TO_DATE.split("-");
|
||||
// immer Typ 1 (analoger Messwert)
|
||||
return `${CPL_HOST}/CPL?seite.ACP&${dia}=${vonJahr};${vonMonat};${vonTag};${bisJahr};${bisMonat};${bisTag};${eingang};1`;
|
||||
}
|
||||
|
||||
async function fetchAndSave(dia, eingang) {
|
||||
const url = getUrl(dia, eingang);
|
||||
console.log("Fetch:", url);
|
||||
const res = await fetch(url, {
|
||||
headers: {
|
||||
Authorization:
|
||||
"Basic " + Buffer.from(`${USERNAME}:${PASSWORD}`).toString("base64"),
|
||||
},
|
||||
});
|
||||
if (!res.ok)
|
||||
throw new Error(`Fehler bei Eingang ${eingang} ${dia}: ${res.status}`);
|
||||
const data = await res.json();
|
||||
const dir = path.join(
|
||||
__dirname,
|
||||
"../device-cgi-simulator/chartsData/analogInputs",
|
||||
String(eingang - 99)
|
||||
);
|
||||
await fs.mkdir(dir, { recursive: true });
|
||||
await fs.writeFile(
|
||||
path.join(dir, `${dia}.json`),
|
||||
JSON.stringify(data, null, 2)
|
||||
);
|
||||
}
|
||||
|
||||
(async () => {
|
||||
for (const eingang of INPUTS) {
|
||||
for (const dia of DIA_TYPES) {
|
||||
try {
|
||||
await fetchAndSave(dia, eingang);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log("Mockdaten aktualisiert.");
|
||||
})();
|
||||
Reference in New Issue
Block a user