Files

36 lines
820 B
Go

package bridge
import (
"log/slog"
"strings"
mqtt "github.com/eclipse/paho.mqtt.golang"
)
func (b *Bridge) onConnect(c mqtt.Client) {
c.Publish(b.availTopic(), 1, true, b.availPayload())
c.Subscribe(b.cfg.DiscoveryPrefix+"/status", 1, func(_ mqtt.Client, msg mqtt.Message) {
if string(msg.Payload()) == "online" {
b.publishDiscovery()
b.OnState(b.dev.GetStatus())
}
})
for out := 1; out <= numOutputs; out++ {
out := out
c.Subscribe(b.cmdTopic(out), 1, func(_ mqtt.Client, msg mqtt.Message) {
payload := strings.TrimSpace(string(msg.Payload()))
in := inputNumberFromLabel(payload)
if in == 0 {
slog.Warn("unknown input label", "payload", payload)
return
}
b.dev.SetOutput(out, in)
c.Publish(b.stateTopic(out), 1, true, inputLabel(in))
})
}
b.publishDiscovery()
}