summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go22
1 files changed, 21 insertions, 1 deletions
diff --git a/main.go b/main.go
index 2beb538..47b6eef 100644
--- a/main.go
+++ b/main.go
@@ -5,11 +5,17 @@ import (
"log"
"xengineering.eu/homematic-go/homematic"
+ mqtt "github.com/eclipse/paho.mqtt.golang"
)
const (
HOST = `127.0.0.1`
PORT = 8080
+ BROKER = `tcp://127.0.0.1:1883`
+ CLIENT_ID = `sia-server`
+ TOPIC_PREFIX = `sia-server`
+ QOS = byte(0)
+ RETAINED = false
)
func main() {
@@ -22,6 +28,16 @@ func main() {
log.Fatalf("Failed to retrieve device list: %v", err)
}
+ opts := mqtt.NewClientOptions()
+ opts.AddBroker(BROKER)
+ opts.SetClientID(CLIENT_ID)
+ opts.SetCleanSession(true)
+
+ client := mqtt.NewClient(opts)
+ if token := client.Connect(); token.Wait() && token.Error() != nil {
+ log.Fatal(token.Error())
+ }
+
for _, device := range inventory {
if device.Type == `SHUTTER_CONTACT` {
state, err := req.GetValue(device.Address)
@@ -29,7 +45,11 @@ func main() {
log.Fatalf("Failed to get value: %v", err)
}
- log.Printf("%s %s has state %t", device.Type, device.Address, state)
+ topic := fmt.Sprintf("%s/%s", TOPIC_PREFIX, device.Address)
+ payload := []byte(fmt.Sprintf("%t", state))
+ client.Publish(topic, QOS, RETAINED, payload)
}
}
+
+ client.Disconnect(500)
}