summaryrefslogtreecommitdiff
path: root/config.go
blob: edd6f4b96bd4cf73188b172f9bc012abe705da50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main

import (
	_ "embed"
	"encoding/json"
	"log"
)

//go:embed configs/default.json
var defaultConfig []byte

type MQTTConfig struct {
	Broker      string `json:"broker"`
	ClientID    string `json:"client-id"`
	TopicPrefix string `json:"topic-prefix"`
}

type HomematicConfig struct {
	CCU           string `json:"ccu"`
	PollingPeriod string `json:"polling-period"`
}

type StartupConfig struct {
	MQTT      MQTTConfig      `json:"mqtt"`
	Homematic HomematicConfig `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
}