Mennekes-Compact: fix reboot and phase switching (#20579)
Co-authored-by: andig <andi@evcc.io>
This commit is contained in:
parent
eda58e3f22
commit
10ad187618
1 changed files with 22 additions and 6 deletions
|
|
@ -44,7 +44,7 @@ const (
|
|||
mennekesRegEvseState = 0x0100 // uint16
|
||||
mennekesRegAuthorizationStatus = 0x0101 // uint16
|
||||
mennekesRegCpState = 0x0108 // uint16
|
||||
mennekesRegChargingCurrentEM = 0x0302 // float32
|
||||
mennekesRegChargingCurrentEM = 0x0302 // float32 [Heartbeat]
|
||||
mennekesRegPhaseOptionsHW = 0x030C // uint16
|
||||
mennekesRegGridPhasesConnected = 0x0311 // uint16
|
||||
mennekesRegAuthorization = 0x0312 // uint16
|
||||
|
|
@ -53,9 +53,9 @@ const (
|
|||
mennekesRegPower = 0x0512 // float32
|
||||
mennekesRegChargedEnergySession = 0x0B02 // float32
|
||||
mennekesRegDurationSession = 0x0B04 // uint32
|
||||
mennekesRegHeartbeat = 0x0D00 // uint16
|
||||
mennekesRegHeartbeat = 0x0D00 // uint16 [Heartbeat]
|
||||
mennekesRegRequestedPhases = 0x0D04 // uint16
|
||||
mennekesRegChargingReleaseEM = 0x0D05 // uint16
|
||||
mennekesRegChargingReleaseEM = 0x0D05 // uint16 [Heartbeat]
|
||||
mennekesRegChargedEnergyTotal = 0x1000 // float32
|
||||
|
||||
mennekesAllowed = 1
|
||||
|
|
@ -148,13 +148,19 @@ func (wb *MennekesCompact) Status() (api.ChargeStatus, error) {
|
|||
switch status := encoding.Uint16(b); status {
|
||||
case 1:
|
||||
return api.StatusA, nil
|
||||
|
||||
case 2, 3, 4:
|
||||
return api.StatusB, nil
|
||||
|
||||
case 5:
|
||||
return api.StatusC, nil
|
||||
|
||||
case 6:
|
||||
b := make([]byte, 4)
|
||||
if _, err := wb.conn.WriteMultipleRegisters(mennekesRegChargingCurrentEM, 2, b); err != nil {
|
||||
return api.StatusNone, err
|
||||
}
|
||||
if _, err := wb.conn.WriteSingleRegister(mennekesRegChargingReleaseEM, mennekesAllowed); err != nil {
|
||||
return api.StatusNone, err
|
||||
}
|
||||
return api.StatusNone, nil
|
||||
default:
|
||||
return api.StatusNone, fmt.Errorf("invalid status: %d", status)
|
||||
}
|
||||
|
|
@ -280,7 +286,17 @@ func (wb *MennekesCompact) phases1p3p(phases int) error {
|
|||
u = 1
|
||||
}
|
||||
|
||||
// temporarily disable charger during phase switching
|
||||
if en, err := wb.Enabled(); err == nil && en {
|
||||
if err := wb.Enable(false); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer wb.Enable(true)
|
||||
}
|
||||
|
||||
_, err := wb.conn.WriteSingleRegister(mennekesRegRequestedPhases, u)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue