Handle re-adding of accessories/services/chars in homekit_controller after removal (#102192)

This commit is contained in:
J. Nick Koston 2023-10-17 22:00:02 -10:00 committed by GitHub
parent cfb88766c7
commit 3cedfbcc66
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 37 deletions

View file

@ -8,7 +8,7 @@ import os
from typing import Any, Final
from unittest import mock
from aiohomekit.controller.abstract import AbstractPairing
from aiohomekit.controller.abstract import AbstractDescription, AbstractPairing
from aiohomekit.hkjson import loads as hkloads
from aiohomekit.model import (
Accessories,
@ -17,7 +17,6 @@ from aiohomekit.model import (
mixin as model_mixin,
)
from aiohomekit.testing import FakeController, FakePairing
from aiohomekit.zeroconf import HomeKitService
from homeassistant.components.device_automation import DeviceAutomationType
from homeassistant.components.homekit_controller.const import (
@ -254,26 +253,21 @@ async def device_config_changed(hass: HomeAssistant, accessories: Accessories):
accessories_obj = Accessories()
for accessory in accessories:
accessories_obj.add_accessory(accessory)
pairing._accessories_state = AccessoriesState(
accessories_obj, pairing.config_num + 1
)
new_config_num = pairing.config_num + 1
pairing._async_description_update(
HomeKitService(
name="TestDevice.local",
AbstractDescription(
name="testdevice.local.",
id="00:00:00:00:00:00",
model="",
config_num=2,
state_num=3,
feature_flags=0,
status_flags=0,
config_num=new_config_num,
category=1,
protocol_version="1.0",
type="_hap._tcp.local.",
address="127.0.0.1",
addresses=["127.0.0.1"],
port=8080,
)
)
# Set the accessories state only after calling
# _async_description_update, otherwise the config_num will be
# overwritten
pairing._accessories_state = AccessoriesState(accessories_obj, new_config_num)
# Wait for services to reconfigure
await hass.async_block_till_done()