diff --git a/.coveragerc b/.coveragerc index 94e1667bad8..85e08d51f71 100644 --- a/.coveragerc +++ b/.coveragerc @@ -471,7 +471,9 @@ omit = homeassistant/components/greenwave/light.py homeassistant/components/group/notify.py homeassistant/components/growatt_server/__init__.py + homeassistant/components/growatt_server/const.py homeassistant/components/growatt_server/sensor.py + homeassistant/components/growatt_server/sensor_types/* homeassistant/components/gstreamer/media_player.py homeassistant/components/gtfs/sensor.py homeassistant/components/guardian/__init__.py diff --git a/homeassistant/components/bluetooth/manifest.json b/homeassistant/components/bluetooth/manifest.json index 069bb64011d..ab3f9906f0b 100644 --- a/homeassistant/components/bluetooth/manifest.json +++ b/homeassistant/components/bluetooth/manifest.json @@ -9,7 +9,7 @@ "bleak==0.19.2", "bleak-retry-connector==2.10.2", "bluetooth-adapters==0.12.0", - "bluetooth-auto-recovery==1.0.0", + "bluetooth-auto-recovery==1.0.3", "bluetooth-data-tools==0.3.0", "dbus-fast==1.75.0" ], diff --git a/homeassistant/components/frontend/manifest.json b/homeassistant/components/frontend/manifest.json index 9ff4c13585d..2b3962e2241 100644 --- a/homeassistant/components/frontend/manifest.json +++ b/homeassistant/components/frontend/manifest.json @@ -2,7 +2,7 @@ "domain": "frontend", "name": "Home Assistant Frontend", "documentation": "https://www.home-assistant.io/integrations/frontend", - "requirements": ["home-assistant-frontend==20221213.0"], + "requirements": ["home-assistant-frontend==20221213.1"], "dependencies": [ "api", "auth", diff --git a/homeassistant/components/govee_ble/manifest.json b/homeassistant/components/govee_ble/manifest.json index 1cb1eeaddd8..8272ab5d20e 100644 --- a/homeassistant/components/govee_ble/manifest.json +++ b/homeassistant/components/govee_ble/manifest.json @@ -73,7 +73,7 @@ "connectable": false } ], - "requirements": ["govee-ble==0.19.1"], + "requirements": ["govee-ble==0.19.3"], "dependencies": ["bluetooth"], "codeowners": ["@bdraco"], "iot_class": "local_push" diff --git a/homeassistant/components/growatt_server/sensor.py b/homeassistant/components/growatt_server/sensor.py index d9ca800131f..b22664897fd 100644 --- a/homeassistant/components/growatt_server/sensor.py +++ b/homeassistant/components/growatt_server/sensor.py @@ -315,6 +315,25 @@ class GrowattData: "%s - No drop detected, using API value", entity_description.name ) + # Lifetime total values should always be increasing, they will never reset, however + # the API sometimes returns 0 values when the clock turns to 00:00 local time + # in that scenario we should just return the previous value + # Scenarios: + # 1 - System has a genuine 0 value when it it first commissioned: + # - will return 0 until a non-zero value is registered + # 2 - System has been running fine but temporarily resets to 0 briefly at midnight: + # - will return the previous value + # 3 - HA is restarted during the midnight 'outage' - Not handled: + # - Previous value will not exist meaning 0 will be returned + # - This is an edge case that would be better handled by looking up the previous + # value of the entity from the recorder + if entity_description.never_resets and api_value == 0 and previous_value: + _LOGGER.debug( + "API value is 0, but this value should never reset, returning previous value (%s) instead", + previous_value, + ) + return_value = previous_value + self.previous_values[variable] = return_value return return_value diff --git a/homeassistant/components/growatt_server/sensor_types/sensor_entity_description.py b/homeassistant/components/growatt_server/sensor_types/sensor_entity_description.py index 08a20209098..cd286e228b4 100644 --- a/homeassistant/components/growatt_server/sensor_types/sensor_entity_description.py +++ b/homeassistant/components/growatt_server/sensor_types/sensor_entity_description.py @@ -20,3 +20,4 @@ class GrowattSensorEntityDescription(SensorEntityDescription, GrowattRequiredKey precision: int | None = None currency: bool = False previous_value_drop_threshold: float | None = None + never_resets: bool = False diff --git a/homeassistant/components/growatt_server/sensor_types/tlx.py b/homeassistant/components/growatt_server/sensor_types/tlx.py index ba455747457..2a6e76a55a7 100644 --- a/homeassistant/components/growatt_server/sensor_types/tlx.py +++ b/homeassistant/components/growatt_server/sensor_types/tlx.py @@ -1,4 +1,8 @@ -"""Growatt Sensor definitions for the TLX type.""" +""" +Growatt Sensor definitions for the TLX type. + +TLX Type is also shown on the UI as: "MIN/MIC/MOD/NEO" +""" from __future__ import annotations from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass @@ -7,6 +11,7 @@ from homeassistant.const import ( ELECTRIC_POTENTIAL_VOLT, ENERGY_KILO_WATT_HOUR, FREQUENCY_HERTZ, + PERCENTAGE, POWER_WATT, TEMP_CELSIUS, ) @@ -29,8 +34,9 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="eacTotal", native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, - state_class=SensorStateClass.TOTAL, + state_class=SensorStateClass.TOTAL_INCREASING, precision=1, + never_resets=True, ), GrowattSensorEntityDescription( key="tlx_energy_total_input_1", @@ -38,8 +44,9 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="epv1Total", native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, - state_class=SensorStateClass.TOTAL, + state_class=SensorStateClass.TOTAL_INCREASING, precision=1, + never_resets=True, ), GrowattSensorEntityDescription( key="tlx_energy_today_input_1", @@ -80,8 +87,9 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="epv2Total", native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, - state_class=SensorStateClass.TOTAL, + state_class=SensorStateClass.TOTAL_INCREASING, precision=1, + never_resets=True, ), GrowattSensorEntityDescription( key="tlx_energy_today_input_2", @@ -116,6 +124,101 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( device_class=SensorDeviceClass.POWER, precision=1, ), + GrowattSensorEntityDescription( + key="tlx_energy_total_input_3", + name="Lifetime total energy input 3", + api_key="epv3Total", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + precision=1, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_energy_today_input_3", + name="Energy Today Input 3", + api_key="epv3Today", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + precision=1, + ), + GrowattSensorEntityDescription( + key="tlx_voltage_input_3", + name="Input 3 voltage", + api_key="vpv3", + native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT, + device_class=SensorDeviceClass.VOLTAGE, + precision=1, + ), + GrowattSensorEntityDescription( + key="tlx_amperage_input_3", + name="Input 3 Amperage", + api_key="ipv3", + native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE, + device_class=SensorDeviceClass.CURRENT, + precision=1, + ), + GrowattSensorEntityDescription( + key="tlx_wattage_input_3", + name="Input 3 Wattage", + api_key="ppv3", + native_unit_of_measurement=POWER_WATT, + device_class=SensorDeviceClass.POWER, + precision=1, + ), + GrowattSensorEntityDescription( + key="tlx_energy_total_input_4", + name="Lifetime total energy input 4", + api_key="epv4Total", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + precision=1, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_energy_today_input_4", + name="Energy Today Input 4", + api_key="epv4Today", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + precision=1, + ), + GrowattSensorEntityDescription( + key="tlx_voltage_input_4", + name="Input 4 voltage", + api_key="vpv4", + native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT, + device_class=SensorDeviceClass.VOLTAGE, + precision=1, + ), + GrowattSensorEntityDescription( + key="tlx_amperage_input_4", + name="Input 4 Amperage", + api_key="ipv4", + native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE, + device_class=SensorDeviceClass.CURRENT, + precision=1, + ), + GrowattSensorEntityDescription( + key="tlx_wattage_input_4", + name="Input 4 Wattage", + api_key="ppv4", + native_unit_of_measurement=POWER_WATT, + device_class=SensorDeviceClass.POWER, + precision=1, + ), + GrowattSensorEntityDescription( + key="tlx_solar_generation_total", + name="Lifetime total solar energy", + api_key="epvTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), GrowattSensorEntityDescription( key="tlx_internal_wattage", name="Internal wattage", @@ -187,4 +290,143 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( device_class=SensorDeviceClass.TEMPERATURE, precision=1, ), + GrowattSensorEntityDescription( + key="tlx_all_batteries_discharge_today", + name="All batteries discharged today", + api_key="edischargeToday", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + ), + GrowattSensorEntityDescription( + key="tlx_all_batteries_discharge_total", + name="Lifetime total all batteries discharged", + api_key="edischargeTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_battery_1_discharge_w", + name="Battery 1 discharging W", + api_key="bdc1DischargePower", + native_unit_of_measurement=POWER_WATT, + device_class=SensorDeviceClass.POWER, + ), + GrowattSensorEntityDescription( + key="tlx_battery_1_discharge_total", + name="Lifetime total battery 1 discharged", + api_key="bdc1DischargeTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_battery_2_discharge_w", + name="Battery 2 discharging W", + api_key="bdc1DischargePower", + native_unit_of_measurement=POWER_WATT, + device_class=SensorDeviceClass.POWER, + ), + GrowattSensorEntityDescription( + key="tlx_battery_2_discharge_total", + name="Lifetime total battery 2 discharged", + api_key="bdc1DischargeTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_all_batteries_charge_today", + name="All batteries charged today", + api_key="echargeToday", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + ), + GrowattSensorEntityDescription( + key="tlx_all_batteries_charge_total", + name="Lifetime total all batteries charged", + api_key="echargeTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_battery_1_charge_w", + name="Battery 1 charging W", + api_key="bdc1ChargePower", + native_unit_of_measurement=POWER_WATT, + device_class=SensorDeviceClass.POWER, + ), + GrowattSensorEntityDescription( + key="tlx_battery_1_charge_total", + name="Lifetime total battery 1 charged", + api_key="bdc1ChargeTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_battery_2_charge_w", + name="Battery 2 charging W", + api_key="bdc1ChargePower", + native_unit_of_measurement=POWER_WATT, + device_class=SensorDeviceClass.POWER, + ), + GrowattSensorEntityDescription( + key="tlx_battery_2_charge_total", + name="Lifetime total battery 2 charged", + api_key="bdc1ChargeTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_export_to_grid_today", + name="Export to grid today", + api_key="etoGridToday", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + ), + GrowattSensorEntityDescription( + key="tlx_export_to_grid_total", + name="Lifetime total export to grid", + api_key="etoGridTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_load_consumption_today", + name="Load consumption today", + api_key="elocalLoadToday", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + ), + GrowattSensorEntityDescription( + key="mix_load_consumption_total", + name="Lifetime total load consumption", + api_key="elocalLoadTotal", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=SensorDeviceClass.ENERGY, + state_class=SensorStateClass.TOTAL_INCREASING, + never_resets=True, + ), + GrowattSensorEntityDescription( + key="tlx_statement_of_charge", + name="Statement of charge (SoC)", + api_key="bmsSoc", + native_unit_of_measurement=PERCENTAGE, + device_class=SensorDeviceClass.BATTERY, + ), ) diff --git a/homeassistant/components/knx/config_flow.py b/homeassistant/components/knx/config_flow.py index f7ef0d943a9..6e0c357b5fa 100644 --- a/homeassistant/components/knx/config_flow.py +++ b/homeassistant/components/knx/config_flow.py @@ -268,7 +268,7 @@ class KNXCommonFlow(ABC, FlowHandler): if selected_tunnelling_type == CONF_KNX_TUNNELING_TCP_SECURE: return self.async_show_menu( step_id="secure_key_source", - menu_options=["secure_knxkeys", "secure_routing_manual"], + menu_options=["secure_knxkeys", "secure_tunnel_manual"], ) return self.finish_flow(title=f"Tunneling @ {_host}") diff --git a/homeassistant/components/local_calendar/manifest.json b/homeassistant/components/local_calendar/manifest.json index 2921b3e2e10..3e1a1afc609 100644 --- a/homeassistant/components/local_calendar/manifest.json +++ b/homeassistant/components/local_calendar/manifest.json @@ -3,7 +3,7 @@ "name": "Local Calendar", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/local_calendar", - "requirements": ["ical==4.2.2"], + "requirements": ["ical==4.2.3"], "codeowners": ["@allenporter"], "iot_class": "local_polling", "loggers": ["ical"] diff --git a/homeassistant/components/philips_js/remote.py b/homeassistant/components/philips_js/remote.py index 3496ec5f576..2c2f8752e0d 100644 --- a/homeassistant/components/philips_js/remote.py +++ b/homeassistant/components/philips_js/remote.py @@ -58,6 +58,8 @@ class PhilipsTVRemote(CoordinatorEntity[PhilipsTVDataUpdateCoordinator], RemoteE async def async_added_to_hass(self) -> None: """Handle being added to hass.""" + await super().async_added_to_hass() + if (entry := self.registry_entry) and entry.device_id: self.async_on_remove( self._turn_on.async_register( diff --git a/homeassistant/components/switchbot/manifest.json b/homeassistant/components/switchbot/manifest.json index 831d14d8459..34dfbddbf2e 100644 --- a/homeassistant/components/switchbot/manifest.json +++ b/homeassistant/components/switchbot/manifest.json @@ -2,7 +2,7 @@ "domain": "switchbot", "name": "SwitchBot", "documentation": "https://www.home-assistant.io/integrations/switchbot", - "requirements": ["PySwitchbot==0.22.0"], + "requirements": ["PySwitchbot==0.23.2"], "config_flow": true, "dependencies": ["bluetooth"], "codeowners": [ diff --git a/homeassistant/components/synology_dsm/__init__.py b/homeassistant/components/synology_dsm/__init__.py index c37540b14b7..0b3001215a1 100644 --- a/homeassistant/components/synology_dsm/__init__.py +++ b/homeassistant/components/synology_dsm/__init__.py @@ -98,7 +98,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: # The central coordinator needs to be refreshed first since # the next two rely on data from it coordinator_cameras: SynologyDSMCameraUpdateCoordinator | None = None - if SynoSurveillanceStation.CAMERA_API_KEY in available_apis: + if api.surveillance_station is not None: coordinator_cameras = SynologyDSMCameraUpdateCoordinator(hass, entry, api) await coordinator_cameras.async_config_entry_first_refresh() diff --git a/homeassistant/components/tibber/manifest.json b/homeassistant/components/tibber/manifest.json index 05bfe96b071..814f36e018c 100644 --- a/homeassistant/components/tibber/manifest.json +++ b/homeassistant/components/tibber/manifest.json @@ -3,7 +3,7 @@ "domain": "tibber", "name": "Tibber", "documentation": "https://www.home-assistant.io/integrations/tibber", - "requirements": ["pyTibber==0.26.4"], + "requirements": ["pyTibber==0.26.5"], "codeowners": ["@danielhiversen"], "quality_scale": "silver", "config_flow": true, diff --git a/homeassistant/const.py b/homeassistant/const.py index e36cf99b288..1324526804f 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -8,7 +8,7 @@ from .backports.enum import StrEnum APPLICATION_NAME: Final = "HomeAssistant" MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 12 -PATCH_VERSION: Final = "6" +PATCH_VERSION: Final = "7" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index b378d03bbf2..674271b427f 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -13,7 +13,7 @@ bcrypt==3.1.7 bleak-retry-connector==2.10.2 bleak==0.19.2 bluetooth-adapters==0.12.0 -bluetooth-auto-recovery==1.0.0 +bluetooth-auto-recovery==1.0.3 bluetooth-data-tools==0.3.0 certifi>=2021.5.30 ciso8601==2.2.0 @@ -22,7 +22,7 @@ dbus-fast==1.75.0 fnvhash==0.1.0 hass-nabucasa==0.61.0 home-assistant-bluetooth==1.8.1 -home-assistant-frontend==20221213.0 +home-assistant-frontend==20221213.1 httpx==0.23.1 ifaddr==0.1.7 janus==1.0.0 diff --git a/pyproject.toml b/pyproject.toml index 1097ff5c708..68307acc33c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "homeassistant" -version = "2022.12.6" +version = "2022.12.7" license = {text = "Apache-2.0"} description = "Open-source home automation platform running on Python 3." readme = "README.rst" diff --git a/requirements_all.txt b/requirements_all.txt index a2fd7cc1eeb..5429021cdf5 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -37,7 +37,7 @@ PyRMVtransport==0.3.3 PySocks==1.7.1 # homeassistant.components.switchbot -PySwitchbot==0.22.0 +PySwitchbot==0.23.2 # homeassistant.components.transport_nsw PyTransportNSW==0.1.1 @@ -450,7 +450,7 @@ bluemaestro-ble==0.2.0 bluetooth-adapters==0.12.0 # homeassistant.components.bluetooth -bluetooth-auto-recovery==1.0.0 +bluetooth-auto-recovery==1.0.3 # homeassistant.components.bluetooth # homeassistant.components.led_ble @@ -796,7 +796,7 @@ googlemaps==2.5.1 goslide-api==0.5.1 # homeassistant.components.govee_ble -govee-ble==0.19.1 +govee-ble==0.19.3 # homeassistant.components.remote_rpi_gpio gpiozero==1.6.2 @@ -884,7 +884,7 @@ hole==0.7.0 holidays==0.17.2 # homeassistant.components.frontend -home-assistant-frontend==20221213.0 +home-assistant-frontend==20221213.1 # homeassistant.components.home_connect homeconnect==0.7.2 @@ -926,7 +926,7 @@ ibm-watson==5.2.2 ibmiotf==0.3.4 # homeassistant.components.local_calendar -ical==4.2.2 +ical==4.2.3 # homeassistant.components.ping icmplib==3.0 @@ -1432,7 +1432,7 @@ pyRFXtrx==0.30.0 pySwitchmate==0.5.1 # homeassistant.components.tibber -pyTibber==0.26.4 +pyTibber==0.26.5 # homeassistant.components.dlink pyW215==0.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 1acca1db340..777c4928eb1 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -33,7 +33,7 @@ PyRMVtransport==0.3.3 PySocks==1.7.1 # homeassistant.components.switchbot -PySwitchbot==0.22.0 +PySwitchbot==0.23.2 # homeassistant.components.transport_nsw PyTransportNSW==0.1.1 @@ -364,7 +364,7 @@ bluemaestro-ble==0.2.0 bluetooth-adapters==0.12.0 # homeassistant.components.bluetooth -bluetooth-auto-recovery==1.0.0 +bluetooth-auto-recovery==1.0.3 # homeassistant.components.bluetooth # homeassistant.components.led_ble @@ -600,7 +600,7 @@ google-nest-sdm==2.1.0 googlemaps==2.5.1 # homeassistant.components.govee_ble -govee-ble==0.19.1 +govee-ble==0.19.3 # homeassistant.components.gree greeclimate==1.3.0 @@ -664,7 +664,7 @@ hole==0.7.0 holidays==0.17.2 # homeassistant.components.frontend -home-assistant-frontend==20221213.0 +home-assistant-frontend==20221213.1 # homeassistant.components.home_connect homeconnect==0.7.2 @@ -691,7 +691,7 @@ iaqualink==0.5.0 ibeacon_ble==1.0.1 # homeassistant.components.local_calendar -ical==4.2.2 +ical==4.2.3 # homeassistant.components.ping icmplib==3.0 @@ -1032,7 +1032,7 @@ pyMetno==0.9.0 pyRFXtrx==0.30.0 # homeassistant.components.tibber -pyTibber==0.26.4 +pyTibber==0.26.5 # homeassistant.components.nextbus py_nextbusnext==0.1.5