1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
from __future__ import annotations
from typing import Any
from aiohomekit.controller.abstract import TransportType
from aiohomekit.controller.coap.discovery import CoAPDiscovery
from aiohomekit.controller.coap.pairing import CoAPPairing
from aiohomekit.zeroconf import HAP_TYPE_UDP, ZeroconfController
class CoAPController(ZeroconfController):
hap_type = HAP_TYPE_UDP
discoveries: dict[str, CoAPDiscovery]
pairings: dict[str, CoAPPairing]
aliases: dict[str, CoAPPairing]
transport_type = TransportType.COAP
def _make_discovery(self, discovery) -> CoAPDiscovery:
return CoAPDiscovery(self, discovery)
def load_pairing(
self, alias: str, pairing_data: dict[str, Any]
) -> CoAPPairing | None:
if pairing_data["Connection"] != "CoAP":
return None
if not (hkid := pairing_data.get("AccessoryPairingID")):
return None
pairing = self.pairings[hkid.lower()] = CoAPPairing(self, pairing_data)
if discovery := self.discoveries.get(hkid.lower()):
pairing._async_description_update(discovery.description)
self.aliases[alias] = pairing
return pairing
|