summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mqtt.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/mqtt.go b/mqtt.go
index 5c1b1ad..6d01103 100644
--- a/mqtt.go
+++ b/mqtt.go
@@ -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) {