Update xknx to 2.0.0 (#82709)

This commit is contained in:
Matthias Alphart 2022-11-26 06:49:11 +01:00 committed by GitHub
parent 6f1208b07f
commit daf56e92a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 52 additions and 45 deletions

View file

@ -362,11 +362,8 @@ class KNXModule:
def init_xknx(self) -> None: def init_xknx(self) -> None:
"""Initialize XKNX object.""" """Initialize XKNX object."""
self.xknx = XKNX( self.xknx = XKNX(
own_address=self.entry.data[CONF_KNX_INDIVIDUAL_ADDRESS],
rate_limit=self.entry.data[CONF_KNX_RATE_LIMIT],
multicast_group=self.entry.data[CONF_KNX_MCAST_GRP],
multicast_port=self.entry.data[CONF_KNX_MCAST_PORT],
connection_config=self.connection_config(), connection_config=self.connection_config(),
rate_limit=self.entry.data[CONF_KNX_RATE_LIMIT],
state_updater=self.entry.data[CONF_KNX_STATE_UPDATER], state_updater=self.entry.data[CONF_KNX_STATE_UPDATER],
) )
@ -384,6 +381,9 @@ class KNXModule:
if _conn_type == CONF_KNX_ROUTING: if _conn_type == CONF_KNX_ROUTING:
return ConnectionConfig( return ConnectionConfig(
connection_type=ConnectionType.ROUTING, connection_type=ConnectionType.ROUTING,
individual_address=self.entry.data[CONF_KNX_INDIVIDUAL_ADDRESS],
multicast_group=self.entry.data[CONF_KNX_MCAST_GRP],
multicast_port=self.entry.data[CONF_KNX_MCAST_PORT],
local_ip=self.entry.data.get(CONF_KNX_LOCAL_IP), local_ip=self.entry.data.get(CONF_KNX_LOCAL_IP),
auto_reconnect=True, auto_reconnect=True,
threaded=True, threaded=True,

View file

@ -6,10 +6,10 @@ from typing import Any, Final
import voluptuous as vol import voluptuous as vol
from xknx import XKNX from xknx import XKNX
from xknx.exceptions.exception import InvalidSignature from xknx.exceptions.exception import InvalidSecureConfiguration
from xknx.io import DEFAULT_MCAST_GRP, DEFAULT_MCAST_PORT from xknx.io import DEFAULT_MCAST_GRP, DEFAULT_MCAST_PORT
from xknx.io.gateway_scanner import GatewayDescriptor, GatewayScanner from xknx.io.gateway_scanner import GatewayDescriptor, GatewayScanner
from xknx.secure import load_key_ring from xknx.secure import load_keyring
from homeassistant.config_entries import ConfigEntry, ConfigFlow, OptionsFlow from homeassistant.config_entries import ConfigEntry, ConfigFlow, OptionsFlow
from homeassistant.const import CONF_HOST, CONF_PORT from homeassistant.const import CONF_HOST, CONF_PORT
@ -41,6 +41,7 @@ from .const import (
CONF_KNX_TUNNELING_TCP, CONF_KNX_TUNNELING_TCP,
CONF_KNX_TUNNELING_TCP_SECURE, CONF_KNX_TUNNELING_TCP_SECURE,
CONST_KNX_STORAGE_KEY, CONST_KNX_STORAGE_KEY,
DEFAULT_ROUTING_IA,
DOMAIN, DOMAIN,
KNXConfigEntryData, KNXConfigEntryData,
) )
@ -50,7 +51,7 @@ CONF_KNX_GATEWAY: Final = "gateway"
CONF_MAX_RATE_LIMIT: Final = 60 CONF_MAX_RATE_LIMIT: Final = 60
DEFAULT_ENTRY_DATA = KNXConfigEntryData( DEFAULT_ENTRY_DATA = KNXConfigEntryData(
individual_address=XKNX.DEFAULT_ADDRESS, individual_address=DEFAULT_ROUTING_IA,
local_ip=None, local_ip=None,
multicast_group=DEFAULT_MCAST_GRP, multicast_group=DEFAULT_MCAST_GRP,
multicast_port=DEFAULT_MCAST_PORT, multicast_port=DEFAULT_MCAST_PORT,
@ -347,13 +348,13 @@ class KNXCommonFlow(ABC, FlowHandler):
assert self._tunneling_config assert self._tunneling_config
storage_key = CONST_KNX_STORAGE_KEY + user_input[CONF_KNX_KNXKEY_FILENAME] storage_key = CONST_KNX_STORAGE_KEY + user_input[CONF_KNX_KNXKEY_FILENAME]
try: try:
load_key_ring( await load_keyring(
path=self.hass.config.path(STORAGE_DIR, storage_key), path=self.hass.config.path(STORAGE_DIR, storage_key),
password=user_input[CONF_KNX_KNXKEY_PASSWORD], password=user_input[CONF_KNX_KNXKEY_PASSWORD],
) )
except FileNotFoundError: except FileNotFoundError:
errors[CONF_KNX_KNXKEY_FILENAME] = "file_not_found" errors[CONF_KNX_KNXKEY_FILENAME] = "file_not_found"
except InvalidSignature: except InvalidSecureConfiguration:
errors[CONF_KNX_KNXKEY_PASSWORD] = "invalid_signature" errors[CONF_KNX_KNXKEY_PASSWORD] = "invalid_signature"
if not errors: if not errors:

View file

@ -41,7 +41,9 @@ CONF_KNX_RATE_LIMIT: Final = "rate_limit"
CONF_KNX_ROUTE_BACK: Final = "route_back" CONF_KNX_ROUTE_BACK: Final = "route_back"
CONF_KNX_STATE_UPDATER: Final = "state_updater" CONF_KNX_STATE_UPDATER: Final = "state_updater"
CONF_KNX_DEFAULT_STATE_UPDATER: Final = True CONF_KNX_DEFAULT_STATE_UPDATER: Final = True
CONF_KNX_DEFAULT_RATE_LIMIT: Final = 20 CONF_KNX_DEFAULT_RATE_LIMIT: Final = 0
DEFAULT_ROUTING_IA: Final = "0.0.240"
## ##
# Secure constants # Secure constants

View file

@ -3,7 +3,7 @@
"name": "KNX", "name": "KNX",
"config_flow": true, "config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/knx", "documentation": "https://www.home-assistant.io/integrations/knx",
"requirements": ["xknx==1.2.1"], "requirements": ["xknx==2.0.0"],
"codeowners": ["@Julius2342", "@farmio", "@marvin-w"], "codeowners": ["@Julius2342", "@farmio", "@marvin-w"],
"quality_scale": "platinum", "quality_scale": "platinum",
"iot_class": "local_push", "iot_class": "local_push",

View file

@ -2580,7 +2580,7 @@ xboxapi==2.0.1
xiaomi-ble==0.12.2 xiaomi-ble==0.12.2
# homeassistant.components.knx # homeassistant.components.knx
xknx==1.2.1 xknx==2.0.0
# homeassistant.components.bluesound # homeassistant.components.bluesound
# homeassistant.components.fritz # homeassistant.components.fritz

View file

@ -1793,7 +1793,7 @@ xbox-webapi==2.0.11
xiaomi-ble==0.12.2 xiaomi-ble==0.12.2
# homeassistant.components.knx # homeassistant.components.knx
xknx==1.2.1 xknx==2.0.0
# homeassistant.components.bluesound # homeassistant.components.bluesound
# homeassistant.components.fritz # homeassistant.components.fritz

View file

@ -23,6 +23,7 @@ from homeassistant.components.knx.const import (
CONF_KNX_MCAST_PORT, CONF_KNX_MCAST_PORT,
CONF_KNX_RATE_LIMIT, CONF_KNX_RATE_LIMIT,
CONF_KNX_STATE_UPDATER, CONF_KNX_STATE_UPDATER,
DEFAULT_ROUTING_IA,
DOMAIN as KNX_DOMAIN, DOMAIN as KNX_DOMAIN,
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -224,7 +225,7 @@ def mock_config_entry() -> MockConfigEntry:
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS, CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
}, },
) )

View file

@ -2,7 +2,7 @@
from unittest.mock import patch from unittest.mock import patch
import pytest import pytest
from xknx.exceptions.exception import InvalidSignature from xknx.exceptions.exception import InvalidSecureConfiguration
from xknx.io import DEFAULT_MCAST_GRP, DEFAULT_MCAST_PORT from xknx.io import DEFAULT_MCAST_GRP, DEFAULT_MCAST_PORT
from xknx.io.gateway_scanner import GatewayDescriptor from xknx.io.gateway_scanner import GatewayDescriptor
@ -212,7 +212,7 @@ async def test_routing_setup_advanced(hass: HomeAssistant) -> None:
CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING, CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING,
CONF_HOST: "192.168.0.1", CONF_HOST: "192.168.0.1",
CONF_PORT: 3675, CONF_PORT: 3675,
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250", CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
CONF_KNX_ROUTE_BACK: False, CONF_KNX_ROUTE_BACK: False,
CONF_KNX_LOCAL_IP: None, CONF_KNX_LOCAL_IP: None,
}, },
@ -229,7 +229,7 @@ async def test_routing_setup_advanced(hass: HomeAssistant) -> None:
CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING_TCP, CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING_TCP,
CONF_HOST: "192.168.0.1", CONF_HOST: "192.168.0.1",
CONF_PORT: 3675, CONF_PORT: 3675,
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250", CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
CONF_KNX_ROUTE_BACK: False, CONF_KNX_ROUTE_BACK: False,
CONF_KNX_LOCAL_IP: None, CONF_KNX_LOCAL_IP: None,
}, },
@ -246,7 +246,7 @@ async def test_routing_setup_advanced(hass: HomeAssistant) -> None:
CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING, CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING,
CONF_HOST: "192.168.0.1", CONF_HOST: "192.168.0.1",
CONF_PORT: 3675, CONF_PORT: 3675,
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250", CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
CONF_KNX_ROUTE_BACK: True, CONF_KNX_ROUTE_BACK: True,
CONF_KNX_LOCAL_IP: None, CONF_KNX_LOCAL_IP: None,
}, },
@ -374,7 +374,7 @@ async def test_tunneling_setup_for_local_ip(hass: HomeAssistant) -> None:
CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING, CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING,
CONF_HOST: "192.168.0.2", CONF_HOST: "192.168.0.2",
CONF_PORT: 3675, CONF_PORT: 3675,
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250", CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
CONF_KNX_ROUTE_BACK: False, CONF_KNX_ROUTE_BACK: False,
CONF_KNX_LOCAL_IP: "192.168.1.112", CONF_KNX_LOCAL_IP: "192.168.1.112",
} }
@ -420,7 +420,7 @@ async def test_tunneling_setup_for_multiple_found_gateways(hass: HomeAssistant)
CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING, CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING,
CONF_HOST: "192.168.0.1", CONF_HOST: "192.168.0.1",
CONF_PORT: 3675, CONF_PORT: 3675,
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250", CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
CONF_KNX_ROUTE_BACK: False, CONF_KNX_ROUTE_BACK: False,
CONF_KNX_LOCAL_IP: None, CONF_KNX_LOCAL_IP: None,
} }
@ -625,7 +625,7 @@ async def test_configure_secure_tunnel_manual(hass: HomeAssistant):
CONF_KNX_SECURE_DEVICE_AUTHENTICATION: "device_auth", CONF_KNX_SECURE_DEVICE_AUTHENTICATION: "device_auth",
CONF_HOST: "192.168.0.1", CONF_HOST: "192.168.0.1",
CONF_PORT: 3675, CONF_PORT: 3675,
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250", CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
CONF_KNX_ROUTE_BACK: False, CONF_KNX_ROUTE_BACK: False,
CONF_KNX_LOCAL_IP: None, CONF_KNX_LOCAL_IP: None,
} }
@ -649,7 +649,7 @@ async def test_configure_secure_knxkeys(hass: HomeAssistant):
"homeassistant.components.knx.async_setup_entry", "homeassistant.components.knx.async_setup_entry",
return_value=True, return_value=True,
) as mock_setup_entry, patch( ) as mock_setup_entry, patch(
"homeassistant.components.knx.config_flow.load_key_ring", return_value=True "homeassistant.components.knx.config_flow.load_keyring", return_value=True
): ):
secure_knxkeys = await hass.config_entries.flow.async_configure( secure_knxkeys = await hass.config_entries.flow.async_configure(
result["flow_id"], result["flow_id"],
@ -667,7 +667,7 @@ async def test_configure_secure_knxkeys(hass: HomeAssistant):
CONF_KNX_KNXKEY_PASSWORD: "password", CONF_KNX_KNXKEY_PASSWORD: "password",
CONF_HOST: "192.168.0.1", CONF_HOST: "192.168.0.1",
CONF_PORT: 3675, CONF_PORT: 3675,
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250", CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
CONF_KNX_ROUTE_BACK: False, CONF_KNX_ROUTE_BACK: False,
CONF_KNX_LOCAL_IP: None, CONF_KNX_LOCAL_IP: None,
} }
@ -688,7 +688,7 @@ async def test_configure_secure_knxkeys_file_not_found(hass: HomeAssistant):
assert not result["errors"] assert not result["errors"]
with patch( with patch(
"homeassistant.components.knx.config_flow.load_key_ring", "homeassistant.components.knx.config_flow.load_keyring",
side_effect=FileNotFoundError(), side_effect=FileNotFoundError(),
): ):
secure_knxkeys = await hass.config_entries.flow.async_configure( secure_knxkeys = await hass.config_entries.flow.async_configure(
@ -717,8 +717,8 @@ async def test_configure_secure_knxkeys_invalid_signature(hass: HomeAssistant):
assert not result["errors"] assert not result["errors"]
with patch( with patch(
"homeassistant.components.knx.config_flow.load_key_ring", "homeassistant.components.knx.config_flow.load_keyring",
side_effect=InvalidSignature(), side_effect=InvalidSecureConfiguration(),
): ):
secure_knxkeys = await hass.config_entries.flow.async_configure( secure_knxkeys = await hass.config_entries.flow.async_configure(
result["flow_id"], result["flow_id"],
@ -773,13 +773,13 @@ async def test_options_flow_connection_type(
assert mock_config_entry.data == { assert mock_config_entry.data == {
CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING, CONF_KNX_CONNECTION_TYPE: CONF_KNX_TUNNELING,
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250", CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
CONF_HOST: "192.168.0.1", CONF_HOST: "192.168.0.1",
CONF_PORT: 3675, CONF_PORT: 3675,
CONF_KNX_LOCAL_IP: None, CONF_KNX_LOCAL_IP: None,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_RATE_LIMIT: 20, CONF_KNX_RATE_LIMIT: 0,
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_ROUTE_BACK: False, CONF_KNX_ROUTE_BACK: False,
} }
@ -804,7 +804,7 @@ async def test_options_communication_settings(
result["flow_id"], result["flow_id"],
user_input={ user_input={
CONF_KNX_STATE_UPDATER: False, CONF_KNX_STATE_UPDATER: False,
CONF_KNX_RATE_LIMIT: 0, CONF_KNX_RATE_LIMIT: 40,
}, },
) )
@ -816,5 +816,5 @@ async def test_options_communication_settings(
**DEFAULT_ENTRY_DATA, **DEFAULT_ENTRY_DATA,
CONF_KNX_CONNECTION_TYPE: CONF_KNX_AUTOMATIC, CONF_KNX_CONNECTION_TYPE: CONF_KNX_AUTOMATIC,
CONF_KNX_STATE_UPDATER: False, CONF_KNX_STATE_UPDATER: False,
CONF_KNX_RATE_LIMIT: 0, CONF_KNX_RATE_LIMIT: 40,
} }

View file

@ -2,7 +2,6 @@
from unittest.mock import patch from unittest.mock import patch
from aiohttp import ClientSession from aiohttp import ClientSession
from xknx import XKNX
from xknx.io import DEFAULT_MCAST_GRP, DEFAULT_MCAST_PORT from xknx.io import DEFAULT_MCAST_GRP, DEFAULT_MCAST_PORT
from homeassistant.components.knx.const import ( from homeassistant.components.knx.const import (
@ -18,6 +17,7 @@ from homeassistant.components.knx.const import (
CONF_KNX_SECURE_DEVICE_AUTHENTICATION, CONF_KNX_SECURE_DEVICE_AUTHENTICATION,
CONF_KNX_SECURE_USER_PASSWORD, CONF_KNX_SECURE_USER_PASSWORD,
CONF_KNX_STATE_UPDATER, CONF_KNX_STATE_UPDATER,
DEFAULT_ROUTING_IA,
DOMAIN as KNX_DOMAIN, DOMAIN as KNX_DOMAIN,
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -45,10 +45,10 @@ async def test_diagnostics(
) == { ) == {
"config_entry_data": { "config_entry_data": {
"connection_type": "automatic", "connection_type": "automatic",
"individual_address": "15.15.250", "individual_address": "0.0.240",
"multicast_group": "224.0.23.12", "multicast_group": "224.0.23.12",
"multicast_port": 3671, "multicast_port": 3671,
"rate_limit": 20, "rate_limit": 0,
"state_updater": True, "state_updater": True,
}, },
"configuration_error": None, "configuration_error": None,
@ -77,10 +77,10 @@ async def test_diagnostic_config_error(
) == { ) == {
"config_entry_data": { "config_entry_data": {
"connection_type": "automatic", "connection_type": "automatic",
"individual_address": "15.15.250", "individual_address": "0.0.240",
"multicast_group": "224.0.23.12", "multicast_group": "224.0.23.12",
"multicast_port": 3671, "multicast_port": 3671,
"rate_limit": 20, "rate_limit": 0,
"state_updater": True, "state_updater": True,
}, },
"configuration_error": "extra keys not allowed @ data['knx']['wrong_key']", "configuration_error": "extra keys not allowed @ data['knx']['wrong_key']",
@ -103,7 +103,7 @@ async def test_diagnostic_redact(
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS, CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
CONF_KNX_KNXKEY_PASSWORD: "password", CONF_KNX_KNXKEY_PASSWORD: "password",
CONF_KNX_SECURE_USER_PASSWORD: "user_password", CONF_KNX_SECURE_USER_PASSWORD: "user_password",
CONF_KNX_SECURE_DEVICE_AUTHENTICATION: "device_authentication", CONF_KNX_SECURE_DEVICE_AUTHENTICATION: "device_authentication",
@ -120,10 +120,10 @@ async def test_diagnostic_redact(
) == { ) == {
"config_entry_data": { "config_entry_data": {
"connection_type": "automatic", "connection_type": "automatic",
"individual_address": "15.15.250", "individual_address": "0.0.240",
"multicast_group": "224.0.23.12", "multicast_group": "224.0.23.12",
"multicast_port": 3671, "multicast_port": 3671,
"rate_limit": 20, "rate_limit": 0,
"state_updater": True, "state_updater": True,
"knxkeys_password": "**REDACTED**", "knxkeys_password": "**REDACTED**",
"user_password": "**REDACTED**", "user_password": "**REDACTED**",

View file

@ -1,6 +1,5 @@
"""Test KNX init.""" """Test KNX init."""
import pytest import pytest
from xknx import XKNX
from xknx.io import ( from xknx.io import (
DEFAULT_MCAST_GRP, DEFAULT_MCAST_GRP,
DEFAULT_MCAST_PORT, DEFAULT_MCAST_PORT,
@ -9,6 +8,7 @@ from xknx.io import (
SecureConfig, SecureConfig,
) )
from homeassistant.components.knx.config_flow import DEFAULT_ROUTING_IA
from homeassistant.components.knx.const import ( from homeassistant.components.knx.const import (
CONF_KNX_AUTOMATIC, CONF_KNX_AUTOMATIC,
CONF_KNX_CONNECTION_TYPE, CONF_KNX_CONNECTION_TYPE,
@ -51,7 +51,7 @@ from tests.common import MockConfigEntry
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS, CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
}, },
ConnectionConfig(threaded=True), ConnectionConfig(threaded=True),
), ),
@ -63,10 +63,13 @@ from tests.common import MockConfigEntry
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS, CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
}, },
ConnectionConfig( ConnectionConfig(
connection_type=ConnectionType.ROUTING, connection_type=ConnectionType.ROUTING,
individual_address=DEFAULT_ROUTING_IA,
multicast_group=DEFAULT_MCAST_GRP,
multicast_port=DEFAULT_MCAST_PORT,
local_ip="192.168.1.1", local_ip="192.168.1.1",
threaded=True, threaded=True,
), ),
@ -82,7 +85,7 @@ from tests.common import MockConfigEntry
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS, CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
}, },
ConnectionConfig( ConnectionConfig(
connection_type=ConnectionType.TUNNELING, connection_type=ConnectionType.TUNNELING,
@ -103,7 +106,7 @@ from tests.common import MockConfigEntry
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS, CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
}, },
ConnectionConfig( ConnectionConfig(
connection_type=ConnectionType.TUNNELING_TCP, connection_type=ConnectionType.TUNNELING_TCP,
@ -122,7 +125,7 @@ from tests.common import MockConfigEntry
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS, CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
CONF_KNX_KNXKEY_FILENAME: "knx/testcase.knxkeys", CONF_KNX_KNXKEY_FILENAME: "knx/testcase.knxkeys",
CONF_KNX_KNXKEY_PASSWORD: "password", CONF_KNX_KNXKEY_PASSWORD: "password",
}, },
@ -146,7 +149,7 @@ from tests.common import MockConfigEntry
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER, CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT, CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP, CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS, CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
CONF_KNX_SECURE_USER_ID: 2, CONF_KNX_SECURE_USER_ID: 2,
CONF_KNX_SECURE_USER_PASSWORD: "password", CONF_KNX_SECURE_USER_PASSWORD: "password",
CONF_KNX_SECURE_DEVICE_AUTHENTICATION: "device_auth", CONF_KNX_SECURE_DEVICE_AUTHENTICATION: "device_auth",