Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces crucial updates to the Homebridge-Dyson-Pure-Cool plugin to prevent crashes with Dyson devices that lack oscillation features, particularly the BP-series. The modifications add checks to ensure that oscillation controls are only invoked for devices that support this functionality and fixes crashes reported in #333 and #328.
Key Changes:
Conditional Oscillation Control: Modified the DysonPureCoolDevice logic to conditionally update the SwingMode characteristic based on the device's oscillation capability. This is done by wrapping oscillation control updates within an if (device.info.hasOscillation) check to prevent errors with non-oscillating devices.
Updated Device Information: Added a new attribute hasOscillation: false to the BP-series models in the knownProducts dictionary within productTypeInfo.js. This ensures that the system recognizes these devices as non-oscillating. It also assumes that most devices do have oscillation enabled, which is the case as of May '24.
Configurable Oscillation Behavior: Adjusted the handling of the enableOscillationWhenActivating configuration option to check for the hasOscillation flag before setting oscillation to 'ON'.