Skip to content

Add fan platform to Novy Cooker Hood#169380

Merged
balloob merged 7 commits intodevfrom
novy_cooker_hood_fan
Apr 28, 2026
Merged

Add fan platform to Novy Cooker Hood#169380
balloob merged 7 commits intodevfrom
novy_cooker_hood_fan

Conversation

@piitaya
Copy link
Copy Markdown
Member

@piitaya piitaya commented Apr 28, 2026

Proposed change

Adds a fan entity to the Novy Cooker Hood integration, controlling the hood motor over the same 433.92 MHz OOK link as the existing light entity.

The protocol is one-way (no feedback), and pressing the remote's + / - only steps the speed by one. To support set_percentage reliably the entity uses a calibration model: each speed change first sends 4 minus presses to guarantee the hood is at level 0, then sends N plus presses to climb to the target level (1-4 mapped to 25/50/75/100%). This always lands at the requested speed regardless of prior state, at the cost of a few extra RF presses.

increase_speed and decrease_speed are overridden with a fast path: a single plus or minus press, no recalibration.

Depends on the initial integration PR #169194. This PR will be rebased and mark as ready to review once the integration PR is merged.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • I understand the code I am submitting and can explain how it works.
  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.
  • Any generated code has been carefully reviewed for correctness and compliance with project standards.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies a diff between library versions and ideally a link to the changelog/release notes is added to the PR description.

To help with the load of incoming pull requests:

Copy link
Copy Markdown
Contributor

@home-assistant home-assistant Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When adding new integrations, limit included platforms to a single platform. Please reduce this PR to a single platform. See the review process for more details.

@home-assistant
Copy link
Copy Markdown
Contributor

Hey there @home-assistant/core, mind taking a look at this pull request as it has been labeled with an integration (radio_frequency) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of radio_frequency can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant mark-draft Mark the pull request as draft.
  • @home-assistant ready-for-review Remove the draft status from the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign radio_frequency Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant update-branch Update the pull request branch with the base branch.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) on the pull request.

@home-assistant
Copy link
Copy Markdown
Contributor

Hey there @balloob, mind taking a look at this pull request as it has been labeled with an integration (honeywell_string_lights) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of honeywell_string_lights can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant mark-draft Mark the pull request as draft.
  • @home-assistant ready-for-review Remove the draft status from the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign honeywell_string_lights Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant update-branch Update the pull request branch with the base branch.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) on the pull request.

@piitaya piitaya mentioned this pull request Apr 28, 2026
21 tasks
@piitaya piitaya changed the title Novy cooker hood fan Add fan platform to Novy Cooker Hood Apr 28, 2026
@piitaya piitaya force-pushed the novy_cooker_hood_fan branch from 02ef407 to a733b69 Compare April 28, 2026 15:01
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Novy Cooker Hood fan control (calibrated speed setting over one-way 433.92 MHz OOK) alongside the existing light control, plus required dependency updates and tests.

Changes:

  • Add fan platform with calibrated set_percentage and fast-path increase_speed / decrease_speed.
  • Add integration scaffolding (config flow, base entity, commands, translations, quality scale) and comprehensive tests.
  • Bump rf-protocols to 2.2.0 across core requirements and affected integrations.

Reviewed changes

Copilot reviewed 20 out of 23 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/components/novy_cooker_hood/init.py Adds test package marker for the integration.
tests/components/novy_cooker_hood/conftest.py Adds shared fixtures for RF transmitter + code loading mocks.
tests/components/novy_cooker_hood/test_config_flow.py Tests config flow transmitter/code selection and light test step.
tests/components/novy_cooker_hood/test_fan.py Tests calibrated set percentage and +/- speed stepping behavior.
tests/components/novy_cooker_hood/test_light.py Tests light toggle behavior and restore-state behavior.
requirements_test_all.txt Updates pinned rf-protocols version for test environment.
requirements_all.txt Updates pinned rf-protocols version for all-deps environment.
requirements.txt Updates pinned rf-protocols version for core environment.
homeassistant/generated/integrations.json Registers novy_cooker_hood in generated integration metadata.
homeassistant/generated/config_flows.py Registers novy_cooker_hood as having a config flow.
homeassistant/components/radio_frequency/manifest.json Bumps rf-protocols requirement to 2.2.0.
homeassistant/components/honeywell_string_lights/manifest.json Bumps rf-protocols requirement to 2.2.0.
homeassistant/components/novy_cooker_hood/init.py Sets up config-entry forwarding for fan and light platforms.
homeassistant/components/novy_cooker_hood/commands.py Adds helper constants and loader for bundled RF commands per code.
homeassistant/components/novy_cooker_hood/config_flow.py Implements transmitter+code selection and a light-toggle verification step.
homeassistant/components/novy_cooker_hood/const.py Defines constants for codes, RF frequency/modulation, and speed count.
homeassistant/components/novy_cooker_hood/entity.py Adds shared base entity wiring device info + transmitter availability tracking.
homeassistant/components/novy_cooker_hood/fan.py Implements calibrated speed control and fast-path +/- behavior.
homeassistant/components/novy_cooker_hood/light.py Implements light toggle control with restore-state.
homeassistant/components/novy_cooker_hood/manifest.json Adds integration manifest, dependencies, and requirements.
homeassistant/components/novy_cooker_hood/quality_scale.yaml Adds integration quality scale tracking file.
homeassistant/components/novy_cooker_hood/strings.json Adds config flow strings and entity naming for the light.
CODEOWNERS Adds code ownership for the integration and its tests.

Comment thread homeassistant/components/novy_cooker_hood/fan.py
Comment thread homeassistant/components/novy_cooker_hood/fan.py Outdated
Comment thread tests/components/novy_cooker_hood/test_fan.py
Copilot AI review requested due to automatic review settings April 28, 2026 16:27
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 23 changed files in this pull request and generated 2 comments.

Comment thread homeassistant/components/novy_cooker_hood/fan.py
Comment thread homeassistant/components/novy_cooker_hood/fan.py Outdated
Copilot AI review requested due to automatic review settings April 28, 2026 19:14
@piitaya piitaya force-pushed the novy_cooker_hood_fan branch from a7d714e to 640148e Compare April 28, 2026 19:14
@piitaya piitaya force-pushed the novy_cooker_hood_fan branch from 8f3c3b8 to 4ad1740 Compare April 28, 2026 20:46
@piitaya piitaya marked this pull request as ready for review April 28, 2026 20:48
@balloob balloob merged commit dfe4085 into dev Apr 28, 2026
33 checks passed
@balloob balloob deleted the novy_cooker_hood_fan branch April 28, 2026 20:51
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 29, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants