summaryrefslogtreecommitdiff
path: root/config.go
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-12-20 14:06:34 +0100
committerxengineering <me@xengineering.eu>2025-12-20 14:06:34 +0100
commitd6fa255b1df26a12329a614601a027e074aabeb2 (patch)
treeb16cb727be8f14821e2ddbfa2d3179af2c8db457 /config.go
parentba367f41077be88338db981c88802d7292ac7013 (diff)
downloadsia-server-d6fa255b1df26a12329a614601a027e074aabeb2.tar
sia-server-d6fa255b1df26a12329a614601a027e074aabeb2.tar.zst
sia-server-d6fa255b1df26a12329a614601a027e074aabeb2.zip
Add default config parsing
This is a first step towards configurability.
Diffstat (limited to 'config.go')
-rw-r--r--config.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/config.go b/config.go
new file mode 100644
index 0000000..38f0af9
--- /dev/null
+++ b/config.go
@@ -0,0 +1,38 @@
+package main
+
+import (
+ _ "embed"
+ "encoding/json"
+ "log"
+)
+
+//go:embed configs/default.json
+var defaultConfig []byte
+
+type StartupConfig struct {
+ MQTT struct {
+ Broker string `json:"broker"`
+ ClientID string `json:"client-id"`
+ TopicPrefix string `json:"topic-prefix"`
+ } `json:"mqtt"`
+
+ Homematic struct {
+ CCU string `json:"ccu"`
+ PollingPeriodMilliseconds int `json:"polling-period-milliseconds"`
+ } `json:"homematic"`
+}
+
+func (sc *StartupConfig) FromJSON(data []byte) error {
+ return json.Unmarshal(data, sc)
+}
+
+func GetStartupConfig() StartupConfig {
+ config := StartupConfig{}
+
+ err := config.FromJSON(defaultConfig)
+ if err != nil {
+ log.Fatalf("Could not parse default config: %v", err)
+ }
+
+ return config
+}