AltBeacon для мониторинга очень маленьких регионов и слишком раннего уведомления

Мы используем AltBeacon для обнаружения областей в фоновом режиме. Для важного варианта использования проекта нам абсолютно необходимо иметь множество очень маленьких регионов (по сути, один маяк с минимальной мощностью передачи — это весь регион) и очень близко друг к другу. С этой настройкой маяка мы получаем уведомление о каждом событии региона, но события входа в регион запускаются раньше, чем нам хотелось бы, обычно это происходит, когда мы идем в радиусе 10 м от маяка (представляющего регион). Наша цель — сократить это расстояние хотя бы вдвое. Я понимаю, что этот вариант использования не идеален для мониторинга регионов, но очень важно, чтобы он работал таким образом. Можно ли установить минимальное расстояние для получения уведомлений о событиях входа в регион?

Возможное решение, которое мы начинаем тестировать, состоит в том, чтобы всегда выполнять ранжирование (даже в фоновом режиме), переопределяя периоды сканирования переднего плана по умолчанию чем-то, напоминающим фоновый мониторинг. Мы беспокоимся о том, что расстояния могут быть неточными (из-за того, что сканирование не происходит постоянно, а настройки минимальной мощности маяка) и что потребление батареи может быть выше, чем при столь же частом мониторинге. Есть мысли по поводу этого подхода?


person stefano cattaneo    schedule 04.05.2016    source источник


Ответы (2)


Вы можете использовать onReadRemoteRssi . Это измеряет уровень сигнала в дБ, и вы можете приблизительно определить расстояние по нему. Имейте в виду, что это не точно, и вы должны проверить это. Я пробовал что-то подобное, но были некоторые пиковые значения, такие как шум, и вы должны их отфильтровать. Вот один пример

person Hristo Staykov    schedule 04.05.2016

API ранжирования и мониторинга — это абстрактные понятия, применяемые для обнаружения пакетов маяков. Как вы поняли, для вашего варианта использования ни одна из концепций не подходит идеально.

То, что вы хотите, это две вещи одновременно:

  1. Логика срабатывает на небольшом расстоянии от определенного маяка (например, Ranging).

  2. Обнаружения без батареи (например, мониторинг)

К сожалению, чтобы оценить расстояние, вы должны постоянно сканировать Bluetooth, как это обычно делается для определения местоположения на переднем плане. Эти постоянные сканирования потребляют больше энергии.

В зависимости от вашего варианта использования может быть возможно постоянное ранжирование в фоновом режиме, но только или ограниченное время. Это должно дать вам приемлемые оценки расстояния для этого периода. Вы можете решить, когда начать это (например, обнаружение первого маяка) и продолжать только до тех пор, пока обнаруживаются маяки или в течение максимального интервала времени, скажем, 10 минут. Если вы можете ограничить время, использование батареи может быть приемлемым.

person davidgyoung    schedule 04.05.2016
comment
К сожалению, если мы ограничим фоновый диапазон в течение ограниченного времени, мы не сможем удовлетворить наш вариант использования. Что нам действительно поможет, так это, возможно, установка минимальной мощности rssi для фильтрации ложных сигналов, которые слишком рано запускают вход в регион (слишком далеко от фактического маяка). - person stefano cattaneo; 05.05.2016
comment
На самом деле мы не возражаем против того, чтобы пропустить какую-то запись региона, поскольку будет много близких регионов, и очень немногие из этих событий будут уведомлены пользователю (после уведомления о регионе есть своего рода период восстановления, поэтому большинство записи региона все равно не будут уведомлены) - person stefano cattaneo; 05.05.2016
comment
К сожалению, нет Android API для получения обратных вызовов или событий пробуждения на устройствах, просканированных с минимальным RSSI. Я не верю, что чипсеты BLE также поддерживают это, поэтому его нет в Android. - person davidgyoung; 05.05.2016