import Meteostanica from "../utils/meteostanica"; import { watch } from "node:fs"; import reloadEnv from "../utils/reloadEnv"; let socket setInterval(() => { if (!socket) return; const data = Meteostanica.getData()[0] socket.send(JSON.stringify(data)) console.log(`indoor: ${data.indoorTemp / 100}°C, outdoor: ${data.outdoorConnected} - ${data.outdoorTemp / 100}°C`) }, process.env.DATA_POST_INTERVAL * 1000) setInterval(() => { if (!socket) return; socket.send(process.env.BACKEND_KEEPALIVE_STRING) }, 10000) // Function to read and parse the .env file async function reloadData() { try { await reloadEnv() if (process.env.POST_DATA_ENABLED !== "false") { socket = new WebSocket(`${process.env.BACKEND_URL}/ws/sendData/${process.env.BACKEND_WEBSOCKET_KEY}`) socket.addEventListener("message", (e) => { console.log(e.data) }) socket.addEventListener("close", async () => { await Bun.sleep(5000) await reloadData() }) } else { socket = null } } catch (error) { console.error("Failed to reload .env:", error); } } // 1. Initial load await reloadData(); // 2. Watch the .env file for changes watch(`.env`, async (event, filename) => { if (event === "change") { await reloadData(); } });