More refactoring
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
import logging
|
||||
from homeassistant.components.media_player import MediaPlayerDevice
|
||||
from homeassistant.components.websocket_api import event_message
|
||||
|
||||
from .const import DOMAIN
|
||||
from .const import DOMAIN, DATA_DEVICES, DATA_ADDERS, DATA_ALIASES
|
||||
from .connection import BrowserModEntity
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
|
||||
def adder(hass, deviceID, connection, cid):
|
||||
player = BrowserModPlayer(hass, deviceID)
|
||||
@@ -13,49 +14,24 @@ async def async_setup_platform(hass, config, async_add_devices, discovery_info=N
|
||||
player.ws_connect(connection, cid)
|
||||
async_add_devices([player])
|
||||
return player
|
||||
hass.data[DOMAIN]["adders"].append(adder)
|
||||
hass.data[DOMAIN][DATA_ADDERS].append(adder)
|
||||
|
||||
for k,v in hass.data[DOMAIN]["aliases"].items():
|
||||
devices = hass.data[DOMAIN]["devices"]
|
||||
for k,v in hass.data[DOMAIN][DATA_ALIASES].items():
|
||||
devices = hass.data[DOMAIN][DATA_DEVICES]
|
||||
devices[v] = BrowserModPlayer(hass, v, k)
|
||||
async_add_devices([devices[v]])
|
||||
|
||||
class BrowserModPlayer(MediaPlayerDevice):
|
||||
|
||||
class BrowserModPlayer(MediaPlayerDevice, BrowserModEntity):
|
||||
|
||||
def __init__(self, hass, deviceID, alias=None):
|
||||
self.hass = hass
|
||||
self.deviceID = deviceID
|
||||
self.alias = alias
|
||||
self.player_state = {}
|
||||
self.browser_state = {}
|
||||
super().__init__(hass, deviceID, alias)
|
||||
_LOGGER.error(f"Create player {deviceID}({alias})")
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self.alias or self.deviceID.replace('-','_')
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
return {
|
||||
"player": self.player_state,
|
||||
"browser": self.browser_state,
|
||||
"player": self.ws_data.get("player"),
|
||||
"browser": self.ws_data.get("browser"),
|
||||
}
|
||||
|
||||
def ws_send(self, command, data=None):
|
||||
data = data or {}
|
||||
self.connection.send_message(event_message(self.cid, {
|
||||
"command": command,
|
||||
**data,
|
||||
}))
|
||||
|
||||
|
||||
def ws_connect(self, connection, cid):
|
||||
self.cid = cid
|
||||
self.connection = connection
|
||||
_LOGGER.error(f"Connecting {self.entity_id}")
|
||||
self.ws_send("update")
|
||||
|
||||
def ws_update(self, browser, player):
|
||||
self.browser_state = browser
|
||||
self.player_state = player
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user