mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +00:00
Merge pull request #42724 from home-assistant/rc
This commit is contained in:
commit
6c51ff63ad
@ -78,6 +78,7 @@ class CanaryCamera(CoordinatorEntity, Camera):
|
||||
def __init__(self, hass, coordinator, location_id, device, timeout, ffmpeg_args):
|
||||
"""Initialize a Canary security camera."""
|
||||
super().__init__(coordinator)
|
||||
Camera.__init__(self)
|
||||
self._ffmpeg = hass.data[DATA_FFMPEG]
|
||||
self._ffmpeg_arguments = ffmpeg_args
|
||||
self._location_id = location_id
|
||||
|
@ -2,7 +2,7 @@
|
||||
"domain": "cloudflare",
|
||||
"name": "Cloudflare",
|
||||
"documentation": "https://www.home-assistant.io/integrations/cloudflare",
|
||||
"requirements": ["pycfdns==1.1.1"],
|
||||
"requirements": ["pycfdns==1.2.1"],
|
||||
"codeowners": ["@ludeeus", "@ctalkington"],
|
||||
"config_flow": true
|
||||
}
|
||||
|
@ -321,7 +321,7 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
"""Return the current temperature."""
|
||||
if self._temp_sensor_device:
|
||||
device = self._temp_sensor_device.fibaro_device
|
||||
if device.properties.heatingThermostatSetpoint:
|
||||
if "heatingThermostatSetpoint" in device.properties:
|
||||
return float(device.properties.heatingThermostatSetpoint)
|
||||
return float(device.properties.value)
|
||||
return None
|
||||
@ -331,7 +331,7 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
"""Return the temperature we try to reach."""
|
||||
if self._target_temp_device:
|
||||
device = self._target_temp_device.fibaro_device
|
||||
if device.properties.heatingThermostatSetpointFuture:
|
||||
if "heatingThermostatSetpointFuture" in device.properties:
|
||||
return float(device.properties.heatingThermostatSetpointFuture)
|
||||
return float(device.properties.targetLevel)
|
||||
return None
|
||||
|
@ -2,6 +2,6 @@
|
||||
"domain": "geo_rss_events",
|
||||
"name": "GeoRSS",
|
||||
"documentation": "https://www.home-assistant.io/integrations/geo_rss_events",
|
||||
"requirements": ["georss_generic_client==0.3"],
|
||||
"requirements": ["georss_generic_client==0.4"],
|
||||
"codeowners": ["@exxamalte"]
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ from datetime import timedelta
|
||||
import logging
|
||||
|
||||
from georss_client import UPDATE_OK, UPDATE_OK_NO_DATA
|
||||
from georss_client.generic_feed import GenericFeed
|
||||
from georss_generic_client import GenericFeed
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
|
@ -3,7 +3,7 @@
|
||||
"name": "Lutron Caséta",
|
||||
"documentation": "https://www.home-assistant.io/integrations/lutron_caseta",
|
||||
"requirements": [
|
||||
"pylutron-caseta==0.7.0"
|
||||
"pylutron-caseta==0.7.1"
|
||||
],
|
||||
"codeowners": [
|
||||
"@swails"
|
||||
|
@ -74,6 +74,14 @@ class EventManager:
|
||||
async def async_start(self) -> bool:
|
||||
"""Start polling events."""
|
||||
if await self.device.create_pullpoint_subscription():
|
||||
# Create subscription manager
|
||||
self._subscription = self.device.create_subscription_service(
|
||||
"PullPointSubscription"
|
||||
)
|
||||
|
||||
# Renew immediately
|
||||
await self.async_renew()
|
||||
|
||||
# Initialize events
|
||||
pullpoint = self.device.create_pullpoint_service()
|
||||
try:
|
||||
@ -87,11 +95,6 @@ class EventManager:
|
||||
# Parse event initialization
|
||||
await self.async_parse_messages(response.NotificationMessage)
|
||||
|
||||
# Create subscription manager
|
||||
self._subscription = self.device.create_subscription_service(
|
||||
"PullPointSubscription"
|
||||
)
|
||||
|
||||
self.started = True
|
||||
return True
|
||||
|
||||
|
@ -2,6 +2,6 @@
|
||||
"domain": "rpi_gpio_pwm",
|
||||
"name": "pigpio Daemon PWM LED",
|
||||
"documentation": "https://www.home-assistant.io/integrations/rpi_gpio_pwm",
|
||||
"requirements": ["pwmled==1.5.3"],
|
||||
"requirements": ["pwmled==1.6.6"],
|
||||
"codeowners": []
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
"""Support for Tasmota sensors."""
|
||||
from typing import Optional
|
||||
|
||||
from hatasmota import status_sensor
|
||||
from hatasmota.const import (
|
||||
SENSOR_AMBIENT,
|
||||
SENSOR_APPARENT_POWERUSAGE,
|
||||
@ -162,7 +163,7 @@ class TasmotaSensor(TasmotaAvailability, TasmotaDiscoveryUpdate, Entity):
|
||||
def entity_registry_enabled_default(self) -> bool:
|
||||
"""Return if the entity should be enabled when first added to the entity registry."""
|
||||
# Hide status sensors to not overwhelm users
|
||||
if self._tasmota_entity.quantity == SENSOR_STATUS_SIGNAL:
|
||||
if self._tasmota_entity.quantity in status_sensor.SENSORS:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
@ -637,7 +637,7 @@ class ZHAGateway:
|
||||
_LOGGER.debug("Shutting down ZHA ControllerApplication")
|
||||
for unsubscribe in self._unsubs:
|
||||
unsubscribe()
|
||||
await self.application_controller.shutdown()
|
||||
await self.application_controller.pre_shutdown()
|
||||
|
||||
|
||||
@callback
|
||||
|
@ -9,7 +9,7 @@
|
||||
"zha-quirks==0.0.45",
|
||||
"zigpy-cc==0.5.2",
|
||||
"zigpy-deconz==0.11.0",
|
||||
"zigpy==0.26.0",
|
||||
"zigpy==0.27.0",
|
||||
"zigpy-xbee==0.13.0",
|
||||
"zigpy-zigate==0.6.2",
|
||||
"zigpy-znp==0.2.2"
|
||||
|
@ -1,7 +1,7 @@
|
||||
"""Constants used by Home Assistant components."""
|
||||
MAJOR_VERSION = 0
|
||||
MINOR_VERSION = 117
|
||||
PATCH_VERSION = "1"
|
||||
PATCH_VERSION = "2"
|
||||
__short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}"
|
||||
__version__ = f"{__short_version__}.{PATCH_VERSION}"
|
||||
REQUIRED_PYTHON_VER = (3, 7, 1)
|
||||
|
@ -638,7 +638,7 @@ geojson_client==0.4
|
||||
geopy==1.21.0
|
||||
|
||||
# homeassistant.components.geo_rss_events
|
||||
georss_generic_client==0.3
|
||||
georss_generic_client==0.4
|
||||
|
||||
# homeassistant.components.ign_sismologia
|
||||
georss_ign_sismologia_client==0.2
|
||||
@ -1182,7 +1182,7 @@ pushbullet.py==0.11.0
|
||||
pushover_complete==1.1.1
|
||||
|
||||
# homeassistant.components.rpi_gpio_pwm
|
||||
pwmled==1.5.3
|
||||
pwmled==1.6.6
|
||||
|
||||
# homeassistant.components.august
|
||||
py-august==0.25.0
|
||||
@ -1288,7 +1288,7 @@ pybotvac==0.0.17
|
||||
pycarwings2==2.9
|
||||
|
||||
# homeassistant.components.cloudflare
|
||||
pycfdns==1.1.1
|
||||
pycfdns==1.2.1
|
||||
|
||||
# homeassistant.components.channels
|
||||
pychannels==1.0.0
|
||||
@ -1487,7 +1487,7 @@ pylitejet==0.1
|
||||
pyloopenergy==0.2.1
|
||||
|
||||
# homeassistant.components.lutron_caseta
|
||||
pylutron-caseta==0.7.0
|
||||
pylutron-caseta==0.7.1
|
||||
|
||||
# homeassistant.components.lutron
|
||||
pylutron==0.2.5
|
||||
@ -2355,7 +2355,7 @@ zigpy-zigate==0.6.2
|
||||
zigpy-znp==0.2.2
|
||||
|
||||
# homeassistant.components.zha
|
||||
zigpy==0.26.0
|
||||
zigpy==0.27.0
|
||||
|
||||
# homeassistant.components.zoneminder
|
||||
zm-py==0.4.0
|
||||
|
@ -315,7 +315,7 @@ geojson_client==0.4
|
||||
geopy==1.21.0
|
||||
|
||||
# homeassistant.components.geo_rss_events
|
||||
georss_generic_client==0.3
|
||||
georss_generic_client==0.4
|
||||
|
||||
# homeassistant.components.ign_sismologia
|
||||
georss_ign_sismologia_client==0.2
|
||||
@ -636,7 +636,7 @@ pyblackbird==0.5
|
||||
pybotvac==0.0.17
|
||||
|
||||
# homeassistant.components.cloudflare
|
||||
pycfdns==1.1.1
|
||||
pycfdns==1.2.1
|
||||
|
||||
# homeassistant.components.cast
|
||||
pychromecast==7.5.1
|
||||
@ -730,7 +730,7 @@ pylibrespot-java==0.1.0
|
||||
pylitejet==0.1
|
||||
|
||||
# homeassistant.components.lutron_caseta
|
||||
pylutron-caseta==0.7.0
|
||||
pylutron-caseta==0.7.1
|
||||
|
||||
# homeassistant.components.mailgun
|
||||
pymailgunner==1.4
|
||||
@ -1124,4 +1124,4 @@ zigpy-zigate==0.6.2
|
||||
zigpy-znp==0.2.2
|
||||
|
||||
# homeassistant.components.zha
|
||||
zigpy==0.26.0
|
||||
zigpy==0.27.0
|
||||
|
@ -32,7 +32,7 @@ from .common import (
|
||||
send_attributes_report,
|
||||
)
|
||||
|
||||
from tests.async_mock import AsyncMock, MagicMock, call, patch
|
||||
from tests.async_mock import AsyncMock, MagicMock, patch
|
||||
from tests.common import async_capture_events, mock_coro, mock_restore_cache
|
||||
|
||||
|
||||
@ -144,9 +144,10 @@ async def test_cover(m1, hass, zha_device_joined_restored, zigpy_cover_device):
|
||||
DOMAIN, SERVICE_CLOSE_COVER, {"entity_id": entity_id}, blocking=True
|
||||
)
|
||||
assert cluster.request.call_count == 1
|
||||
assert cluster.request.call_args == call(
|
||||
False, 0x1, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
)
|
||||
assert cluster.request.call_args[0][0] is False
|
||||
assert cluster.request.call_args[0][1] == 0x01
|
||||
assert cluster.request.call_args[0][2] == ()
|
||||
assert cluster.request.call_args[1]["expect_reply"] is True
|
||||
|
||||
# open from UI
|
||||
with patch(
|
||||
@ -156,9 +157,10 @@ async def test_cover(m1, hass, zha_device_joined_restored, zigpy_cover_device):
|
||||
DOMAIN, SERVICE_OPEN_COVER, {"entity_id": entity_id}, blocking=True
|
||||
)
|
||||
assert cluster.request.call_count == 1
|
||||
assert cluster.request.call_args == call(
|
||||
False, 0x0, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
)
|
||||
assert cluster.request.call_args[0][0] is False
|
||||
assert cluster.request.call_args[0][1] == 0x00
|
||||
assert cluster.request.call_args[0][2] == ()
|
||||
assert cluster.request.call_args[1]["expect_reply"] is True
|
||||
|
||||
# set position UI
|
||||
with patch(
|
||||
@ -171,15 +173,11 @@ async def test_cover(m1, hass, zha_device_joined_restored, zigpy_cover_device):
|
||||
blocking=True,
|
||||
)
|
||||
assert cluster.request.call_count == 1
|
||||
assert cluster.request.call_args == call(
|
||||
False,
|
||||
0x5,
|
||||
(zigpy.types.uint8_t,),
|
||||
53,
|
||||
expect_reply=True,
|
||||
manufacturer=None,
|
||||
tsn=None,
|
||||
)
|
||||
assert cluster.request.call_args[0][0] is False
|
||||
assert cluster.request.call_args[0][1] == 0x05
|
||||
assert cluster.request.call_args[0][2] == (zigpy.types.uint8_t,)
|
||||
assert cluster.request.call_args[0][3] == 53
|
||||
assert cluster.request.call_args[1]["expect_reply"] is True
|
||||
|
||||
# stop from UI
|
||||
with patch(
|
||||
@ -189,9 +187,10 @@ async def test_cover(m1, hass, zha_device_joined_restored, zigpy_cover_device):
|
||||
DOMAIN, SERVICE_STOP_COVER, {"entity_id": entity_id}, blocking=True
|
||||
)
|
||||
assert cluster.request.call_count == 1
|
||||
assert cluster.request.call_args == call(
|
||||
False, 0x2, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
)
|
||||
assert cluster.request.call_args[0][0] is False
|
||||
assert cluster.request.call_args[0][1] == 0x02
|
||||
assert cluster.request.call_args[0][2] == ()
|
||||
assert cluster.request.call_args[1]["expect_reply"] is True
|
||||
|
||||
# test rejoin
|
||||
await async_test_rejoin(hass, zigpy_cover_device, [cluster], (1,))
|
||||
|
@ -113,6 +113,7 @@ async def test_devices(
|
||||
0,
|
||||
expect_reply=True,
|
||||
manufacturer=None,
|
||||
tries=1,
|
||||
tsn=None,
|
||||
)
|
||||
|
||||
|
@ -323,7 +323,7 @@ async def async_test_on_off_from_hass(hass, cluster, entity_id):
|
||||
assert cluster.request.call_count == 1
|
||||
assert cluster.request.await_count == 1
|
||||
assert cluster.request.call_args == call(
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tries=1, tsn=None
|
||||
)
|
||||
|
||||
await async_test_off_from_hass(hass, cluster, entity_id)
|
||||
@ -340,7 +340,7 @@ async def async_test_off_from_hass(hass, cluster, entity_id):
|
||||
assert cluster.request.call_count == 1
|
||||
assert cluster.request.await_count == 1
|
||||
assert cluster.request.call_args == call(
|
||||
False, OFF, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
False, OFF, (), expect_reply=True, manufacturer=None, tries=1, tsn=None
|
||||
)
|
||||
|
||||
|
||||
@ -360,7 +360,7 @@ async def async_test_level_on_off_from_hass(
|
||||
assert level_cluster.request.call_count == 0
|
||||
assert level_cluster.request.await_count == 0
|
||||
assert on_off_cluster.request.call_args == call(
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tries=1, tsn=None
|
||||
)
|
||||
on_off_cluster.request.reset_mock()
|
||||
level_cluster.request.reset_mock()
|
||||
@ -373,7 +373,7 @@ async def async_test_level_on_off_from_hass(
|
||||
assert level_cluster.request.call_count == 1
|
||||
assert level_cluster.request.await_count == 1
|
||||
assert on_off_cluster.request.call_args == call(
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tries=1, tsn=None
|
||||
)
|
||||
assert level_cluster.request.call_args == call(
|
||||
False,
|
||||
@ -383,6 +383,7 @@ async def async_test_level_on_off_from_hass(
|
||||
100.0,
|
||||
expect_reply=True,
|
||||
manufacturer=None,
|
||||
tries=1,
|
||||
tsn=None,
|
||||
)
|
||||
on_off_cluster.request.reset_mock()
|
||||
@ -396,7 +397,7 @@ async def async_test_level_on_off_from_hass(
|
||||
assert level_cluster.request.call_count == 1
|
||||
assert level_cluster.request.await_count == 1
|
||||
assert on_off_cluster.request.call_args == call(
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tries=1, tsn=None
|
||||
)
|
||||
assert level_cluster.request.call_args == call(
|
||||
False,
|
||||
@ -406,6 +407,7 @@ async def async_test_level_on_off_from_hass(
|
||||
1,
|
||||
expect_reply=True,
|
||||
manufacturer=None,
|
||||
tries=1,
|
||||
tsn=None,
|
||||
)
|
||||
on_off_cluster.request.reset_mock()
|
||||
@ -445,6 +447,7 @@ async def async_test_flash_from_hass(hass, cluster, entity_id, flash):
|
||||
0,
|
||||
expect_reply=True,
|
||||
manufacturer=None,
|
||||
tries=1,
|
||||
tsn=None,
|
||||
)
|
||||
|
||||
|
@ -136,7 +136,7 @@ async def test_switch(hass, zha_device_joined_restored, zigpy_device):
|
||||
)
|
||||
assert len(cluster.request.mock_calls) == 1
|
||||
assert cluster.request.call_args == call(
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
False, ON, (), expect_reply=True, manufacturer=None, tries=1, tsn=None
|
||||
)
|
||||
|
||||
# turn off from HA
|
||||
@ -150,7 +150,7 @@ async def test_switch(hass, zha_device_joined_restored, zigpy_device):
|
||||
)
|
||||
assert len(cluster.request.mock_calls) == 1
|
||||
assert cluster.request.call_args == call(
|
||||
False, OFF, (), expect_reply=True, manufacturer=None, tsn=None
|
||||
False, OFF, (), expect_reply=True, manufacturer=None, tries=1, tsn=None
|
||||
)
|
||||
|
||||
# test joining a new switch to the network and HA
|
||||
|
Loading…
x
Reference in New Issue
Block a user