From 5b25200b8afea648b5598c97a9566f8bc5c0aff7 Mon Sep 17 00:00:00 2001 From: xengineering Date: Mon, 23 Mar 2026 17:59:33 +0100 Subject: WIP: Add shelly configuration parsing TODO: Add strict checks for config like uniqueness of IDs. This allows to specify Shelly cover devices to be added to the configuration file with all information required by the Sia server. --- config.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'config.go') diff --git a/config.go b/config.go index b3cd9dc..a294b6c 100644 --- a/config.go +++ b/config.go @@ -45,9 +45,17 @@ type HomematicConfig struct { PollingPeriod string `json:"polling-period"` } +type ShellyConfig struct { + ID string `json:"id"` + IP string `json:"ip"` +} + +type ShellyConfigs []ShellyConfig + type StartupConfig struct { MQTT MQTTConfig `json:"mqtt"` Homematic HomematicConfig `json:"homematic"` + Shelly ShellyConfigs `json:"shelly"` } func (sc StartupConfig) String() string { @@ -117,6 +125,13 @@ func (sc StartupConfig) Validate() error { return fmt.Errorf("homematic/polling-period configuration '%s' could not be parsed to duration: %v", sc.Homematic.PollingPeriod, err) } + for _, shelly := range sc.Shelly { + ip := net.ParseIP(shelly.IP) + if ip == nil { + return fmt.Errorf("Failed to parse IP address '%s'.", shelly.IP) + } + } + return nil } -- cgit v1.3