Versicharge: update register map (#9287)

This commit is contained in:
andig 2023-08-07 20:26:12 +02:00 • committed by GitHub
parent bf4e5f1f90
commit 6d8f6d115e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -38,9 +38,8 @@ const (
versiRegMeterType = 30 // 1 RO UINT16
versiRegErrorCode = 1600 // 1 RO INT16
versiRegTemp = 1602 // 1 RO INT16
versiRegChargeStatus = 1601 // 1 RO INT16
versiRegPause = 1629 // 1 RW UNIT16
versiRegMaxCurrent = 1633 // 1 RW UNIT16
versiRegChargeStatus = 1599 // 1 RO INT16 (EVSE Status)
versiRegMaxCurrent = 1633 // 1 RW UNIT16 -> Seit FW2.128 Pause an -> MaxCurrent = 0
versiRegCurrents = 1647 // 3 RO UINT16
versiRegVoltages = 1651 // 3 RO UINT16
versiRegPowers = 1662 // 3 RO UINT16
@ -51,7 +50,8 @@ const (
// It uses Modbus TCP to communicate with the wallbox at id 2 (default).
type Versicharge struct {
conn *modbus.Connection
conn *modbus.Connection
current uint16
}
func init() {
@ -99,38 +99,27 @@ func (wb *Versicharge) Status() (api.ChargeStatus, error) {
return api.StatusNone, err
}
s := binary.BigEndian.Uint16(b)
switch s {
case 1: // Available
return api.StatusA, nil
case 2, 5: // Preparing, Suspended EV, Suspended EVSE
return api.StatusB, nil
case 3, 4: // Charging
return api.StatusC, nil
default:
return api.StatusNone, fmt.Errorf("invalid status: %d", s)
}
return api.ChargeStatusString(string(b))
}
// Enabled implements the api.Charger interface
func (wb *Versicharge) Enabled() (bool, error) {
b, err := wb.conn.ReadHoldingRegisters(versiRegPause, 1)
b, err := wb.conn.ReadHoldingRegisters(versiRegMaxCurrent, 1)
if err != nil {
return false, err
}
return binary.BigEndian.Uint16(b) == 2, nil
return binary.BigEndian.Uint16(b) != 0, nil
}
// Enable implements the api.Charger interface
func (wb *Versicharge) Enable(enable bool) error {
var u uint16 = 1
var u uint16 = 0
if enable {
u = 2
u = wb.current
}
_, err := wb.conn.WriteSingleRegister(versiRegPause, u)
_, err := wb.conn.WriteSingleRegister(versiRegMaxCurrent, u)
return err
}
@ -142,6 +131,9 @@ func (wb *Versicharge) MaxCurrent(current int64) error {
}
_, err := wb.conn.WriteSingleRegister(versiRegMaxCurrent, uint16(current))
if err == nil {
wb.current = uint16(current)
}
return err
}