diff --git a/custom_components/alexa_media/alexa_entity.py b/custom_components/alexa_media/alexa_entity.py index 41778457..8c927842 100644 --- a/custom_components/alexa_media/alexa_entity.py +++ b/custom_components/alexa_media/alexa_entity.py @@ -107,8 +107,10 @@ def is_alexa_guard(appliance: dict[str, Any]) -> bool: def is_temperature_sensor(appliance: dict[str, Any]) -> bool: """Is the given appliance the temperature sensor of an Echo.""" - return is_local(appliance) and has_capability( - appliance, "Alexa.TemperatureSensor", "temperature" + return ( + is_local(appliance) + and has_capability(appliance, "Alexa.TemperatureSensor", "temperature") + and appliance["friendlyDescription"] != "Amazon Indoor Air Quality Monitor" ) diff --git a/custom_components/alexa_media/config_flow.py b/custom_components/alexa_media/config_flow.py index 70997c3e..5551ffb1 100644 --- a/custom_components/alexa_media/config_flow.py +++ b/custom_components/alexa_media/config_flow.py @@ -959,6 +959,15 @@ async def async_step_init( if CONF_PUBLIC_URL in self._config_entry.data: if not user_input[CONF_PUBLIC_URL].endswith("/"): user_input[CONF_PUBLIC_URL] = user_input[CONF_PUBLIC_URL] + "/" + """Remove leading/trailing spaces in device strings""" + if CONF_INCLUDE_DEVICES in self._config_entry.data: + user_input[CONF_INCLUDE_DEVICES] = user_input[ + CONF_INCLUDE_DEVICES + ].strip() + if CONF_EXCLUDE_DEVICES in self._config_entry.data: + user_input[CONF_EXCLUDE_DEVICES] = user_input[ + CONF_EXCLUDE_DEVICES + ].strip() self.hass.config_entries.async_update_entry( self._config_entry, data=user_input, options=self._config_entry.options diff --git a/custom_components/alexa_media/media_player.py b/custom_components/alexa_media/media_player.py index b5fa0e80..df6b29b6 100644 --- a/custom_components/alexa_media/media_player.py +++ b/custom_components/alexa_media/media_player.py @@ -245,6 +245,7 @@ def __init__(self, device, login, second_account_index=0): self._media_is_muted = None self._media_vol_level = None self._previous_volume = None + self._saved_volume = None self._source = None self._source_list = [] self._connected_bluetooth = None @@ -1129,14 +1130,23 @@ async def async_set_volume_level(self, volume): """Set volume level, range 0..1.""" if not self.available: return + + # Save the current volume level before we change it + _LOGGER.debug("Saving previous volume level: %s", self.volume_level) + self._previous_volume = self.volume_level + + # Change the volume level on the device if self.hass: self.hass.async_create_task(self.alexa_api.set_volume(volume)) else: await self.alexa_api.set_volume(volume) self._media_vol_level = volume + + # Let http2push update the new volume level if not ( self.hass.data[DATA_ALEXAMEDIA]["accounts"][self._login.email]["http2"] ): + # Otherwise we do it ourselves await self.async_update() @property @@ -1164,19 +1174,19 @@ async def async_mute_volume(self, mute): self._media_is_muted = mute if mute: - self._previous_volume = self.volume_level + self._saved_volume = self.volume_level if self.hass: self.hass.async_create_task(self.alexa_api.set_volume(0)) else: await self.alexa_api.set_volume(0) else: - if self._previous_volume is not None: + if self._saved_volume is not None: if self.hass: self.hass.async_create_task( - self.alexa_api.set_volume(self._previous_volume) + self.alexa_api.set_volume(self._saved_volume) ) else: - await self.alexa_api.set_volume(self._previous_volume) + await self.alexa_api.set_volume(self._saved_volume) else: if self.hass: self.hass.async_create_task(self.alexa_api.set_volume(50)) @@ -1620,6 +1630,7 @@ def extra_state_attributes(self): "last_called_summary": self._last_called_summary, "connected_bluetooth": self._connected_bluetooth, "bluetooth_list": self._bluetooth_list, + "previous_volume": self._previous_volume, } return attr