Skip to content
Snippets Groups Projects
Commit a4988151 authored by jkerdreu's avatar jkerdreu
Browse files

- Added feature: remove device from HA UI

- Drop useless sensor new_entity

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@3015 b32b6428-25c9-4566-ad07-03861ab6144f
parent ec32654f
No related branches found
No related tags found
No related merge requests found
......@@ -39,7 +39,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_remove_config_entry_device(hass: HomeAssistant, entry: ConfigEntry, device_entry: DeviceEntry ) -> bool:
"""Remove a config entry from a device."""
#import pdb;pdb.set_trace()
bridge = hass.data[DOMAIN][entry.entry_id]
_LOGGER.warning(f"Deleting {device_entry}")
ident_id = list(device_entry.identifiers)[0][1]
bridge.ha_remove_device(ident_id)
return True
......@@ -81,15 +81,29 @@ class Bridge(object):
def add_entities(self, addr: bindings.UUID, entities: list[XAALEntity]) -> None:
"""register a some entities (called from factories)"""
_LOGGER.debug(f"new Entity {addr} {entities}")
_LOGGER.debug(f"new Entities: {addr} {entities}")
self._entities.update({addr: entities})
def remove_entities(self, addr: bindings.UUID) -> None:
_LOGGER.debug(f"Removing entities: {addr}")
self._entities.pop(addr)
def get_entities(self, addr: bindings.UUID) -> list[XAALEntity] | None:
return self._entities.get(addr, None)
def ha_remove_device(self, ident: str) -> None:
""" User asked to remove an HA device, we need to find out the entites """
tmp = ident.split(':')
addr = tools.get_uuid(tmp[1])
# is it a xAAL device, if so remove it's address
if tmp[0] == 'dev':
self.remove_entities(addr)
else:
# it's a group, remove all associated stuff
devs = self._mon.devices.get_with_group(addr)
for d in devs:
self.remove_entities(d.address)
#####################################################
# Factories
#####################################################
......
......@@ -76,6 +76,8 @@ class XAALEntity(Entity):
@property
def unique_id(self) -> str:
addr = str(self._dev.address).replace('-', '_')
if hasattr(self,'_xaal_attribute'):
return f"xaal.{addr}.{self._xaal_attribute}"
return f"xaal.{addr}"
async def async_added_to_hass(self) -> None:
......
......@@ -21,51 +21,13 @@ async def async_setup_entry(
class Factory(EntityFactory):
def new_entity(self, device: MonitorDevice) -> bool:
entity = None
if device.dev_type.startswith('thermometer.'):
entity = Thermometer(device, self._bridge)
if device.dev_type.startswith('hygrometer.'):
entity = Hygrometer(device, self._bridge)
if device.dev_type.startswith('barometer.'):
entity = Barometer(device, self._bridge)
if device.dev_type.startswith('battery.'):
entity = Battery(device, self._bridge)
if device.dev_type.startswith('powermeter.'):
entity = PowerMeter(device, self._bridge)
if device.dev_type.startswith('wifimeter.'):
entity = WifiMeter(device, self._bridge)
if device.dev_type.startswith('luxmeter.'):
entity = LuxMeter(device, self._bridge)
if device.dev_type.startswith('co2meter.'):
entity = CO2Meter(device, self._bridge)
if device.dev_type.startswith('soundmeter.'):
entity = SoundMeter(device, self._bridge)
if device.dev_type.startswith('gateway.'):
entity = Gateway(device, self._bridge)
if entity:
self.add_entity(entity, device.address)
return True
return False
@property
def mapping(self):
return {'thermometer.' : [Thermometer ],
'hygrometer.' : [Hygrometer],
'barometer.' : [Barometer],
'battery.' : [Battery],
'powermeter.' : [PowerMeter],
'powermeter.' : [PowerMeter,CurrentMeter, VoltMeter],
'wifimeter.' : [WifiMeter],
'luxmeter.' : [LuxMeter],
'co2meter.' : [CO2Meter],
......@@ -109,6 +71,16 @@ class PowerMeter(XAALSensorEntity):
_attr_native_unit_of_measurement = const.POWER_WATT
_xaal_attribute = 'power'
class CurrentMeter(XAALSensorEntity):
_attr_device_class = SensorDeviceClass.CURRENT
_attr_native_unit_of_measurement = const.ELECTRIC_CURRENT_AMPERE
_xaal_attribute = 'current'
class VoltMeter(XAALSensorEntity):
_attr_device_class = SensorDeviceClass.VOLTAGE
_attr_native_unit_of_measurement = const.ELECTRIC_POTENTIAL_VOLT
_xaal_attribute = 'voltage'
class WifiMeter(XAALSensorEntity):
_attr_device_class= SensorDeviceClass.SIGNAL_STRENGTH
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment