26 lines
593 B
Go
26 lines
593 B
Go
package meter
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/andig/evcc/api"
|
|
)
|
|
|
|
// NewFromConfig creates meter from configuration
|
|
func NewFromConfig(typ string, other map[string]interface{}) (meter api.Meter, err error) {
|
|
switch strings.ToLower(typ) {
|
|
case "default", "configurable":
|
|
meter, err = NewConfigurableFromConfig(other)
|
|
case "modbus":
|
|
meter, err = NewModbusFromConfig(other)
|
|
case "sma":
|
|
meter, err = NewSMAFromConfig(other)
|
|
case "tesla", "powerwall":
|
|
meter, err = NewTeslaFromConfig(other)
|
|
default:
|
|
err = fmt.Errorf("invalid meter type: %s", typ)
|
|
}
|
|
|
|
return meter, err
|
|
}
|