Skip to content

Commit

Permalink
Merge pull request #253 from mdeweerd/dev
Browse files Browse the repository at this point in the history
Fix for getting the gateway.
  • Loading branch information
mdeweerd committed Aug 9, 2024
2 parents 3b7cde8 + ade6fd0 commit f66969f
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 10 deletions.
13 changes: 5 additions & 8 deletions custom_components/zha_toolkit/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import importlib
import logging
from typing import Optional
from typing import Any, Optional

import homeassistant.helpers.config_validation as cv
import voluptuous as vol
Expand Down Expand Up @@ -677,11 +677,8 @@ async def toolkit_service(service):
global LOADED_VERSION # pylint: disable=global-variable-not-assigned

zha = hass_ref.data["zha"]
zha_gw: Optional[ZHAGateway] = None
if isinstance(zha, dict):
zha_gw = zha.get("zha_gateway", None)
else:
zha_gw = zha.gateway
zha_gw: Optional[ZHAGateway] = u.get_zha_gateway(hass)
zha_gw_hass: Any = u.get_zha_gateway_hass(hass)

if zha_gw is None:
LOGGER.error(
Expand Down Expand Up @@ -728,7 +725,7 @@ async def toolkit_service(service):

app = zha_gw.application_controller # type: ignore

ieee = await u.get_ieee(app, zha_gw, ieee_str)
ieee = await u.get_ieee(app, zha_gw_hass, ieee_str)

slickParams = params.copy()
for k in params:
Expand Down Expand Up @@ -786,7 +783,7 @@ async def toolkit_service(service):
try:
handler_result = await handler(
zha_gw.application_controller, # type: ignore
zha_gw,
zha_gw_hass,
ieee,
cmd,
cmd_data,
Expand Down
2 changes: 1 addition & 1 deletion custom_components/zha_toolkit/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"domain": "zha_toolkit",
"name": "\ud83e\uddf0 ZHA Toolkit",
"name": "ZHA \ud83e\uddf0 Toolkit",
"codeowners": ["@mdeweerd"],
"dependencies": ["zha"],
"documentation": "https://github.com/mdeweerd/zha-toolkit",
Expand Down
31 changes: 31 additions & 0 deletions custom_components/zha_toolkit/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,20 @@

import aiofiles
import zigpy
from homeassistant.core import HomeAssistant

try:
from homeassistant.components.zha import Gateway as ZHAGateway
except ImportError:
from homeassistant.components.zha.core.gateway import ZHAGateway

from homeassistant.components import zha

try:
from homeassistant.components.zha import helpers as zha_helpers
except ImportError:
zha_helpers = None

from homeassistant.util import dt as dt_util
from pkg_resources import get_distribution, parse_version
from zigpy import types as t
Expand Down Expand Up @@ -50,6 +58,29 @@
MANIFEST: dict[str, str | list[str]] = {}


def get_zha_gateway(hass: HomeAssistant) -> ZHAGateway:
"""Get the ZHA gateway object."""
if parse_version(HA_VERSION) >= parse_version("2024.8"):
return zha_helpers.get_zha_gateway(hass)
if isinstance(zha, dict):
return zha.get("zha_gateway", None)
return zha.gateway


def get_zha_gateway_hass(
hass: HomeAssistant,
) -> ZHAGateway | zha_helpers.ZHAGatewayProxy:
"""
Get the ZHA gateway proxy object.
Fallback to the gateway object prior to 2024.8 which still has an attached
HASS object.
"""
if parse_version(HA_VERSION) >= parse_version("2024.8"):
return zha_helpers.get_zha_gateway_proxy(hass)
return get_zha_gateway(hass)


def getHaVersion() -> str:
"""Get HA Version"""
return HA_VERSION
Expand Down
2 changes: 1 addition & 1 deletion hacs.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
"filename": "zha-toolkit.zip",
"render_readme": true,
"persistent_directory": "local",
"homeassistant": "2021.1"
"homeassistant": "2024.8"
}

0 comments on commit f66969f

Please sign in to comment.