import dotenv from "dotenv"; dotenv.config(); import axios from "axios"; import fs from "fs"; const CACHE_FILE = process.env.CACHE_FILE_Path; if (!fs.existsSync(CACHE_FILE)) { console.log("[INFO] CACHE_FILE Created!"); fs.writeFileSync(CACHE_FILE, "[]"); } const BASE_URL = process.env.BASE_URL; const divera_group_id = process.env.divera_status_groupid; // Fahrzeuge die überwacht werden sollen const WATCHED_VEHICLES = [ "10-11-1", "10-48-1", "10-30-1", "10-26-1", "10-45-1", "10-17-1", "10-19-1", "10-68-1", "10-64-1", "10-03-1", "10-04-1", ]; // Intervall in ms const POLL_INTERVAL = 15000; async function getData() { const data = await axios.get(`${BASE_URL}/v2/pull/all?accesskey=${process.env.divera_accesskey_stadt}`); const watchedVehicles = Object.entries(data.data.data.cluster.vehicle).filter(([key, vehicle]) => { return WATCHED_VEHICLES.includes(vehicle.name); }); const formatetData = await watchedVehicles.map(([key, vehicle]) => { return { name: vehicle.name, fmsstatus_id: vehicle.fmsstatus_id, fmsstatus_ts: vehicle.fmsstatus_ts, }; }); return formatetData; } async function hasStatusChanged(newData, oldData) { await newData.forEach(async (vehicle) => { const oldVehicle = oldData.find((x) => x.name == vehicle.name); if (vehicle.fmsstatus_id != oldVehicle.fmsstatus_id || !oldVehicle) { // Divera Nachricht console.log("[INFO] Statusabfrage!"); if (vehicle.fmsstatus_id == 6 || vehicle.fmsstatus_id == 2 || vehicle.fmsstatus_id == 3) { // console.log(`Status Änderung: FL. AUR ${vehicle.name} Status ${vehicle.fmsstatus_id}`); await axios .post("https://app.divera247.com/api/v2/news?accesskey=" + process.env.divera_accesskey_aurich, { News: { title: `FL. AUR ${vehicle.name} Status ${oldVehicle.fmsstatus_id}->${vehicle.fmsstatus_id}`, ts_publish: vehicle.fmsstatus_ts, notification_type: 3, group: divera_group_id, send_push: true, }, }) .then((res) => { console.log("Divera News sent successfully:", res.data); }); } } }); } async function main() { console.log("Ausführung Status"); const newData = await getData(); hasStatusChanged(newData, JSON.parse(fs.readFileSync(CACHE_FILE, "utf8"))); fs.writeFileSync(CACHE_FILE, JSON.stringify(newData)); } console.log("[INFO] Start Intervall!"); setInterval(main, 1000 * process.env.intervall);