summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-12-10 21:14:38 +0100
committerxengineering <me@xengineering.eu>2025-12-10 21:14:38 +0100
commitf9fac85222892e45554a2cc49dd93455a374ef68 (patch)
tree1ca1b5482da9e5c90e519100afa66f61af1e4bac /main.go
parent1f4c3308be296d95163e3e0ea54761410f4da140 (diff)
downloadsia-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.
Diffstat (limited to 'main.go')
-rw-r--r--main.go28
1 files changed, 27 insertions, 1 deletions
diff --git a/main.go b/main.go
index 22c9b5a..2beb538 100644
--- a/main.go
+++ b/main.go
@@ -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)
+ }
+ }
}