Closes #9 Update coil values on startup. #10 /api/v1/coils route started

This commit is contained in:
Jarno Rankinen 2023-01-29 23:31:21 +02:00
parent 876123e518
commit c16f94c6d4
3 changed files with 38 additions and 16 deletions

View File

@ -28,9 +28,9 @@
27,-,- 27,-,-
28,-,- 28,-,-
29,-,- 29,-,-
30,COIL_LTO_ON,Heat recycler state (running=1, stopped = 0) 30,COIL_LTO_ON,Heat recycler state (running=1 stopped=0)
31,-,- 31,-,-
32,COIL_HEAT_ON,After heater element state (On = 1, Off = 0) 32,COIL_HEAT_ON,After heater element state (On=1 Off=0)
33,-,- 33,-,-
34,-,- 34,-,-
35,-,- 35,-,-

Can't render this file because it has a wrong number of fields in line 31.

View File

@ -1,15 +1,31 @@
package main package main
import ( import (
"fmt" "encoding/json"
"log"
"net/http"
"github.com/0ranki/enervent-ctrl/enervent-ctrl-go/pingvinKL" "github.com/0ranki/enervent-ctrl/enervent-ctrl-go/pingvinKL"
) )
var (
version = "0.0.2"
pingvin pingvinKL.PingvinKL
)
func coils(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(pingvin.Coils)
}
func listen() {
log.Println("Starting pingvinAPI...")
http.HandleFunc("/api/v1/coils/", coils)
log.Fatal(http.ListenAndServe(":8888", nil))
}
func main() { func main() {
pingvin := pingvinKL.New() log.Println("enervent-ctrl version", version)
pingvin = pingvinKL.New()
pingvin.Update() pingvin.Update()
for i := 0; i < len(pingvin.Coils); i++ { listen()
fmt.Println(pingvin.Coils[i].Symbol, pingvin.Coils[i].Value, pingvin.Coils[i].Description)
}
} }

View File

@ -4,6 +4,7 @@ import (
"bufio" "bufio"
"log" "log"
"os" "os"
"strconv"
"strings" "strings"
"sync" "sync"
"time" "time"
@ -13,15 +14,20 @@ import (
// single coil data // single coil data
type pingvinCoil struct { type pingvinCoil struct {
Symbol string Address int `json:"address"`
Value bool Symbol string `json:"symbol"`
Description string Value bool `json:"value"`
Reserved bool Description string `json:"description"`
Reserved bool `json:"reserved"`
} }
func newCoil(symbol string, description string) pingvinCoil { func newCoil(address string, symbol string, description string) pingvinCoil {
addr, err := strconv.Atoi(address)
if err != nil {
log.Fatal("newCoil: Atoi:", err)
}
reserved := symbol == "-" && description == "-" reserved := symbol == "-" && description == "-"
coil := pingvinCoil{symbol, false, description, reserved} coil := pingvinCoil{addr, symbol, false, description, reserved}
return coil return coil
} }
@ -121,7 +127,7 @@ func New() PingvinKL {
pingvin.buslock = &sync.Mutex{} pingvin.buslock = &sync.Mutex{}
coilData := readCsvLines("coils.csv") coilData := readCsvLines("coils.csv")
for i := 0; i < len(coilData); i++ { for i := 0; i < len(coilData); i++ {
pingvin.Coils = append(pingvin.Coils, newCoil(coilData[i][1], coilData[i][2])) pingvin.Coils = append(pingvin.Coils, newCoil(coilData[i][0], coilData[i][1], coilData[i][2]))
} }
return pingvin return pingvin
} }