postData.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import Meteostanica from "../utils/meteostanica";
  2. import { watch } from "node:fs";
  3. import reloadEnv from "../utils/reloadEnv";
  4. let socket
  5. setInterval(() => {
  6. if (!socket) return;
  7. const data = Meteostanica.getData()[0]
  8. socket.send(JSON.stringify(data))
  9. console.log(`indoor: ${data.indoorTemp / 100}°C, outdoor: ${data.outdoorConnected} - ${data.outdoorTemp / 100}°C`)
  10. }, process.env.DATA_POST_INTERVAL * 1000)
  11. setInterval(() => {
  12. if (!socket) return;
  13. socket.send(process.env.BACKEND_KEEPALIVE_STRING)
  14. }, 10000)
  15. // Function to read and parse the .env file
  16. async function reloadData() {
  17. try {
  18. await reloadEnv()
  19. if (process.env.POST_DATA_ENABLED !== "false") {
  20. socket = new WebSocket(`${process.env.BACKEND_URL}/ws/sendData/${process.env.BACKEND_WEBSOCKET_KEY}`)
  21. socket.addEventListener("message", (e) => {
  22. console.log(e.data)
  23. })
  24. } else {
  25. socket = null
  26. }
  27. } catch (error) {
  28. console.error("Failed to reload .env:", error);
  29. }
  30. }
  31. // 1. Initial load
  32. await reloadData();
  33. // 2. Watch the .env file for changes
  34. watch(`.env`, async (event, filename) => {
  35. if (event === "change") {
  36. await reloadData();
  37. }
  38. });