Config UI: visualize Modbusproxy (#24015)
Co-authored-by: Michael Geers <michael@geers.tv>
This commit is contained in:
parent
7924922d4b
commit
07bcca2925
19 changed files with 666 additions and 119 deletions
26
cmd/setup.go
26
cmd/setup.go
|
|
@ -951,13 +951,33 @@ func configureDevices(conf globalconfig.All) error {
|
|||
return joinErrors(errs...)
|
||||
}
|
||||
|
||||
// migrateYamlToJson converts a settings value from yaml to json if needed
|
||||
func migrateYamlToJson[T any](key string) error {
|
||||
var err error
|
||||
if settings.IsJson(key) {
|
||||
// already JSON, nothing to do
|
||||
return nil
|
||||
}
|
||||
|
||||
var data T
|
||||
if err := settings.Yaml(key, new(T), &data); err == nil {
|
||||
settings.SetJson(key, data)
|
||||
log.INFO.Printf("migrated %s setting to JSON", key)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func configureModbusProxy(conf *[]globalconfig.ModbusProxy) error {
|
||||
// migrate settings
|
||||
if settings.Exists(keys.ModbusProxy) {
|
||||
*conf = []globalconfig.ModbusProxy{}
|
||||
if err := settings.Yaml(keys.ModbusProxy, new([]map[string]any), &conf); err != nil {
|
||||
// TODO: delete if not needed any more
|
||||
if err := migrateYamlToJson[[]globalconfig.ModbusProxy](keys.ModbusProxy); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := settings.Json(keys.ModbusProxy, &conf); err != nil {
|
||||
return fmt.Errorf("failed to read modbusproxy setting: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
for _, cfg := range *conf {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue