mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 16:27:08 +00:00
Avoid homekit random id generation for existing entries (#114144)
This commit is contained in:
parent
188dbfbd2a
commit
ada781025b
@ -12,6 +12,7 @@ import socket
|
|||||||
from typing import Any, cast
|
from typing import Any, cast
|
||||||
|
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
|
from pyhap import util as pyhap_util
|
||||||
from pyhap.characteristic import Characteristic
|
from pyhap.characteristic import Characteristic
|
||||||
from pyhap.const import STANDALONE_AID
|
from pyhap.const import STANDALONE_AID
|
||||||
from pyhap.loader import get_loader
|
from pyhap.loader import get_loader
|
||||||
@ -580,6 +581,8 @@ class HomeKit:
|
|||||||
self.driver.load()
|
self.driver.load()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# If there is no persist file, we need to generate a mac
|
||||||
|
self.driver.state.mac = pyhap_util.generate_mac()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def async_reset_accessories(self, entity_ids: Iterable[str]) -> None:
|
async def async_reset_accessories(self, entity_ids: Iterable[str]) -> None:
|
||||||
|
@ -72,6 +72,7 @@ from .const import (
|
|||||||
CONF_LINKED_BATTERY_SENSOR,
|
CONF_LINKED_BATTERY_SENSOR,
|
||||||
CONF_LOW_BATTERY_THRESHOLD,
|
CONF_LOW_BATTERY_THRESHOLD,
|
||||||
DEFAULT_LOW_BATTERY_THRESHOLD,
|
DEFAULT_LOW_BATTERY_THRESHOLD,
|
||||||
|
EMPTY_MAC,
|
||||||
EVENT_HOMEKIT_CHANGED,
|
EVENT_HOMEKIT_CHANGED,
|
||||||
HK_CHARGING,
|
HK_CHARGING,
|
||||||
HK_NOT_CHARGABLE,
|
HK_NOT_CHARGABLE,
|
||||||
@ -683,7 +684,9 @@ class HomeDriver(AccessoryDriver): # type: ignore[misc]
|
|||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize a AccessoryDriver object."""
|
"""Initialize a AccessoryDriver object."""
|
||||||
super().__init__(**kwargs)
|
# Always set an empty mac of pyhap will incur
|
||||||
|
# the cost of generating a new one for every driver
|
||||||
|
super().__init__(**kwargs, mac=EMPTY_MAC)
|
||||||
self.hass = hass
|
self.hass = hass
|
||||||
self.entry_id = entry_id
|
self.entry_id = entry_id
|
||||||
self._bridge_name = bridge_name
|
self._bridge_name = bridge_name
|
||||||
|
@ -10,6 +10,7 @@ PERSIST_LOCK_DATA = f"{DOMAIN}_persist_lock"
|
|||||||
HOMEKIT_FILE = ".homekit.state"
|
HOMEKIT_FILE = ".homekit.state"
|
||||||
SHUTDOWN_TIMEOUT = 30
|
SHUTDOWN_TIMEOUT = 30
|
||||||
CONF_ENTRY_INDEX = "index"
|
CONF_ENTRY_INDEX = "index"
|
||||||
|
EMPTY_MAC = "00:00:00:00:00:00"
|
||||||
|
|
||||||
# ### Codecs ####
|
# ### Codecs ####
|
||||||
VIDEO_CODEC_COPY = "copy"
|
VIDEO_CODEC_COPY = "copy"
|
||||||
|
@ -28,6 +28,7 @@ from homeassistant.components.homekit.const import (
|
|||||||
CONF_LINKED_BATTERY_CHARGING_SENSOR,
|
CONF_LINKED_BATTERY_CHARGING_SENSOR,
|
||||||
CONF_LINKED_BATTERY_SENSOR,
|
CONF_LINKED_BATTERY_SENSOR,
|
||||||
CONF_LOW_BATTERY_THRESHOLD,
|
CONF_LOW_BATTERY_THRESHOLD,
|
||||||
|
EMPTY_MAC,
|
||||||
MANUFACTURER,
|
MANUFACTURER,
|
||||||
SERV_ACCESSORY_INFO,
|
SERV_ACCESSORY_INFO,
|
||||||
)
|
)
|
||||||
@ -747,7 +748,9 @@ def test_home_driver(iid_storage) -> None:
|
|||||||
persist_file=path,
|
persist_file=path,
|
||||||
)
|
)
|
||||||
|
|
||||||
mock_driver.assert_called_with(address=ip_address, port=port, persist_file=path)
|
mock_driver.assert_called_with(
|
||||||
|
address=ip_address, port=port, persist_file=path, mac=EMPTY_MAC
|
||||||
|
)
|
||||||
driver.state = Mock(pincode=pin, paired=False)
|
driver.state = Mock(pincode=pin, paired=False)
|
||||||
xhm_uri_mock = Mock(return_value="X-HM://0")
|
xhm_uri_mock = Mock(return_value="X-HM://0")
|
||||||
driver.accessory = Mock(display_name="any", xhm_uri=xhm_uri_mock)
|
driver.accessory = Mock(display_name="any", xhm_uri=xhm_uri_mock)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user