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() }