diff --git a/enervent-ctrl-go/main.go b/enervent-ctrl-go/main.go index fc63644..cf4289d 100644 --- a/enervent-ctrl-go/main.go +++ b/enervent-ctrl-go/main.go @@ -21,7 +21,12 @@ func coils(w http.ResponseWriter, r *http.Request) { func listen() { log.Println("Starting pingvinAPI...") http.HandleFunc("/api/v1/coils/", coils) - log.Fatal(http.ListenAndServe(":8888", nil)) + static := http.FileServer(http.Dir("./static/html")) + http.Handle("/", static) + err := http.ListenAndServe(":8888", nil) + if err != nil { + log.Fatal(err) + } } func main() { diff --git a/enervent-ctrl-go/static/html/coils/index.html b/enervent-ctrl-go/static/html/coils/index.html new file mode 120000 index 0000000..79c5d6f --- /dev/null +++ b/enervent-ctrl-go/static/html/coils/index.html @@ -0,0 +1 @@ +../index.html \ No newline at end of file diff --git a/enervent-ctrl-go/static/html/css/tabledata.css b/enervent-ctrl-go/static/html/css/tabledata.css new file mode 100644 index 0000000..3f7a99f --- /dev/null +++ b/enervent-ctrl-go/static/html/css/tabledata.css @@ -0,0 +1,17 @@ +.addr { + text-align: center; +} +.val { + text-align: center; +} +#data { + padding: 2pt; + border-collapse: collapse; +} +thead { + border-bottom: 1px solid; + text-align: left; +} +td { + padding: 2pt; +} \ No newline at end of file diff --git a/enervent-ctrl-go/static/html/index.html b/enervent-ctrl-go/static/html/index.html new file mode 100644 index 0000000..11bc623 --- /dev/null +++ b/enervent-ctrl-go/static/html/index.html @@ -0,0 +1,16 @@ + + + + + + + Enervent Pingvin Kotilämpö + + + + + + +
Coil values at
AddressValueSymbolDescription
+ + \ No newline at end of file diff --git a/enervent-ctrl-go/static/html/js/tabledata.js b/enervent-ctrl-go/static/html/js/tabledata.js new file mode 100644 index 0000000..f458dcf --- /dev/null +++ b/enervent-ctrl-go/static/html/js/tabledata.js @@ -0,0 +1,54 @@ +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); +} \ No newline at end of file diff --git a/enervent-ctrl-go/static/html/registers/index.html b/enervent-ctrl-go/static/html/registers/index.html new file mode 120000 index 0000000..79c5d6f --- /dev/null +++ b/enervent-ctrl-go/static/html/registers/index.html @@ -0,0 +1 @@ +../index.html \ No newline at end of file