openpdu/src/boards.go

63 lines
1.1 KiB
Go

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
func CreateBoards() {
// 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()
// }
}
func InitBoards() {
var b board.Board
for i := range boards {
b = *boards[i]
go b.Initialize()
}
}