Fix NoEntitySpecifiedError during knx startup (#17366)
* Potential fix for #13699 * removed uneccessary initialization of hass * removed hass from signature
This commit is contained in:
parent
c5905ee5ca
commit
a71cc67efb
6 changed files with 42 additions and 31 deletions
|
@ -69,7 +69,7 @@ def async_add_entities_discovery(hass, discovery_info, async_add_entities):
|
||||||
entities = []
|
entities = []
|
||||||
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
||||||
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
||||||
entities.append(KNXBinarySensor(hass, device))
|
entities.append(KNXBinarySensor(device))
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ def async_add_entities_config(hass, config, async_add_entities):
|
||||||
reset_after=config.get(CONF_RESET_AFTER))
|
reset_after=config.get(CONF_RESET_AFTER))
|
||||||
hass.data[DATA_KNX].xknx.devices.add(binary_sensor)
|
hass.data[DATA_KNX].xknx.devices.add(binary_sensor)
|
||||||
|
|
||||||
entity = KNXBinarySensor(hass, binary_sensor)
|
entity = KNXBinarySensor(binary_sensor)
|
||||||
automations = config.get(CONF_AUTOMATION)
|
automations = config.get(CONF_AUTOMATION)
|
||||||
if automations is not None:
|
if automations is not None:
|
||||||
for automation in automations:
|
for automation in automations:
|
||||||
|
@ -103,11 +103,9 @@ def async_add_entities_config(hass, config, async_add_entities):
|
||||||
class KNXBinarySensor(BinarySensorDevice):
|
class KNXBinarySensor(BinarySensorDevice):
|
||||||
"""Representation of a KNX binary sensor."""
|
"""Representation of a KNX binary sensor."""
|
||||||
|
|
||||||
def __init__(self, hass, device):
|
def __init__(self, device):
|
||||||
"""Initialize of KNX binary sensor."""
|
"""Initialize of KNX binary sensor."""
|
||||||
self.device = device
|
self.device = device
|
||||||
self.hass = hass
|
|
||||||
self.async_register_callbacks()
|
|
||||||
self.automations = []
|
self.automations = []
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
|
@ -118,6 +116,10 @@ class KNXBinarySensor(BinarySensorDevice):
|
||||||
await self.async_update_ha_state()
|
await self.async_update_ha_state()
|
||||||
self.device.register_device_updated_cb(after_update_callback)
|
self.device.register_device_updated_cb(after_update_callback)
|
||||||
|
|
||||||
|
async def async_added_to_hass(self):
|
||||||
|
"""Store register state change callback."""
|
||||||
|
self.async_register_callbacks()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the KNX device."""
|
"""Return the name of the KNX device."""
|
||||||
|
|
|
@ -75,7 +75,7 @@ def async_add_entities_discovery(hass, discovery_info, async_add_entities):
|
||||||
entities = []
|
entities = []
|
||||||
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
||||||
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
||||||
entities.append(KNXClimate(hass, device))
|
entities.append(KNXClimate(device))
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,17 +110,15 @@ def async_add_entities_config(hass, config, async_add_entities):
|
||||||
group_address_operation_mode_comfort=config.get(
|
group_address_operation_mode_comfort=config.get(
|
||||||
CONF_OPERATION_MODE_COMFORT_ADDRESS))
|
CONF_OPERATION_MODE_COMFORT_ADDRESS))
|
||||||
hass.data[DATA_KNX].xknx.devices.add(climate)
|
hass.data[DATA_KNX].xknx.devices.add(climate)
|
||||||
async_add_entities([KNXClimate(hass, climate)])
|
async_add_entities([KNXClimate(climate)])
|
||||||
|
|
||||||
|
|
||||||
class KNXClimate(ClimateDevice):
|
class KNXClimate(ClimateDevice):
|
||||||
"""Representation of a KNX climate device."""
|
"""Representation of a KNX climate device."""
|
||||||
|
|
||||||
def __init__(self, hass, device):
|
def __init__(self, device):
|
||||||
"""Initialize of a KNX climate device."""
|
"""Initialize of a KNX climate device."""
|
||||||
self.device = device
|
self.device = device
|
||||||
self.hass = hass
|
|
||||||
self.async_register_callbacks()
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self):
|
def supported_features(self):
|
||||||
|
@ -137,6 +135,10 @@ class KNXClimate(ClimateDevice):
|
||||||
await self.async_update_ha_state()
|
await self.async_update_ha_state()
|
||||||
self.device.register_device_updated_cb(after_update_callback)
|
self.device.register_device_updated_cb(after_update_callback)
|
||||||
|
|
||||||
|
async def async_added_to_hass(self):
|
||||||
|
"""Store register state change callback."""
|
||||||
|
self.async_register_callbacks()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the KNX device."""
|
"""Return the name of the KNX device."""
|
||||||
|
|
|
@ -64,7 +64,7 @@ def async_add_entities_discovery(hass, discovery_info, async_add_entities):
|
||||||
entities = []
|
entities = []
|
||||||
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
||||||
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
||||||
entities.append(KNXCover(hass, device))
|
entities.append(KNXCover(device))
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,18 +88,15 @@ def async_add_entities_config(hass, config, async_add_entities):
|
||||||
invert_angle=config.get(CONF_INVERT_ANGLE))
|
invert_angle=config.get(CONF_INVERT_ANGLE))
|
||||||
|
|
||||||
hass.data[DATA_KNX].xknx.devices.add(cover)
|
hass.data[DATA_KNX].xknx.devices.add(cover)
|
||||||
async_add_entities([KNXCover(hass, cover)])
|
async_add_entities([KNXCover(cover)])
|
||||||
|
|
||||||
|
|
||||||
class KNXCover(CoverDevice):
|
class KNXCover(CoverDevice):
|
||||||
"""Representation of a KNX cover."""
|
"""Representation of a KNX cover."""
|
||||||
|
|
||||||
def __init__(self, hass, device):
|
def __init__(self, device):
|
||||||
"""Initialize the cover."""
|
"""Initialize the cover."""
|
||||||
self.device = device
|
self.device = device
|
||||||
self.hass = hass
|
|
||||||
self.async_register_callbacks()
|
|
||||||
|
|
||||||
self._unsubscribe_auto_updater = None
|
self._unsubscribe_auto_updater = None
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
|
@ -110,6 +107,10 @@ class KNXCover(CoverDevice):
|
||||||
await self.async_update_ha_state()
|
await self.async_update_ha_state()
|
||||||
self.device.register_device_updated_cb(after_update_callback)
|
self.device.register_device_updated_cb(after_update_callback)
|
||||||
|
|
||||||
|
async def async_added_to_hass(self):
|
||||||
|
"""Store register state change callback."""
|
||||||
|
self.async_register_callbacks()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the KNX device."""
|
"""Return the name of the KNX device."""
|
||||||
|
|
|
@ -52,7 +52,7 @@ def async_add_entities_discovery(hass, discovery_info, async_add_entities):
|
||||||
entities = []
|
entities = []
|
||||||
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
||||||
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
||||||
entities.append(KNXLight(hass, device))
|
entities.append(KNXLight(device))
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,17 +71,15 @@ def async_add_entities_config(hass, config, async_add_entities):
|
||||||
group_address_color=config.get(CONF_COLOR_ADDRESS),
|
group_address_color=config.get(CONF_COLOR_ADDRESS),
|
||||||
group_address_color_state=config.get(CONF_COLOR_STATE_ADDRESS))
|
group_address_color_state=config.get(CONF_COLOR_STATE_ADDRESS))
|
||||||
hass.data[DATA_KNX].xknx.devices.add(light)
|
hass.data[DATA_KNX].xknx.devices.add(light)
|
||||||
async_add_entities([KNXLight(hass, light)])
|
async_add_entities([KNXLight(light)])
|
||||||
|
|
||||||
|
|
||||||
class KNXLight(Light):
|
class KNXLight(Light):
|
||||||
"""Representation of a KNX light."""
|
"""Representation of a KNX light."""
|
||||||
|
|
||||||
def __init__(self, hass, device):
|
def __init__(self, device):
|
||||||
"""Initialize of KNX light."""
|
"""Initialize of KNX light."""
|
||||||
self.device = device
|
self.device = device
|
||||||
self.hass = hass
|
|
||||||
self.async_register_callbacks()
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_register_callbacks(self):
|
def async_register_callbacks(self):
|
||||||
|
@ -91,6 +89,10 @@ class KNXLight(Light):
|
||||||
await self.async_update_ha_state()
|
await self.async_update_ha_state()
|
||||||
self.device.register_device_updated_cb(after_update_callback)
|
self.device.register_device_updated_cb(after_update_callback)
|
||||||
|
|
||||||
|
async def async_added_to_hass(self):
|
||||||
|
"""Store register state change callback."""
|
||||||
|
self.async_register_callbacks()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the KNX device."""
|
"""Return the name of the KNX device."""
|
||||||
|
|
|
@ -42,7 +42,7 @@ def async_add_entities_discovery(hass, discovery_info, async_add_entities):
|
||||||
entities = []
|
entities = []
|
||||||
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
||||||
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
||||||
entities.append(KNXSensor(hass, device))
|
entities.append(KNXSensor(device))
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,17 +56,15 @@ def async_add_entities_config(hass, config, async_add_entities):
|
||||||
group_address=config.get(CONF_ADDRESS),
|
group_address=config.get(CONF_ADDRESS),
|
||||||
value_type=config.get(CONF_TYPE))
|
value_type=config.get(CONF_TYPE))
|
||||||
hass.data[DATA_KNX].xknx.devices.add(sensor)
|
hass.data[DATA_KNX].xknx.devices.add(sensor)
|
||||||
async_add_entities([KNXSensor(hass, sensor)])
|
async_add_entities([KNXSensor(sensor)])
|
||||||
|
|
||||||
|
|
||||||
class KNXSensor(Entity):
|
class KNXSensor(Entity):
|
||||||
"""Representation of a KNX sensor."""
|
"""Representation of a KNX sensor."""
|
||||||
|
|
||||||
def __init__(self, hass, device):
|
def __init__(self, device):
|
||||||
"""Initialize of a KNX sensor."""
|
"""Initialize of a KNX sensor."""
|
||||||
self.device = device
|
self.device = device
|
||||||
self.hass = hass
|
|
||||||
self.async_register_callbacks()
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_register_callbacks(self):
|
def async_register_callbacks(self):
|
||||||
|
@ -76,6 +74,10 @@ class KNXSensor(Entity):
|
||||||
await self.async_update_ha_state()
|
await self.async_update_ha_state()
|
||||||
self.device.register_device_updated_cb(after_update_callback)
|
self.device.register_device_updated_cb(after_update_callback)
|
||||||
|
|
||||||
|
async def async_added_to_hass(self):
|
||||||
|
"""Store register state change callback."""
|
||||||
|
self.async_register_callbacks()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the KNX device."""
|
"""Return the name of the KNX device."""
|
||||||
|
|
|
@ -41,7 +41,7 @@ def async_add_entities_discovery(hass, discovery_info, async_add_entities):
|
||||||
entities = []
|
entities = []
|
||||||
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
for device_name in discovery_info[ATTR_DISCOVER_DEVICES]:
|
||||||
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
device = hass.data[DATA_KNX].xknx.devices[device_name]
|
||||||
entities.append(KNXSwitch(hass, device))
|
entities.append(KNXSwitch(device))
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,17 +55,15 @@ def async_add_entities_config(hass, config, async_add_entities):
|
||||||
group_address=config.get(CONF_ADDRESS),
|
group_address=config.get(CONF_ADDRESS),
|
||||||
group_address_state=config.get(CONF_STATE_ADDRESS))
|
group_address_state=config.get(CONF_STATE_ADDRESS))
|
||||||
hass.data[DATA_KNX].xknx.devices.add(switch)
|
hass.data[DATA_KNX].xknx.devices.add(switch)
|
||||||
async_add_entities([KNXSwitch(hass, switch)])
|
async_add_entities([KNXSwitch(switch)])
|
||||||
|
|
||||||
|
|
||||||
class KNXSwitch(SwitchDevice):
|
class KNXSwitch(SwitchDevice):
|
||||||
"""Representation of a KNX switch."""
|
"""Representation of a KNX switch."""
|
||||||
|
|
||||||
def __init__(self, hass, device):
|
def __init__(self, device):
|
||||||
"""Initialize of KNX switch."""
|
"""Initialize of KNX switch."""
|
||||||
self.device = device
|
self.device = device
|
||||||
self.hass = hass
|
|
||||||
self.async_register_callbacks()
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_register_callbacks(self):
|
def async_register_callbacks(self):
|
||||||
|
@ -75,6 +73,10 @@ class KNXSwitch(SwitchDevice):
|
||||||
await self.async_update_ha_state()
|
await self.async_update_ha_state()
|
||||||
self.device.register_device_updated_cb(after_update_callback)
|
self.device.register_device_updated_cb(after_update_callback)
|
||||||
|
|
||||||
|
async def async_added_to_hass(self):
|
||||||
|
"""Store register state change callback."""
|
||||||
|
self.async_register_callbacks()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the KNX device."""
|
"""Return the name of the KNX device."""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue