gh-21 PUT /api/v1/temperature/<action> for changing temperature setpoint
This commit is contained in:
parent
f0afee1256
commit
a49978ee5f
|
@ -22,7 +22,7 @@ import (
|
||||||
var static embed.FS
|
var static embed.FS
|
||||||
|
|
||||||
var (
|
var (
|
||||||
version = "0.0.12"
|
version = "0.0.13"
|
||||||
pingvin pingvinKL.PingvinKL
|
pingvin pingvinKL.PingvinKL
|
||||||
DEBUG *bool
|
DEBUG *bool
|
||||||
INTERVAL *int
|
INTERVAL *int
|
||||||
|
@ -110,11 +110,23 @@ func status(w http.ResponseWriter, r *http.Request) {
|
||||||
json.NewEncoder(w).Encode(pingvin.Status)
|
json.NewEncoder(w).Encode(pingvin.Status)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func temperature(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
pathparams := strings.Split(strings.TrimPrefix(r.URL.Path, "/api/v1/temperature/"), "/")
|
||||||
|
if len(pathparams[0]) > 0 && r.Method == "POST" && len(pathparams) == 1 {
|
||||||
|
pingvin.Temperature(pathparams[0])
|
||||||
|
json.NewEncoder(w).Encode(pingvin.Registers[135])
|
||||||
|
} else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func listen() {
|
func listen() {
|
||||||
log.Println("Starting pingvinAPI...")
|
log.Println("Starting pingvinAPI...")
|
||||||
http.HandleFunc("/api/v1/coils/", coils)
|
http.HandleFunc("/api/v1/coils/", coils)
|
||||||
http.HandleFunc("/api/v1/registers/", registers)
|
http.HandleFunc("/api/v1/registers/", registers)
|
||||||
http.HandleFunc("/api/v1/status", status)
|
http.HandleFunc("/api/v1/status", status)
|
||||||
|
http.HandleFunc("/api/v1/temperature/", temperature)
|
||||||
html, err := fs.Sub(static, "static/html")
|
html, err := fs.Sub(static, "static/html")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|
|
@ -502,6 +502,44 @@ func parseStatus(value int) string {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PingvinKL) Temperature(action string) error {
|
||||||
|
temperature := 0
|
||||||
|
if action == "up" {
|
||||||
|
temperature = p.Registers[135].Value + 1*p.Registers[135].Multiplier
|
||||||
|
p.Debug.Println("Raising temperature to", temperature)
|
||||||
|
} else if action == "down" {
|
||||||
|
temperature = p.Registers[135].Value - 1*p.Registers[135].Multiplier
|
||||||
|
p.Debug.Println("Lowering temperature to", temperature)
|
||||||
|
} else {
|
||||||
|
t, err := strconv.Atoi(action)
|
||||||
|
if err != nil {
|
||||||
|
p.Debug.Println(err)
|
||||||
|
tfloat, err := strconv.ParseFloat(action, 32)
|
||||||
|
if err != nil {
|
||||||
|
p.Debug.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
t = int(tfloat * float64(p.Registers[135].Multiplier))
|
||||||
|
temperature = t
|
||||||
|
}
|
||||||
|
p.Debug.Println("Setting temperature to", temperature)
|
||||||
|
// _, err = p.WriteRegister(135, uint16(t))
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
if temperature > 300 || temperature < 200 {
|
||||||
|
return fmt.Errorf("Temperature setpoint must be between 200 and 300")
|
||||||
|
}
|
||||||
|
p.Debug.Println("Writing register 135 to", temperature)
|
||||||
|
res, err := p.WriteRegister(135, uint16(temperature))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
p.Debug.Println("Temperature changed to", res)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PingvinKL) Monitor(interval int) {
|
func (p *PingvinKL) Monitor(interval int) {
|
||||||
for {
|
for {
|
||||||
time.Sleep(time.Duration(interval) * time.Second)
|
time.Sleep(time.Duration(interval) * time.Second)
|
||||||
|
|
Loading…
Reference in New Issue