diff options
Diffstat (limited to 'mqtt.go')
| -rw-r--r-- | mqtt.go | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -1,6 +1,7 @@ package main import ( + "fmt" "log" "time" @@ -18,11 +19,19 @@ const ( MQTT_KEEPALIVE_PERIOD = 2 * time.Second ) +var ( + mqttServerHealthTopic string +) + type MQTTMessage struct { Topic string Payload []byte } +func init() { + mqttServerHealthTopic = fmt.Sprintf("%s/server/health", TOPIC_PREFIX) +} + func MQTTRun(tx chan MQTTMessage) { opts := mqtt.NewClientOptions() opts.AddBroker(BROKER) @@ -34,6 +43,7 @@ func MQTTRun(tx chan MQTTMessage) { opts.SetConnectRetry(true) opts.SetConnectTimeout(MQTT_CONNECT_TIMEOUT) opts.SetKeepAlive(MQTT_KEEPALIVE_PERIOD) + opts.SetWill(mqttServerHealthTopic, `bad`, QOS, true) client := mqtt.NewClient(opts) @@ -52,6 +62,7 @@ func MQTTRun(tx chan MQTTMessage) { func MQTTOnConnectHandler(c mqtt.Client) { log.Printf("Connected to MQTT broker (%s)", BROKER) + c.Publish(mqttServerHealthTopic, QOS, true, []byte(`good`)) } func MQTTConnectionLostHandler(c mqtt.Client, err error) { |
