2021-01-09 18:38:57 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"git.openpdu.org/OpenPDU/openpdu/board"
|
|
|
|
"git.openpdu.org/OpenPDU/openpdu/mqtt"
|
|
|
|
"git.openpdu.org/OpenPDU/openpdu/syslog"
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
)
|
|
|
|
|
|
|
|
var boards []*board.Board
|
|
|
|
|
2021-01-10 14:43:23 +00:00
|
|
|
func CreateBoards() {
|
2021-01-09 18:38:57 +00:00
|
|
|
|
|
|
|
// AllChannels = make(map[string]Channel)
|
|
|
|
|
|
|
|
boardsConfig := viper.Sub("boards")
|
|
|
|
if boardsConfig == nil {
|
|
|
|
syslog.Warning("No board configured")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
for key := range boardsConfig.AllSettings() {
|
|
|
|
boardConfig := boardsConfig.Sub(key)
|
|
|
|
boardConfig.SetDefault("type", "dummy")
|
|
|
|
|
|
|
|
b, err := board.CreateBoard(boardConfig, key)
|
|
|
|
if err == nil {
|
|
|
|
boards = append(boards, &b)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for i := range board.AllChannels {
|
|
|
|
board.AllChannels[i].AddOnChannelUpdateFunction(
|
|
|
|
"mqtt-publish",
|
|
|
|
func(oldValue bool, c board.Channel) {
|
|
|
|
mqtt.Publish(c.MQTTStateTopic(), c.ToString())
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: init boards array?
|
|
|
|
|
|
|
|
// outlets = make([]*Outlet, len(allChannels))
|
|
|
|
|
|
|
|
// // dumpa tutto
|
|
|
|
// for b := range boards {
|
|
|
|
// boards[b].Dump()
|
|
|
|
// }
|
|
|
|
|
|
|
|
// // dumpa tutto
|
|
|
|
// for o := range outlets {
|
|
|
|
// outlet.Outlets[o].Dump()
|
|
|
|
// }
|
|
|
|
|
|
|
|
}
|
2021-01-10 14:43:23 +00:00
|
|
|
|
|
|
|
func InitBoards() {
|
|
|
|
var b board.Board
|
|
|
|
for i := range boards {
|
|
|
|
b = *boards[i]
|
2021-09-30 21:12:11 +00:00
|
|
|
go b.Initialize()
|
2021-01-10 14:43:23 +00:00
|
|
|
}
|
|
|
|
}
|