mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Moved try/except-block and moved delay to link_homematic
This commit is contained in:
parent
04748e3ad1
commit
5ca26fc13f
@ -124,16 +124,12 @@ def system_callback_handler(src, *args):
|
|||||||
# add remaining devices to list
|
# add remaining devices to list
|
||||||
devices_not_created = []
|
devices_not_created = []
|
||||||
for dev in key_dict:
|
for dev in key_dict:
|
||||||
try:
|
if dev in HOMEMATIC_DEVICES:
|
||||||
if dev in HOMEMATIC_DEVICES:
|
for hm_element in HOMEMATIC_DEVICES[dev]:
|
||||||
for hm_element in HOMEMATIC_DEVICES[dev]:
|
hm_element.link_homematic()
|
||||||
hm_element.link_homematic()
|
else:
|
||||||
else:
|
devices_not_created.append(dev)
|
||||||
devices_not_created.append(dev)
|
|
||||||
# pylint: disable=broad-except
|
|
||||||
except Exception as err:
|
|
||||||
_LOGGER.error("Failed to setup device %s: %s", str(dev),
|
|
||||||
str(err))
|
|
||||||
# If configuration allows autodetection of devices,
|
# If configuration allows autodetection of devices,
|
||||||
# all devices not configured are added.
|
# all devices not configured are added.
|
||||||
if HOMEMATIC_AUTODETECT and devices_not_created:
|
if HOMEMATIC_AUTODETECT and devices_not_created:
|
||||||
@ -179,16 +175,8 @@ def system_callback_handler(src, *args):
|
|||||||
|
|
||||||
for dev in devices_not_created:
|
for dev in devices_not_created:
|
||||||
if dev in HOMEMATIC_DEVICES:
|
if dev in HOMEMATIC_DEVICES:
|
||||||
try:
|
for hm_element in HOMEMATIC_DEVICES[dev]:
|
||||||
for hm_element in HOMEMATIC_DEVICES[dev]:
|
hm_element.link_homematic(delay=1)
|
||||||
hm_element.link_homematic()
|
|
||||||
# Need to wait, if you have a lot devices we don't
|
|
||||||
# to overload CCU/Homegear
|
|
||||||
time.sleep(1)
|
|
||||||
# pylint: disable=broad-except
|
|
||||||
except Exception as err:
|
|
||||||
_LOGGER.error("Failed link %s with" +
|
|
||||||
"error '%s'", dev, str(err))
|
|
||||||
|
|
||||||
|
|
||||||
def _get_devices(device_type, keys):
|
def _get_devices(device_type, keys):
|
||||||
@ -374,7 +362,7 @@ class HMDevice(Entity):
|
|||||||
|
|
||||||
return attr
|
return attr
|
||||||
|
|
||||||
def link_homematic(self):
|
def link_homematic(self, delay=0):
|
||||||
"""Connect to homematic."""
|
"""Connect to homematic."""
|
||||||
# Does a HMDevice from pyhomematic exist?
|
# Does a HMDevice from pyhomematic exist?
|
||||||
if self._address in HOMEMATIC.devices:
|
if self._address in HOMEMATIC.devices:
|
||||||
@ -385,14 +373,26 @@ class HMDevice(Entity):
|
|||||||
# Check if HM class is okay for HA class
|
# Check if HM class is okay for HA class
|
||||||
_LOGGER.info("Start linking %s to %s", self._address, self._name)
|
_LOGGER.info("Start linking %s to %s", self._address, self._name)
|
||||||
if self._check_hm_to_ha_object():
|
if self._check_hm_to_ha_object():
|
||||||
# Init datapoints of this object
|
try:
|
||||||
self._init_data_struct()
|
# Init datapoints of this object
|
||||||
self._load_init_data_from_hm()
|
self._init_data_struct()
|
||||||
_LOGGER.debug("%s datastruct: %s", self._name, str(self._data))
|
if delay:
|
||||||
|
# We delay / pause loading of data to avoid overloading
|
||||||
|
# of CCU / Homegear when doing auto detection
|
||||||
|
time.sleep(delay)
|
||||||
|
self._load_init_data_from_hm()
|
||||||
|
_LOGGER.debug("%s datastruct: %s",
|
||||||
|
self._name, str(self._data))
|
||||||
|
|
||||||
# Link events from pyhomatic
|
# Link events from pyhomatic
|
||||||
self._subscribe_homematic_events()
|
self._subscribe_homematic_events()
|
||||||
self._available = not self._hmdevice.UNREACH
|
self._available = not self._hmdevice.UNREACH
|
||||||
|
# pylint: disable=broad-except
|
||||||
|
except Exception as err:
|
||||||
|
self._connected = False
|
||||||
|
self._available = False
|
||||||
|
_LOGGER.error("Exception while linking %s: %s" %
|
||||||
|
(self._address, str(err)))
|
||||||
else:
|
else:
|
||||||
_LOGGER.critical("Delink %s object from HM!", self._name)
|
_LOGGER.critical("Delink %s object from HM!", self._name)
|
||||||
self._connected = False
|
self._connected = False
|
||||||
@ -401,6 +401,8 @@ class HMDevice(Entity):
|
|||||||
# Update HA
|
# Update HA
|
||||||
_LOGGER.debug("%s linking down, send update_ha_state", self._name)
|
_LOGGER.debug("%s linking down, send update_ha_state", self._name)
|
||||||
self.update_ha_state()
|
self.update_ha_state()
|
||||||
|
else:
|
||||||
|
_LOGGER.debug("%s not found in HOMEMATIC.devices", self._address)
|
||||||
|
|
||||||
def _hm_event_callback(self, device, caller, attribute, value):
|
def _hm_event_callback(self, device, caller, attribute, value):
|
||||||
"""Handle all pyhomematic device events."""
|
"""Handle all pyhomematic device events."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user