function zeroPad(number) { return ("0" + number).slice(-2) } function getData() { now = new Date() Y = now.getFullYear() m = now.getMonth() d = now.getDate() H = zeroPad(now.getHours()) M = zeroPad(now.getMinutes()) S = zeroPad(now.getSeconds()) document.getElementById('time').innerHTML = `${Y}-${m}-${d} ${H}:${M}:${S}` error = false // The same index.html is used for both coil and register data, // change api url based on which we're looking at if (document.location.pathname == "/coils/") { url = "/api/v1/coils" document.getElementById("title").innerHTML = "Coils | Enervent Pingvin Kotilämpö" } else if (document.location.pathname == "/registers/") { url = "/api/v1/registers" document.getElementById("title").innerHTML = "Registers | Enervent Pingvin Kotilämpö" } else { document.getElementById("data").innerHTML = 'Page not found' error = true } if (!error) { // Fetch data from API fetch(url) .then((response) => { if (!response.ok) { throw new Error(`Error fetching data: ${response.status}`) } return response.json() }) .then((data) => { // Populate table document.getElementById('datatable').innerHTML = ""; for (n=0; n${data[n].address}\ ${Number(data[n].value)}\ ${data[n].symbol}\ ${data[n].description}` document.getElementById('datatable').innerHTML += tablerow } }); } // Using setTimeout instead of setInterval to avoid possible connection issues // There's no need to update exactly every 5 seconds, the skew is fine setTimeout(getData, 1*1000); }