Versicharge: update register map (#9287)
This commit is contained in:
parent
bf4e5f1f90
commit
6d8f6d115e
1 changed files with 13 additions and 21 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue