2018-07-06 18:57:55 +00:00
|
|
|
package main
|
|
|
|
|
2021-02-08 23:44:14 +00:00
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
|
|
|
|
mqtt "github.com/eclipse/paho.mqtt.golang"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
)
|
2018-07-06 18:57:55 +00:00
|
|
|
|
|
|
|
var brokerClient mqtt.Client
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
opts := mqtt.NewClientOptions().AddBroker(cfg.MQTTHost)
|
|
|
|
if cfg.MQTTUser != "" || cfg.MQTTPass != "" {
|
|
|
|
opts.SetUsername(cfg.MQTTUser).SetPassword(cfg.MQTTPass)
|
|
|
|
}
|
|
|
|
|
|
|
|
brokerClient = mqtt.NewClient(opts)
|
|
|
|
|
2021-02-08 23:44:14 +00:00
|
|
|
if err := mqttTokToErr(brokerClient.Connect()); err != nil {
|
|
|
|
log.WithError(err).Fatal("Connect to MQTT broker")
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := mqttTokToErr(brokerClient.Subscribe("culmqtt/+/send", 0x01, publishFS20ToCUL)); err != nil {
|
|
|
|
log.WithError(err).Fatal("Subscribe to topic")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func mqttTokToErr(tok mqtt.Token) error {
|
|
|
|
if !tok.WaitTimeout(cfg.MQTTTimeout) {
|
|
|
|
return errors.New("command timed out")
|
|
|
|
}
|
|
|
|
|
|
|
|
return tok.Error()
|
2018-07-06 18:57:55 +00:00
|
|
|
}
|