    def async_handle_advert(
        self,
        _service_info: BluetoothServiceInfoBleak,
        _change: BluetoothChange,
    ) -> None:
        """
        Handle an incoming advert callback from the bluetooth integration.

        These should come in as adverts are received, rather than on our update schedule.
        The data *should* be as fresh as can be, but actually the backend only sends
        these periodically (mainly when the data changes, I think). So it's no good for
        responding to changing rssi values, but it *is* good for seeding our updates in case
        there are no defined sensors yet (or the defined ones are away).
        """
        # _LOGGER.debug(
        #     "New Advert! change: %s, scanner: %s mac: %s name: %s serviceinfo: %s",
        #     change,
        #     service_info.source,
        #     service_info.address,
        #     service_info.name,
        #     service_info,
        # )
        #
        # If there are no configured_devices already present during Bermuda's
        # initial setup, then no sensors will be created, and no updates will
        # be triggered on the co-ordinator. So let's check if we haven't updated
        # recently, and do so...
        if self.stamp_last_update < MONOTONIC_TIME() - (UPDATE_INTERVAL * 2):
            self.hass.add_job(self._async_update_data())
Handle an incoming advert callback from the bluetooth integration.

These should come in as adverts are received, rather than on our update schedule.
The data *should* be as fresh as can be, but actually the backend only sends
these periodically (mainly when the data changes, I think). So it's no good for
responding to changing rssi values, but it *is* good for seeding our updates in case
there are no defined sensors yet (or the defined ones are away).
custom_components/bermuda/coordinator.py