mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Monoprice PR followups (#33133)
This commit is contained in:
parent
99877c32b1
commit
66402b9b38
@ -1,11 +1,21 @@
|
|||||||
"""The Monoprice 6-Zone Amplifier integration."""
|
"""The Monoprice 6-Zone Amplifier integration."""
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from pymonoprice import get_monoprice
|
||||||
|
from serial import SerialException
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
|
from homeassistant.const import CONF_PORT
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.exceptions import ConfigEntryNotReady
|
||||||
|
|
||||||
|
from .const import DOMAIN
|
||||||
|
|
||||||
PLATFORMS = ["media_player"]
|
PLATFORMS = ["media_player"]
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
async def async_setup(hass: HomeAssistant, config: dict):
|
async def async_setup(hass: HomeAssistant, config: dict):
|
||||||
"""Set up the Monoprice 6-Zone Amplifier component."""
|
"""Set up the Monoprice 6-Zone Amplifier component."""
|
||||||
@ -14,6 +24,15 @@ async def async_setup(hass: HomeAssistant, config: dict):
|
|||||||
|
|
||||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
||||||
"""Set up Monoprice 6-Zone Amplifier from a config entry."""
|
"""Set up Monoprice 6-Zone Amplifier from a config entry."""
|
||||||
|
port = entry.data[CONF_PORT]
|
||||||
|
|
||||||
|
try:
|
||||||
|
monoprice = await hass.async_add_executor_job(get_monoprice, port)
|
||||||
|
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = monoprice
|
||||||
|
except SerialException:
|
||||||
|
_LOGGER.error("Error connecting to Monoprice controller at %s", port)
|
||||||
|
raise ConfigEntryNotReady
|
||||||
|
|
||||||
for component in PLATFORMS:
|
for component in PLATFORMS:
|
||||||
hass.async_create_task(
|
hass.async_create_task(
|
||||||
hass.config_entries.async_forward_entry_setup(entry, component)
|
hass.config_entries.async_forward_entry_setup(entry, component)
|
||||||
|
@ -89,7 +89,3 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
|
|
||||||
class CannotConnect(exceptions.HomeAssistantError):
|
class CannotConnect(exceptions.HomeAssistantError):
|
||||||
"""Error to indicate we cannot connect."""
|
"""Error to indicate we cannot connect."""
|
||||||
|
|
||||||
|
|
||||||
class InvalidAuth(exceptions.HomeAssistantError):
|
|
||||||
"""Error to indicate there is invalid auth."""
|
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
"""Support for interfacing with Monoprice 6 zone home audio controller."""
|
"""Support for interfacing with Monoprice 6 zone home audio controller."""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from pymonoprice import get_monoprice
|
|
||||||
from serial import SerialException
|
|
||||||
|
|
||||||
from homeassistant.components.media_player import MediaPlayerDevice
|
from homeassistant.components.media_player import MediaPlayerDevice
|
||||||
from homeassistant.components.media_player.const import (
|
from homeassistant.components.media_player.const import (
|
||||||
SUPPORT_SELECT_SOURCE,
|
SUPPORT_SELECT_SOURCE,
|
||||||
@ -40,28 +37,24 @@ def _get_sources(sources_config):
|
|||||||
return [source_id_name, source_name_id, source_names]
|
return [source_id_name, source_name_id, source_names]
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(hass, config_entry, async_add_devices):
|
async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||||
"""Set up the Monoprice 6-zone amplifier platform."""
|
"""Set up the Monoprice 6-zone amplifier platform."""
|
||||||
port = config_entry.data.get(CONF_PORT)
|
port = config_entry.data[CONF_PORT]
|
||||||
|
|
||||||
try:
|
monoprice = hass.data[DOMAIN][config_entry.entry_id]
|
||||||
monoprice = await hass.async_add_executor_job(get_monoprice, port)
|
|
||||||
except SerialException:
|
|
||||||
_LOGGER.error("Error connecting to Monoprice controller")
|
|
||||||
return
|
|
||||||
|
|
||||||
sources = _get_sources(config_entry.data.get(CONF_SOURCES))
|
sources = _get_sources(config_entry.data.get(CONF_SOURCES))
|
||||||
|
|
||||||
devices = []
|
entities = []
|
||||||
for i in range(1, 4):
|
for i in range(1, 4):
|
||||||
for j in range(1, 7):
|
for j in range(1, 7):
|
||||||
zone_id = (i * 10) + j
|
zone_id = (i * 10) + j
|
||||||
_LOGGER.info("Adding zone %d for port %s", zone_id, port)
|
_LOGGER.info("Adding zone %d for port %s", zone_id, port)
|
||||||
devices.append(
|
entities.append(
|
||||||
MonopriceZone(monoprice, sources, config_entry.entry_id, zone_id)
|
MonopriceZone(monoprice, sources, config_entry.entry_id, zone_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
async_add_devices(devices, True)
|
async_add_entities(entities, True)
|
||||||
|
|
||||||
platform = entity_platform.current_platform.get()
|
platform = entity_platform.current_platform.get()
|
||||||
|
|
||||||
|
@ -94,8 +94,7 @@ async def test_cannot_connect(hass):
|
|||||||
"""Test connection error."""
|
"""Test connection error."""
|
||||||
|
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.monoprice.media_player.get_monoprice",
|
"homeassistant.components.monoprice.get_monoprice", side_effect=SerialException,
|
||||||
side_effect=SerialException,
|
|
||||||
):
|
):
|
||||||
config_entry = MockConfigEntry(domain=DOMAIN, data=MOCK_CONFIG)
|
config_entry = MockConfigEntry(domain=DOMAIN, data=MOCK_CONFIG)
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
@ -108,8 +107,7 @@ async def test_cannot_connect(hass):
|
|||||||
|
|
||||||
async def _setup_monoprice(hass, monoprice):
|
async def _setup_monoprice(hass, monoprice):
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.monoprice.media_player.get_monoprice",
|
"homeassistant.components.monoprice.get_monoprice", new=lambda *a: monoprice,
|
||||||
new=lambda *a: monoprice,
|
|
||||||
):
|
):
|
||||||
config_entry = MockConfigEntry(domain=DOMAIN, data=MOCK_CONFIG)
|
config_entry = MockConfigEntry(domain=DOMAIN, data=MOCK_CONFIG)
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user