Skip to content

Improve Hayward HWVS pump reliability with comm failure tracking and …#1175

Open
camaro4life18 wants to merge 3 commits intotagyoureit:masterfrom
camaro4life18:master
Open

Improve Hayward HWVS pump reliability with comm failure tracking and …#1175
camaro4life18 wants to merge 3 commits intotagyoureit:masterfrom
camaro4life18:master

Conversation

@camaro4life18
Copy link
Copy Markdown
Contributor

…exponential backoff

  • Implement requestPumpStatusAsync() to actively poll Hayward pump status instead of no-op
  • Add consecutive communication failure tracking with exponential backoff in polling (2s to max 30s after 5 failures)
  • Add pollEquipmentAsync() override to include status polling after each state update
  • Add updateCommStatus() to set pump status to warning/error based on failure count
  • Preserve last known pump state on comm failure instead of zeroing rpm/watts
  • Fix silent error swallow in setPumpToRemoteControlAsync (was missing logger.error)
  • Increase retries from 1 to 3 and add 2500ms timeout on outbound messages
  • Update package-lock.json license identifier to AGPL-3.0-only

…exponential backoff

- Implement requestPumpStatusAsync() to actively poll Hayward pump status instead of no-op
- Add consecutive communication failure tracking with exponential backoff in polling (2s to max 30s after 5 failures)
- Add pollEquipmentAsync() override to include status polling after each state update
- Add updateCommStatus() to set pump status to warning/error based on failure count
- Preserve last known pump state on comm failure instead of zeroing rpm/watts
- Fix silent error swallow in setPumpToRemoteControlAsync (was missing logger.error)
- Increase retries from 1 to 3 and add 2500ms timeout on outbound messages
- Update package-lock.json license identifier to AGPL-3.0-only
- Add singleMixPeriod property to ChemController and ChemDoser classes
- Default is false to maintain backward compatibility
- When enabled, prevents simultaneous chemical dosing during mixing periods
- ChemController: pH checks ORP mixing state and vice versa
- ChemDoser: checks all other dosers for active mixing
- Fixes issue with hot tub chemical balance from simultaneous mixing
@tagyoureit
Copy link
Copy Markdown
Owner

Thanks for this. There are a couple of changes in here that I'd accept, including:

  • chemistry mixing changes
  • catch/try in the string expression error

However, there's a few that give me pause.

  • Needing to implement a rewind safety valve is a solution to a problem that shouldn't exist. If you have that many comms failures you should look to your wiring, equipment, etc. I've never seen this many consecutive backoff/retries and this isn't something that should be fixed by software
  • Some of the pump logic mixes togethr comms failures and status updates
  • The heap protection is another symptom of poor comms on the bus, not in the software
  • I'm not a fan of preserving the last known state during a comms failure. It might be true that the last state is still valid, or it might not be. But I'd rather err on the side of not showing invalid data and zeroing out the rpm/watts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants