diff --git a/CHANGELOG.md b/CHANGELOG.md index 45b1b7b..a77bd47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 0.0.8 - 2026-02-13 +- Improve subentry type detection for HA versions exposing different class names. + ## 0.0.7 - 2026-02-13 - Avoid crashing config entries when subentries are unsupported. diff --git a/README.md b/README.md index 71b7813..56e1537 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,6 @@ Each group address has `invert incoming` and `invert outgoing` toggles to flip K - Advanced DPT mapping options and inversion settings. ## Versioning and Releases -- Current version: 0.0.7 +- Current version: 0.0.8 - `CHANGELOG.md` lists versions with the newest entries at the top. - Release creation is manual and only done when explicitly requested. diff --git a/custom_components/ha_knx_bridge/config_flow.py b/custom_components/ha_knx_bridge/config_flow.py index ace6037..5ddac64 100644 --- a/custom_components/ha_knx_bridge/config_flow.py +++ b/custom_components/ha_knx_bridge/config_flow.py @@ -28,9 +28,6 @@ from .const import ( _LOGGER = logging.getLogger(__name__) KNX_DOMAIN = "knx" -_SUBENTRY_TYPE = getattr( - config_entries, "SubentryType", getattr(config_entries, "ConfigEntrySubentryType", None) -) class HAKnxBridgeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): @@ -68,19 +65,20 @@ class HAKnxBridgeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): @staticmethod @callback def async_get_supported_subentry_types(config_entry): - if _SUBENTRY_TYPE is None: + subentry_type = _get_subentry_type() + if subentry_type is None: _LOGGER.warning( "Config subentries are not supported in this Home Assistant version" ) return {} return { - "binary_sensor": _SUBENTRY_TYPE( + "binary_sensor": subentry_type( name="Binary Sensor Port", flow_class=BinarySensorPortSubentryFlow ), - "switch": _SUBENTRY_TYPE( + "switch": subentry_type( name="Switch Port", flow_class=SwitchPortSubentryFlow ), - "cover": _SUBENTRY_TYPE( + "cover": subentry_type( name="Cover Port", flow_class=CoverPortSubentryFlow ), } @@ -354,3 +352,22 @@ def _invert_in_key(address_key: str) -> str: def _invert_out_key(address_key: str) -> str: return f"{address_key}_{CONF_INVERT_OUTGOING}" + + +def _get_subentry_type(): + candidates = [ + "SubentryType", + "ConfigEntrySubentryType", + "ConfigSubentryType", + "SubEntryType", + ] + for name in candidates: + subentry_type = getattr(config_entries, name, None) + if subentry_type is not None: + return subentry_type + _LOGGER.debug( + "Subentry type class not found on homeassistant.config_entries. " + "Available attrs: %s", + ", ".join(sorted(dir(config_entries))), + ) + return None diff --git a/custom_components/ha_knx_bridge/manifest.json b/custom_components/ha_knx_bridge/manifest.json index e4a3b75..a77defa 100644 --- a/custom_components/ha_knx_bridge/manifest.json +++ b/custom_components/ha_knx_bridge/manifest.json @@ -1,7 +1,7 @@ { "domain": "ha_knx_bridge", "name": "HA KNX Bridge", - "version": "0.0.7", + "version": "0.0.8", "config_flow": true, "documentation": "https://github.com/bahmcloud/HA-KNX-Bridge", "issue_tracker": "https://github.com/bahmcloud/HA-KNX-Bridge/issues",