def __init__(self, device_id, mac, cache_timeout=600, force_update=False): from btlewrap import BluepyBackend poller = miflora_poller.MiFloraPoller(mac=mac, backend=BluepyBackend, cache_timeout=cache_timeout) super().__init__(device_id, poller, miflora_parameters, cache_timeout, force_update)
def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the MiFlora sensor.""" from miflora import miflora_poller try: import bluepy.btle # noqa: F401 # pylint: disable=unused-variable from btlewrap import BluepyBackend backend = BluepyBackend except ImportError: from btlewrap import GatttoolBackend backend = GatttoolBackend _LOGGER.debug('Miflora is using %s backend.', backend.__name__) cache = config.get(CONF_CACHE) poller = miflora_poller.MiFloraPoller( config.get(CONF_MAC), cache_timeout=cache, adapter=config.get(CONF_ADAPTER), backend=backend) force_update = config.get(CONF_FORCE_UPDATE) median = config.get(CONF_MEDIAN) poller.ble_timeout = config.get(CONF_TIMEOUT) poller.retries = config.get(CONF_RETRIES) devs = [] for parameter in config[CONF_MONITORED_CONDITIONS]: name = SENSOR_TYPES[parameter][0] unit = SENSOR_TYPES[parameter][1] prefix = config.get(CONF_NAME) if prefix: name = "{} {}".format(prefix, name) devs.append(MiFloraSensor( poller, parameter, name, unit, force_update, median)) add_devices(devs)
def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the MiFlora sensor.""" from miflora import miflora_poller cache = config.get(CONF_CACHE) poller = miflora_poller.MiFloraPoller( config.get(CONF_MAC), cache_timeout=cache, adapter=config.get(CONF_ADAPTER)) force_update = config.get(CONF_FORCE_UPDATE) median = config.get(CONF_MEDIAN) poller.ble_timeout = config.get(CONF_TIMEOUT) poller.retries = config.get(CONF_RETRIES) devs = [] for parameter in config[CONF_MONITORED_CONDITIONS]: name = SENSOR_TYPES[parameter][0] unit = SENSOR_TYPES[parameter][1] prefix = config.get(CONF_NAME) if len(prefix) > 0: name = "{} {}".format(prefix, name) devs.append(MiFloraSensor( poller, parameter, name, unit, force_update, median)) add_devices(devs)
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): """Set up the MiFlora sensor.""" backend = BACKEND _LOGGER.debug("Miflora is using %s backend", backend.__name__) cache = config.get(CONF_SCAN_INTERVAL, SCAN_INTERVAL).total_seconds() poller = miflora_poller.MiFloraPoller( config[CONF_MAC], cache_timeout=cache, adapter=config[CONF_ADAPTER], backend=backend, ) force_update = config[CONF_FORCE_UPDATE] median = config[CONF_MEDIAN] go_unavailable_timeout = config[CONF_GO_UNAVAILABLE_TIMEOUT] prefix = config[CONF_NAME] monitored_conditions = config[CONF_MONITORED_CONDITIONS] entities = [ MiFloraSensor( description, poller, prefix, force_update, median, go_unavailable_timeout, ) for description in SENSOR_TYPES if description.key in monitored_conditions ] async_add_entities(entities)
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): """Set up the MiFlora sensor.""" backend = BACKEND _LOGGER.debug("Miflora is using %s backend.", backend.__name__) cache = config.get(CONF_SCAN_INTERVAL, SCAN_INTERVAL).total_seconds() poller = miflora_poller.MiFloraPoller( config.get(CONF_MAC), cache_timeout=cache, adapter=config.get(CONF_ADAPTER), backend=backend, ) force_update = config.get(CONF_FORCE_UPDATE) median = config.get(CONF_MEDIAN) devs = [] for parameter in config[CONF_MONITORED_CONDITIONS]: name = SENSOR_TYPES[parameter][0] unit = SENSOR_TYPES[parameter][1] icon = SENSOR_TYPES[parameter][2] prefix = config.get(CONF_NAME) if prefix: name = f"{prefix} {name}" devs.append( MiFloraSensor(poller, parameter, name, unit, icon, force_update, median) ) async_add_entities(devs)
async def set_attr_hci_device(self, hash): self.logger.debug("attr change of hci device") self._poller = miflora_poller.MiFloraPoller( self._address, btlewrap.BluepyBackend, cache_timeout=60, adapter=self._attr_hci_device, )
async def async_setup_platform(opp, config, async_add_entities, discovery_info=None): """Set up the MiFlora sensor.""" backend = BACKEND _LOGGER.debug("Miflora is using %s backend", backend.__name__) cache = config.get(CONF_SCAN_INTERVAL, SCAN_INTERVAL).total_seconds() poller = miflora_poller.MiFloraPoller( config.get(CONF_MAC), cache_timeout=cache, adapter=config.get(CONF_ADAPTER), backend=backend, ) force_update = config.get(CONF_FORCE_UPDATE) median = config.get(CONF_MEDIAN) go_unavailable_timeout = config.get(CONF_GO_UNAVAILABLE_TIMEOUT) devs = [] for parameter in config[CONF_MONITORED_CONDITIONS]: name = SENSOR_TYPES[parameter][0] unit = (opp.config.units.temperature_unit if parameter == "temperature" else SENSOR_TYPES[parameter][1]) icon = SENSOR_TYPES[parameter][2] device_class = SENSOR_TYPES[parameter][3] prefix = config.get(CONF_NAME) if prefix: name = f"{prefix} {name}" devs.append( MiFloraSensor( poller, parameter, name, unit, icon, device_class, force_update, median, go_unavailable_timeout, )) async_add_entities(devs)
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): """Set up the MiFlora sensor.""" from miflora import miflora_poller try: import bluepy.btle # noqa: F401 pylint: disable=unused-variable from btlewrap import BluepyBackend backend = BluepyBackend except ImportError: from btlewrap import GatttoolBackend backend = GatttoolBackend _LOGGER.debug('Miflora is using %s backend.', backend.__name__) cache = config.get(CONF_SCAN_INTERVAL, SCAN_INTERVAL).total_seconds() poller = miflora_poller.MiFloraPoller(config.get(CONF_MAC), cache_timeout=cache, adapter=config.get(CONF_ADAPTER), backend=backend) force_update = config.get(CONF_FORCE_UPDATE) median = config.get(CONF_MEDIAN) devs = [] try: with async_timeout.timeout(9): await hass.async_add_executor_job(poller.fill_cache) except asyncio.TimeoutError: _LOGGER.error('Unable to connect to %s', config.get(CONF_MAC)) raise PlatformNotReady for parameter in config[CONF_MONITORED_CONDITIONS]: name = SENSOR_TYPES[parameter][0] unit = SENSOR_TYPES[parameter][1] prefix = config.get(CONF_NAME) if prefix: name = "{} {}".format(prefix, name) devs.append( MiFloraSensor(poller, parameter, name, unit, force_update, median)) async_add_entities(devs, update_before_add=True)
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): """Set up the MiFlora sensor.""" from miflora import miflora_poller try: import bluepy.btle # noqa: F401 pylint: disable=unused-import from btlewrap import BluepyBackend backend = BluepyBackend except ImportError: from btlewrap import GatttoolBackend backend = GatttoolBackend _LOGGER.debug("Miflora is using %s backend.", backend.__name__) cache = config.get(CONF_SCAN_INTERVAL, SCAN_INTERVAL).total_seconds() poller = miflora_poller.MiFloraPoller( config.get(CONF_MAC), cache_timeout=cache, adapter=config.get(CONF_ADAPTER), backend=backend, ) force_update = config.get(CONF_FORCE_UPDATE) median = config.get(CONF_MEDIAN) devs = [] for parameter in config[CONF_MONITORED_CONDITIONS]: name = SENSOR_TYPES[parameter][0] unit = SENSOR_TYPES[parameter][1] icon = SENSOR_TYPES[parameter][2] prefix = config.get(CONF_NAME) if prefix: name = f"{prefix} {name}" devs.append( MiFloraSensor(poller, parameter, name, unit, icon, force_update, median)) async_add_entities(devs)
async def Define(self, hash, args, argsh): await super().Define(hash, args, argsh) if len(args) < 4: return "Usage: define mi_plant fhempy miflora <MAC>" self._address = args[3] hash["MAC"] = args[3] self.logger.debug(f"Define miflora: {self._address}") self._poller = miflora_poller.MiFloraPoller( self._address, btlewrap.BluepyBackend, cache_timeout=60, adapter=self._attr_hci_device, ) if self.updateTask: self.updateTask.cancel() self.updateTask = self.create_async_task(self.update_task())