Vestel: decorate RFID based on version (#21519)
This commit is contained in:
parent
c5077fea9b
commit
bfdaf49047
2 changed files with 20 additions and 5 deletions
|
|
@ -21,12 +21,14 @@ import (
|
|||
"context"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/evcc-io/evcc/api"
|
||||
"github.com/evcc-io/evcc/util"
|
||||
"github.com/evcc-io/evcc/util/modbus"
|
||||
"github.com/evcc-io/evcc/util/sponsor"
|
||||
"github.com/hashicorp/go-version"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -111,13 +113,26 @@ func NewVestel(ctx context.Context, uri string, id uint8) (api.Charger, error) {
|
|||
phasesG = wb.getPhases
|
||||
}
|
||||
|
||||
// compare firmware version to determine if RFID is available
|
||||
var identify func() (string, error)
|
||||
if _, err := wb.identify(); err == nil {
|
||||
identify = wb.identify
|
||||
|
||||
b, err := wb.conn.ReadInputRegisters(vestelRegFirmware, 50)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to read firmware version: %w", err)
|
||||
}
|
||||
|
||||
fw := strings.TrimPrefix(bytesAsString(b), "v")
|
||||
if v, err := version.NewSemver(fw); err == nil {
|
||||
if v.Compare(version.Must(version.NewSemver("3.156.0"))) >= 0 {
|
||||
// firmware >= v3.156.0 supports RFID according to https://github.com/evcc-io/evcc/issues/21359
|
||||
identify = wb.identify
|
||||
}
|
||||
} else {
|
||||
log.WARN.Printf("failed to parse firmware version %q: %v", string(b), err)
|
||||
}
|
||||
|
||||
// get failsafe timeout from charger
|
||||
b, err := wb.conn.ReadHoldingRegisters(vestelRegFailsafeTimeout, 1)
|
||||
b, err = wb.conn.ReadHoldingRegisters(vestelRegFailsafeTimeout, 1)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failsafe timeout: %w", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ products:
|
|||
capabilities: ["rfid", "1p3p"]
|
||||
requirements:
|
||||
description:
|
||||
de: 1P3P und RFID erfordern Firmware 3.187.0 oder neuer.
|
||||
en: 1P3P and RFID require at least firmware version 3.187.0.
|
||||
de: 1P3P erfordert Firmware 3.187.0 oder neuer, RFID erfordert 3.156.0 oder neuer.
|
||||
en: 1P3P requires at least firmware version 3.187.0, RFID at least 3.156.0.
|
||||
evcc: ["sponsorship"]
|
||||
params:
|
||||
- name: modbus
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue