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
Add YoLink SpeakerHub Service #107787
Add YoLink SpeakerHub Service #107787
Conversation
Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍 |
Only thing we need is this service described in the docs so people can find in the docs how to interact with it |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please address the comments in a new PR. Thanks!
@@ -146,6 +147,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: | |||
) | |||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) | |||
|
|||
async_register_services(hass, entry) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We want integration services to be registered in async_setup
instead. Otherwise the service can be missing if the config entry isn't loaded, without a good explanation to the user. We want to raise an exception with a good message instead, if that's the case, from the service call.
Example:
core/homeassistant/components/blink/__init__.py
Lines 74 to 79 in e715d6a
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: | |
"""Set up Blink.""" | |
setup_services(hass) | |
return True |
SERVICE_PLAY_ON_SPEAKER_HUB = "play_on_speaker_hub" | ||
|
||
|
||
def async_register_services(hass: HomeAssistant, entry: ConfigEntry) -> None: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can get the config entry id from the device entry.
filter: | ||
- integration: yolink | ||
manufacturer: YoLink | ||
model: SpeakerHub |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't need model and manufacturer filters if we set integration filter.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
model can filter out most devices as this service only works with SpeakerHub devices
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok. Just remove manufacturer then.
- integration: yolink | ||
manufacturer: YoLink | ||
model: SpeakerHub | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This blank line makes it confusing to read the service fields.
New PR created: #107925 |
Proposed change
Provide SpeakerHub audio playback service.
Type of change
Additional information
Checklist
ruff format homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.To help with the load of incoming pull requests: