From c150a296d264c9ede0975eeee9ba7ec4bfd9f306 Mon Sep 17 00:00:00 2001 From: Austin Mroczek Date: Sun, 7 Nov 2021 15:30:34 -0800 Subject: [PATCH 01/20] Bump total_connect_client to 2021.11.2 (#58818) * update total_connect_client to 2021.10 * update for total_connect_client changes * remove unused return value * bump total_connect_client to 2021.11.1 * bump total_connect_client to 2021.11.2 * Move to public ResultCode * load locations to prevent 'unknown error occurred' * add test for zero locations * Revert "load locations to prevent 'unknown error occurred'" This reverts commit 28b8984be5b1c8839fc8077d8d59bdba97eacc38. * Revert "add test for zero locations" This reverts commit 77bf7908d508d539d6165fc986930b041b13ca97. --- .../components/totalconnect/__init__.py | 4 +--- .../components/totalconnect/config_flow.py | 4 ++-- .../components/totalconnect/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/totalconnect/common.py | 22 +++++++++---------- .../totalconnect/test_config_flow.py | 8 +++---- tests/components/totalconnect/test_init.py | 2 +- 8 files changed, 21 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/totalconnect/__init__.py b/homeassistant/components/totalconnect/__init__.py index bd1f693fd07..8acc7801de8 100644 --- a/homeassistant/components/totalconnect/__init__.py +++ b/homeassistant/components/totalconnect/__init__.py @@ -38,7 +38,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: TotalConnectClient, username, password, usercodes ) - if not client.is_valid_credentials(): + if not client.is_logged_in(): raise ConfigEntryAuthFailed("TotalConnect authentication failed") coordinator = TotalConnectDataUpdateCoordinator(hass, client) @@ -88,5 +88,3 @@ class TotalConnectDataUpdateCoordinator(DataUpdateCoordinator): raise UpdateFailed(exception) from exception except ValueError as exception: raise UpdateFailed("Unknown state from TotalConnect") from exception - - return True diff --git a/homeassistant/components/totalconnect/config_flow.py b/homeassistant/components/totalconnect/config_flow.py index 7ba96f11a1e..f3550722de5 100644 --- a/homeassistant/components/totalconnect/config_flow.py +++ b/homeassistant/components/totalconnect/config_flow.py @@ -40,7 +40,7 @@ class TotalConnectConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): TotalConnectClient, username, password, None ) - if client.is_valid_credentials(): + if client.is_logged_in(): # username/password valid so show user locations self.username = username self.password = password @@ -136,7 +136,7 @@ class TotalConnectConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): self.usercodes, ) - if not client.is_valid_credentials(): + if not client.is_logged_in(): errors["base"] = "invalid_auth" return self.async_show_form( step_id="reauth_confirm", diff --git a/homeassistant/components/totalconnect/manifest.json b/homeassistant/components/totalconnect/manifest.json index 25fb2fd2c75..c70eafd9c31 100644 --- a/homeassistant/components/totalconnect/manifest.json +++ b/homeassistant/components/totalconnect/manifest.json @@ -2,7 +2,7 @@ "domain": "totalconnect", "name": "Total Connect", "documentation": "https://www.home-assistant.io/integrations/totalconnect", - "requirements": ["total_connect_client==2021.8.3"], + "requirements": ["total_connect_client==2021.11.2"], "dependencies": [], "codeowners": ["@austinmroczek"], "config_flow": true, diff --git a/requirements_all.txt b/requirements_all.txt index c5f93ad7251..452d5482578 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2314,7 +2314,7 @@ todoist-python==8.0.0 toonapi==0.2.1 # homeassistant.components.totalconnect -total_connect_client==2021.8.3 +total_connect_client==2021.11.2 # homeassistant.components.tplink_lte tp-connected==0.0.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index fdacbc25dd2..6a5231386b8 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1330,7 +1330,7 @@ tesla-powerwall==0.3.12 toonapi==0.2.1 # homeassistant.components.totalconnect -total_connect_client==2021.8.3 +total_connect_client==2021.11.2 # homeassistant.components.transmission transmissionrpc==0.11 diff --git a/tests/components/totalconnect/common.py b/tests/components/totalconnect/common.py index 29278d33273..ec0c182895f 100644 --- a/tests/components/totalconnect/common.py +++ b/tests/components/totalconnect/common.py @@ -1,9 +1,7 @@ """Common methods used across tests for TotalConnect.""" from unittest.mock import patch -from total_connect_client.client import TotalConnectClient -from total_connect_client.const import ArmingState -from total_connect_client.zone import ZoneStatus, ZoneType +from total_connect_client import ArmingState, ResultCode, ZoneStatus, ZoneType from homeassistant.components.totalconnect.const import CONF_USERCODES, DOMAIN from homeassistant.const import CONF_PASSWORD, CONF_USERNAME @@ -44,7 +42,7 @@ USER = { } RESPONSE_AUTHENTICATE = { - "ResultCode": TotalConnectClient.SUCCESS, + "ResultCode": ResultCode.SUCCESS.value, "SessionID": 1, "Locations": LOCATIONS, "ModuleFlags": MODULE_FLAGS, @@ -52,7 +50,7 @@ RESPONSE_AUTHENTICATE = { } RESPONSE_AUTHENTICATE_FAILED = { - "ResultCode": TotalConnectClient.BAD_USER_OR_PASSWORD, + "ResultCode": ResultCode.BAD_USER_OR_PASSWORD.value, "ResultData": "test bad authentication", } @@ -255,18 +253,18 @@ RESPONSE_UNKNOWN = { "ArmingState": ArmingState.DISARMED, } -RESPONSE_ARM_SUCCESS = {"ResultCode": TotalConnectClient.ARM_SUCCESS} -RESPONSE_ARM_FAILURE = {"ResultCode": TotalConnectClient.COMMAND_FAILED} -RESPONSE_DISARM_SUCCESS = {"ResultCode": TotalConnectClient.DISARM_SUCCESS} +RESPONSE_ARM_SUCCESS = {"ResultCode": ResultCode.ARM_SUCCESS.value} +RESPONSE_ARM_FAILURE = {"ResultCode": ResultCode.COMMAND_FAILED.value} +RESPONSE_DISARM_SUCCESS = {"ResultCode": ResultCode.DISARM_SUCCESS.value} RESPONSE_DISARM_FAILURE = { - "ResultCode": TotalConnectClient.COMMAND_FAILED, + "ResultCode": ResultCode.COMMAND_FAILED.value, "ResultData": "Command Failed", } RESPONSE_USER_CODE_INVALID = { - "ResultCode": TotalConnectClient.USER_CODE_INVALID, + "ResultCode": ResultCode.USER_CODE_INVALID.value, "ResultData": "testing user code invalid", } -RESPONSE_SUCCESS = {"ResultCode": TotalConnectClient.SUCCESS} +RESPONSE_SUCCESS = {"ResultCode": ResultCode.SUCCESS.value} USERNAME = "username@me.com" PASSWORD = "password" @@ -292,7 +290,7 @@ PARTITION_DETAILS_2 = { PARTITION_DETAILS = {"PartitionDetails": [PARTITION_DETAILS_1, PARTITION_DETAILS_2]} RESPONSE_PARTITION_DETAILS = { - "ResultCode": TotalConnectClient.SUCCESS, + "ResultCode": ResultCode.SUCCESS.value, "ResultData": "testing partition details", "PartitionsInfoList": PARTITION_DETAILS, } diff --git a/tests/components/totalconnect/test_config_flow.py b/tests/components/totalconnect/test_config_flow.py index 20497102c6d..a9debb26dd4 100644 --- a/tests/components/totalconnect/test_config_flow.py +++ b/tests/components/totalconnect/test_config_flow.py @@ -95,7 +95,7 @@ async def test_abort_if_already_setup(hass): with patch( "homeassistant.components.totalconnect.config_flow.TotalConnectClient" ) as client_mock: - client_mock.return_value.is_valid_credentials.return_value = True + client_mock.return_value.is_logged_in.return_value = True result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_USER}, @@ -111,7 +111,7 @@ async def test_login_failed(hass): with patch( "homeassistant.components.totalconnect.config_flow.TotalConnectClient" ) as client_mock: - client_mock.return_value.is_valid_credentials.return_value = False + client_mock.return_value.is_logged_in.return_value = False result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": SOURCE_USER}, @@ -143,7 +143,7 @@ async def test_reauth(hass): "homeassistant.components.totalconnect.async_setup_entry", return_value=True ): # first test with an invalid password - client_mock.return_value.is_valid_credentials.return_value = False + client_mock.return_value.is_logged_in.return_value = False result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input={CONF_PASSWORD: "password"} @@ -153,7 +153,7 @@ async def test_reauth(hass): assert result["errors"] == {"base": "invalid_auth"} # now test with the password valid - client_mock.return_value.is_valid_credentials.return_value = True + client_mock.return_value.is_logged_in.return_value = True result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input={CONF_PASSWORD: "password"} diff --git a/tests/components/totalconnect/test_init.py b/tests/components/totalconnect/test_init.py index 41cd8bbae90..f1797f840ab 100644 --- a/tests/components/totalconnect/test_init.py +++ b/tests/components/totalconnect/test_init.py @@ -22,7 +22,7 @@ async def test_reauth_started(hass): "homeassistant.components.totalconnect.TotalConnectClient", autospec=True, ) as mock_client: - mock_client.return_value.is_valid_credentials.return_value = False + mock_client.return_value.is_logged_in.return_value = False assert await async_setup_component(hass, DOMAIN, {}) await hass.async_block_till_done() From 96c08df88371b24eb05e57b492ffb18091408dbb Mon Sep 17 00:00:00 2001 From: uvjustin <46082645+uvjustin@users.noreply.github.com> Date: Sat, 6 Nov 2021 09:54:51 +0800 Subject: [PATCH 02/20] Adjust frag_duration setting in stream (#59135) --- homeassistant/components/stream/worker.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/stream/worker.py b/homeassistant/components/stream/worker.py index 881614b04a3..e4be3168393 100644 --- a/homeassistant/components/stream/worker.py +++ b/homeassistant/components/stream/worker.py @@ -102,18 +102,18 @@ class SegmentBuffer: # The LL-HLS spec allows for a fragment's duration to be within the range [0.85x,1.0x] # of the part target duration. We use the frag_duration option to tell ffmpeg to try to # cut the fragments when they reach frag_duration. However, the resulting fragments can - # have variability in their durations and can end up being too short or too long. If - # there are two tracks, as in the case of a video feed with audio, the fragment cut seems - # to be done on the first track that crosses the desired threshold, and cutting on the - # audio track may result in a shorter video fragment than desired. Conversely, with a + # have variability in their durations and can end up being too short or too long. With a # video track with no audio, the discrete nature of frames means that the frame at the # end of a fragment will sometimes extend slightly beyond the desired frag_duration. - # Given this, our approach is to use a frag_duration near the upper end of the range for - # outputs with audio using a frag_duration at the lower end of the range for outputs with - # only video. + # If there are two tracks, as in the case of a video feed with audio, there is an added + # wrinkle as the fragment cut seems to be done on the first track that crosses the desired + # threshold, and cutting on the audio track may also result in a shorter video fragment + # than desired. + # Given this, our approach is to give ffmpeg a frag_duration somewhere in the middle + # of the range, hoping that the parts stay pretty well bounded, and we adjust the part + # durations a bit in the hls metadata so that everything "looks" ok. "frag_duration": str( - self._stream_settings.part_target_duration - * (98e4 if add_audio else 9e5) + self._stream_settings.part_target_duration * 9e5 ), } if self._stream_settings.ll_hls From 2309dd48c9a8951b2bcd4f6b5744361badd87a47 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 5 Nov 2021 10:27:52 -0500 Subject: [PATCH 03/20] Bump flux_led to 0.24.15 (#59159) - Changes: https://github.com/Danielhiversen/flux_led/compare/0.24.14...0.24.15 - Fixes color reporting for addressable devices --- homeassistant/components/flux_led/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/flux_led/manifest.json b/homeassistant/components/flux_led/manifest.json index d0134d07f79..3a3b7b7b572 100644 --- a/homeassistant/components/flux_led/manifest.json +++ b/homeassistant/components/flux_led/manifest.json @@ -3,7 +3,7 @@ "name": "Flux LED/MagicHome", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/flux_led", - "requirements": ["flux_led==0.24.14"], + "requirements": ["flux_led==0.24.15"], "quality_scale": "platinum", "codeowners": ["@icemanch"], "iot_class": "local_push", diff --git a/requirements_all.txt b/requirements_all.txt index 452d5482578..b25b8ccd0e7 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -652,7 +652,7 @@ fjaraskupan==1.0.2 flipr-api==1.4.1 # homeassistant.components.flux_led -flux_led==0.24.14 +flux_led==0.24.15 # homeassistant.components.homekit fnvhash==0.1.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 6a5231386b8..019e3191cf7 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -387,7 +387,7 @@ fjaraskupan==1.0.2 flipr-api==1.4.1 # homeassistant.components.flux_led -flux_led==0.24.14 +flux_led==0.24.15 # homeassistant.components.homekit fnvhash==0.1.0 From e2337304942576487b6862decf4c80ed7d64d04f Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Fri, 5 Nov 2021 09:27:35 -0600 Subject: [PATCH 04/20] Bump aioguardian to 2021.11.0 (#59161) --- homeassistant/components/guardian/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/guardian/manifest.json b/homeassistant/components/guardian/manifest.json index baa7eb50e7a..44da7d01cc9 100644 --- a/homeassistant/components/guardian/manifest.json +++ b/homeassistant/components/guardian/manifest.json @@ -3,7 +3,7 @@ "name": "Elexa Guardian", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/guardian", - "requirements": ["aioguardian==1.0.8"], + "requirements": ["aioguardian==2021.11.0"], "zeroconf": ["_api._udp.local."], "codeowners": ["@bachya"], "iot_class": "local_polling", diff --git a/requirements_all.txt b/requirements_all.txt index b25b8ccd0e7..4d7ee13c7cd 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -173,7 +173,7 @@ aioftp==0.12.0 aiogithubapi==21.8.0 # homeassistant.components.guardian -aioguardian==1.0.8 +aioguardian==2021.11.0 # homeassistant.components.harmony aioharmony==0.2.8 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 019e3191cf7..73f038ab11d 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -115,7 +115,7 @@ aioesphomeapi==10.2.0 aioflo==0.4.1 # homeassistant.components.guardian -aioguardian==1.0.8 +aioguardian==2021.11.0 # homeassistant.components.harmony aioharmony==0.2.8 From 3d8ca26c006b9bb0a564d317c0f2d23820a255f0 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Sun, 7 Nov 2021 16:34:25 -0700 Subject: [PATCH 05/20] Guard against flaky SimpliSafe API calls (#59175) --- .../components/simplisafe/__init__.py | 19 ++++++++++++++++++- .../simplisafe/alarm_control_panel.py | 17 ----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/homeassistant/components/simplisafe/__init__.py b/homeassistant/components/simplisafe/__init__.py index b3bb850244e..7db92252780 100644 --- a/homeassistant/components/simplisafe/__init__.py +++ b/homeassistant/components/simplisafe/__init__.py @@ -103,9 +103,11 @@ ATTR_TIMESTAMP = "timestamp" DEFAULT_ENTITY_MODEL = "alarm_control_panel" DEFAULT_ENTITY_NAME = "Alarm Control Panel" +DEFAULT_REST_API_ERROR_COUNT = 2 DEFAULT_SCAN_INTERVAL = timedelta(seconds=30) DEFAULT_SOCKET_MIN_RETRY = 15 + DISPATCHER_TOPIC_WEBSOCKET_EVENT = "simplisafe_websocket_event_{0}" EVENT_SIMPLISAFE_EVENT = "SIMPLISAFE_EVENT" @@ -556,6 +558,8 @@ class SimpliSafeEntity(CoordinatorEntity): assert simplisafe.coordinator super().__init__(simplisafe.coordinator) + self._rest_api_errors = 0 + if device: model = device.type.name device_name = device.name @@ -618,11 +622,24 @@ class SimpliSafeEntity(CoordinatorEntity): else: system_offline = False - return super().available and self._online and not system_offline + return ( + self._rest_api_errors < DEFAULT_REST_API_ERROR_COUNT + and self._online + and not system_offline + ) @callback def _handle_coordinator_update(self) -> None: """Update the entity with new REST API data.""" + # SimpliSafe can incorrectly return an error state when there isn't any + # error. This can lead to the system having an unknown state frequently. + # To protect against that, we measure how many "error states" we receive + # and only alter the state if we detect a few in a row: + if self.coordinator.last_update_success: + self._rest_api_errors = 0 + else: + self._rest_api_errors += 1 + self.async_update_from_rest_api() self.async_write_ha_state() diff --git a/homeassistant/components/simplisafe/alarm_control_panel.py b/homeassistant/components/simplisafe/alarm_control_panel.py index bc2e2a8ac74..5d2ffdcbd98 100644 --- a/homeassistant/components/simplisafe/alarm_control_panel.py +++ b/homeassistant/components/simplisafe/alarm_control_panel.py @@ -72,8 +72,6 @@ ATTR_RF_JAMMING = "rf_jamming" ATTR_WALL_POWER_LEVEL = "wall_power_level" ATTR_WIFI_STRENGTH = "wifi_strength" -DEFAULT_ERRORS_TO_ACCOMMODATE = 2 - VOLUME_STRING_MAP = { VOLUME_HIGH: "high", VOLUME_LOW: "low", @@ -141,8 +139,6 @@ class SimpliSafeAlarm(SimpliSafeEntity, AlarmControlPanelEntity): additional_websocket_events=WEBSOCKET_EVENTS_TO_LISTEN_FOR, ) - self._errors = 0 - if code := self._simplisafe.entry.options.get(CONF_CODE): if code.isdigit(): self._attr_code_format = FORMAT_NUMBER @@ -249,19 +245,6 @@ class SimpliSafeAlarm(SimpliSafeEntity, AlarmControlPanelEntity): } ) - # SimpliSafe can incorrectly return an error state when there isn't any - # error. This can lead to the system having an unknown state frequently. - # To protect against that, we measure how many "error states" we receive - # and only alter the state if we detect a few in a row: - if self._system.state == SystemStates.error: - if self._errors > DEFAULT_ERRORS_TO_ACCOMMODATE: - self._attr_state = None - else: - self._errors += 1 - return - - self._errors = 0 - self._set_state_from_system_data() @callback From f47e64e218566b0941d1b131d56d87944c8c55b2 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Sat, 6 Nov 2021 14:10:58 -0600 Subject: [PATCH 06/20] Guard against missing data in ReCollect Waste (#59177) --- homeassistant/components/recollect_waste/sensor.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/recollect_waste/sensor.py b/homeassistant/components/recollect_waste/sensor.py index 06a96a3bb74..9b509061957 100644 --- a/homeassistant/components/recollect_waste/sensor.py +++ b/homeassistant/components/recollect_waste/sensor.py @@ -91,8 +91,13 @@ class ReCollectWasteSensor(CoordinatorEntity, SensorEntity): @callback def update_from_latest_data(self) -> None: """Update the state.""" - pickup_event = self.coordinator.data[0] - next_pickup_event = self.coordinator.data[1] + try: + pickup_event = self.coordinator.data[0] + next_pickup_event = self.coordinator.data[1] + except IndexError: + self._attr_native_value = None + self._attr_extra_state_attributes = {} + return self._attr_extra_state_attributes.update( { From 1cc8e688c352ec8a6eceade768059d8d43a189b3 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Fri, 5 Nov 2021 13:29:12 -0600 Subject: [PATCH 07/20] Change ReCollect Waste device class to date (#59180) --- .../components/recollect_waste/sensor.py | 23 ++++--------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/homeassistant/components/recollect_waste/sensor.py b/homeassistant/components/recollect_waste/sensor.py index 9b509061957..619a12a42f7 100644 --- a/homeassistant/components/recollect_waste/sensor.py +++ b/homeassistant/components/recollect_waste/sensor.py @@ -1,17 +1,11 @@ """Support for ReCollect Waste sensors.""" from __future__ import annotations -from datetime import date, datetime, time - from aiorecollect.client import PickupType from homeassistant.components.sensor import SensorEntity from homeassistant.config_entries import ConfigEntry -from homeassistant.const import ( - ATTR_ATTRIBUTION, - CONF_FRIENDLY_NAME, - DEVICE_CLASS_TIMESTAMP, -) +from homeassistant.const import ATTR_ATTRIBUTION, CONF_FRIENDLY_NAME, DEVICE_CLASS_DATE from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -19,7 +13,6 @@ from homeassistant.helpers.update_coordinator import ( CoordinatorEntity, DataUpdateCoordinator, ) -from homeassistant.util.dt import as_utc from .const import CONF_PLACE_ID, CONF_SERVICE_ID, DATA_COORDINATOR, DOMAIN @@ -47,12 +40,6 @@ def async_get_pickup_type_names( ] -@callback -def async_get_utc_midnight(target_date: date) -> datetime: - """Get UTC midnight for a given date.""" - return as_utc(datetime.combine(target_date, time(0))) - - async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: @@ -64,7 +51,7 @@ async def async_setup_entry( class ReCollectWasteSensor(CoordinatorEntity, SensorEntity): """ReCollect Waste Sensor.""" - _attr_device_class = DEVICE_CLASS_TIMESTAMP + _attr_device_class = DEVICE_CLASS_DATE def __init__(self, coordinator: DataUpdateCoordinator, entry: ConfigEntry) -> None: """Initialize the sensor.""" @@ -108,9 +95,7 @@ class ReCollectWasteSensor(CoordinatorEntity, SensorEntity): ATTR_NEXT_PICKUP_TYPES: async_get_pickup_type_names( self._entry, next_pickup_event.pickup_types ), - ATTR_NEXT_PICKUP_DATE: async_get_utc_midnight( - next_pickup_event.date - ).isoformat(), + ATTR_NEXT_PICKUP_DATE: next_pickup_event.date.isoformat(), } ) - self._attr_native_value = async_get_utc_midnight(pickup_event.date).isoformat() + self._attr_native_value = pickup_event.date.isoformat() From f5d04de523e87efd8bd130a8265fda1e628e92f2 Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Sat, 6 Nov 2021 12:50:53 +0100 Subject: [PATCH 08/20] bump aioshelly to 1.0.4 (#59209) --- homeassistant/components/shelly/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/shelly/manifest.json b/homeassistant/components/shelly/manifest.json index 09a046ee78d..389d31ac195 100644 --- a/homeassistant/components/shelly/manifest.json +++ b/homeassistant/components/shelly/manifest.json @@ -3,7 +3,7 @@ "name": "Shelly", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/shelly", - "requirements": ["aioshelly==1.0.2"], + "requirements": ["aioshelly==1.0.4"], "zeroconf": [ { "type": "_http._tcp.local.", diff --git a/requirements_all.txt b/requirements_all.txt index 4d7ee13c7cd..040cf629c96 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -243,7 +243,7 @@ aiopylgtv==0.4.0 aiorecollect==1.0.8 # homeassistant.components.shelly -aioshelly==1.0.2 +aioshelly==1.0.4 # homeassistant.components.switcher_kis aioswitcher==2.0.6 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 73f038ab11d..0cb7f85628a 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -170,7 +170,7 @@ aiopylgtv==0.4.0 aiorecollect==1.0.8 # homeassistant.components.shelly -aioshelly==1.0.2 +aioshelly==1.0.4 # homeassistant.components.switcher_kis aioswitcher==2.0.6 From a6ff89c3e6ab1663d761474da75f5bf5b4353dec Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 6 Nov 2021 07:34:10 -0500 Subject: [PATCH 09/20] Bump flux_led to 0.24.17 (#59211) * Bump flux_led to 0.24.16 - Changes: https://github.com/Danielhiversen/flux_led/compare/0.24.15...0.24.16 - Fixes turning on/off when device is out of sync internally (seen on 0x33 firmware 8) - Fixes #59190 * Bump to .17 to fix typing --- homeassistant/components/flux_led/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/flux_led/manifest.json b/homeassistant/components/flux_led/manifest.json index 3a3b7b7b572..429465a0f3c 100644 --- a/homeassistant/components/flux_led/manifest.json +++ b/homeassistant/components/flux_led/manifest.json @@ -3,7 +3,7 @@ "name": "Flux LED/MagicHome", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/flux_led", - "requirements": ["flux_led==0.24.15"], + "requirements": ["flux_led==0.24.17"], "quality_scale": "platinum", "codeowners": ["@icemanch"], "iot_class": "local_push", diff --git a/requirements_all.txt b/requirements_all.txt index 040cf629c96..225bcd04786 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -652,7 +652,7 @@ fjaraskupan==1.0.2 flipr-api==1.4.1 # homeassistant.components.flux_led -flux_led==0.24.15 +flux_led==0.24.17 # homeassistant.components.homekit fnvhash==0.1.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 0cb7f85628a..24741cf2a44 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -387,7 +387,7 @@ fjaraskupan==1.0.2 flipr-api==1.4.1 # homeassistant.components.flux_led -flux_led==0.24.15 +flux_led==0.24.17 # homeassistant.components.homekit fnvhash==0.1.0 From dcada92cef9c26d74ad1ae7f6072633e9266a510 Mon Sep 17 00:00:00 2001 From: jan iversen Date: Sat, 6 Nov 2021 16:46:51 +0100 Subject: [PATCH 10/20] Fix tradfri group reachable access (#59217) --- .../components/tradfri/base_class.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/tradfri/base_class.py b/homeassistant/components/tradfri/base_class.py index a54c9f7d500..8a7cc6a2f4a 100644 --- a/homeassistant/components/tradfri/base_class.py +++ b/homeassistant/components/tradfri/base_class.py @@ -60,7 +60,6 @@ class TradfriBaseClass(Entity): """Initialize a device.""" self._api = handle_error(api) self._attr_name = device.name - self._attr_available = device.reachable self._device: Device = device self._device_control: BlindControl | LightControl | SocketControl | SignalRepeaterControl | AirPurifierControl | None = ( None @@ -105,7 +104,6 @@ class TradfriBaseClass(Entity): """Refresh the device data.""" self._device = device self._attr_name = device.name - self._attr_available = device.reachable if write_ha: self.async_write_ha_state() @@ -116,6 +114,16 @@ class TradfriBaseDevice(TradfriBaseClass): All devices should inherit from this class. """ + def __init__( + self, + device: Device, + api: Callable[[Command | list[Command]], Any], + gateway_id: str, + ) -> None: + """Initialize a device.""" + self._attr_available = device.reachable + super().__init__(device, api, gateway_id) + @property def device_info(self) -> DeviceInfo: """Return the device info.""" @@ -128,3 +136,11 @@ class TradfriBaseDevice(TradfriBaseClass): sw_version=info.firmware_version, via_device=(DOMAIN, self._gateway_id), ) + + def _refresh(self, device: Device, write_ha: bool = True) -> None: + """Refresh the device data.""" + # The base class _refresh cannot be used, because + # there are devices (group) that do not have .reachable + # so set _attr_available here and let the base class do the rest. + self._attr_available = device.reachable + super()._refresh(device, write_ha) From a4253ff54ebff24b71f971319947146da3c20ecc Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Tue, 9 Nov 2021 05:42:20 +0100 Subject: [PATCH 11/20] Increase timeout for fetching camera data on Synology DSM (#59237) --- homeassistant/components/synology_dsm/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/synology_dsm/__init__.py b/homeassistant/components/synology_dsm/__init__.py index a8e35178be4..1801e96d2bd 100644 --- a/homeassistant/components/synology_dsm/__init__.py +++ b/homeassistant/components/synology_dsm/__init__.py @@ -233,7 +233,7 @@ async def async_setup_entry( # noqa: C901 surveillance_station = api.surveillance_station try: - async with async_timeout.timeout(10): + async with async_timeout.timeout(30): await hass.async_add_executor_job(surveillance_station.update) except SynologyDSMAPIErrorException as err: raise UpdateFailed(f"Error communicating with API: {err}") from err From f9fc92c36bdbbe43d24455785caac2bb6d558d1c Mon Sep 17 00:00:00 2001 From: Alexei Chetroi Date: Sun, 7 Nov 2021 12:53:28 -0500 Subject: [PATCH 12/20] Add Battery sensor regardless if the battery_percent_remaining attribute is supported or not (#59264) --- homeassistant/components/zha/sensor.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/homeassistant/components/zha/sensor.py b/homeassistant/components/zha/sensor.py index d7c3e0797b8..2281d5295bc 100644 --- a/homeassistant/components/zha/sensor.py +++ b/homeassistant/components/zha/sensor.py @@ -226,6 +226,22 @@ class Battery(Sensor): _unit = PERCENTAGE _attr_entity_category = ENTITY_CATEGORY_DIAGNOSTIC + @classmethod + def create_entity( + cls, + unique_id: str, + zha_device: ZhaDeviceType, + channels: list[ChannelType], + **kwargs, + ) -> ZhaEntity | None: + """Entity Factory. + + Unlike any other entity, PowerConfiguration cluster may not support + battery_percent_remaining attribute, but zha-device-handlers takes care of it + so create the entity regardless + """ + return cls(unique_id, zha_device, channels, **kwargs) + @staticmethod def formatter(value: int) -> int: """Return the state of the entity.""" From 8b7686f4f255244ba4b6a43ee98b2c3d79e33340 Mon Sep 17 00:00:00 2001 From: Simone Chemelli Date: Sun, 7 Nov 2021 15:17:50 +0100 Subject: [PATCH 13/20] Fix condition for fritz integration (#59281) --- homeassistant/components/fritz/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/fritz/common.py b/homeassistant/components/fritz/common.py index 78b3f2073a7..d6df32fa931 100644 --- a/homeassistant/components/fritz/common.py +++ b/homeassistant/components/fritz/common.py @@ -370,7 +370,7 @@ class FritzBoxTools: device_reg = async_get(self.hass) device_list = async_entries_for_config_entry(device_reg, config_entry.entry_id) for device_entry in device_list: - if async_entries_for_device( + if not async_entries_for_device( entity_reg, device_entry.id, include_disabled_entities=True, From e1b8e2ded3b3d599094e5ef51caa6409aea9bdee Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Sun, 7 Nov 2021 23:17:15 +0100 Subject: [PATCH 14/20] Remove illuminance sensor (#59305) --- homeassistant/components/xiaomi_miio/sensor.py | 1 - 1 file changed, 1 deletion(-) diff --git a/homeassistant/components/xiaomi_miio/sensor.py b/homeassistant/components/xiaomi_miio/sensor.py index aefeea7c20a..ac26bc97fce 100644 --- a/homeassistant/components/xiaomi_miio/sensor.py +++ b/homeassistant/components/xiaomi_miio/sensor.py @@ -374,7 +374,6 @@ AIRFRESH_SENSORS = ( ATTR_FILTER_LIFE_REMAINING, ATTR_FILTER_USE, ATTR_HUMIDITY, - ATTR_ILLUMINANCE_LUX, ATTR_PM25, ATTR_TEMPERATURE, ATTR_USE_TIME, From 250160f0076e45e8fd2abc242eb760e3a47964cc Mon Sep 17 00:00:00 2001 From: Shay Levy Date: Mon, 8 Nov 2021 01:29:29 +0200 Subject: [PATCH 15/20] Revert "Use DeviceInfo in shelly (#58520)" (#59315) This reverts commit df6351f86b50451c7ecd8e70cfb5bbc97829cc73. --- homeassistant/components/shelly/entity.py | 26 +++++++++++++++-------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/shelly/entity.py b/homeassistant/components/shelly/entity.py index e33a2d87317..0a610545180 100644 --- a/homeassistant/components/shelly/entity.py +++ b/homeassistant/components/shelly/entity.py @@ -282,9 +282,6 @@ class ShellyBlockEntity(entity.Entity): self.wrapper = wrapper self.block = block self._name = get_block_entity_name(wrapper.device, block) - self._attr_device_info = DeviceInfo( - connections={(device_registry.CONNECTION_NETWORK_MAC, wrapper.mac)} - ) @property def name(self) -> str: @@ -296,6 +293,13 @@ class ShellyBlockEntity(entity.Entity): """If device should be polled.""" return False + @property + def device_info(self) -> DeviceInfo: + """Device info.""" + return { + "connections": {(device_registry.CONNECTION_NETWORK_MAC, self.wrapper.mac)} + } + @property def available(self) -> bool: """Available.""" @@ -344,9 +348,9 @@ class ShellyRpcEntity(entity.Entity): self.wrapper = wrapper self.key = key self._attr_should_poll = False - self._attr_device_info = DeviceInfo( - connections={(device_registry.CONNECTION_NETWORK_MAC, wrapper.mac)} - ) + self._attr_device_info = { + "connections": {(device_registry.CONNECTION_NETWORK_MAC, wrapper.mac)} + } self._attr_unique_id = f"{wrapper.mac}-{key}" self._attr_name = get_rpc_entity_name(wrapper.device, key) @@ -490,15 +494,19 @@ class ShellyRestAttributeEntity(update_coordinator.CoordinatorEntity): self.description = description self._name = get_block_entity_name(wrapper.device, None, self.description.name) self._last_value = None - self._attr_device_info = DeviceInfo( - connections={(device_registry.CONNECTION_NETWORK_MAC, wrapper.mac)} - ) @property def name(self) -> str: """Name of sensor.""" return self._name + @property + def device_info(self) -> DeviceInfo: + """Device info.""" + return { + "connections": {(device_registry.CONNECTION_NETWORK_MAC, self.wrapper.mac)} + } + @property def entity_registry_enabled_default(self) -> bool: """Return if it should be enabled by default.""" From 0873c3e92b42d133b7b29d5fe824e27567078174 Mon Sep 17 00:00:00 2001 From: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com> Date: Mon, 8 Nov 2021 23:13:00 +0100 Subject: [PATCH 16/20] Support generic xiaomi_miio vacuums (#59317) * Support generic xiaomi_miio vacuums Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com> * Fix lint Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com> * Remove warning log Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com> --- homeassistant/components/xiaomi_miio/__init__.py | 12 ++++++++++-- homeassistant/components/xiaomi_miio/const.py | 4 +++- homeassistant/components/xiaomi_miio/sensor.py | 10 ++++++++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/xiaomi_miio/__init__.py b/homeassistant/components/xiaomi_miio/__init__.py index de5baf69683..0f36d884207 100644 --- a/homeassistant/components/xiaomi_miio/__init__.py +++ b/homeassistant/components/xiaomi_miio/__init__.py @@ -66,6 +66,8 @@ from .const import ( MODELS_PURIFIER_MIOT, MODELS_SWITCH, MODELS_VACUUM, + ROBOROCK_GENERIC, + ROCKROBO_GENERIC, AuthException, SetupException, ) @@ -267,7 +269,7 @@ async def async_create_miio_device_and_coordinator( hass: core.HomeAssistant, entry: config_entries.ConfigEntry ): """Set up a data coordinator and one miio device to service multiple entities.""" - model = entry.data[CONF_MODEL] + model: str = entry.data[CONF_MODEL] host = entry.data[CONF_HOST] token = entry.data[CONF_TOKEN] name = entry.title @@ -280,6 +282,8 @@ async def async_create_miio_device_and_coordinator( model not in MODELS_HUMIDIFIER and model not in MODELS_FAN and model not in MODELS_VACUUM + and not model.startswith(ROBOROCK_GENERIC) + and not model.startswith(ROCKROBO_GENERIC) ): return @@ -304,7 +308,11 @@ async def async_create_miio_device_and_coordinator( device = AirPurifier(host, token) elif model.startswith("zhimi.airfresh."): device = AirFresh(host, token) - elif model in MODELS_VACUUM: + elif ( + model in MODELS_VACUUM + or model.startswith(ROBOROCK_GENERIC) + or model.startswith(ROCKROBO_GENERIC) + ): device = Vacuum(host, token) update_method = _async_update_data_vacuum coordinator_class = DataUpdateCoordinator[VacuumCoordinatorData] diff --git a/homeassistant/components/xiaomi_miio/const.py b/homeassistant/components/xiaomi_miio/const.py index 60c16a0717a..8c83c8015b2 100644 --- a/homeassistant/components/xiaomi_miio/const.py +++ b/homeassistant/components/xiaomi_miio/const.py @@ -202,7 +202,8 @@ ROCKROBO_S4_MAX = "roborock.vacuum.a19" ROCKROBO_S5_MAX = "roborock.vacuum.s5e" ROCKROBO_S6_PURE = "roborock.vacuum.a08" ROCKROBO_E2 = "roborock.vacuum.e2" -ROCKROBO_GENERIC = "roborock.vacuum" +ROBOROCK_GENERIC = "roborock.vacuum" +ROCKROBO_GENERIC = "rockrobo.vacuum" MODELS_VACUUM = [ ROCKROBO_V1, ROCKROBO_E2, @@ -214,6 +215,7 @@ MODELS_VACUUM = [ ROCKROBO_S6_MAXV, ROCKROBO_S6_PURE, ROCKROBO_S7, + ROBOROCK_GENERIC, ROCKROBO_GENERIC, ] MODELS_VACUUM_WITH_MOP = [ diff --git a/homeassistant/components/xiaomi_miio/sensor.py b/homeassistant/components/xiaomi_miio/sensor.py index ac26bc97fce..0d67014ced9 100644 --- a/homeassistant/components/xiaomi_miio/sensor.py +++ b/homeassistant/components/xiaomi_miio/sensor.py @@ -81,6 +81,8 @@ from .const import ( MODELS_PURIFIER_MIIO, MODELS_PURIFIER_MIOT, MODELS_VACUUM, + ROBOROCK_GENERIC, + ROCKROBO_GENERIC, ) from .device import XiaomiCoordinatedMiioEntity, XiaomiMiioEntity from .gateway import XiaomiGatewayDevice @@ -592,7 +594,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities): elif config_entry.data[CONF_FLOW_TYPE] == CONF_DEVICE: host = config_entry.data[CONF_HOST] token = config_entry.data[CONF_TOKEN] - model = config_entry.data[CONF_MODEL] + model: str = config_entry.data[CONF_MODEL] if model in (MODEL_FAN_ZA1, MODEL_FAN_ZA3, MODEL_FAN_ZA4, MODEL_FAN_P5): return @@ -624,7 +626,11 @@ async def async_setup_entry(hass, config_entry, async_add_entities): sensors = PURIFIER_MIIO_SENSORS elif model in MODELS_PURIFIER_MIOT: sensors = PURIFIER_MIOT_SENSORS - elif model in MODELS_VACUUM: + elif ( + model in MODELS_VACUUM + or model.startswith(ROBOROCK_GENERIC) + or model.startswith(ROCKROBO_GENERIC) + ): return _setup_vacuum_sensors(hass, config_entry, async_add_entities) for sensor, description in SENSOR_TYPES.items(): From 6d3e380f642a2a2990e67a96e0363aa18905d948 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Mon, 8 Nov 2021 18:16:44 +0100 Subject: [PATCH 17/20] Bump paho-mqtt to 1.6.1 (#59339) --- homeassistant/components/mqtt/manifest.json | 2 +- homeassistant/components/shiftr/manifest.json | 2 +- homeassistant/package_constraints.txt | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/mqtt/manifest.json b/homeassistant/components/mqtt/manifest.json index c5d9ad21ed6..6fb81deeb4d 100644 --- a/homeassistant/components/mqtt/manifest.json +++ b/homeassistant/components/mqtt/manifest.json @@ -3,7 +3,7 @@ "name": "MQTT", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/mqtt", - "requirements": ["paho-mqtt==1.5.1"], + "requirements": ["paho-mqtt==1.6.1"], "dependencies": ["http"], "codeowners": ["@emontnemery"], "iot_class": "local_push" diff --git a/homeassistant/components/shiftr/manifest.json b/homeassistant/components/shiftr/manifest.json index f7f04eb5a86..fc475c2f48e 100644 --- a/homeassistant/components/shiftr/manifest.json +++ b/homeassistant/components/shiftr/manifest.json @@ -2,7 +2,7 @@ "domain": "shiftr", "name": "shiftr.io", "documentation": "https://www.home-assistant.io/integrations/shiftr", - "requirements": ["paho-mqtt==1.5.1"], + "requirements": ["paho-mqtt==1.6.1"], "codeowners": ["@fabaff"], "iot_class": "cloud_push" } diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 2dd084fc5fc..10bb0ffbd3d 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -19,7 +19,7 @@ home-assistant-frontend==20211103.0 httpx==0.19.0 ifaddr==0.1.7 jinja2==3.0.2 -paho-mqtt==1.5.1 +paho-mqtt==1.6.1 pillow==8.2.0 pip>=8.0.3,<20.3 pyserial==3.5 diff --git a/requirements_all.txt b/requirements_all.txt index 225bcd04786..c1176f5a1c2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1163,7 +1163,7 @@ p1monitor==1.0.0 # homeassistant.components.mqtt # homeassistant.components.shiftr -paho-mqtt==1.5.1 +paho-mqtt==1.6.1 # homeassistant.components.panasonic_bluray panacotta==0.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 24741cf2a44..0b264c7446e 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -689,7 +689,7 @@ p1monitor==1.0.0 # homeassistant.components.mqtt # homeassistant.components.shiftr -paho-mqtt==1.5.1 +paho-mqtt==1.6.1 # homeassistant.components.panasonic_viera panasonic_viera==0.3.6 From 0f4a35dd28f35975fcf21636776177423ebc9417 Mon Sep 17 00:00:00 2001 From: Maikel Punie Date: Mon, 8 Nov 2021 21:56:17 +0100 Subject: [PATCH 18/20] Bump velbusaio to 2021.11.6 (#59353) --- homeassistant/components/velbus/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/velbus/manifest.json b/homeassistant/components/velbus/manifest.json index 454b9d24d07..5fb3c58c3c7 100644 --- a/homeassistant/components/velbus/manifest.json +++ b/homeassistant/components/velbus/manifest.json @@ -2,7 +2,7 @@ "domain": "velbus", "name": "Velbus", "documentation": "https://www.home-assistant.io/integrations/velbus", - "requirements": ["velbus-aio==2021.11.0"], + "requirements": ["velbus-aio==2021.11.6"], "config_flow": true, "codeowners": ["@Cereal2nd", "@brefra"], "iot_class": "local_push" diff --git a/requirements_all.txt b/requirements_all.txt index c1176f5a1c2..7aa98ebcee3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2360,7 +2360,7 @@ uvcclient==0.11.0 vallox-websocket-api==2.8.1 # homeassistant.components.velbus -velbus-aio==2021.11.0 +velbus-aio==2021.11.6 # homeassistant.components.venstar venstarcolortouch==0.14 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 0b264c7446e..ceb27439fd3 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1364,7 +1364,7 @@ url-normalize==1.4.1 uvcclient==0.11.0 # homeassistant.components.velbus -velbus-aio==2021.11.0 +velbus-aio==2021.11.6 # homeassistant.components.venstar venstarcolortouch==0.14 From a6d795fce1a0c16087073e56a6893c2cfe39a07e Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 8 Nov 2021 21:45:40 +0100 Subject: [PATCH 19/20] Update frontend to 20211108.0 (#59364) --- homeassistant/components/frontend/manifest.json | 2 +- homeassistant/package_constraints.txt | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/manifest.json b/homeassistant/components/frontend/manifest.json index c913de3367f..43e0e7e86bc 100644 --- a/homeassistant/components/frontend/manifest.json +++ b/homeassistant/components/frontend/manifest.json @@ -3,7 +3,7 @@ "name": "Home Assistant Frontend", "documentation": "https://www.home-assistant.io/integrations/frontend", "requirements": [ - "home-assistant-frontend==20211103.0" + "home-assistant-frontend==20211108.0" ], "dependencies": [ "api", diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 10bb0ffbd3d..a290aaadd39 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -15,7 +15,7 @@ ciso8601==2.2.0 cryptography==3.4.8 emoji==1.5.0 hass-nabucasa==0.50.0 -home-assistant-frontend==20211103.0 +home-assistant-frontend==20211108.0 httpx==0.19.0 ifaddr==0.1.7 jinja2==3.0.2 diff --git a/requirements_all.txt b/requirements_all.txt index 7aa98ebcee3..3cb1b05e7e2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -813,7 +813,7 @@ hole==0.5.1 holidays==0.11.3.1 # homeassistant.components.frontend -home-assistant-frontend==20211103.0 +home-assistant-frontend==20211108.0 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ceb27439fd3..401e872c6d3 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -500,7 +500,7 @@ hole==0.5.1 holidays==0.11.3.1 # homeassistant.components.frontend -home-assistant-frontend==20211103.0 +home-assistant-frontend==20211108.0 # homeassistant.components.zwave homeassistant-pyozw==0.1.10 From 4d62d41cc13179a7b17268784f9222de15bdec7c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 8 Nov 2021 20:48:00 -0800 Subject: [PATCH 20/20] Bumped version to 2021.11.2 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 36b43ee25f1..dcd68543068 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -5,7 +5,7 @@ from typing import Final MAJOR_VERSION: Final = 2021 MINOR_VERSION: Final = 11 -PATCH_VERSION: Final = "1" +PATCH_VERSION: Final = "2" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 8, 0)