Недавно мне довелось поучаствовать в масштабном хакатоне от 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. Это моё первое участие в хакатоне; статью написал себе "на память" =)

Комментарии (0)