diff --git a/CHANGELOG.md b/CHANGELOG.md index d13d24d..9b2485d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,21 +1,25 @@ # Changelog -## 2023-05-4 (2023-05-17) +## 2023.05.5 (2023-05-19) +#### Fix +* Owlet refresh token becomes invalid after 24 hours. Meant that after 1 day the integration would stop working. Moved to pyowletapi v2023.5.28 which uses different refresh token, should no longer need reconfiguring after 24 hours + +## 2023.05.4 (2023-05-17) #### Fix * Bumping to pyowletapi 2023.5.25 -## 2023-05-3 (2023-05-17) +## 2023.05.3 (2023-05-17) #### Fix * Bumping to pyowletapi 2023.5.24 * Reauthing now no longer re adds users' password to config entry -## 2023-05-2 (2023-05-16) +## 2023.05.2 (2023-05-16) #### Feature * Integration now makes use of refresh token from pyowletapi to reauthenticate, user password in no longer stored by integration ([`dc710a1`](https://github.com/ryanbdclark/owlet/commit/dc710a1783a4cad9d6cf355240fe12ac779a87ef)) * New sensors create for baby sleep state ([`9b3392b`](https://github.com/ryanbdclark/owlet/commit/9b3392bdbcd82015ed31d3a50a517e4e22905684)) - -## 2023-05-1 (2023-05-15) + +## 2023.05.1 (2023-05-15) #### Feature * Changed versioning to date based ### Fix diff --git a/custom_components/owlet/__init__.py b/custom_components/owlet/__init__.py index 434bd29..2aebe85 100644 --- a/custom_components/owlet/__init__.py +++ b/custom_components/owlet/__init__.py @@ -49,9 +49,16 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: if token: hass.config_entries.async_update_entry(entry, data={**entry.data, **token}) + devices = await owlet_api.get_devices(SUPPORTED_VERSIONS) + + if devices["tokens"]: + hass.config_entries.async_update_entry( + entry, data={**entry.data, **devices["tokens"]} + ) + socks = { device["device"]["dsn"]: Sock(owlet_api, device["device"]) - for device in await owlet_api.get_devices(SUPPORTED_VERSIONS) + for device in devices["response"] } except OwletAuthenticationError as err: diff --git a/custom_components/owlet/config_flow.py b/custom_components/owlet/config_flow.py index 95b2637..25b645e 100644 --- a/custom_components/owlet/config_flow.py +++ b/custom_components/owlet/config_flow.py @@ -31,7 +31,6 @@ from .const import ( DOMAIN, CONF_OWLET_EXPIRY, POLLING_INTERVAL, - SUPPORTED_VERSIONS, CONF_OWLET_REFRESH, ) @@ -70,9 +69,9 @@ class OwletConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): self._password = user_input[CONF_PASSWORD] owlet_api = OwletAPI( - self._region, - self._username, - self._password, + region=self._region, + user=self._username, + password=self._password, session=async_get_clientsession(self.hass), ) @@ -82,7 +81,7 @@ class OwletConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): try: token = await owlet_api.authenticate() try: - await owlet_api.get_devices(SUPPORTED_VERSIONS) + await owlet_api.validate_authentication() return self.async_create_entry( title=self._username, data={ diff --git a/custom_components/owlet/coordinator.py b/custom_components/owlet/coordinator.py index fd7fad6..9434052 100644 --- a/custom_components/owlet/coordinator.py +++ b/custom_components/owlet/coordinator.py @@ -14,9 +14,8 @@ from pyowletapi.exceptions import ( from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed -from homeassistant.const import CONF_API_TOKEN -from .const import DOMAIN, MANUFACTURER, CONF_OWLET_EXPIRY, CONF_OWLET_REFRESH +from .const import DOMAIN, MANUFACTURER _LOGGER = logging.getLogger(__name__) @@ -50,17 +49,11 @@ class OwletCoordinator(DataUpdateCoordinator): async def _async_update_data(self) -> None: """Fetch the data from the device.""" try: - await self.sock.update_properties() - tokens = await self.sock.api.tokens_changed( - { - CONF_API_TOKEN: self.config_entry.data[CONF_API_TOKEN], - CONF_OWLET_EXPIRY: self.config_entry.data[CONF_OWLET_EXPIRY], - CONF_OWLET_REFRESH: self.config_entry.data[CONF_OWLET_REFRESH], - } - ) - if tokens: + properties = await self.sock.update_properties() + if properties["tokens"]: self.hass.config_entries.async_update_entry( - self.config_entry, data={**self.config_entry.data, **tokens} + self.config_entry, + data={**self.config_entry.data, **properties["tokens"]}, ) except (OwletError, OwletConnectionError, OwletAuthenticationError) as err: raise UpdateFailed(err) from err diff --git a/custom_components/owlet/manifest.json b/custom_components/owlet/manifest.json index e8edd9d..ced7563 100644 --- a/custom_components/owlet/manifest.json +++ b/custom_components/owlet/manifest.json @@ -10,7 +10,7 @@ "homekit": {}, "iot_class": "cloud_polling", "requirements": [ - "pyowletapi==2023.5.25" + "pyowletapi==2023.5.28" ], - "version":"2023.5.4" + "version":"2023.5.5" }