bella mqtt quasi va

This commit is contained in:
2019-10-28 00:20:21 +01:00
parent 93846dbbea
commit 9d253644bd
12 changed files with 355 additions and 30 deletions

View File

@@ -1,7 +1,5 @@
package main
import "log"
// BoardType Status
const (
BoardTypeDummy uint = 0
@@ -61,9 +59,7 @@ func (b *Board) PowerToggle(num uint) error {
b.dummyValue = make(map[uint]bool)
}
v, _ := b.PowerStatus(num)
log.Printf("toggle prestatus %v:%v", num, b.dummyValue[num])
b.dummyValue[num] = !v
log.Printf("toggle poststatus %v:%v", num, b.dummyValue[num])
return nil
}
return nil
@@ -81,7 +77,6 @@ func (b *Board) PowerStatus(num uint) (bool, error) {
b.dummyValue[num] = false
val = false
}
log.Printf("status %v:%v", num, val)
return val, nil
}
return false, nil

View File

@@ -13,6 +13,9 @@ type Configuration struct {
MQTT MQTTConfig `json:"mqtt"`
}
// TheConfig def
var TheConfig Configuration
func loadConfig(filename string) (Configuration, error) {
bytes, err := ioutil.ReadFile(filename)
if err != nil {
@@ -37,5 +40,6 @@ func saveConfig(c Configuration, filename string) error {
return ioutil.WriteFile(filename, bytes, 0644)
}
// TheConfig def
var TheConfig Configuration
func writeConfig() error {
return saveConfig(TheConfig, "t1.json")
}

View File

@@ -4,6 +4,7 @@ import (
"log"
"net/http"
"github.com/go-macaron/binding"
"github.com/go-macaron/pongo2"
"gopkg.in/macaron.v1"
)
@@ -20,6 +21,10 @@ func startServer() {
m.Post("/json/outlet/:outlet/off", jsonOutletPowerOFF)
m.Post("/json/outlet/:outlet/toggle", jsonOutletPowerToggle)
m.Get("/settings/mqtt", webGETSettingsMQTT)
m.Post("/json/settings/mqtt", binding.Bind(SettingsMQTTForm{}), webPOSTSettingsMQTT)
// m.Post("/settings/mqtt", webPOSTSettingsMQTT)
m.Get("/boards", func(ctx *macaron.Context) {
ctx.HTML(200, "boards") // 200 is the response code.
})

View File

@@ -1,6 +1,10 @@
package main
import "gopkg.in/macaron.v1"
import (
"net/http"
"gopkg.in/macaron.v1"
)
func statusPage(ctx *macaron.Context) {
var pluglist []Dictionary
@@ -12,3 +16,51 @@ func statusPage(ctx *macaron.Context) {
ctx.Data["pluglist"] = pluglist
ctx.HTML(200, "status") // 200 is the response code.
}
//SettingsMQTTForm definition
type SettingsMQTTForm struct {
BrokerIP string `form:"brokerip" binding:"Required"`
BrokerPort string `form:"brokerport" binding:"Required"`
ClientID string `form:"clientid" binding:"Required"`
Username string `form:"username"`
Password string `form:"password"`
Topic string `form:"topic" binding:"Required"`
CleanSession bool `form:"cleansession"`
HomeAssistant bool `form:"homeassistant"`
}
func webGETSettingsMQTT(ctx *macaron.Context) {
ctx.Data["r_brokerip"] = TheConfig.MQTT.BrokerIP
ctx.Data["r_brokerport"] = TheConfig.MQTT.BrokerPort
ctx.Data["r_clientid"] = TheConfig.MQTT.ClientID
ctx.Data["r_username"] = TheConfig.MQTT.Username
ctx.Data["r_password"] = TheConfig.MQTT.Password
ctx.Data["r_cleansession"] = TheConfig.MQTT.CleanSession
ctx.Data["r_topic"] = TheConfig.MQTT.Topic
ctx.Data["r_homeassistant"] = TheConfig.MQTT.HomeAssistant
ctx.HTML(200, "settings_mqtt") // 200 is the response code.
}
func webPOSTSettingsMQTT(ctx *macaron.Context, f SettingsMQTTForm) {
TheConfig.MQTT.BrokerIP = f.BrokerIP
TheConfig.MQTT.BrokerPort = f.BrokerPort
TheConfig.MQTT.ClientID = f.ClientID
TheConfig.MQTT.Username = f.Username
TheConfig.MQTT.Password = f.Password
TheConfig.MQTT.Topic = f.Topic
// TODO: cleansession
// TODO: homeassistant
err := writeConfig()
if err != nil {
ctx.JSON(http.StatusOK, Dictionary{
"result": "error",
"error": err.Error(),
})
}
ctx.JSON(http.StatusOK, Dictionary{
"result": "ok",
})
}