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
+
Address
Value
Symbol
Description
+
+
+
+
\ 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