sungrow-charger: use StartMode for enabled state (#13784)

This commit is contained in:
Philip Porto Schiffer 2024-05-06 20:25:08 +02:00 • committed by GitHub
parent 7d67b502a7
commit 0fcb2a48d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -39,7 +39,7 @@ const (
// input (read only)
sgRegPhase = 21224 // uint16 [1: Single-phase, 3: Three-phase]
sgRegWorkMode = 21262 // uint16 [0: Network, 2: Plug&Play, 6: EMS]
sgRegRemCtrlStatus = 21267 // uint16
sgRegRemCtrlStatus = 21267 // uint16 [0: Disable, 1: Enable]
sgRegPhaseSwitchStatus = 21269 // uint16
sgRegTotalEnergy = 21299 // uint32s 1Wh
sgRegActivePower = 21307 // uint32s 1W
@ -51,7 +51,7 @@ const (
// holding
sgRegSetOutI = 21202 // uint16 0.01A
sgRegPhaseSwitch = 21203 // uint16
sgRegPhaseSwitch = 21203 // uint16 [0: Three-phase, 1: Single-phase]
sgRegUnavailable = 21210 // uint16
sgRegRemoteControl = 21211 // uint16 [0: Start, 1: Stop]
)
@ -146,7 +146,7 @@ func (wb *Sungrow) Status() (api.ChargeStatus, error) {
// Enabled implements the api.Charger interface
func (wb *Sungrow) Enabled() (bool, error) {
b, err := wb.conn.ReadHoldingRegisters(sgRegSetOutI, 1)
b, err := wb.conn.ReadInputRegisters(sgRegStartMode, 1)
if err != nil {
return false, err
}
@ -260,8 +260,14 @@ func (wb *Sungrow) Phases1p3p(phases int) error {
}
}
// Switch phases
_, err = wb.conn.WriteSingleRegister(sgRegPhaseSwitch, u)
// Re-enable charging if it was previously enabled
if err == nil && enabled {
err = wb.Enable(true)
}
return err
}