Move hdmi_cec imports at top-level (#29056)
This commit is contained in:
parent
6da01904c4
commit
335473cb71
2 changed files with 40 additions and 56 deletions
|
@ -4,6 +4,25 @@ from functools import reduce
|
||||||
import logging
|
import logging
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
|
|
||||||
|
from pycec.cec import CecAdapter
|
||||||
|
from pycec.commands import CecCommand, KeyPressCommand, KeyReleaseCommand
|
||||||
|
from pycec.const import (
|
||||||
|
ADDR_AUDIOSYSTEM,
|
||||||
|
ADDR_BROADCAST,
|
||||||
|
ADDR_UNREGISTERED,
|
||||||
|
KEY_MUTE_OFF,
|
||||||
|
KEY_MUTE_ON,
|
||||||
|
KEY_MUTE_TOGGLE,
|
||||||
|
KEY_VOLUME_DOWN,
|
||||||
|
KEY_VOLUME_UP,
|
||||||
|
POWER_OFF,
|
||||||
|
POWER_ON,
|
||||||
|
STATUS_PLAY,
|
||||||
|
STATUS_STILL,
|
||||||
|
STATUS_STOP,
|
||||||
|
)
|
||||||
|
from pycec.network import HDMINetwork, PhysicalAddress
|
||||||
|
from pycec.tcp import TcpAdapter
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.media_player import DOMAIN as MEDIA_PLAYER
|
from homeassistant.components.media_player import DOMAIN as MEDIA_PLAYER
|
||||||
|
@ -155,8 +174,6 @@ def parse_mapping(mapping, parents=None):
|
||||||
parents = []
|
parents = []
|
||||||
for addr, val in mapping.items():
|
for addr, val in mapping.items():
|
||||||
if isinstance(addr, (str,)) and isinstance(val, (str,)):
|
if isinstance(addr, (str,)) and isinstance(val, (str,)):
|
||||||
from pycec.network import PhysicalAddress
|
|
||||||
|
|
||||||
yield (addr, PhysicalAddress(val))
|
yield (addr, PhysicalAddress(val))
|
||||||
else:
|
else:
|
||||||
cur = parents + [addr]
|
cur = parents + [addr]
|
||||||
|
@ -168,20 +185,6 @@ def parse_mapping(mapping, parents=None):
|
||||||
|
|
||||||
def setup(hass: HomeAssistant, base_config):
|
def setup(hass: HomeAssistant, base_config):
|
||||||
"""Set up the CEC capability."""
|
"""Set up the CEC capability."""
|
||||||
from pycec.network import HDMINetwork
|
|
||||||
from pycec.commands import CecCommand, KeyReleaseCommand, KeyPressCommand
|
|
||||||
from pycec.const import (
|
|
||||||
KEY_VOLUME_UP,
|
|
||||||
KEY_VOLUME_DOWN,
|
|
||||||
KEY_MUTE_ON,
|
|
||||||
KEY_MUTE_OFF,
|
|
||||||
KEY_MUTE_TOGGLE,
|
|
||||||
ADDR_AUDIOSYSTEM,
|
|
||||||
ADDR_BROADCAST,
|
|
||||||
ADDR_UNREGISTERED,
|
|
||||||
)
|
|
||||||
from pycec.cec import CecAdapter
|
|
||||||
from pycec.tcp import TcpAdapter
|
|
||||||
|
|
||||||
# Parse configuration into a dict of device name to physical address
|
# Parse configuration into a dict of device name to physical address
|
||||||
# represented as a list of four elements.
|
# represented as a list of four elements.
|
||||||
|
@ -278,8 +281,6 @@ def setup(hass: HomeAssistant, base_config):
|
||||||
|
|
||||||
def _select_device(call):
|
def _select_device(call):
|
||||||
"""Select the active device."""
|
"""Select the active device."""
|
||||||
from pycec.network import PhysicalAddress
|
|
||||||
|
|
||||||
addr = call.data[ATTR_DEVICE]
|
addr = call.data[ATTR_DEVICE]
|
||||||
if not addr:
|
if not addr:
|
||||||
_LOGGER.error("Device not found: %s", call.data[ATTR_DEVICE])
|
_LOGGER.error("Device not found: %s", call.data[ATTR_DEVICE])
|
||||||
|
@ -366,14 +367,6 @@ class CecDevice(Entity):
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update device status."""
|
"""Update device status."""
|
||||||
device = self._device
|
device = self._device
|
||||||
from pycec.const import (
|
|
||||||
STATUS_PLAY,
|
|
||||||
STATUS_STOP,
|
|
||||||
STATUS_STILL,
|
|
||||||
POWER_OFF,
|
|
||||||
POWER_ON,
|
|
||||||
)
|
|
||||||
|
|
||||||
if device.power_status in [POWER_OFF, 3]:
|
if device.power_status in [POWER_OFF, 3]:
|
||||||
self._state = STATE_OFF
|
self._state = STATE_OFF
|
||||||
elif device.status == STATUS_PLAY:
|
elif device.status == STATUS_PLAY:
|
||||||
|
|
|
@ -1,6 +1,27 @@
|
||||||
"""Support for HDMI CEC devices as media players."""
|
"""Support for HDMI CEC devices as media players."""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from pycec.commands import CecCommand, KeyPressCommand, KeyReleaseCommand
|
||||||
|
from pycec.const import (
|
||||||
|
KEY_BACKWARD,
|
||||||
|
KEY_FORWARD,
|
||||||
|
KEY_MUTE_TOGGLE,
|
||||||
|
KEY_PAUSE,
|
||||||
|
KEY_PLAY,
|
||||||
|
KEY_STOP,
|
||||||
|
KEY_VOLUME_DOWN,
|
||||||
|
KEY_VOLUME_UP,
|
||||||
|
POWER_OFF,
|
||||||
|
POWER_ON,
|
||||||
|
STATUS_PLAY,
|
||||||
|
STATUS_STILL,
|
||||||
|
STATUS_STOP,
|
||||||
|
TYPE_AUDIO,
|
||||||
|
TYPE_PLAYBACK,
|
||||||
|
TYPE_RECORDER,
|
||||||
|
TYPE_TUNER,
|
||||||
|
)
|
||||||
|
|
||||||
from homeassistant.components.media_player import MediaPlayerDevice
|
from homeassistant.components.media_player import MediaPlayerDevice
|
||||||
from homeassistant.components.media_player.const import (
|
from homeassistant.components.media_player.const import (
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
@ -50,8 +71,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
|
||||||
|
|
||||||
def send_keypress(self, key):
|
def send_keypress(self, key):
|
||||||
"""Send keypress to CEC adapter."""
|
"""Send keypress to CEC adapter."""
|
||||||
from pycec.commands import KeyPressCommand, KeyReleaseCommand
|
|
||||||
|
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"Sending keypress %s to device %s", hex(key), hex(self._logical_address)
|
"Sending keypress %s to device %s", hex(key), hex(self._logical_address)
|
||||||
)
|
)
|
||||||
|
@ -60,20 +79,14 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
|
||||||
|
|
||||||
def send_playback(self, key):
|
def send_playback(self, key):
|
||||||
"""Send playback status to CEC adapter."""
|
"""Send playback status to CEC adapter."""
|
||||||
from pycec.commands import CecCommand
|
|
||||||
|
|
||||||
self._device.async_send_command(CecCommand(key, dst=self._logical_address))
|
self._device.async_send_command(CecCommand(key, dst=self._logical_address))
|
||||||
|
|
||||||
def mute_volume(self, mute):
|
def mute_volume(self, mute):
|
||||||
"""Mute volume."""
|
"""Mute volume."""
|
||||||
from pycec.const import KEY_MUTE_TOGGLE
|
|
||||||
|
|
||||||
self.send_keypress(KEY_MUTE_TOGGLE)
|
self.send_keypress(KEY_MUTE_TOGGLE)
|
||||||
|
|
||||||
def media_previous_track(self):
|
def media_previous_track(self):
|
||||||
"""Go to previous track."""
|
"""Go to previous track."""
|
||||||
from pycec.const import KEY_BACKWARD
|
|
||||||
|
|
||||||
self.send_keypress(KEY_BACKWARD)
|
self.send_keypress(KEY_BACKWARD)
|
||||||
|
|
||||||
def turn_on(self):
|
def turn_on(self):
|
||||||
|
@ -92,8 +105,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
|
||||||
|
|
||||||
def media_stop(self):
|
def media_stop(self):
|
||||||
"""Stop playback."""
|
"""Stop playback."""
|
||||||
from pycec.const import KEY_STOP
|
|
||||||
|
|
||||||
self.send_keypress(KEY_STOP)
|
self.send_keypress(KEY_STOP)
|
||||||
self._state = STATE_IDLE
|
self._state = STATE_IDLE
|
||||||
|
|
||||||
|
@ -103,8 +114,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
|
||||||
|
|
||||||
def media_next_track(self):
|
def media_next_track(self):
|
||||||
"""Skip to next track."""
|
"""Skip to next track."""
|
||||||
from pycec.const import KEY_FORWARD
|
|
||||||
|
|
||||||
self.send_keypress(KEY_FORWARD)
|
self.send_keypress(KEY_FORWARD)
|
||||||
|
|
||||||
def media_seek(self, position):
|
def media_seek(self, position):
|
||||||
|
@ -117,8 +126,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
|
||||||
|
|
||||||
def media_pause(self):
|
def media_pause(self):
|
||||||
"""Pause playback."""
|
"""Pause playback."""
|
||||||
from pycec.const import KEY_PAUSE
|
|
||||||
|
|
||||||
self.send_keypress(KEY_PAUSE)
|
self.send_keypress(KEY_PAUSE)
|
||||||
self._state = STATE_PAUSED
|
self._state = STATE_PAUSED
|
||||||
|
|
||||||
|
@ -128,22 +135,16 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
|
||||||
|
|
||||||
def media_play(self):
|
def media_play(self):
|
||||||
"""Start playback."""
|
"""Start playback."""
|
||||||
from pycec.const import KEY_PLAY
|
|
||||||
|
|
||||||
self.send_keypress(KEY_PLAY)
|
self.send_keypress(KEY_PLAY)
|
||||||
self._state = STATE_PLAYING
|
self._state = STATE_PLAYING
|
||||||
|
|
||||||
def volume_up(self):
|
def volume_up(self):
|
||||||
"""Increase volume."""
|
"""Increase volume."""
|
||||||
from pycec.const import KEY_VOLUME_UP
|
|
||||||
|
|
||||||
_LOGGER.debug("%s: volume up", self._logical_address)
|
_LOGGER.debug("%s: volume up", self._logical_address)
|
||||||
self.send_keypress(KEY_VOLUME_UP)
|
self.send_keypress(KEY_VOLUME_UP)
|
||||||
|
|
||||||
def volume_down(self):
|
def volume_down(self):
|
||||||
"""Decrease volume."""
|
"""Decrease volume."""
|
||||||
from pycec.const import KEY_VOLUME_DOWN
|
|
||||||
|
|
||||||
_LOGGER.debug("%s: volume down", self._logical_address)
|
_LOGGER.debug("%s: volume down", self._logical_address)
|
||||||
self.send_keypress(KEY_VOLUME_DOWN)
|
self.send_keypress(KEY_VOLUME_DOWN)
|
||||||
|
|
||||||
|
@ -155,14 +156,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update device status."""
|
"""Update device status."""
|
||||||
device = self._device
|
device = self._device
|
||||||
from pycec.const import (
|
|
||||||
STATUS_PLAY,
|
|
||||||
STATUS_STOP,
|
|
||||||
STATUS_STILL,
|
|
||||||
POWER_OFF,
|
|
||||||
POWER_ON,
|
|
||||||
)
|
|
||||||
|
|
||||||
if device.power_status in [POWER_OFF, 3]:
|
if device.power_status in [POWER_OFF, 3]:
|
||||||
self._state = STATE_OFF
|
self._state = STATE_OFF
|
||||||
elif not self.support_pause:
|
elif not self.support_pause:
|
||||||
|
@ -180,8 +173,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
|
||||||
@property
|
@property
|
||||||
def supported_features(self):
|
def supported_features(self):
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
from pycec.const import TYPE_RECORDER, TYPE_PLAYBACK, TYPE_TUNER, TYPE_AUDIO
|
|
||||||
|
|
||||||
if self.type_id == TYPE_RECORDER or self.type == TYPE_PLAYBACK:
|
if self.type_id == TYPE_RECORDER or self.type == TYPE_PLAYBACK:
|
||||||
return (
|
return (
|
||||||
SUPPORT_TURN_ON
|
SUPPORT_TURN_ON
|
||||||
|
|
Loading…
Add table
Reference in a new issue