2013-10-11 2 views
18

Я хотел бы отслеживать большое количество маяков (~ 500) сразу в радиусе 50-100 м через приложение на iPhone (5s). Я просмотрел спецификацию и онлайн, и я не вижу, есть ли ограничение на количество маяков, которые вы можете отслеживать сразу, используя BLE. Кто-нибудь знает, существует ли ограничение на количество маяков, которые вы можете отслеживать, или если iPhone 5s справится с задачей отслеживания многих маяков?iBeacon/Bluetooth Low Energy (устройства BLE) - максимальное количество маяков

ответ

21

Вы использовали слово track, но iOS имеет два разных метода: мониторинг и ранжирование.

Вы можете установить максимум 20 регионов для мониторинга. (Найдено в документации для метода startMonitoringForRegion:). Региональные ограничения в основном вступают в игру, если ваше приложение находится в фоновом режиме. ОС будет предупреждать ваше приложение, когда вы входите или покидаете регион, который вы контролируете (дайте или займите несколько минут). ОС даже запустит ваше приложение, чтобы сообщить ему, что произошло (хотя и на короткое время).

Другим способом является определение всех маяков в диапазоне Bluetooth устройства (обычно около 100 футов дают или принимают). Если ваши маяки распределены более чем на 100 миль, то вы, вероятно, не столкнетесь с каким-либо практическим ограничением. Я не нашел никакой документации для этого, и у меня есть только четыре маяка, с которыми я тестирую, и четыре раза работают.

Вот один из способов решения вашей ситуации. Сделайте все ваши 500 маяков использующими один и тот же UUID и создайте зону маяка, используя метод initWithProximityUUID: identifier:. (Идентификатор только для вас - он ничего не влияет). Запуск мониторинга для этой зоны маяка. Таким образом, ваше приложение будет уведомлено, когда будет найден один из ваших 500 маяков (дайте или возьмите несколько минут). После уведомления вы можете использовать startRangingBeaconsInRegion: найти все маяки вокруг этой области, а затем использовать основные и второстепенные значения, чтобы выяснить, какие маяки приближаются к пользователю.

+0

Помните, что когда ваше приложение получает уведомление iBeacon в фоновом режиме, ваше приложение получает ограниченное количество времени для принятия мер (скорее всего, в порядке секунд).В зависимости от того, какое действие вы хотите предпринять, возможно, побудить пользователя (с помощью UILocalNotification) открыть приложение, а затем запустить ранжирование, когда приложение открыто, может быть правильным решением. Пример можно найти здесь (https://www.cocoanetics.com/2013/11/can-you-smell-the-ibeacon). –

+0

Какие ограничения должны быть Bluetooth, GPS? – Codesen

4

Если я читаю ваш вопрос правильно, вы хотите разместить все 500 iBeacons в пределах 100 метров друг от друга, то есть их передачи будут перекрываться. Вероятно, вы столкнетесь с проблемами с перегрузкой радиосигналов задолго до того, как столкнетесь с ограничениями iOS7 или вашего телефона.

Я успешно проверил 20 iBeacons в непосредственной близости без проблем, но 500 iBeacons - это экстремальная плотность. this discussion по поводу проблемы с оборудованием говорит о том, что у вас могут возникнуть проблемы.

Как минимум, столкновения передач из 500 iBEacons заставят ваше устройство iOS больше времени, чтобы увидеть каждый iBeacon. Как правило, iOS7 обеспечивает обновление диапазона раз в секунду для каждого устройства iOS, но вы можете обнаружить, что вы получаете обновления гораздо реже. Все зависит от вашего приложения, допустимы ли менее частые обновления.

Даже если задержки приемлемы, я бы полностью протестировал это, прежде чем рассчитывать на его работу вообще. К сожалению, это означает, что вы получаете много iBeacons.

1

Я занимался некоторыми исследованиями в iBeacon из-за этого вопроса (я понятия не имел, о чем это было).

Кажется, что на стороне «маяка» все, что происходит, это общие рекламные пакеты отправляются. Это похоже на то, как устройство объявляет, что вы можете подключиться к нему. Тем не менее, вы фактически не подключаетесь к iBeacon, он просто читает эти рекламные пакеты. Нет встроенного ограничения на количество рекламных пакетов, которые может получить устройство.

Таким образом, это не удивит меня, если бы 500 iBeacon's работали без проблем. Рекламные пакеты небольшие и разнесены (по времени, они повторяются каждые X мс).От телефона к iBeacon нет связи, телефон просто получает пакеты, которые он слышит. Если на одном пакете есть помехи, ему, скорее всего, удастся получить следующий.

3

Я не согласен. Правда, белые маяки передают только рекламные данные, но передача таких данных длится около 3 мс (с учетом трех рекламных каналов). Имея 500 маяков, БЕЗ рассмотрения любого столкновения, сканер займет 1,5 секунды, чтобы увидеть их все. Но, если все маяки настроены одинаково (тот же интервал рекламы), неизбежно возникают столкновения, которые приводят к тому, что у них есть неоткрытые маяки. Даже если рекламный интервал отличается между встречными столкновениями маяков. Чтобы избежать вероятности столкновения, следует использовать более длительный интервал рекламы, но это приводит к более длительной задержке обнаружения. Это рассуждение очень сырое, оно не заботится о многих эффектах, а просто вычисляет порядок.

Кстати, вопрос нелегкий, есть много параметров, которые играют роль, некоторые из них известны, некоторые неизвестны. Но я работаю с одним годом, и для меня 500 - это огромное количество, и есть вероятность того, что вы не увидите большинство узлов из-за столкновений.

+0

Я только что написал сценарий matlab, который оценивает количество столкновений. Предположим, что использование ble, поэтому использование трех каналов adv и длительности tx фазы составляет 466us, не предполагается никаких других типов помех (wi-fi, zigbee, другие устройства bluetooth). –

+0

Используя 1 секунду рекламы и 500 узлов, в среднем у меня есть 186 узлов, которые имеют конфликты и могут не быть обнаружены в течение 1 секунды. Конечно, если обнаружение продолжится, в течение следующей секунды обнаружения снова появится 186 узлов, (некоторые из них будут одинаковыми, а некоторые нет), на следующей секунде будут другие 186 и т. д. –

+0

Это очень интересный ответ, и я хотел бы узнать немного больше о вашем анализе на модели оценки конфликтов для BLE. Готовы ли вы опубликовать суть или источник анализа? – truedat101

4

Я добавлю к ответу Тима Тисдалла, в котором изложена правильная структура. Я не могу говорить о конкретных возможностях iPhone 5 или iOS в целом, но я не вижу причин, по которым он не будет возвращать каждый пакет ADV_IND (т. Е. Передачу маяка), который он получает.

Вопрос в том, смогут ли 500 маяков передавать свои ADV_IND-пакеты без столкновений?

Для передачи пакета ADV_IND требуется около 0,128 мс. Время между рекламными передачами настраивается между 20 мс и 10240 мс (с интервалом 0,625 мс), поэтому вероятность столкновений зависит от конфигурации маяков.

На основании распределения Пуассона вероятность столкновения для любого данного пакета ADV_IND равна 1-exp (-2 * N * (0,128/AI)), где N - количество маяков в пределах диапазона, AI - это время в миллисекундах рекламного интервала (при условии, что все маяки настроены одинаково), а 0.128 - это время в миллисекундах, которое требуется для отправки пакета ADV_IND. (См. http://www3.cs.stonybrook.edu/~jgao/CSE590-fall09/aloha-analysis.pdf, если вы хотите получить пояснения.)

Для 500 маяков с максимальным интервалом в рекламе около 10 секунд произойдет столкновение примерно каждые 81 пакет (или около 6 из 500). Если вы готовы подождать пару интервалов (т. Е. 30 секунд), есть хороший шанс, что вы сможете получить все 500 ADV_IND-пакетов.

С другой стороны, если рекламный интервал меньше, скажем, 500 мс, у вас будет столкновение около 23% времени (или 113 из 500). Вам придется подождать еще несколько интервалов, чтобы повысить вероятность того, что вы увидите трансляции со всех маяков.

Другой способ взглянуть на то, что чем больше маяков у вас есть, тем дольше вы должны ждать, чтобы убедиться, что получаете все свои пакеты. (Математика для расчета задержки для приема пакетов с определенной вероятностью из числа маяков и рекламного интервала для меня слишком много.)

Одно предупреждение: если вы хотите подключиться к этим маякам, в противоположность просто получая пакет ADV_IND, который требует обмена еще двух пакетов на рекламных каналах, а вероятность столкновения в рекламных каналах немного возрастает.

Смежные вопросы