diff --git a/enervent-ctrl-go/coils.csv b/enervent-ctrl-go/coils.csv index 131794e..be26d50 100644 --- a/enervent-ctrl-go/coils.csv +++ b/enervent-ctrl-go/coils.csv @@ -28,9 +28,9 @@ 27,-,- 28,-,- 29,-,- -30,COIL_LTO_ON,Heat recycler state (running=1, stopped = 0) +30,COIL_LTO_ON,Heat recycler state (running=1 stopped=0) 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,-,- 34,-,- 35,-,- diff --git a/enervent-ctrl-go/main.go b/enervent-ctrl-go/main.go index 2e72e40..a89df7c 100644 --- a/enervent-ctrl-go/main.go +++ b/enervent-ctrl-go/main.go @@ -1,15 +1,31 @@ package main import ( - "fmt" + "encoding/json" + "log" + "net/http" "github.com/0ranki/enervent-ctrl/enervent-ctrl-go/pingvinKL" ) -func main() { - pingvin := pingvinKL.New() - pingvin.Update() - for i := 0; i < len(pingvin.Coils); i++ { - fmt.Println(pingvin.Coils[i].Symbol, pingvin.Coils[i].Value, pingvin.Coils[i].Description) - } +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() { + log.Println("enervent-ctrl version", version) + pingvin = pingvinKL.New() + pingvin.Update() + listen() } diff --git a/enervent-ctrl-go/pingvinKL/pingvinKL.go b/enervent-ctrl-go/pingvinKL/pingvinKL.go index c544669..dc53962 100644 --- a/enervent-ctrl-go/pingvinKL/pingvinKL.go +++ b/enervent-ctrl-go/pingvinKL/pingvinKL.go @@ -4,6 +4,7 @@ import ( "bufio" "log" "os" + "strconv" "strings" "sync" "time" @@ -13,15 +14,20 @@ import ( // single coil data type pingvinCoil struct { - Symbol string - Value bool - Description string - Reserved bool + Address int `json:"address"` + Symbol string `json:"symbol"` + Value bool `json:"value"` + 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 == "-" - coil := pingvinCoil{symbol, false, description, reserved} + coil := pingvinCoil{addr, symbol, false, description, reserved} return coil } @@ -121,7 +127,7 @@ func New() PingvinKL { pingvin.buslock = &sync.Mutex{} coilData := readCsvLines("coils.csv") 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 }