47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package charger
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/andig/evcc/api"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type apiFunction string
|
|
|
|
// NewFromConfig creates charger from configuration
|
|
func NewFromConfig(typ string, other map[string]interface{}) (charger api.Charger, err error) {
|
|
switch strings.ToLower(typ) {
|
|
case "default", "configurable":
|
|
charger, err = NewConfigurableFromConfig(other)
|
|
case "wallbe":
|
|
charger, err = NewWallbeFromConfig(other)
|
|
case "phoenix-emcp":
|
|
charger, err = NewPhoenixEMCPFromConfig(other)
|
|
case "phoenix-evcc":
|
|
charger, err = NewPhoenixEVCCFromConfig(other)
|
|
case "nrgkick-bluetooth", "nrgkick-bt", "nrgble":
|
|
charger, err = NewNRGKickBLEFromConfig(other)
|
|
case "nrgkick-connect", "nrgconnect":
|
|
charger, err = NewNRGKickConnectFromConfig(other)
|
|
case "go-e", "goe":
|
|
charger, err = NewGoEFromConfig(other)
|
|
case "evsewifi":
|
|
charger, err = NewEVSEWifiFromConfig(other)
|
|
case "simpleevse", "evse":
|
|
charger, err = NewSimpleEVSEFromConfig(other)
|
|
case "porsche", "audi", "bentley", "mcc":
|
|
charger, err = NewMobileConnectFromConfig(other)
|
|
case "keba", "bmw":
|
|
charger, err = NewKebaFromConfig(other)
|
|
default:
|
|
return nil, fmt.Errorf("invalid charger type: %s", typ)
|
|
}
|
|
|
|
if err != nil {
|
|
err = errors.Wrap(err, fmt.Sprintf("cannot create %s charger", typ))
|
|
}
|
|
|
|
return charger, err
|
|
}
|