Vestel: decorate RFID based on version (#21519)

This commit is contained in:
mfuchs1984 2025-05-30 16:41:57 +02:00 • committed by GitHub
parent c5077fea9b
commit bfdaf49047
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 5 deletions

View file

@ -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)
}

View file

@ -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