core/homeassistant/components/anthemav/media_player.py

201 lines
6.1 KiB
Python
Raw Normal View History

"""Support for Anthem Network Receivers and Processors."""
from __future__ import annotations
2018-09-09 12:26:06 +00:00
import logging
from typing import Any
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
from anthemav.connection import Connection
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
import voluptuous as vol
from homeassistant.components.media_player import (
PLATFORM_SCHEMA,
MediaPlayerEntity,
MediaPlayerEntityFeature,
2019-07-31 19:25:30 +00:00
)
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
from homeassistant.const import (
2019-07-31 19:25:30 +00:00
CONF_HOST,
CONF_MAC,
2019-07-31 19:25:30 +00:00
CONF_NAME,
CONF_PORT,
STATE_OFF,
STATE_ON,
)
from homeassistant.core import HomeAssistant
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
from .const import (
ANTHEMAV_UDATE_SIGNAL,
CONF_MODEL,
DEFAULT_NAME,
DEFAULT_PORT,
DOMAIN,
MANUFACTURER,
)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
_LOGGER = logging.getLogger(__name__)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
2019-07-31 19:25:30 +00:00
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
{
vol.Required(CONF_HOST): cv.string,
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
2019-07-31 19:25:30 +00:00
vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
}
)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
async def async_setup_platform(
hass: HomeAssistant,
config: ConfigType,
async_add_entities: AddEntitiesCallback,
discovery_info: DiscoveryInfoType | None = None,
) -> None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Set up our socket to the AVR."""
_LOGGER.warning(
"AnthemAV configuration is deprecated and has been automatically imported. Please remove the integration from your configuration file"
)
await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_IMPORT},
data=config,
)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up entry."""
name = config_entry.data[CONF_NAME]
macaddress = config_entry.data[CONF_MAC]
model = config_entry.data[CONF_MODEL]
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
avr = hass.data[DOMAIN][config_entry.entry_id]
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
device = AnthemAVR(avr, name, macaddress, model)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
_LOGGER.debug("dump_devicedata: %s", device.dump_avrdata)
_LOGGER.debug("dump_conndata: %s", avr.dump_conndata)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
async_add_entities([device])
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
class AnthemAVR(MediaPlayerEntity):
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Entity reading values from Anthem AVR protocol."""
_attr_should_poll = False
_attr_supported_features = (
MediaPlayerEntityFeature.VOLUME_SET
| MediaPlayerEntityFeature.VOLUME_MUTE
| MediaPlayerEntityFeature.TURN_ON
| MediaPlayerEntityFeature.TURN_OFF
| MediaPlayerEntityFeature.SELECT_SOURCE
)
def __init__(self, avr: Connection, name: str, macaddress: str, model: str) -> None:
"""Initialize entity with transport."""
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
super().__init__()
self.avr = avr
self._attr_name = name
self._attr_unique_id = macaddress
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, macaddress)},
name=name,
manufacturer=MANUFACTURER,
model=model,
)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
def _lookup(self, propname: str, dval: Any | None = None) -> Any | None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
return getattr(self.avr.protocol, propname, dval)
async def async_added_to_hass(self) -> None:
"""When entity is added to hass."""
self.async_on_remove(
async_dispatcher_connect(
self.hass,
f"{ANTHEMAV_UDATE_SIGNAL}_{self._attr_name}",
self.async_write_ha_state,
)
)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
@property
def state(self) -> str | None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Return state of power on/off."""
2019-07-31 19:25:30 +00:00
pwrstate = self._lookup("power")
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
if pwrstate is True:
return STATE_ON
if pwrstate is False:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
return STATE_OFF
return None
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
@property
def is_volume_muted(self) -> bool | None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Return boolean reflecting mute state on device."""
2019-07-31 19:25:30 +00:00
return self._lookup("mute", False)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
@property
def volume_level(self) -> float | None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Return volume level from 0 to 1."""
2019-07-31 19:25:30 +00:00
return self._lookup("volume_as_percentage", 0.0)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
@property
def media_title(self) -> str | None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Return current input name (closest we have to media title)."""
2019-07-31 19:25:30 +00:00
return self._lookup("input_name", "No Source")
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
@property
def app_name(self) -> str | None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Return details about current video and audio stream."""
2019-07-31 19:25:30 +00:00
return (
f"{self._lookup('video_input_resolution_text', '')} "
f"{self._lookup('audio_input_name', '')}"
2019-07-31 19:25:30 +00:00
)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
@property
def source(self) -> str | None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Return currently selected input."""
2019-07-31 19:25:30 +00:00
return self._lookup("input_name", "Unknown")
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
@property
def source_list(self) -> list[str] | None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Return all active, configured inputs."""
2019-07-31 19:25:30 +00:00
return self._lookup("input_list", ["Unknown"])
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
async def async_select_source(self, source: str) -> None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Change AVR to the designated source (by name)."""
2019-07-31 19:25:30 +00:00
self._update_avr("input_name", source)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
async def async_turn_off(self) -> None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Turn AVR power off."""
2019-07-31 19:25:30 +00:00
self._update_avr("power", False)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
async def async_turn_on(self) -> None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Turn AVR power on."""
2019-07-31 19:25:30 +00:00
self._update_avr("power", True)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
async def async_set_volume_level(self, volume: float) -> None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Set AVR volume (0 to 1)."""
2019-07-31 19:25:30 +00:00
self._update_avr("volume_as_percentage", volume)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
async def async_mute_volume(self, mute: bool) -> None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Engage AVR mute."""
2019-07-31 19:25:30 +00:00
self._update_avr("mute", mute)
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
def _update_avr(self, propname: str, value: Any | None) -> None:
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
"""Update a property in the AVR."""
_LOGGER.debug("Sending command to AVR: set %s to %s", propname, str(value))
New platform media_player/anthemav (#5146) * Initial commit of anthemav platform. It loads but has no purpose. * Now presents a card in the UI but the values aren't real * Mute and volume polling/setting work now * Source lists and selection works now. * Reduce debug logging verbosity * Support power on/off and skip polling for details if power is off * Add some static tables to decode numerics from telnet commands * Add stub for unsupported media_play * New style anthemav uses native asyncio structure * Add device callback for asyncio * This is ugly but it works * Simplify async setup and abstract class data retrieval * Implement commands (power on and power off for now) * Add support for scan_interval and set default to 120 seconds * Pass-through to package handlers for volume and input selection * Slight restructuring to satisfy anthemav 0.9 * Load anthemav package from pypi now that it's registered * Proper app_name from a/v info * Mispelled word * media_player/anthemav initial commit of platform requirements * Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) * Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo * Conform to Python/project style requirements * Making pylint happy * Bring pip requirements in agreement with the code * Bungled previous update * Remove unnecessady SCAN_INTERVAL logic I was unawre that this is performed as part of the normal platform behavior and it's unnecessary for a platform to independently implement this logic. * Refactor code based on @armills PR requests * Re-add media_play stub to avoid traceback * Align with platform reqirements * Remove references to SCAN_INTERVAL and clean up _lookup logic * Add DEFAULT_PORT assignment * Code style changes and removal of vestigial structures * CONF_NAME handling changes to allow local override to default from device * Address PR feedback from @balloob * Remove media_play function override It's no longer necesary for the platform to implement a stub media_play function override now that the Add SUPPORT_PLAY flag #5181 issue has been resolved and merged into the dev branch. * Rename callback function to async_ for clarity * Use async routines for platform methods * Convert update callback to coroutine for conformity Underlying anthemav library now properly supports coroutine callbacks instead of normal functions. Converted the platform callback to a coroutine for conformance with async operation for the device. Special thanks to @pvizeli and @armills for their invaluable remedial Python instruction! * Further callback refinements Altered the nature of callback handling based on suggestions from @pvizeli * True not needed for local push update_ha_state * Small style fix
2017-01-19 19:07:01 +00:00
setattr(self.avr.protocol, propname, value)
@property
def dump_avrdata(self):
"""Return state of avr object for debugging forensics."""
attrs = vars(self)
items_string = ", ".join(f"{item}: {item}" for item in attrs.items())
return f"dump_avrdata: {items_string}"