DaheimLaden: fix firmware init (#33067)

This commit is contained in:
Michael Geers 2026-08-22 09:50:27 +02:00 • committed by GitHub
parent 6e121c778f
commit c4fbffa55e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -361,31 +361,37 @@ func (wb *DaheimLaden) getPhases() (int, error) {
}
func (wb *DaheimLaden) checkStation() error {
// first call for fw init
if _, err := wb.conn.ReadHoldingRegisters(dlRegEvseMaxCurrent, 22); err != nil {
return err
}
b, err := wb.conn.ReadHoldingRegisters(dlRegEvseMaxCurrent, 22)
if err != nil {
return api.ErrSponsorRequired
}
// station id starts (dlRegStationId-dlRegEvseMaxCurrent) registers into the block
s, err := utf16BEBytesAsString(b[2*(dlRegStationId-dlRegEvseMaxCurrent):])
if err != nil || s == "" {
return api.ErrSponsorRequired
}
// map may still be zero right after the wake-up call- poll briefly until populated
for range 5 {
b, err := wb.conn.ReadHoldingRegisters(dlRegEvseMaxCurrent, 22)
if err != nil {
return err
}
for _, r := range s {
if r < 0x20 || r > 0x7e {
s, err := utf16BEBytesAsString(b[2*(dlRegStationId-dlRegEvseMaxCurrent):])
if err != nil {
return err
}
if len(s) == 0 {
time.Sleep(200 * time.Millisecond)
continue
}
if strings.Contains(strings.ToLower(s), "heidelbridge") {
return api.ErrSponsorRequired
}
for _, r := range s {
if r < 0x20 || r > 0x7e {
return api.ErrSponsorRequired
}
}
return nil
}
if strings.Contains(strings.ToLower(s), "heidelbridge") {
return api.ErrSponsorRequired
}
return nil
return api.ErrSponsorRequired
}
var _ api.Diagnosis = (*DaheimLaden)(nil)