Skip to content

Add number platform for LED brightness to air-Q #145385

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed

Conversation

Sibgatulin
Copy link
Contributor

@Sibgatulin Sibgatulin commented May 21, 2025

Proposed change

Each air-Q device is equipped with 2 LED strips that function as LED level indicators / bar graphs for two (configurable) sensors. This PR exposes a single number entity for each airq device, allowing to set the brightness of both strips simultaneously.
This is the changes to the backend aioairq package that permit such brightness control.

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

  • 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.

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 link to the changelog, or at minimum a diff between library versions is added to the PR description.

To help with the load of incoming pull requests:

@home-assistant
Copy link

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

Code owner commands

Code owners of airq can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign airq Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the pull request.

@home-assistant home-assistant bot marked this pull request as draft May 21, 2025 14:07
@home-assistant
Copy link

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍

Learn more about our pull request process.

@Sibgatulin Sibgatulin force-pushed the feat/airq_number_platform branch 2 times, most recently from 57203d9 to bb21fa0 Compare May 30, 2025 13:13
@Sibgatulin Sibgatulin marked this pull request as ready for review May 30, 2025 13:14
@home-assistant home-assistant bot requested a review from joostlek May 30, 2025 13:14
@home-assistant home-assistant bot marked this pull request as draft May 30, 2025 18:01
@Sibgatulin Sibgatulin mentioned this pull request Jun 4, 2025
19 tasks
@Sibgatulin Sibgatulin force-pushed the feat/airq_number_platform branch from bb21fa0 to 4fc0501 Compare June 4, 2025 16:43
@Sibgatulin
Copy link
Contributor Author

this PR is currently waiting for #146169

@Sibgatulin Sibgatulin force-pushed the feat/airq_number_platform branch from 4fc0501 to f69d299 Compare June 6, 2025 08:56
@Sibgatulin
Copy link
Contributor Author

I believe, I addressed every comment, @joostlek.
I also believe it would be better if I squashed the commits in this PR (since after this PR is rebased on top of #146169, some of the commits here reflect a broken/incorrect state of the code + many small commits with fixes).
Are there any objections?

@Sibgatulin Sibgatulin force-pushed the feat/airq_number_platform branch from 353f466 to b703a52 Compare June 20, 2025 11:20
@Sibgatulin Sibgatulin marked this pull request as ready for review June 20, 2025 11:24
@home-assistant home-assistant bot requested a review from joostlek June 20, 2025 11:24
@home-assistant home-assistant bot marked this pull request as draft June 20, 2025 11:27
@Sibgatulin Sibgatulin marked this pull request as ready for review June 26, 2025 10:34
@home-assistant home-assistant bot requested a review from joostlek June 26, 2025 10:34
@frenck frenck changed the title feat(airq): add number platform for LED brightness Add number platform for LED brightness to air-Q Jun 26, 2025
@Sibgatulin Sibgatulin force-pushed the feat/airq_number_platform branch from 7229533 to 43a71f7 Compare June 30, 2025 08:37
@Sibgatulin Sibgatulin force-pushed the feat/airq_number_platform branch from 43a71f7 to df7c9d4 Compare July 23, 2025 08:18
Copy link
Member

@joostlek joostlek left a comment

Choose a reason for hiding this comment

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

As discussed on discord, the tests shouldn't touch hass.data and instead test the state via the state machine

@home-assistant home-assistant bot marked this pull request as draft July 23, 2025 09:18
I had added this `usefixtures("mock_setup_entry")` by accident
Instead of explicitly patching calls to `aioairq.AirQ` methods,
patch out the whole class, as imported either in the coordinator or the
config flow, some of its most used methods with sensible defaults, and
then only modify the mocks when necessary
Instead of explicitly patching each method, create a fixture that
patches the whole class with an AsyncMock and some meaningful defaults
for most used methods. Then patch only where and when needed
Brightness is fetched by `AirQCoordinator` in `_async_update_data`
and is expressed in %
Comment on lines +26 to +41
async def setup_platform(hass: HomeAssistant) -> None:
"""Load AirQ integration.
This function does not patch AirQ itself, rather it depends on being
run in presence of `mock_coordinator_airq` fixture, which patches calls
by `AirQCoordinator.airq`, which are done under `async_setup`.
"""
config_entry = MockConfigEntry(
domain=DOMAIN, data=TEST_USER_DATA, unique_id=TEST_DEVICE_INFO["id"]
)
config_entry.add_to_hass(hass)

# The patching is now handled by the mock_coorinator_airq fixture.
# We just need to load the component.
assert await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
Copy link
Member

Choose a reason for hiding this comment

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

This is something for __init__.py

Comment on lines +11 to +23
TEST_USER_DATA = {
CONF_IP_ADDRESS: "192.168.0.0",
CONF_PASSWORD: "password",
}
TEST_DEVICE_INFO = DeviceInfo(
id="id",
name="name",
model="model",
sw_version="sw",
hw_version="hw",
)
TEST_DEVICE_DATA = {"co2": 500.0, "Status": "OK"}
TEST_BRIGHTNESS = 42
Copy link
Member

Choose a reason for hiding this comment

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

And this for const.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
@Sibgatulin Sibgatulin closed this Aug 12, 2025
@Sibgatulin
Copy link
Contributor Author

closing this because I somehow botched the history of the remote branch from which the PR is open, will open a new one, sorry for proliferating them

@Sibgatulin Sibgatulin deleted the feat/airq_number_platform branch August 12, 2025 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants