Use entity class attributes for Blackbird (#52889)

* Use entity class attributes for blackbird

* rework

* undo media_title
This commit is contained in:
Robert Hillis 2021-07-13 14:08:22 -04:00 committed by GitHub
parent 2b65501ca7
commit 7f0eff8230
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -131,6 +131,8 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
class BlackbirdZone(MediaPlayerEntity): class BlackbirdZone(MediaPlayerEntity):
"""Representation of a Blackbird matrix zone.""" """Representation of a Blackbird matrix zone."""
_attr_supported_features = SUPPORT_BLACKBIRD
def __init__(self, blackbird, sources, zone_id, zone_name): def __init__(self, blackbird, sources, zone_id, zone_name):
"""Initialize new zone.""" """Initialize new zone."""
self._blackbird = blackbird self._blackbird = blackbird
@ -139,55 +141,28 @@ class BlackbirdZone(MediaPlayerEntity):
# dict source name -> source_id # dict source name -> source_id
self._source_name_id = {v: k for k, v in sources.items()} self._source_name_id = {v: k for k, v in sources.items()}
# ordered list of all source names # ordered list of all source names
self._source_names = sorted( self._attr_source_list = sorted(
self._source_name_id.keys(), key=lambda v: self._source_name_id[v] self._source_name_id.keys(), key=lambda v: self._source_name_id[v]
) )
self._zone_id = zone_id self._zone_id = zone_id
self._name = zone_name self._attr_name = zone_name
self._state = None
self._source = None
def update(self): def update(self):
"""Retrieve latest state.""" """Retrieve latest state."""
state = self._blackbird.zone_status(self._zone_id) state = self._blackbird.zone_status(self._zone_id)
if not state: if not state:
return return
self._state = STATE_ON if state.power else STATE_OFF self._attr_state = STATE_ON if state.power else STATE_OFF
idx = state.av idx = state.av
if idx in self._source_id_name: if idx in self._source_id_name:
self._source = self._source_id_name[idx] self._attr_source = self._source_id_name[idx]
else: else:
self._source = None self._attr_source = None
@property
def name(self):
"""Return the name of the zone."""
return self._name
@property
def state(self):
"""Return the state of the zone."""
return self._state
@property
def supported_features(self):
"""Return flag of media commands that are supported."""
return SUPPORT_BLACKBIRD
@property @property
def media_title(self): def media_title(self):
"""Return the current source as media title.""" """Return the current source as media title."""
return self._source return self.source
@property
def source(self):
"""Return the current input source of the device."""
return self._source
@property
def source_list(self):
"""List of available input sources."""
return self._source_names
def set_all_zones(self, source): def set_all_zones(self, source):
"""Set all zones to one source.""" """Set all zones to one source."""