Ejemplo n.º 1
0
 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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
 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,
     )
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
    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())