mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Fix braviatv authentication refresh (#37482)
- Bumps bravia-tv lib to 1.0.6 which fixes is_connected() to actually return True only when API is connected, instead of just returning whether or not cookies are cached (regardless if they actually worked). - Wrap is_connected() because it now performs io. - Remove unnecessary logic to refresh cookies. Now that is_connected() works, the bravia instance only needs to be reconnected when is_connected is False and TV is not off.
This commit is contained in:
parent
a882cfafb1
commit
a08cb2ca9d
@ -55,7 +55,8 @@ class BraviaTVConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
self.braviarc.connect, pin, CLIENTID_PREFIX, NICKNAME
|
self.braviarc.connect, pin, CLIENTID_PREFIX, NICKNAME
|
||||||
)
|
)
|
||||||
|
|
||||||
if not self.braviarc.is_connected():
|
connected = await self.hass.async_add_executor_job(self.braviarc.is_connected)
|
||||||
|
if not connected:
|
||||||
raise CannotConnect()
|
raise CannotConnect()
|
||||||
|
|
||||||
system_info = await self.hass.async_add_executor_job(
|
system_info = await self.hass.async_add_executor_job(
|
||||||
@ -161,7 +162,8 @@ class BraviaTVOptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
async def async_step_init(self, user_input=None):
|
async def async_step_init(self, user_input=None):
|
||||||
"""Manage the options."""
|
"""Manage the options."""
|
||||||
self.braviarc = self.hass.data[DOMAIN][self.config_entry.entry_id][BRAVIARC]
|
self.braviarc = self.hass.data[DOMAIN][self.config_entry.entry_id][BRAVIARC]
|
||||||
if not self.braviarc.is_connected():
|
connected = await self.hass.async_add_executor_job(self.braviarc.is_connected)
|
||||||
|
if not connected:
|
||||||
await self.hass.async_add_executor_job(
|
await self.hass.async_add_executor_job(
|
||||||
self.braviarc.connect, self.pin, CLIENTID_PREFIX, NICKNAME
|
self.braviarc.connect, self.pin, CLIENTID_PREFIX, NICKNAME
|
||||||
)
|
)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"domain": "braviatv",
|
"domain": "braviatv",
|
||||||
"name": "Sony Bravia TV",
|
"name": "Sony Bravia TV",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/braviatv",
|
"documentation": "https://www.home-assistant.io/integrations/braviatv",
|
||||||
"requirements": ["bravia-tv==1.0.5"],
|
"requirements": ["bravia-tv==1.0.6"],
|
||||||
"codeowners": ["@bieniu"],
|
"codeowners": ["@bieniu"],
|
||||||
"config_flow": true
|
"config_flow": true
|
||||||
}
|
}
|
||||||
|
@ -148,33 +148,31 @@ class BraviaTVDevice(MediaPlayerEntity):
|
|||||||
self._device_info = device_info
|
self._device_info = device_info
|
||||||
self._ignored_sources = ignored_sources
|
self._ignored_sources = ignored_sources
|
||||||
self._state_lock = asyncio.Lock()
|
self._state_lock = asyncio.Lock()
|
||||||
self._need_refresh = True
|
|
||||||
|
|
||||||
async def async_update(self):
|
async def async_update(self):
|
||||||
"""Update TV info."""
|
"""Update TV info."""
|
||||||
if self._state_lock.locked():
|
if self._state_lock.locked():
|
||||||
return
|
return
|
||||||
|
|
||||||
if self._state == STATE_OFF:
|
|
||||||
self._need_refresh = True
|
|
||||||
|
|
||||||
power_status = await self.hass.async_add_executor_job(
|
power_status = await self.hass.async_add_executor_job(
|
||||||
self._braviarc.get_power_status
|
self._braviarc.get_power_status
|
||||||
)
|
)
|
||||||
if power_status == "active":
|
|
||||||
if self._need_refresh:
|
if power_status != "off":
|
||||||
|
connected = await self.hass.async_add_executor_job(
|
||||||
|
self._braviarc.is_connected
|
||||||
|
)
|
||||||
|
if not connected:
|
||||||
try:
|
try:
|
||||||
connected = await self.hass.async_add_executor_job(
|
connected = await self.hass.async_add_executor_job(
|
||||||
self._braviarc.connect, self._pin, CLIENTID_PREFIX, NICKNAME
|
self._braviarc.connect, self._pin, CLIENTID_PREFIX, NICKNAME
|
||||||
)
|
)
|
||||||
except NoIPControl:
|
except NoIPControl:
|
||||||
_LOGGER.error("IP Control is disabled in the TV settings")
|
_LOGGER.error("IP Control is disabled in the TV settings")
|
||||||
self._need_refresh = False
|
|
||||||
else:
|
|
||||||
connected = self._braviarc.is_connected()
|
|
||||||
if not connected:
|
if not connected:
|
||||||
return
|
power_status = "off"
|
||||||
|
|
||||||
|
if power_status == "active":
|
||||||
self._state = STATE_ON
|
self._state = STATE_ON
|
||||||
if (
|
if (
|
||||||
await self._async_refresh_volume()
|
await self._async_refresh_volume()
|
||||||
|
@ -375,7 +375,7 @@ bomradarloop==0.1.4
|
|||||||
boto3==1.9.252
|
boto3==1.9.252
|
||||||
|
|
||||||
# homeassistant.components.braviatv
|
# homeassistant.components.braviatv
|
||||||
bravia-tv==1.0.5
|
bravia-tv==1.0.6
|
||||||
|
|
||||||
# homeassistant.components.broadlink
|
# homeassistant.components.broadlink
|
||||||
broadlink==0.14.0
|
broadlink==0.14.0
|
||||||
|
@ -177,7 +177,7 @@ blinkpy==0.15.0
|
|||||||
bomradarloop==0.1.4
|
bomradarloop==0.1.4
|
||||||
|
|
||||||
# homeassistant.components.braviatv
|
# homeassistant.components.braviatv
|
||||||
bravia-tv==1.0.5
|
bravia-tv==1.0.6
|
||||||
|
|
||||||
# homeassistant.components.broadlink
|
# homeassistant.components.broadlink
|
||||||
broadlink==0.14.0
|
broadlink==0.14.0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user