Update xknx to 2.0.0 (#82709)
This commit is contained in:
parent
6f1208b07f
commit
daf56e92a0
10 changed files with 52 additions and 45 deletions
|
@ -362,11 +362,8 @@ class KNXModule:
|
|||
def init_xknx(self) -> None:
|
||||
"""Initialize XKNX object."""
|
||||
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(),
|
||||
rate_limit=self.entry.data[CONF_KNX_RATE_LIMIT],
|
||||
state_updater=self.entry.data[CONF_KNX_STATE_UPDATER],
|
||||
)
|
||||
|
||||
|
@ -384,6 +381,9 @@ class KNXModule:
|
|||
if _conn_type == CONF_KNX_ROUTING:
|
||||
return ConnectionConfig(
|
||||
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),
|
||||
auto_reconnect=True,
|
||||
threaded=True,
|
||||
|
|
|
@ -6,10 +6,10 @@ from typing import Any, Final
|
|||
|
||||
import voluptuous as vol
|
||||
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.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.const import CONF_HOST, CONF_PORT
|
||||
|
@ -41,6 +41,7 @@ from .const import (
|
|||
CONF_KNX_TUNNELING_TCP,
|
||||
CONF_KNX_TUNNELING_TCP_SECURE,
|
||||
CONST_KNX_STORAGE_KEY,
|
||||
DEFAULT_ROUTING_IA,
|
||||
DOMAIN,
|
||||
KNXConfigEntryData,
|
||||
)
|
||||
|
@ -50,7 +51,7 @@ CONF_KNX_GATEWAY: Final = "gateway"
|
|||
CONF_MAX_RATE_LIMIT: Final = 60
|
||||
|
||||
DEFAULT_ENTRY_DATA = KNXConfigEntryData(
|
||||
individual_address=XKNX.DEFAULT_ADDRESS,
|
||||
individual_address=DEFAULT_ROUTING_IA,
|
||||
local_ip=None,
|
||||
multicast_group=DEFAULT_MCAST_GRP,
|
||||
multicast_port=DEFAULT_MCAST_PORT,
|
||||
|
@ -347,13 +348,13 @@ class KNXCommonFlow(ABC, FlowHandler):
|
|||
assert self._tunneling_config
|
||||
storage_key = CONST_KNX_STORAGE_KEY + user_input[CONF_KNX_KNXKEY_FILENAME]
|
||||
try:
|
||||
load_key_ring(
|
||||
await load_keyring(
|
||||
path=self.hass.config.path(STORAGE_DIR, storage_key),
|
||||
password=user_input[CONF_KNX_KNXKEY_PASSWORD],
|
||||
)
|
||||
except FileNotFoundError:
|
||||
errors[CONF_KNX_KNXKEY_FILENAME] = "file_not_found"
|
||||
except InvalidSignature:
|
||||
except InvalidSecureConfiguration:
|
||||
errors[CONF_KNX_KNXKEY_PASSWORD] = "invalid_signature"
|
||||
|
||||
if not errors:
|
||||
|
|
|
@ -41,7 +41,9 @@ CONF_KNX_RATE_LIMIT: Final = "rate_limit"
|
|||
CONF_KNX_ROUTE_BACK: Final = "route_back"
|
||||
CONF_KNX_STATE_UPDATER: Final = "state_updater"
|
||||
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
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"name": "KNX",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/knx",
|
||||
"requirements": ["xknx==1.2.1"],
|
||||
"requirements": ["xknx==2.0.0"],
|
||||
"codeowners": ["@Julius2342", "@farmio", "@marvin-w"],
|
||||
"quality_scale": "platinum",
|
||||
"iot_class": "local_push",
|
||||
|
|
|
@ -2580,7 +2580,7 @@ xboxapi==2.0.1
|
|||
xiaomi-ble==0.12.2
|
||||
|
||||
# homeassistant.components.knx
|
||||
xknx==1.2.1
|
||||
xknx==2.0.0
|
||||
|
||||
# homeassistant.components.bluesound
|
||||
# homeassistant.components.fritz
|
||||
|
|
|
@ -1793,7 +1793,7 @@ xbox-webapi==2.0.11
|
|||
xiaomi-ble==0.12.2
|
||||
|
||||
# homeassistant.components.knx
|
||||
xknx==1.2.1
|
||||
xknx==2.0.0
|
||||
|
||||
# homeassistant.components.bluesound
|
||||
# homeassistant.components.fritz
|
||||
|
|
|
@ -23,6 +23,7 @@ from homeassistant.components.knx.const import (
|
|||
CONF_KNX_MCAST_PORT,
|
||||
CONF_KNX_RATE_LIMIT,
|
||||
CONF_KNX_STATE_UPDATER,
|
||||
DEFAULT_ROUTING_IA,
|
||||
DOMAIN as KNX_DOMAIN,
|
||||
)
|
||||
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_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
from unittest.mock import patch
|
||||
|
||||
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.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_HOST: "192.168.0.1",
|
||||
CONF_PORT: 3675,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250",
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
|
||||
CONF_KNX_ROUTE_BACK: False,
|
||||
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_HOST: "192.168.0.1",
|
||||
CONF_PORT: 3675,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250",
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
|
||||
CONF_KNX_ROUTE_BACK: False,
|
||||
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_HOST: "192.168.0.1",
|
||||
CONF_PORT: 3675,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250",
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
|
||||
CONF_KNX_ROUTE_BACK: True,
|
||||
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_HOST: "192.168.0.2",
|
||||
CONF_PORT: 3675,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250",
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
|
||||
CONF_KNX_ROUTE_BACK: False,
|
||||
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_HOST: "192.168.0.1",
|
||||
CONF_PORT: 3675,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250",
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
|
||||
CONF_KNX_ROUTE_BACK: False,
|
||||
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_HOST: "192.168.0.1",
|
||||
CONF_PORT: 3675,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250",
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
|
||||
CONF_KNX_ROUTE_BACK: False,
|
||||
CONF_KNX_LOCAL_IP: None,
|
||||
}
|
||||
|
@ -649,7 +649,7 @@ async def test_configure_secure_knxkeys(hass: HomeAssistant):
|
|||
"homeassistant.components.knx.async_setup_entry",
|
||||
return_value=True,
|
||||
) 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(
|
||||
result["flow_id"],
|
||||
|
@ -667,7 +667,7 @@ async def test_configure_secure_knxkeys(hass: HomeAssistant):
|
|||
CONF_KNX_KNXKEY_PASSWORD: "password",
|
||||
CONF_HOST: "192.168.0.1",
|
||||
CONF_PORT: 3675,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "15.15.250",
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: "0.0.240",
|
||||
CONF_KNX_ROUTE_BACK: False,
|
||||
CONF_KNX_LOCAL_IP: None,
|
||||
}
|
||||
|
@ -688,7 +688,7 @@ async def test_configure_secure_knxkeys_file_not_found(hass: HomeAssistant):
|
|||
assert not result["errors"]
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.knx.config_flow.load_key_ring",
|
||||
"homeassistant.components.knx.config_flow.load_keyring",
|
||||
side_effect=FileNotFoundError(),
|
||||
):
|
||||
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"]
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.knx.config_flow.load_key_ring",
|
||||
side_effect=InvalidSignature(),
|
||||
"homeassistant.components.knx.config_flow.load_keyring",
|
||||
side_effect=InvalidSecureConfiguration(),
|
||||
):
|
||||
secure_knxkeys = await hass.config_entries.flow.async_configure(
|
||||
result["flow_id"],
|
||||
|
@ -773,13 +773,13 @@ async def test_options_flow_connection_type(
|
|||
|
||||
assert mock_config_entry.data == {
|
||||
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_PORT: 3675,
|
||||
CONF_KNX_LOCAL_IP: None,
|
||||
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
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_ROUTE_BACK: False,
|
||||
}
|
||||
|
@ -804,7 +804,7 @@ async def test_options_communication_settings(
|
|||
result["flow_id"],
|
||||
user_input={
|
||||
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,
|
||||
CONF_KNX_CONNECTION_TYPE: CONF_KNX_AUTOMATIC,
|
||||
CONF_KNX_STATE_UPDATER: False,
|
||||
CONF_KNX_RATE_LIMIT: 0,
|
||||
CONF_KNX_RATE_LIMIT: 40,
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
from unittest.mock import patch
|
||||
|
||||
from aiohttp import ClientSession
|
||||
from xknx import XKNX
|
||||
from xknx.io import DEFAULT_MCAST_GRP, DEFAULT_MCAST_PORT
|
||||
|
||||
from homeassistant.components.knx.const import (
|
||||
|
@ -18,6 +17,7 @@ from homeassistant.components.knx.const import (
|
|||
CONF_KNX_SECURE_DEVICE_AUTHENTICATION,
|
||||
CONF_KNX_SECURE_USER_PASSWORD,
|
||||
CONF_KNX_STATE_UPDATER,
|
||||
DEFAULT_ROUTING_IA,
|
||||
DOMAIN as KNX_DOMAIN,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
@ -45,10 +45,10 @@ async def test_diagnostics(
|
|||
) == {
|
||||
"config_entry_data": {
|
||||
"connection_type": "automatic",
|
||||
"individual_address": "15.15.250",
|
||||
"individual_address": "0.0.240",
|
||||
"multicast_group": "224.0.23.12",
|
||||
"multicast_port": 3671,
|
||||
"rate_limit": 20,
|
||||
"rate_limit": 0,
|
||||
"state_updater": True,
|
||||
},
|
||||
"configuration_error": None,
|
||||
|
@ -77,10 +77,10 @@ async def test_diagnostic_config_error(
|
|||
) == {
|
||||
"config_entry_data": {
|
||||
"connection_type": "automatic",
|
||||
"individual_address": "15.15.250",
|
||||
"individual_address": "0.0.240",
|
||||
"multicast_group": "224.0.23.12",
|
||||
"multicast_port": 3671,
|
||||
"rate_limit": 20,
|
||||
"rate_limit": 0,
|
||||
"state_updater": True,
|
||||
},
|
||||
"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_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
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_SECURE_USER_PASSWORD: "user_password",
|
||||
CONF_KNX_SECURE_DEVICE_AUTHENTICATION: "device_authentication",
|
||||
|
@ -120,10 +120,10 @@ async def test_diagnostic_redact(
|
|||
) == {
|
||||
"config_entry_data": {
|
||||
"connection_type": "automatic",
|
||||
"individual_address": "15.15.250",
|
||||
"individual_address": "0.0.240",
|
||||
"multicast_group": "224.0.23.12",
|
||||
"multicast_port": 3671,
|
||||
"rate_limit": 20,
|
||||
"rate_limit": 0,
|
||||
"state_updater": True,
|
||||
"knxkeys_password": "**REDACTED**",
|
||||
"user_password": "**REDACTED**",
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
"""Test KNX init."""
|
||||
import pytest
|
||||
from xknx import XKNX
|
||||
from xknx.io import (
|
||||
DEFAULT_MCAST_GRP,
|
||||
DEFAULT_MCAST_PORT,
|
||||
|
@ -9,6 +8,7 @@ from xknx.io import (
|
|||
SecureConfig,
|
||||
)
|
||||
|
||||
from homeassistant.components.knx.config_flow import DEFAULT_ROUTING_IA
|
||||
from homeassistant.components.knx.const import (
|
||||
CONF_KNX_AUTOMATIC,
|
||||
CONF_KNX_CONNECTION_TYPE,
|
||||
|
@ -51,7 +51,7 @@ from tests.common import MockConfigEntry
|
|||
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
|
||||
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
|
||||
},
|
||||
ConnectionConfig(threaded=True),
|
||||
),
|
||||
|
@ -63,10 +63,13 @@ from tests.common import MockConfigEntry
|
|||
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
|
||||
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
|
||||
},
|
||||
ConnectionConfig(
|
||||
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",
|
||||
threaded=True,
|
||||
),
|
||||
|
@ -82,7 +85,7 @@ from tests.common import MockConfigEntry
|
|||
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
|
||||
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
|
||||
},
|
||||
ConnectionConfig(
|
||||
connection_type=ConnectionType.TUNNELING,
|
||||
|
@ -103,7 +106,7 @@ from tests.common import MockConfigEntry
|
|||
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
|
||||
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
CONF_KNX_MCAST_GRP: DEFAULT_MCAST_GRP,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: XKNX.DEFAULT_ADDRESS,
|
||||
CONF_KNX_INDIVIDUAL_ADDRESS: DEFAULT_ROUTING_IA,
|
||||
},
|
||||
ConnectionConfig(
|
||||
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_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
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_PASSWORD: "password",
|
||||
},
|
||||
|
@ -146,7 +149,7 @@ from tests.common import MockConfigEntry
|
|||
CONF_KNX_STATE_UPDATER: CONF_KNX_DEFAULT_STATE_UPDATER,
|
||||
CONF_KNX_MCAST_PORT: DEFAULT_MCAST_PORT,
|
||||
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_PASSWORD: "password",
|
||||
CONF_KNX_SECURE_DEVICE_AUTHENTICATION: "device_auth",
|
||||
|
|
Loading…
Add table
Reference in a new issue