MyPV: fix status mapping (#21983)
This commit is contained in:
parent
f016a1f269
commit
8047238a3d
1 changed files with 20 additions and 2 deletions
|
|
@ -47,6 +47,7 @@ const (
|
|||
elwaRegSetPower = 1000
|
||||
elwaRegTempLimit = 1002
|
||||
elwaRegStatus = 1003
|
||||
elwaRegLoadState = 1059
|
||||
elwaRegPower = 1000 // https://github.com/evcc-io/evcc/issues/18020#issuecomment-2585300804
|
||||
)
|
||||
|
||||
|
|
@ -152,13 +153,30 @@ func (wb *MyPv) heartbeat(ctx context.Context, timeout time.Duration) {
|
|||
|
||||
// Status implements the api.Charger interface
|
||||
func (wb *MyPv) Status() (api.ChargeStatus, error) {
|
||||
b, err := wb.conn.ReadHoldingRegisters(elwaRegStatus, 1)
|
||||
b, err := wb.conn.ReadHoldingRegisters(elwaRegLoadState, 1)
|
||||
if err != nil {
|
||||
return api.StatusNone, err
|
||||
}
|
||||
|
||||
// all loads detached
|
||||
if binary.BigEndian.Uint16(b) == 0 {
|
||||
return api.StatusA, nil
|
||||
}
|
||||
|
||||
res := api.StatusB
|
||||
if binary.BigEndian.Uint16(b) == wb.statusC {
|
||||
|
||||
b, err = wb.conn.ReadHoldingRegisters(elwaRegStatus, 1)
|
||||
if err != nil {
|
||||
return api.StatusNone, err
|
||||
}
|
||||
|
||||
c, err := wb.conn.ReadHoldingRegisters(elwaRegPower, 1)
|
||||
if err != nil {
|
||||
return api.StatusNone, err
|
||||
}
|
||||
|
||||
// ignore standby power
|
||||
if binary.BigEndian.Uint16(b) == wb.statusC && binary.BigEndian.Uint16(c) > 10 {
|
||||
res = api.StatusC
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue