diff options
| -rw-r--r-- | main.go | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -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) } |
