mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 16:57:10 +00:00
ZHA component rewrite part 1 (#20456)
* rearrange files * add init to module * update imports * update coveragerc * put blank line back... git raw view be damned
This commit is contained in:
parent
e593383b4d
commit
a0b93c2add
@ -448,8 +448,11 @@ omit =
|
|||||||
homeassistant/components/zha/sensor.py
|
homeassistant/components/zha/sensor.py
|
||||||
homeassistant/components/zha/switch.py
|
homeassistant/components/zha/switch.py
|
||||||
homeassistant/components/zha/api.py
|
homeassistant/components/zha/api.py
|
||||||
homeassistant/components/zha/entities/*
|
homeassistant/components/zha/entity.py
|
||||||
homeassistant/components/zha/helpers.py
|
homeassistant/components/zha/device_entity.py
|
||||||
|
homeassistant/components/zha/core/helpers.py
|
||||||
|
homeassistant/components/zha/core/const.py
|
||||||
|
homeassistant/components/zha/core/listeners.py
|
||||||
homeassistant/components/*/zha.py
|
homeassistant/components/*/zha.py
|
||||||
|
|
||||||
homeassistant/components/zigbee.py
|
homeassistant/components/zigbee.py
|
||||||
|
@ -22,8 +22,8 @@ from . import config_flow # noqa # pylint: disable=unused-import
|
|||||||
from . import const as zha_const
|
from . import const as zha_const
|
||||||
from .event import ZhaEvent, ZhaRelayEvent
|
from .event import ZhaEvent, ZhaRelayEvent
|
||||||
from . import api
|
from . import api
|
||||||
from .helpers import convert_ieee
|
from .core.helpers import convert_ieee
|
||||||
from .entities import ZhaDeviceEntity
|
from .device_entity import ZhaDeviceEntity
|
||||||
from .const import (
|
from .const import (
|
||||||
COMPONENTS, CONF_BAUDRATE, CONF_DATABASE, CONF_DEVICE_CONFIG,
|
COMPONENTS, CONF_BAUDRATE, CONF_DATABASE, CONF_DEVICE_CONFIG,
|
||||||
CONF_RADIO_TYPE, CONF_USB_PATH, DATA_ZHA, DATA_ZHA_BRIDGE_ID,
|
CONF_RADIO_TYPE, CONF_USB_PATH, DATA_ZHA, DATA_ZHA_BRIDGE_ID,
|
||||||
|
@ -11,7 +11,7 @@ import voluptuous as vol
|
|||||||
from homeassistant.components import websocket_api
|
from homeassistant.components import websocket_api
|
||||||
from homeassistant.const import ATTR_ENTITY_ID
|
from homeassistant.const import ATTR_ENTITY_ID
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from .entities import ZhaDeviceEntity
|
from .device_entity import ZhaDeviceEntity
|
||||||
from .const import (
|
from .const import (
|
||||||
DOMAIN, ATTR_CLUSTER_ID, ATTR_CLUSTER_TYPE, ATTR_ATTRIBUTE, ATTR_VALUE,
|
DOMAIN, ATTR_CLUSTER_ID, ATTR_CLUSTER_TYPE, ATTR_ATTRIBUTE, ATTR_VALUE,
|
||||||
ATTR_MANUFACTURER, ATTR_COMMAND, ATTR_COMMAND_TYPE, ATTR_ARGS, IN, OUT,
|
ATTR_MANUFACTURER, ATTR_COMMAND, ATTR_COMMAND_TYPE, ATTR_ARGS, IN, OUT,
|
||||||
|
@ -10,11 +10,11 @@ from homeassistant.components.binary_sensor import DOMAIN, BinarySensorDevice
|
|||||||
from homeassistant.const import STATE_ON
|
from homeassistant.const import STATE_ON
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.helpers.restore_state import RestoreEntity
|
from homeassistant.helpers.restore_state import RestoreEntity
|
||||||
from . import helpers
|
from .core import helpers
|
||||||
from .const import (
|
from .core.const import (
|
||||||
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_IMMEDIATE, ZHA_DISCOVERY_NEW)
|
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_IMMEDIATE, ZHA_DISCOVERY_NEW)
|
||||||
from .entities import ZhaEntity
|
from .entity import ZhaEntity
|
||||||
from .entities.listeners import (
|
from .core.listeners import (
|
||||||
OnOffListener, LevelListener
|
OnOffListener, LevelListener
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -6,9 +6,9 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant import config_entries
|
from homeassistant import config_entries
|
||||||
|
|
||||||
from .const import (
|
from .core.const import (
|
||||||
CONF_RADIO_TYPE, CONF_USB_PATH, DEFAULT_DATABASE_NAME, DOMAIN, RadioType)
|
CONF_RADIO_TYPE, CONF_USB_PATH, DEFAULT_DATABASE_NAME, DOMAIN, RadioType)
|
||||||
from .helpers import check_zigpy_connection
|
from .core.helpers import check_zigpy_connection
|
||||||
|
|
||||||
|
|
||||||
@config_entries.HANDLERS.register(DOMAIN)
|
@config_entries.HANDLERS.register(DOMAIN)
|
||||||
|
@ -1,95 +1,8 @@
|
|||||||
"""All constants related to the ZHA component."""
|
"""
|
||||||
import enum
|
Backwards compatible constants bridge.
|
||||||
|
|
||||||
DOMAIN = 'zha'
|
For more details on this platform, please refer to the documentation
|
||||||
|
at https://home-assistant.io/components/fan.zha/
|
||||||
BAUD_RATES = [
|
"""
|
||||||
2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000, 256000
|
# pylint: disable=W0614,W0401
|
||||||
]
|
from .core.const import * # noqa: F401,F403
|
||||||
|
|
||||||
DATA_ZHA = 'zha'
|
|
||||||
DATA_ZHA_CONFIG = 'config'
|
|
||||||
DATA_ZHA_BRIDGE_ID = 'zha_bridge_id'
|
|
||||||
DATA_ZHA_RADIO = 'zha_radio'
|
|
||||||
DATA_ZHA_DISPATCHERS = 'zha_dispatchers'
|
|
||||||
DATA_ZHA_CORE_COMPONENT = 'zha_core_component'
|
|
||||||
DATA_ZHA_CORE_EVENTS = 'zha_core_events'
|
|
||||||
ZHA_DISCOVERY_NEW = 'zha_discovery_new_{}'
|
|
||||||
|
|
||||||
COMPONENTS = [
|
|
||||||
'binary_sensor',
|
|
||||||
'fan',
|
|
||||||
'light',
|
|
||||||
'sensor',
|
|
||||||
'switch',
|
|
||||||
]
|
|
||||||
|
|
||||||
CONF_BAUDRATE = 'baudrate'
|
|
||||||
CONF_DATABASE = 'database_path'
|
|
||||||
CONF_DEVICE_CONFIG = 'device_config'
|
|
||||||
CONF_RADIO_TYPE = 'radio_type'
|
|
||||||
CONF_USB_PATH = 'usb_path'
|
|
||||||
DATA_DEVICE_CONFIG = 'zha_device_config'
|
|
||||||
ENABLE_QUIRKS = 'enable_quirks'
|
|
||||||
|
|
||||||
DEFAULT_RADIO_TYPE = 'ezsp'
|
|
||||||
DEFAULT_BAUDRATE = 57600
|
|
||||||
DEFAULT_DATABASE_NAME = 'zigbee.db'
|
|
||||||
|
|
||||||
ATTR_CLUSTER_ID = 'cluster_id'
|
|
||||||
ATTR_CLUSTER_TYPE = 'cluster_type'
|
|
||||||
ATTR_ATTRIBUTE = 'attribute'
|
|
||||||
ATTR_VALUE = 'value'
|
|
||||||
ATTR_MANUFACTURER = 'manufacturer'
|
|
||||||
ATTR_COMMAND = 'command'
|
|
||||||
ATTR_COMMAND_TYPE = 'command_type'
|
|
||||||
ATTR_ARGS = 'args'
|
|
||||||
|
|
||||||
IN = 'in'
|
|
||||||
OUT = 'out'
|
|
||||||
CLIENT_COMMANDS = 'client_commands'
|
|
||||||
SERVER_COMMANDS = 'server_commands'
|
|
||||||
SERVER = 'server'
|
|
||||||
|
|
||||||
|
|
||||||
class RadioType(enum.Enum):
|
|
||||||
"""Possible options for radio type."""
|
|
||||||
|
|
||||||
ezsp = 'ezsp'
|
|
||||||
xbee = 'xbee'
|
|
||||||
deconz = 'deconz'
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def list(cls):
|
|
||||||
"""Return list of enum's values."""
|
|
||||||
return [e.value for e in RadioType]
|
|
||||||
|
|
||||||
|
|
||||||
DISCOVERY_KEY = 'zha_discovery_info'
|
|
||||||
DEVICE_CLASS = {}
|
|
||||||
SINGLE_INPUT_CLUSTER_DEVICE_CLASS = {}
|
|
||||||
SINGLE_OUTPUT_CLUSTER_DEVICE_CLASS = {}
|
|
||||||
CUSTOM_CLUSTER_MAPPINGS = {}
|
|
||||||
COMPONENT_CLUSTERS = {}
|
|
||||||
EVENTABLE_CLUSTERS = []
|
|
||||||
|
|
||||||
REPORT_CONFIG_MAX_INT = 900
|
|
||||||
REPORT_CONFIG_MAX_INT_BATTERY_SAVE = 10800
|
|
||||||
REPORT_CONFIG_MIN_INT = 30
|
|
||||||
REPORT_CONFIG_MIN_INT_ASAP = 1
|
|
||||||
REPORT_CONFIG_MIN_INT_IMMEDIATE = 0
|
|
||||||
REPORT_CONFIG_MIN_INT_OP = 5
|
|
||||||
REPORT_CONFIG_MIN_INT_BATTERY_SAVE = 3600
|
|
||||||
REPORT_CONFIG_RPT_CHANGE = 1
|
|
||||||
REPORT_CONFIG_DEFAULT = (REPORT_CONFIG_MIN_INT, REPORT_CONFIG_MAX_INT,
|
|
||||||
REPORT_CONFIG_RPT_CHANGE)
|
|
||||||
REPORT_CONFIG_ASAP = (REPORT_CONFIG_MIN_INT_ASAP, REPORT_CONFIG_MAX_INT,
|
|
||||||
REPORT_CONFIG_RPT_CHANGE)
|
|
||||||
REPORT_CONFIG_BATTERY_SAVE = (REPORT_CONFIG_MIN_INT_BATTERY_SAVE,
|
|
||||||
REPORT_CONFIG_MAX_INT,
|
|
||||||
REPORT_CONFIG_RPT_CHANGE)
|
|
||||||
REPORT_CONFIG_IMMEDIATE = (REPORT_CONFIG_MIN_INT_IMMEDIATE,
|
|
||||||
REPORT_CONFIG_MAX_INT,
|
|
||||||
REPORT_CONFIG_RPT_CHANGE)
|
|
||||||
REPORT_CONFIG_OP = (REPORT_CONFIG_MIN_INT_OP, REPORT_CONFIG_MAX_INT,
|
|
||||||
REPORT_CONFIG_RPT_CHANGE)
|
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
"""
|
"""
|
||||||
Entities for Zigbee Home Automation.
|
Core module for Zigbee Home Automation.
|
||||||
|
|
||||||
For more details about this component, please refer to the documentation at
|
For more details about this component, please refer to the documentation at
|
||||||
https://home-assistant.io/components/zha/
|
https://home-assistant.io/components/zha/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# flake8: noqa
|
|
||||||
from .device_entity import ZhaDeviceEntity
|
|
||||||
from .entity import ZhaEntity
|
|
95
homeassistant/components/zha/core/const.py
Normal file
95
homeassistant/components/zha/core/const.py
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
"""All constants related to the ZHA component."""
|
||||||
|
import enum
|
||||||
|
|
||||||
|
DOMAIN = 'zha'
|
||||||
|
|
||||||
|
BAUD_RATES = [
|
||||||
|
2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000, 256000
|
||||||
|
]
|
||||||
|
|
||||||
|
DATA_ZHA = 'zha'
|
||||||
|
DATA_ZHA_CONFIG = 'config'
|
||||||
|
DATA_ZHA_BRIDGE_ID = 'zha_bridge_id'
|
||||||
|
DATA_ZHA_RADIO = 'zha_radio'
|
||||||
|
DATA_ZHA_DISPATCHERS = 'zha_dispatchers'
|
||||||
|
DATA_ZHA_CORE_COMPONENT = 'zha_core_component'
|
||||||
|
DATA_ZHA_CORE_EVENTS = 'zha_core_events'
|
||||||
|
ZHA_DISCOVERY_NEW = 'zha_discovery_new_{}'
|
||||||
|
|
||||||
|
COMPONENTS = [
|
||||||
|
'binary_sensor',
|
||||||
|
'fan',
|
||||||
|
'light',
|
||||||
|
'sensor',
|
||||||
|
'switch',
|
||||||
|
]
|
||||||
|
|
||||||
|
CONF_BAUDRATE = 'baudrate'
|
||||||
|
CONF_DATABASE = 'database_path'
|
||||||
|
CONF_DEVICE_CONFIG = 'device_config'
|
||||||
|
CONF_RADIO_TYPE = 'radio_type'
|
||||||
|
CONF_USB_PATH = 'usb_path'
|
||||||
|
DATA_DEVICE_CONFIG = 'zha_device_config'
|
||||||
|
ENABLE_QUIRKS = 'enable_quirks'
|
||||||
|
|
||||||
|
DEFAULT_RADIO_TYPE = 'ezsp'
|
||||||
|
DEFAULT_BAUDRATE = 57600
|
||||||
|
DEFAULT_DATABASE_NAME = 'zigbee.db'
|
||||||
|
|
||||||
|
ATTR_CLUSTER_ID = 'cluster_id'
|
||||||
|
ATTR_CLUSTER_TYPE = 'cluster_type'
|
||||||
|
ATTR_ATTRIBUTE = 'attribute'
|
||||||
|
ATTR_VALUE = 'value'
|
||||||
|
ATTR_MANUFACTURER = 'manufacturer'
|
||||||
|
ATTR_COMMAND = 'command'
|
||||||
|
ATTR_COMMAND_TYPE = 'command_type'
|
||||||
|
ATTR_ARGS = 'args'
|
||||||
|
|
||||||
|
IN = 'in'
|
||||||
|
OUT = 'out'
|
||||||
|
CLIENT_COMMANDS = 'client_commands'
|
||||||
|
SERVER_COMMANDS = 'server_commands'
|
||||||
|
SERVER = 'server'
|
||||||
|
|
||||||
|
|
||||||
|
class RadioType(enum.Enum):
|
||||||
|
"""Possible options for radio type."""
|
||||||
|
|
||||||
|
ezsp = 'ezsp'
|
||||||
|
xbee = 'xbee'
|
||||||
|
deconz = 'deconz'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def list(cls):
|
||||||
|
"""Return list of enum's values."""
|
||||||
|
return [e.value for e in RadioType]
|
||||||
|
|
||||||
|
|
||||||
|
DISCOVERY_KEY = 'zha_discovery_info'
|
||||||
|
DEVICE_CLASS = {}
|
||||||
|
SINGLE_INPUT_CLUSTER_DEVICE_CLASS = {}
|
||||||
|
SINGLE_OUTPUT_CLUSTER_DEVICE_CLASS = {}
|
||||||
|
CUSTOM_CLUSTER_MAPPINGS = {}
|
||||||
|
COMPONENT_CLUSTERS = {}
|
||||||
|
EVENTABLE_CLUSTERS = []
|
||||||
|
|
||||||
|
REPORT_CONFIG_MAX_INT = 900
|
||||||
|
REPORT_CONFIG_MAX_INT_BATTERY_SAVE = 10800
|
||||||
|
REPORT_CONFIG_MIN_INT = 30
|
||||||
|
REPORT_CONFIG_MIN_INT_ASAP = 1
|
||||||
|
REPORT_CONFIG_MIN_INT_IMMEDIATE = 0
|
||||||
|
REPORT_CONFIG_MIN_INT_OP = 5
|
||||||
|
REPORT_CONFIG_MIN_INT_BATTERY_SAVE = 3600
|
||||||
|
REPORT_CONFIG_RPT_CHANGE = 1
|
||||||
|
REPORT_CONFIG_DEFAULT = (REPORT_CONFIG_MIN_INT, REPORT_CONFIG_MAX_INT,
|
||||||
|
REPORT_CONFIG_RPT_CHANGE)
|
||||||
|
REPORT_CONFIG_ASAP = (REPORT_CONFIG_MIN_INT_ASAP, REPORT_CONFIG_MAX_INT,
|
||||||
|
REPORT_CONFIG_RPT_CHANGE)
|
||||||
|
REPORT_CONFIG_BATTERY_SAVE = (REPORT_CONFIG_MIN_INT_BATTERY_SAVE,
|
||||||
|
REPORT_CONFIG_MAX_INT,
|
||||||
|
REPORT_CONFIG_RPT_CHANGE)
|
||||||
|
REPORT_CONFIG_IMMEDIATE = (REPORT_CONFIG_MIN_INT_IMMEDIATE,
|
||||||
|
REPORT_CONFIG_MAX_INT,
|
||||||
|
REPORT_CONFIG_RPT_CHANGE)
|
||||||
|
REPORT_CONFIG_OP = (REPORT_CONFIG_MIN_INT_OP, REPORT_CONFIG_MAX_INT,
|
||||||
|
REPORT_CONFIG_RPT_CHANGE)
|
@ -13,11 +13,11 @@ from homeassistant.core import callback
|
|||||||
from homeassistant.helpers import entity
|
from homeassistant.helpers import entity
|
||||||
from homeassistant.helpers.device_registry import CONNECTION_ZIGBEE
|
from homeassistant.helpers.device_registry import CONNECTION_ZIGBEE
|
||||||
from homeassistant.util import slugify
|
from homeassistant.util import slugify
|
||||||
from ..const import (
|
from .core.const import (
|
||||||
DATA_ZHA, DATA_ZHA_BRIDGE_ID, DOMAIN, ATTR_CLUSTER_ID, ATTR_ATTRIBUTE,
|
DATA_ZHA, DATA_ZHA_BRIDGE_ID, DOMAIN, ATTR_CLUSTER_ID, ATTR_ATTRIBUTE,
|
||||||
ATTR_VALUE, ATTR_MANUFACTURER, ATTR_COMMAND, SERVER, ATTR_COMMAND_TYPE,
|
ATTR_VALUE, ATTR_MANUFACTURER, ATTR_COMMAND, SERVER, ATTR_COMMAND_TYPE,
|
||||||
ATTR_ARGS, IN, OUT, CLIENT_COMMANDS, SERVER_COMMANDS)
|
ATTR_ARGS, IN, OUT, CLIENT_COMMANDS, SERVER_COMMANDS)
|
||||||
from ..helpers import bind_configure_reporting
|
from .core.helpers import bind_configure_reporting
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
@ -10,10 +10,10 @@ from homeassistant.components.fan import (
|
|||||||
DOMAIN, SPEED_HIGH, SPEED_LOW, SPEED_MEDIUM, SPEED_OFF, SUPPORT_SET_SPEED,
|
DOMAIN, SPEED_HIGH, SPEED_LOW, SPEED_MEDIUM, SPEED_OFF, SUPPORT_SET_SPEED,
|
||||||
FanEntity)
|
FanEntity)
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from . import helpers
|
from .core import helpers
|
||||||
from .const import (
|
from .core.const import (
|
||||||
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_OP, ZHA_DISCOVERY_NEW)
|
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_OP, ZHA_DISCOVERY_NEW)
|
||||||
from .entities import ZhaEntity
|
from .entity import ZhaEntity
|
||||||
|
|
||||||
DEPENDENCIES = ['zha']
|
DEPENDENCIES = ['zha']
|
||||||
|
|
||||||
|
@ -9,12 +9,12 @@ import logging
|
|||||||
from homeassistant.components import light
|
from homeassistant.components import light
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
import homeassistant.util.color as color_util
|
import homeassistant.util.color as color_util
|
||||||
from . import helpers
|
from .core import helpers
|
||||||
from .const import (
|
from .core.const import (
|
||||||
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_ASAP, REPORT_CONFIG_DEFAULT,
|
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_ASAP, REPORT_CONFIG_DEFAULT,
|
||||||
REPORT_CONFIG_IMMEDIATE, ZHA_DISCOVERY_NEW)
|
REPORT_CONFIG_IMMEDIATE, ZHA_DISCOVERY_NEW)
|
||||||
from .entities import ZhaEntity
|
from .entity import ZhaEntity
|
||||||
from .entities.listeners import (
|
from .core.listeners import (
|
||||||
OnOffListener, LevelListener
|
OnOffListener, LevelListener
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -10,11 +10,11 @@ from homeassistant.components.sensor import DOMAIN
|
|||||||
from homeassistant.const import TEMP_CELSIUS
|
from homeassistant.const import TEMP_CELSIUS
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.util.temperature import convert as convert_temperature
|
from homeassistant.util.temperature import convert as convert_temperature
|
||||||
from . import helpers
|
from .core import helpers
|
||||||
from .const import (
|
from .core.const import (
|
||||||
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_MAX_INT,
|
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_MAX_INT,
|
||||||
REPORT_CONFIG_MIN_INT, REPORT_CONFIG_RPT_CHANGE, ZHA_DISCOVERY_NEW)
|
REPORT_CONFIG_MIN_INT, REPORT_CONFIG_RPT_CHANGE, ZHA_DISCOVERY_NEW)
|
||||||
from .entities import ZhaEntity
|
from .entity import ZhaEntity
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -8,10 +8,10 @@ import logging
|
|||||||
|
|
||||||
from homeassistant.components.switch import DOMAIN, SwitchDevice
|
from homeassistant.components.switch import DOMAIN, SwitchDevice
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from . import helpers
|
from .core import helpers
|
||||||
from .const import (
|
from .core.const import (
|
||||||
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_IMMEDIATE, ZHA_DISCOVERY_NEW)
|
DATA_ZHA, DATA_ZHA_DISPATCHERS, REPORT_CONFIG_IMMEDIATE, ZHA_DISCOVERY_NEW)
|
||||||
from .entities import ZhaEntity
|
from .entity import ZhaEntity
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user