Dadapower: add status reasoner (#15654)

This commit is contained in:
andig 2024-08-24 19:01:26 +02:00 • committed by GitHub
parent 0660cff918
commit 1dce61efe2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -21,6 +21,7 @@ const (
dadapowerRegActivePhases = 1002
dadapowerRegCurrents = 1006
dadapowerRegActiveEnergy = 1009
dadapowerRegChargingPortState = 1015
dadapowerRegPlugState = 1016
dadapowerRegEnergyImportSession = 1017
dadapowerRegEnergyImportTotal = 1025
@ -110,6 +111,20 @@ func (wb *Dadapower) Status() (api.ChargeStatus, error) {
}
}
var _ api.StatusReasoner = (*Dadapower)(nil)
// StatusReason implements the api.StatusReasoner interface
func (wb *Dadapower) StatusReason() (api.Reason, error) {
res := api.ReasonUnknown
b, err := wb.conn.ReadHoldingRegisters(dadapowerRegChargingPortState, 2)
if err == nil && binary.BigEndian.Uint16(b) == 3 {
res = api.ReasonWaitingForAuthorization
}
return res, err
}
// Enabled implements the api.Charger interface
func (wb *Dadapower) Enabled() (bool, error) {
b, err := wb.conn.ReadInputRegisters(dadapowerRegChargingAllowed+wb.regOffset, 1)