Convert remaining fatals into error returns (#357)
This commit is contained in:
parent
2dbc3b65d7
commit
6f864049ee
7 changed files with 35 additions and 20 deletions
12
cmd/setup.go
12
cmd/setup.go
|
|
@ -90,7 +90,12 @@ func loadConfig(conf config) *core.Site {
|
|||
}
|
||||
|
||||
func configureSite(conf map[string]interface{}, cp *ConfigProvider, loadPoints []*core.LoadPoint) *core.Site {
|
||||
return core.NewSiteFromConfig(log, cp, conf, loadPoints)
|
||||
site, err := core.NewSiteFromConfig(log, cp, conf, loadPoints)
|
||||
if err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
return site
|
||||
}
|
||||
|
||||
func configureLoadPoints(conf config, cp *ConfigProvider) (loadPoints []*core.LoadPoint) {
|
||||
|
|
@ -108,7 +113,10 @@ func configureLoadPoints(conf config, cp *ConfigProvider) (loadPoints []*core.Lo
|
|||
|
||||
for id, lpc := range lpc {
|
||||
log := util.NewLogger("lp-" + strconv.Itoa(id+1))
|
||||
lp := core.NewLoadPointFromConfig(log, cp, lpc)
|
||||
lp, err := core.NewLoadPointFromConfig(log, cp, lpc)
|
||||
if err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
loadPoints = append(loadPoints, lp)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package core
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
"sort"
|
||||
|
|
@ -90,10 +91,10 @@ type LoadPoint struct {
|
|||
}
|
||||
|
||||
// NewLoadPointFromConfig creates a new loadpoint
|
||||
func NewLoadPointFromConfig(log *util.Logger, cp configProvider, other map[string]interface{}) *LoadPoint {
|
||||
func NewLoadPointFromConfig(log *util.Logger, cp configProvider, other map[string]interface{}) (*LoadPoint, error) {
|
||||
lp := NewLoadPoint(log)
|
||||
if err := util.DecodeOther(other, &lp); err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// set sane defaults
|
||||
|
|
@ -118,7 +119,7 @@ func NewLoadPointFromConfig(log *util.Logger, cp configProvider, other map[strin
|
|||
}
|
||||
|
||||
if lp.ChargerRef == "" {
|
||||
lp.log.FATAL.Fatal("missing charger")
|
||||
return nil, errors.New("missing charger")
|
||||
}
|
||||
charger := cp.Charger(lp.ChargerRef)
|
||||
lp.configureChargerType(charger)
|
||||
|
|
@ -135,7 +136,7 @@ func NewLoadPointFromConfig(log *util.Logger, cp configProvider, other map[strin
|
|||
HandlerConfig: lp.HandlerConfig,
|
||||
}
|
||||
|
||||
return lp
|
||||
return lp, nil
|
||||
}
|
||||
|
||||
// NewLoadPoint creates a LoadPoint with sane defaults
|
||||
|
|
|
|||
11
core/site.go
11
core/site.go
|
|
@ -1,6 +1,7 @@
|
|||
package core
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
|
|
@ -57,10 +58,10 @@ func NewSiteFromConfig(
|
|||
cp configProvider,
|
||||
other map[string]interface{},
|
||||
loadpoints []*LoadPoint,
|
||||
) *Site {
|
||||
) (*Site, error) {
|
||||
site := NewSite()
|
||||
if err := util.DecodeOther(other, &site); err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Voltage = site.Voltage
|
||||
|
|
@ -68,10 +69,10 @@ func NewSiteFromConfig(
|
|||
|
||||
// configure meter from references
|
||||
// if site.Meters.PVMeterRef == "" && site.Meters.GridMeterRef == "" {
|
||||
// site.log.FATAL.Fatal("missing either pv or grid meter")
|
||||
// nil, errors.New("missing either pv or grid meter")
|
||||
// }
|
||||
if site.Meters.GridMeterRef == "" {
|
||||
site.log.FATAL.Fatal("missing grid meter")
|
||||
return nil, errors.New("missing grid meter")
|
||||
}
|
||||
if site.Meters.GridMeterRef != "" {
|
||||
site.gridMeter = cp.Meter(site.Meters.GridMeterRef)
|
||||
|
|
@ -83,7 +84,7 @@ func NewSiteFromConfig(
|
|||
site.batteryMeter = cp.Meter(site.Meters.BatteryMeterRef)
|
||||
}
|
||||
|
||||
return site
|
||||
return site, nil
|
||||
}
|
||||
|
||||
// NewSite creates a Site with sane defaults
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package meter
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/andig/evcc/api"
|
||||
"github.com/andig/evcc/util"
|
||||
|
|
@ -84,14 +85,14 @@ func NewModbusFromConfig(other map[string]interface{}) (api.Meter, error) {
|
|||
}
|
||||
|
||||
if err := modbus.ParseOperation(device, cc.Power, &m.opPower); err != nil {
|
||||
log.FATAL.Fatalf("invalid measurement for power: %s", cc.Power)
|
||||
return nil, fmt.Errorf("invalid measurement for power: %s", cc.Power)
|
||||
}
|
||||
|
||||
// decorate energy reading
|
||||
var totalEnergy func() (float64, error)
|
||||
if cc.Energy != "" {
|
||||
if err := modbus.ParseOperation(device, cc.Energy, &m.opEnergy); err != nil {
|
||||
log.FATAL.Fatalf("invalid measurement for energy: %s", cc.Power)
|
||||
return nil, fmt.Errorf("invalid measurement for energy: %s", cc.Power)
|
||||
}
|
||||
|
||||
totalEnergy = m.totalEnergy
|
||||
|
|
|
|||
|
|
@ -67,7 +67,11 @@ func NewSMA(uri, serial, power, energy string) (api.Meter, error) {
|
|||
}
|
||||
|
||||
if sma.Instance == nil {
|
||||
sma.Instance = sma.New(log)
|
||||
instance, err := sma.New(log)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sma.Instance = instance
|
||||
}
|
||||
|
||||
// we only need to subscribe to one of the two possible identifiers
|
||||
|
|
|
|||
|
|
@ -96,21 +96,21 @@ type Listener struct {
|
|||
}
|
||||
|
||||
// New creates a Listener
|
||||
func New(log *util.Logger) *Listener {
|
||||
func New(log *util.Logger) (*Listener, error) {
|
||||
// Parse the string address
|
||||
gaddr, err := net.ResolveUDPAddr("udp4", multicastAddr)
|
||||
if err != nil {
|
||||
log.FATAL.Fatalf("error resolving udp address: %s", err)
|
||||
return nil, fmt.Errorf("error resolving udp address: %s", err)
|
||||
}
|
||||
|
||||
// Open up a connection
|
||||
conn, err := net.ListenMulticastUDP("udp4", nil, gaddr)
|
||||
if err != nil {
|
||||
log.FATAL.Fatalf("error opening connecting: %s", err)
|
||||
return nil, fmt.Errorf("error opening connecting: %s", err)
|
||||
}
|
||||
|
||||
if err := conn.SetReadBuffer(udpBufferSize); err != nil {
|
||||
log.FATAL.Fatalf("error setting read buffer: %s", err)
|
||||
return nil, fmt.Errorf("error setting read buffer: %s", err)
|
||||
}
|
||||
|
||||
l := &Listener{
|
||||
|
|
@ -120,7 +120,7 @@ func New(log *util.Logger) *Listener {
|
|||
|
||||
go l.listen()
|
||||
|
||||
return l
|
||||
return l, nil
|
||||
}
|
||||
|
||||
// processMessage converts a SMA multicast data package into Telegram
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ func NewModbusFromConfig(other map[string]interface{}) (*Modbus, error) {
|
|||
// register configured
|
||||
if cc.Register.Decode != "" {
|
||||
if op.MBMD, err = modbus.RegisterOperation(cc.Register); err != nil {
|
||||
log.TRACE.Fatal(err)
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue