Недавно мне довелось поучаствовать в масштабном хакатоне от 2ГИС в Москве. Задача стояла амбициозная — за 48 часов создать технологическое решение, которое сделает городскую среду умнее и удобнее. Наша команда сфокусировалась на одной из самых острых проблем водителей — парковке, и наш проект ParkingAdvisor смог пройти в финал, попав в топ-20 лучших команд.
Кстати, не обошлось и без читеров, но в целом всё прошло хорошо. Мне понравилось :-)
Хочу рассказать подробнее о нашем подходе, который объединяет два сценария: базовый для всех и продвинутый — с полной автоматизацией на основе BLE-маячка.
Проблема: парковочный стресс
Любой, кто регулярно ездит по городу, сталкивается с одним и тем же набором проблем:
Бесконечный поиск места: Круги по перегруженным улицам в надежде увидеть заветное свободное место.
Ручной учет времени: Нужно запоминать или записывать время прибытия, чтобы не переплачивать и не получить штраф.
Непрозрачность: Не всегда понятно, сколько именно нужно платить и как точно отслеживается время стоянки.
Мы решили, что пора перенести эту рутину из мира «памяток и будильников» в мир точных и автоматических вычислений.
Мы разработали концепцию приложения, которое работает по двум параллельным сценариям, что и стало нашей ключевой инновацией.
Сценарий 1: Для всех — умный мониторинг на основе краудсорсинга
Прямых API, которые показывали бы точное количество свободных мест на каждой парковке, к сожалению, нет. Мы нашли обходной путь, используя самих пользователей (разумеется, анонимно и с соблюдением приватности).
Как это работает? Когда пользователь приложения паркуется или отъезжает, система анонимно фиксирует это событие (координаты и время). Агрегируя данные от всех участников, мы строим модель заполненности парковок в реальном времени.
Что получает пользователь? Карту с актуальной информацией о том, где высока вероятность найти свободное место. Больше не нужно кружить по кварталам, тратя время и бензин.
Дополнительный плюс: Приложение предупредит, если автомобиль слишком долго стоит в платной зоне, напоминая о необходимости оплаты.
Этот функционал уже сам по себе — мощный инструмент экономии времени и нервов.
Сценарий 2: Задействует доп. аксессуар - BLE-маячок
Это наша «фишка», которая полностью исключает человеческий фактор. Пользователь просто покупает небольшой Bluetooth-маячок (брелок) и вешает его в машине. Использование энергоэффективной технологии BLE (Bluetooth Low Energy) позволяет такому маячку работать от одной батарейки несколько лет .
Автостарт парковки. Приложение отслеживает соединение с маячком. Вы заглушили двигатель, вышли и ушли — соединение разорвалось. Система фиксирует это как начало парковки, определяет ваши координаты через API 2GIS и, если вы в платной зоне, автоматически запускает таймер. Вам больше не нужно ничего нажимать.
Автостоп. Вы вернулись к машине, и соединение с маячком восстановилось — включается доп. таймер; когда по второму таймеру проходит 3 минуты, то либо уведомляем, что стоите на платной парковке, либо если коорданата в течение этого интервала сменилась более, чем на 30 метров и связь не прервалась (это означает, что вы сели в машину и поехали) — система фиксирует окончание парковки; оба таймера останавливаются. Оплата начисляется только за точное время стоянки.
Детальный алгоритм работы системы

Фаза 1: Обнаружение начала парковки
1. Постоянный мониторинг соединения с BLE-маячком.
2. Разрыв соединения = пользователь удалился от автомобиля.
3. Система фиксирует:
- Координаты через GPS.
- Временную метку.
- Сигнал о разрыве соединения.
4. Автоматическое определение типа парковки через API 2GIS.
5. Если парковка платная — запуск таймера.
Фаза 2: Мониторинг во время парковки
1. Система продолжает отслеживать:
- Геопозицию автомобиля (неподвижное состояние).
- Попытки восстановления соединения с BLE-маячком.
2. Регулярная проверка заполненности парковки (в рамках локальной бд приложения).
3. Уведомления пользователя:
- Напоминание об оплате (если забыл).
- Предупреждение о скором окончании оплаченного времени.
Фаза 3: Завершение парковки
Вариант А (возврат пользователя):
1. Восстановление соединения с BLE-маячком.
2. Автоматическая остановка таймера.
3. Расчет точного времени парковки.
4. Фиксация освобождения места.
Вариант Б (отъезд без маячка):
1. Изменение координат автомобиля на ~20-30 метров.
2. Автоматическая остановка таймера.
3. Расчет итогового времени.
4. Отметка места как свободного в БД приложения.
Технические особенности реализации
Работа с геоданными
Параметры мониторинга:
- Радиус опроса: 500 метров (настраивается пользователем).
- Периодичность: 3 секунды (настраивается пользователем).
- Источники данных: API 2GIS, собственная БД приложения.
- Определение типа парковки: автоматическое через 2GIS.
Реализация для iOS
Для iOS-версии приложения мы предусмотрели фоновую работу. Как указано в документации Apple, приложение с ключом bluetooth-central в Info.plist может быть разбужено системой для обработки Bluetooth-событий, даже будучи в фоне или приостановленным . Это критически важно для надежного отслеживания соединения с BLE-маячком.
Безопасность и анонимизация
Все данные, собираемые для краудсорсингового анализа заполненности, проходят строгую процедуру анонимизации. Мы не храним и не обрабатываем личную информацию пользователей, только обезличенные метаданные о парковочных событиях.
Технические вызовы и решения
Проблема: Ложные срабатывания
Решение: проверка по нескольким факторам: продолжительность разрыва соединения, анализ движения по GPS и проверка типа территории через 2GIS. Это позволяет отличить реальную парковку от простой остановки на светофоре.
Проблема: Стабильность Bluetooth-соединения
Решение: Настройка алгоритма на устойчивую потерю сигнала, а не на кратковременные помехи. Учет специфики работы BLE в фоновом режиме на iOS .
Важное замечание: Как показал недавний инцидент с автомобилем Xiaomi SU7, при неправильном использовании приложения дистанционного управления могут возникать нештатные ситуации . В нашем алгоритме команда на автоматическое начало парковки — это пассивное событие (разрыв соединения), а не активная команда от пользователя, что сводит такие риски к минимуму.
Сравнение сценариев работы
Критерий |
Сценарий 1 (Краудсорсинг) |
Сценарий 2 (BLE-маячок) |
|---|---|---|
Требуемое оборудование |
Только смартфон |
Смартфон + BLE-маячок |
Точность учета времени |
Высокая (ручной ввод) |
Максимальная (полная автоматизация) |
Определение начала парковки |
Вручную пользователем |
Автоматически |
Данные о заполненности |
Формируются сообществом |
Используют данные сообщества |
Итоги хакатона и перспективы
Для меня лично выход в топ-20 из 58 команд стал отличным результатом, учитывая, что это мой первый хакатон и подтверждением жизнеспособности идеи. Мы не просто представили концепт, а разработали рабочий прототип и детальный план его реализации. Ну, правда, саму релизацию за 48 часов запилить сложно)
Ключевые достижения:
Рабочий алгоритм автоматического определения парковки.
Интеграция с существующими API 2GIS.
Проработанная система краудсорсингового сбора данных.
Энергоэффективное решение на BLE.
Потенциал проекта я вижу не только в решении сиюминутной «парковочной» боли. Сеть из тысяч BLE-маячков в перспективе может стать основой для новых сервисов, например, для более точной навигации в «проблемных» для GPS зонах или для создания детальной аналитики городской парковочной инфраструктуры.
Участие в хакатоне 2ГИС дало мне бесценный опыт, возможность пообщаться с экспертами и проверить гипотезы в жёстких временных рамках.
Спасибо моей команде за помощь в реализации идеи Руслану Юнусову и Георгию Чуприна - ребята пилили бэкенд, а также организаторам хакатона — команде 2ГИС за вызов и вдохновляющую атмосферу.
Уверен, что у автоматизации парковки — умное будущее.
P.S. Это моё первое участие в хакатоне; статью написал себе "на память" =)