diff options
| author | xengineering <me@xengineering.eu> | 2025-12-10 21:14:38 +0100 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2025-12-10 21:14:38 +0100 |
| commit | f9fac85222892e45554a2cc49dd93455a374ef68 (patch) | |
| tree | 1ca1b5482da9e5c90e519100afa66f61af1e4bac | |
| parent | 1f4c3308be296d95163e3e0ea54761410f4da140 (diff) | |
| download | sia-server-f9fac85222892e45554a2cc49dd93455a374ef68.tar sia-server-f9fac85222892e45554a2cc49dd93455a374ef68.tar.zst sia-server-f9fac85222892e45554a2cc49dd93455a374ef68.zip | |
Adopt homematic-go example
This requests a list of devices from the Homematic central device and
then queries the state of every `SHUTTER_CONTACT`.
This is a good starting point for the server logic.
| -rw-r--r-- | main.go | 28 |
1 files changed, 27 insertions, 1 deletions
@@ -1,9 +1,35 @@ package main import ( + "fmt" "log" + + "xengineering.eu/homematic-go/homematic" +) + +const ( + HOST = `127.0.0.1` + PORT = 8080 ) func main() { - log.Println("Hello world!") + server := fmt.Sprintf("http://%s:%d", HOST, PORT) + + req := homematic.NewRequester(server) + + inventory, err := req.ListDevices() + if err != nil { + log.Fatalf("Failed to retrieve device list: %v", err) + } + + for _, device := range inventory { + if device.Type == `SHUTTER_CONTACT` { + state, err := req.GetValue(device.Address) + if err != nil { + log.Fatalf("Failed to get value: %v", err) + } + + log.Printf("%s %s has state %t", device.Type, device.Address, state) + } + } } |
