Switch into demo mode when config file not available
This commit is contained in:
parent
5cadb98f70
commit
e767cf0fbc
7 changed files with 109 additions and 8 deletions
|
|
@ -24,7 +24,10 @@ func runCharger(cmd *cobra.Command, args []string) {
|
|||
log.INFO.Printf("evcc %s (%s)", server.Version, server.Commit)
|
||||
|
||||
// load config
|
||||
conf := loadConfigFile(cfgFile)
|
||||
conf, err := loadConfigFile(cfgFile)
|
||||
if err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
// setup mqtt
|
||||
if conf.Mqtt.Broker != "" {
|
||||
|
|
|
|||
84
cmd/demo.go
Normal file
84
cmd/demo.go
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"github.com/spf13/viper"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
const demoYaml = `
|
||||
log: info
|
||||
|
||||
meters:
|
||||
- name: grid
|
||||
type: default
|
||||
power:
|
||||
type: js
|
||||
script: "1200"
|
||||
- name: pv
|
||||
type: default
|
||||
power:
|
||||
type: js
|
||||
script: "6400"
|
||||
- name: battery
|
||||
type: default
|
||||
power:
|
||||
type: js
|
||||
script: "200"
|
||||
soc:
|
||||
type: js
|
||||
script: "30"
|
||||
|
||||
chargers:
|
||||
- name: demo
|
||||
type: default
|
||||
enable:
|
||||
type: js
|
||||
script: "true"
|
||||
enabled:
|
||||
type: js
|
||||
script: "true"
|
||||
status:
|
||||
type: js
|
||||
script: "'B'"
|
||||
maxcurrent:
|
||||
type: js
|
||||
script: "6"
|
||||
|
||||
vehicles:
|
||||
- name: demo
|
||||
title: e-Golf
|
||||
type: default
|
||||
charge:
|
||||
type: js
|
||||
script: "63"
|
||||
|
||||
site:
|
||||
title: Demo
|
||||
meters:
|
||||
grid: grid
|
||||
pv: pv
|
||||
battery: battery
|
||||
|
||||
loadpoints:
|
||||
- title: Carport
|
||||
charger: demo
|
||||
vehicle: demo
|
||||
`
|
||||
|
||||
func demoConfig() (conf config) {
|
||||
demo := map[string]interface{}{}
|
||||
|
||||
if err := yaml.Unmarshal([]byte(demoYaml), &demo); err != nil {
|
||||
log.FATAL.Fatalf("failed decoding demo config: %+v", err)
|
||||
}
|
||||
|
||||
for k, v := range demo {
|
||||
viper.Set(k, v)
|
||||
}
|
||||
|
||||
if err := viper.UnmarshalExact(&conf); err != nil {
|
||||
log.FATAL.Fatalf("failed loading demo config: %v", err)
|
||||
}
|
||||
|
||||
return conf
|
||||
}
|
||||
|
|
@ -26,7 +26,10 @@ func runDump(cmd *cobra.Command, args []string) {
|
|||
log.INFO.Printf("evcc %s (%s)", server.Version, server.Commit)
|
||||
|
||||
// load config
|
||||
conf := loadConfigFile(cfgFile)
|
||||
conf, err := loadConfigFile(cfgFile)
|
||||
if err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
// setup mqtt
|
||||
if conf.Mqtt.Broker != "" {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,10 @@ func runMeter(cmd *cobra.Command, args []string) {
|
|||
log.INFO.Printf("evcc %s (%s)", server.Version, server.Commit)
|
||||
|
||||
// load config
|
||||
conf := loadConfigFile(cfgFile)
|
||||
conf, err := loadConfigFile(cfgFile)
|
||||
if err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
// setup mqtt
|
||||
if conf.Mqtt.Broker != "" {
|
||||
|
|
|
|||
|
|
@ -142,7 +142,12 @@ func run(cmd *cobra.Command, args []string) {
|
|||
log.INFO.Printf("evcc %s (%s)", server.Version, server.Commit)
|
||||
|
||||
// load config and re-configure logging after reading config file
|
||||
conf := loadConfigFile(cfgFile)
|
||||
conf, err := loadConfigFile(cfgFile)
|
||||
if err != nil {
|
||||
log.ERROR.Println("missing evcc config - switching into demo mode")
|
||||
conf = demoConfig()
|
||||
}
|
||||
|
||||
util.LogLevel(viper.GetString("log"), viper.GetStringMapString("levels"))
|
||||
|
||||
uri := viper.GetString("uri")
|
||||
|
|
|
|||
|
|
@ -131,15 +131,15 @@ func configureLoadPoints(conf config, cp *ConfigProvider) (loadPoints []*core.Lo
|
|||
return loadPoints, nil
|
||||
}
|
||||
|
||||
func loadConfigFile(cfgFile string) (conf config) {
|
||||
func loadConfigFile(cfgFile string) (conf config, err error) {
|
||||
if cfgFile != "" {
|
||||
log.INFO.Println("using config file", cfgFile)
|
||||
if err := viper.UnmarshalExact(&conf); err != nil {
|
||||
log.FATAL.Fatalf("failed parsing config file %s: %v", cfgFile, err)
|
||||
}
|
||||
} else {
|
||||
log.FATAL.Fatal("missing evcc config")
|
||||
err = errors.New("missing evcc config")
|
||||
}
|
||||
|
||||
return conf
|
||||
return conf, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,10 @@ func runVehicle(cmd *cobra.Command, args []string) {
|
|||
log.INFO.Printf("evcc %s (%s)", server.Version, server.Commit)
|
||||
|
||||
// load config
|
||||
conf := loadConfigFile(cfgFile)
|
||||
conf, err := loadConfigFile(cfgFile)
|
||||
if err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
// setup mqtt
|
||||
if conf.Mqtt.Broker != "" {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue