Skip to content

Add include and exclude devices to device selector#165599

Open
andrew-codechimp wants to merge 3 commits into
home-assistant:devfrom
andrew-codechimp:device-include-exclude
Open

Add include and exclude devices to device selector#165599
andrew-codechimp wants to merge 3 commits into
home-assistant:devfrom
andrew-codechimp:device-include-exclude

Conversation

@andrew-codechimp
Copy link
Copy Markdown
Contributor

@andrew-codechimp andrew-codechimp commented Mar 15, 2026

Proposed change

Add optional include and exclude device id lists to the device selector.

The entity selector provides options to include or exclude existing entities, so that helpers/blueprints can reduce the list of displayed entities within the selector. The device selector does not provide this.

A use case, using the custom component Battery Notes as an example

Within Battery Notes you create a "helper" which adds additional entities to a device, it is not applicable to add a second set of entities to a device and will display an already added message. But with most users having a large number of devices, even using the existing filtering available, this is a large list to mentally navigate/track what has already been added, causing frustration with a select/submit/fail/try another approach.

The device selector does not have the ability to exclude devices, with this change the add note functionality within Battery Notes could obtain a list of existing device id's already added to Battery Notes and exclude these from the selector, making it easier for users to pick a device that they have not already added a battery note helper to.

The include filter is included for feature completeness to match the entity selector, I do not have a use case for this personally.

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:

@andrew-codechimp andrew-codechimp marked this pull request as ready for review March 15, 2026 13:08
@andrew-codechimp andrew-codechimp requested a review from a team as a code owner March 15, 2026 13:08
Copilot AI review requested due to automatic review settings March 15, 2026 13:08
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 optional include_devices / exclude_devices filtering support to the backend device selector, enabling callers (e.g., future “helper-style” flows) to constrain which device IDs are valid selections.

Changes:

  • Extend DeviceSelector config schema/types to accept include_devices and exclude_devices.
  • Enforce include/exclude validation when a device selector value is submitted (single and multiple modes).
  • Add unit tests covering include/exclude behavior for device selectors.

Reviewed changes

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

File Description
homeassistant/helpers/selector.py Adds include/exclude lists to device selector config and validates selections against them.
tests/helpers/test_selector.py Adds test cases verifying include/exclude validation for single and multi device selection.

@MartinHjelmare
Copy link
Copy Markdown
Member

I think this needs a more comprehensive PR description with example use cases and the motivation explained.

This sentence doesn't explain it enough:

future helper style integrations where it is not applicable to add a second helper to a device

Potentially we'll need an architecture discussion. But please start with a more detailed explanation here. Thanks!

@MartinHjelmare MartinHjelmare marked this pull request as draft March 31, 2026 09:46
@andrew-codechimp
Copy link
Copy Markdown
Contributor Author

Updated with a detailed use case, device selectors aren't used that frequently so use case refers to my custom component but hopefully gets the point across.

@andrew-codechimp andrew-codechimp marked this pull request as ready for review March 31, 2026 10:16
@MartinHjelmare
Copy link
Copy Markdown
Member

MartinHjelmare commented Mar 31, 2026

Seems ok to me to proceed with this. I'm checking with the core team for a second opinion.

@MartinHjelmare MartinHjelmare added the second-opinion-wanted Add this label when a reviewer needs a second opinion from another member. label Mar 31, 2026
@issue-triage-workflows
Copy link
Copy Markdown

There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days.
If you are the author of this PR, please leave a comment if you want to keep it open. Also, please rebase your PR onto the latest dev branch to ensure that it's up to date with the latest changes.
Thank you for your contribution!

@andrew-codechimp
Copy link
Copy Markdown
Contributor Author

andrew-codechimp commented Jun 2, 2026

Would still like this to be merged.
The call for a second opinion on core discord got a thumbs up from Joost, not sure if that's good enough?

The failing test is not related to this change.

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

Labels

cla-signed core new-feature second-opinion-wanted Add this label when a reviewer needs a second opinion from another member.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants