2023-01-28 23:28:37 +02:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2023-02-02 11:44:30 +02:00
|
|
|
"embed"
|
2023-01-29 23:31:21 +02:00
|
|
|
"encoding/json"
|
2023-02-02 11:44:30 +02:00
|
|
|
"io/fs"
|
2023-01-29 23:31:21 +02:00
|
|
|
"log"
|
|
|
|
"net/http"
|
2023-01-29 14:42:03 +02:00
|
|
|
|
2023-01-28 23:28:37 +02:00
|
|
|
"github.com/0ranki/enervent-ctrl/enervent-ctrl-go/pingvinKL"
|
|
|
|
)
|
|
|
|
|
2023-02-02 13:38:31 +02:00
|
|
|
// Remember to dereference the symbolic links under ./static/html
|
|
|
|
// prior to building the binary e.g. by using tar
|
|
|
|
|
2023-02-02 11:44:30 +02:00
|
|
|
//go:embed static/html/*
|
|
|
|
var static embed.FS
|
|
|
|
|
2023-01-29 23:31:21 +02:00
|
|
|
var (
|
2023-02-18 21:52:53 +02:00
|
|
|
version = "0.0.4"
|
2023-01-29 23:31:21 +02:00
|
|
|
pingvin pingvinKL.PingvinKL
|
2023-02-01 22:19:57 +02:00
|
|
|
DEBUG = false
|
2023-01-29 23:31:21 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
func coils(w http.ResponseWriter, r *http.Request) {
|
2023-01-29 23:43:36 +02:00
|
|
|
w.Header().Set("Content-Type", "application/json")
|
2023-01-29 23:31:21 +02:00
|
|
|
json.NewEncoder(w).Encode(pingvin.Coils)
|
|
|
|
}
|
|
|
|
|
2023-02-01 22:12:56 +02:00
|
|
|
func registers(w http.ResponseWriter, r *http.Request) {
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
2023-02-01 22:19:57 +02:00
|
|
|
if DEBUG {
|
|
|
|
log.Println("Received request for /registers")
|
|
|
|
}
|
2023-02-01 22:12:56 +02:00
|
|
|
json.NewEncoder(w).Encode(pingvin.Registers)
|
2023-02-01 22:19:57 +02:00
|
|
|
if DEBUG {
|
|
|
|
log.Println("Handled request for /registers")
|
|
|
|
}
|
2023-02-01 22:12:56 +02:00
|
|
|
}
|
|
|
|
|
2023-02-18 21:52:53 +02:00
|
|
|
func status(w http.ResponseWriter, r *http.Request) {
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
|
json.NewEncoder(w).Encode(pingvin.Status)
|
|
|
|
}
|
|
|
|
|
2023-01-29 23:31:21 +02:00
|
|
|
func listen() {
|
|
|
|
log.Println("Starting pingvinAPI...")
|
|
|
|
http.HandleFunc("/api/v1/coils/", coils)
|
2023-02-01 22:12:56 +02:00
|
|
|
http.HandleFunc("/api/v1/registers/", registers)
|
2023-02-18 21:52:53 +02:00
|
|
|
http.HandleFunc("/api/v1/status", status)
|
2023-02-02 11:44:30 +02:00
|
|
|
html, err := fs.Sub(static, "static/html")
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
htmlroot := http.FileServer(http.FS(html))
|
|
|
|
http.Handle("/", htmlroot)
|
|
|
|
err = http.ListenAndServe(":8888", nil)
|
2023-02-01 21:52:55 +02:00
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
2023-01-29 23:31:21 +02:00
|
|
|
}
|
|
|
|
|
2023-01-28 23:28:37 +02:00
|
|
|
func main() {
|
2023-01-29 23:31:21 +02:00
|
|
|
log.Println("enervent-ctrl version", version)
|
|
|
|
pingvin = pingvinKL.New()
|
2023-01-29 21:56:22 +02:00
|
|
|
pingvin.Update()
|
2023-02-19 12:28:26 +02:00
|
|
|
go pingvin.Monitor(15)
|
2023-01-29 23:31:21 +02:00
|
|
|
listen()
|
2023-01-28 23:28:37 +02:00
|
|
|
}
|