Skip to content

Repository files navigation

SCOOT

Удобное Android-приложение для управления совместимыми электросамокатами AOVO по Bluetooth Low Energy.

Android 8.0+ Kotlin Поддержать на Boosty GitHub release License: MIT

SCOOT показывает телеметрию самоката, управляет доступными функциями, сохраняет поездки и помогает следить за примерным запасом хода. Интерфейс рассчитан на повседневное использование одной рукой и поддерживает светлую, тёмную и системную темы.

SCOOT — независимый проект. Он не является официальным приложением AOVO, ZYD, LENZOD, Xiaomi или других производителей.

Возможности

  • поиск только совместимых BLE-устройств без телевизоров, колонок и другой техники;
  • стабильное подключение, автоподключение и восстановление после кратковременного обрыва;
  • скорость, заряд, напряжение, ток, мощность, температуры и пробег;
  • блокировка и разблокировка свайпом;
  • фара, круиз-контроль, старт с толчка и режимы Eco, Drive и Sport;
  • изменение лимита скорости на контроллерах, которые подтверждают эту команду;
  • локальное имя для каждого самоката;
  • прогноз запаса хода с сохранением результата между запусками приложения;
  • история поездок со средней скоростью, временем, расстоянием и изменением заряда;
  • запись GPS-маршрута и отображение поездки на Яндекс Картах;
  • ручное завершение поездки, если самокат не сообщил о выключении;
  • звуки, вибрация, выбор единиц скорости и температуры;
  • проверка обновлений через GitHub Releases и установка нового APK из приложения;
  • встроенная форма обратной связи без перехода в почтовый клиент.

Установка

  1. Откройте раздел Releases.
  2. Выберите последнюю версию и скачайте файл с расширением .apk.
  3. Откройте файл на телефоне и разрешите установку из этого источника, если Android попросит.
  4. Запустите SCOOT и выдайте разрешения на поиск устройств поблизости.
  5. Включите самокат, нажмите Найти и выберите его в списке.

Android всегда показывает системное подтверждение перед установкой APK. SCOOT не обходит эту защиту.

Не удаётся найти самокат

  • проверьте, что Bluetooth включён;
  • держите телефон рядом с включённым самокатом;
  • закройте другие приложения, которые могут быть к нему подключены;
  • на Android 11 и ниже включите геолокацию: она нужна системе для BLE-сканирования;
  • повторите поиск через несколько секунд.

Совместимые модели

Приложение выбирает внешний вид по исходному Bluetooth-имени устройства. Возможность управления определяется не картинкой и не торговым названием, а фактически найденным GATT-профилем контроллера.

Модель или имя устройства Изображение Статус
AOVO PRO MAX, H19, AOVO MAX, SN_A913C554 AOVO PRO MAX Проверено на реальном SN_A913C554
ES40 ES40 Распознавание модели реализовано; управление доступно при совместимом ZYD/LENZOD-контроллере
AP07 AP07 Распознавание модели реализовано; управление доступно при совместимом ZYD/LENZOD-контроллере
M365 семейство M365 Распознавание модели реализовано; набор команд зависит от контроллера
ES60 семейство M365 Распознавание модели реализовано; набор команд зависит от контроллера
ES80 семейство M365 Распознавание модели реализовано; набор команд зависит от контроллера
AV01 семейство M365 Распознавание модели реализовано; набор команд зависит от контроллера
Неизвестное имя с совместимым BLE-профилем универсальная модель SCOOT попробует определить протокол после подключения

Одинаковые названия могут использоваться с разными ревизиями контроллера. Поэтому конкретная функция может отсутствовать, даже если модель есть в таблице. SCOOT скрывает неподтверждённые инженерные возможности и не отправляет неизвестные команды вслепую.

Протоколы контроллеров

Профиль GATT Доступные функции
ZYD / AovoPro сервисы F1F0, F2F0; запись F1F1, F2F1; уведомления F1F2, F2F2 авторизация, телеметрия, фара, круиз-контроль, старт с толчка, режим езды, блокировка и подтверждаемый лимит скорости
LENZOD legacy сервис 7777; запись 8877; уведомления 8888 телеметрия, блокировка и круиз-контроль

На LENZOD SCOOT не отправляет команды, формат которых не подтверждён: это защищает контроллер от случайных записей.

Поездки и запас хода

История поездки включает:

  • дату и время начала и окончания;
  • длительность;
  • расстояние в километрах или милях;
  • среднюю скорость;
  • заряд в начале и конце;
  • GPS-маршрут, если на телефоне была доступна геолокация.

Запас хода рассчитывается по данным текущей поездки и профилю пользователя. Расчёт обновляется с ограниченной частотой, сохраняется локально и не сбрасывается после краткого отключения или перезапуска приложения. Это прогноз, а не гарантия: ветер, температура, давление в шинах, рельеф и стиль езды заметно влияют на результат.

Обновления

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

Перед установкой проверяются:

  • адрес загрузки GitHub;
  • имя пакета приложения;
  • увеличение versionCode;
  • совпадение подписи APK с уже установленной версией.

Для каждого публичного обновления необходимо:

  1. увеличить versionCode и versionName;
  2. собрать release APK тем же ключом подписи, что и предыдущую версию;
  3. создать GitHub Release;
  4. прикрепить к релизу один актуальный .apk.

Обратная связь

В приложении есть встроенная форма для сообщений об ошибках, вопросов и предложений. Пользователь выбирает тему, описывает обращение и отправляет его разработчику прямо из SCOOT — открывать почтовое приложение не нужно.

Поддержать проект

Поддержать разработку, тестирование новых контроллеров и развитие SCOOT можно на Boosty.

Сборка из исходников

Понадобятся:

  • Android Studio с Android SDK 35;
  • JDK 17;
  • устройство или эмулятор с Android 8.0 и новее.

Клонирование и сборка debug APK:

git clone https://github.com/Chill-Man/scoot.git
cd scoot
./gradlew assembleDebug

В Windows используйте:

.\gradlew.bat assembleDebug

Готовый файл появится здесь:

app/build/outputs/apk/debug/app-debug.apk

Локальная конфигурация

Создайте или дополните local.properties:

sdk.dir=C:\\Users\\YOUR_NAME\\AppData\\Local\\Android\\Sdk
MAPKIT_API_KEY=ваш_ключ_Yandex_MapKit
GITHUB_REPOSITORY=Chill-Man/scoot
FINANCIAL_SUPPORT_URL=https://boosty.to/chillyperchick/donate

local.properties исключён из Git и не должен попадать в коммиты.

Проверки

Модульные тесты:

.\gradlew.bat testDebugUnitTest

Сборка и Android Lint:

.\gradlew.bat assembleDebug lintDebug

Инструментальные UI-тесты на запущенном эмуляторе:

.\gradlew.bat connectedDebugAndroidTest

Устройство проекта

app/src/main/java/ru/samokat/scootcontrol/
├── ble/           подключение, GATT, очереди команд и восстановление связи
├── protocol/      кодирование и разбор кадров ZYD/LENZOD
├── data/          настройки и локальное хранение
├── range/         прогноз запаса хода
├── trip/          запись и хранение поездок
├── update/        проверка релизов, загрузка и проверка APK
├── support/       встроенная обратная связь
├── presentation/  состояние приложения и команды интерфейса
└── ui/            экраны и компоненты Jetpack Compose

Дополнительные материалы:

Безопасность

  • Не изменяйте настройки самоката во время движения.
  • Проверяйте работу новой модели на вывешенном ведущем колесе и на минимальной скорости.
  • BLE-блокировка не заменяет физический замок.
  • Соблюдайте ограничения скорости и правила движения вашего региона.
  • Не публикуйте ключ MapKit и ключ подписи приложения.

Если обнаружена новая ревизия контроллера, приложите к обращению Bluetooth-имя, модель самоката, версию прошивки и описание доступных функций. Это позволит добавить поддержку без опасных предположений.

Лицензия

Исходный код распространяется по лицензии MIT.

About

SCOOT — Android-приложение для управления совместимыми электросамокатами AOVO по Bluetooth LE

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages