chore: simplify

This commit is contained in:
andig 2025-07-26 11:02:22 +02:00
parent 1b6065b8df
commit 25c64ef544
2 changed files with 8 additions and 59 deletions

View file

@ -71,26 +71,13 @@ const (
func init() {
registry.AddCtx("em2go", NewEm2GoFromConfig)
registry.AddCtx("em2go-home", NewEm2GoFromConfig)
registry.AddCtx("em2go-duo-power", NewEm2GoDuoPowerFromConfig)
registry.AddCtx("em2go-duo", NewEm2GoFromConfig)
}
//go:generate go tool decorate -f decorateEm2Go -b *Em2Go -r api.Charger -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)"
// NewEm2GoFromConfig creates a Em2Go charger from generic config
func NewEm2GoFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) {
cc := modbus.TcpSettings{
ID: 255,
}
if err := util.DecodeOther(other, &cc); err != nil {
return nil, err
}
return NewEm2Go(ctx, cc.URI, cc.ID)
}
// NewEm2GoDuoPowerFromConfig creates a Em2Go Duo Power charger from generic config
func NewEm2GoDuoPowerFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) {
cc := struct {
modbus.TcpSettings `mapstructure:",squash"`
Connector int
@ -103,11 +90,11 @@ func NewEm2GoDuoPowerFromConfig(ctx context.Context, other map[string]interface{
return nil, err
}
return NewEm2GoDuoPower(ctx, cc.URI, cc.ID, cc.Connector)
return NewEm2Go(ctx, cc.URI, cc.ID, cc.Connector)
}
// NewEm2Go creates Em2Go charger
func NewEm2Go(ctx context.Context, uri string, slaveID uint8) (api.Charger, error) {
func NewEm2Go(ctx context.Context, uri string, slaveID uint8, connector int) (api.Charger, error) {
uri = util.DefaultPort(uri, 502)
conn, err := modbus.NewConnection(ctx, uri, "", "", 0, modbus.Tcp, slaveID)
@ -122,41 +109,10 @@ func NewEm2Go(ctx context.Context, uri string, slaveID uint8) (api.Charger, erro
conn.Logger(log.TRACE)
wb := &Em2Go{
log: log,
conn: conn,
current: 60,
workaround: false,
base: 0, // single connector, no offset
}
return wb.initialize()
}
// NewEm2GoDuoPower creates Em2Go Duo Power charger
func NewEm2GoDuoPower(ctx context.Context, uri string, slaveID uint8, connector int) (api.Charger, error) {
if connector < 1 || connector > 2 {
return nil, fmt.Errorf("invalid connector: %d", connector)
}
uri = util.DefaultPort(uri, 502)
conn, err := modbus.NewConnection(ctx, uri, "", "", 0, modbus.Tcp, slaveID)
if err != nil {
return nil, err
}
// Add delay of 60 milliseconds between requests
conn.Delay(60 * time.Millisecond)
log := util.NewLogger("em2go-duo-power")
conn.Logger(log.TRACE)
wb := &Em2Go{
log: log,
conn: conn,
current: 60,
workaround: false,
base: uint16((connector - 1) * em2GoDuoPowerOffset),
log: log,
conn: conn,
current: 60,
base: uint16((connector - 1) * em2GoDuoPowerOffset),
}
return wb.initialize()

View file

@ -2,20 +2,13 @@ template: em2go-duo-power
products:
- brand: EM2GO
description:
generic: AC WALLBOX DUO POWER 2X 22KW
generic: Duo Power
capabilities: ["mA"]
requirements:
description:
de: "Aktuelle Firmware mit Modbus-Unterstützung notwendig. Mögliche Verbindungsprobleme - Device ID muss bei jeder Verbindung inkrementiert werden."
en: "Recent firmware with Modbus support required. Possible connection issues - Device ID needs to be incremented for each connection attempt."
params:
- name: modbus
choice: ["tcpip"]
id: 255
- name: connector
description:
de: "Anschluss (1 oder 2 für Duo Power)"
en: "Connector (1 or 2 for Duo Power)"
default: 1
render: |
type: em2go-duo-power