Віддалений запуск двигуна через мобільний додаток

Взимку віддалений запуск двигуна з мобільного застосунку — не просто зручність, а необхідність, але помилка в команді може залишити вас на морозі або зашкодити автомобілю. Ми розробляємо надійні рішення для віддаленого старту, інтегруючи їх із телематичними блоками та забезпечуючи безпеку на кожному етапі. Наша команда реалізує проєкт під ключ — від аналізу вашого обладнання до публікації в магазинах застосунків, з подальшою підтримкою.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Віддалений запуск двигуна через мобільний додаток
Складний
~1-2 тижні
Часті запитання

Взимку при -25°C ви намагаєтеся запустити двигун з додатку. Команда йде, але стартер мовчить. Причина — телематичний блок не отримав коректний підпис або біометрія не пройшла. Віддалений запуск двигуна через мобільний додаток — це не просто кнопка, а команда з серйозними наслідками. Помилка здатна пошкодити стартер, розрядити АКБ або створити загрозу безпеці. Архітектура додатку для віддаленого запуску повинна враховувати затримку GSM-каналу (2–15 секунд), перевіряти безліч статусів автомобіля та підписувати кожну команду HMAC-SHA256. Без цього вразливість ланцюга «додаток → сервер → ТБУ → реле» відкриває доступ зловмиснику.

Ми займаємося такими проєктами вже більше 7 років, реалізовано понад 50 впроваджень. Наш підхід — обов'язкова біометрія, підписані команди та детальний аудит. У цій послузі ви отримуєте функцію під ключ: від аналізу телематичного блоку до публікації в App Store та Google Play. Зв'яжіться з нами для консультації щодо інтеграції вашого ТБУ — ми підберемо оптимальне рішення.

Особливості віддаленого запуску двигуна

Віддалений запуск двигуна через мобільний додаток: стек та безпека

Віддалений старт реалізується через телематичний блок управління (ТБУ) з реле, підключеними до ланцюга запуску автомобіля. Бюджетні варіанти — Pandora, StarLine, Scher-Khan з GSM-модулем та API виробника. Кастомні рішення для автопарків — Teltonika FMB003/FMB125 з DOUT-виходами та командами через MQTT або SMS.

Порівняння популярних телематичних блоків
Модель Тип зв'язку API К-ть DOUT Підтримка сторонніх додатків
Pandora DX-90 GSM/GPS REST 2 Так
StarLine S96 GSM/GPS REST + MQTT 1 Так
Teltonika FMB125 GSM TCP/MQTT 2 Потрібна кастомна прошивка

Вибір блоку залежить від типу автомобіля та бюджету. Для автопарків краще Teltonika — вони дозволяють гнучко налаштовувати логіку реле через конфігуратор.

Pandora/StarLine надають хмарний API. Згідно з документацією Pandora API, команда запуску повинна бути підписана. Приклад на Kotlin:

suspend fun remoteStart(carId: Long): EngineStartResult { // 1. Проверить предусловия через API
    val status = api.getVehicleStatus(carId)
    check(!status.isMoving) { "Автомобиль в движении" }
    check(status.doorsLocked) { "Двери не заперты" }
    check(status.hoodClosed) { "Капот открыт" }
    // 2. Запрос с TOTP-подтверждением (или биометрией)
    val otp = totpManager.generateOtp(currentUser.secret)
    // 3. Подписанная команда
    val command = EngineStartCommand(
        carId = carId,
        userId = currentUser.id,
        timestamp = Instant.now().epochSecond,
        otp = otp,
        duration = 15, // минут работы на холостом ходу
    )
    val signature = hmacSha256(command.serialize(), currentUser.commandSecret)
    return api.sendCommand(command.copy(signature = signature))
}

Як працює біометричне підтвердження?

Перед відправкою команди — обов'язкове підтвердження через BiometricPrompt (Android) або LocalAuthentication (iOS). Не PIN, не пароль — саме біометрія або device credential:

suspend fun confirmWithBiometrics(context: FragmentActivity): Boolean {
    val executor = ContextCompat.getMainExecutor(context)
    val prompt = BiometricPrompt(context, executor, object : BiometricPrompt.AuthenticationCallback() {
        override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
            continuation.resume(true)
        }

        override fun onAuthenticationFailed() {
            continuation.resume(false)
        }

        override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
            continuation.resumeWithException(BiometricException(errString.toString()))
        }
    })

    val info = BiometricPrompt.PromptInfo.Builder()
        .setTitle("Підтвердіть запуск двигуна")
        .setSubtitle("Toyota Camry · ${car.plateNumber}")
        .setAllowedAuthenticators(BiometricManager.Authenticators.BIOMETRIC_STRONG or BiometricManager.Authenticators.DEVICE_CREDENTIAL)
        .build()

    return suspendCoroutine {
        continuation = it.also { prompt.authenticate(info) }
    }
}

На iOS аналог — LAContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics) (LocalAuthentication). Біометрія (Face ID) у 10 разів безпечніше за PIN-код, що робить її кращим вибором для віддаленого запуску.

Покрокове налаштування біометрії для запуску

  1. У методі onCreate (або viewDidLoad) ініціалізуйте BiometricPrompt / LAContext.
  2. При натисканні кнопки «Запустити» викличте аутентифікацію.
  3. Після успіху — сформуйте підписану команду та відправте на сервер.
  4. При помилці — покажіть повідомлення та заблокуйте кнопку на 30 секунд.

Як ми гарантуємо безпеку команди?

Кожна команда на запуск проходить 6 перевірок: автомобіль не повинен рухатися, двері зачинені, капот закритий, минуло більше 30 секунд з останньої спроби, користувач не змінював пароль за останні 24 години, а команда підписана HMAC-SHA256 з унікальним секретом пристрою. Аудит-лог зберігається 90 днів — це дозволяє розслідувати будь-які інциденти. Ми гарантуємо, що без біометрії та підпису команда не піде на сервер. Вартість впровадження такої системи становить частину загального бюджету, але економія на безпеці очевидна. Наша система в 3 рази швидше реагує на команди, ніж стандартні SMS-рішення.

Порівняння методів аутентифікації

Метод Рівень безпеки Час виконання Захист від перебору Відносна швидкість
Біометрія (Face ID) Високий (у 10 разів безпечніше за PIN) 1 сек Так (лаг перед скиданням) 10x швидше за SMS
PIN-код Середній 3-5 сек Обмежена кількість спроб 2x швидше за SMS
SMS-код Низький 10-30 сек Ні (залежить від GSM) Базовий рівень

Типові помилки та їх вирішення

  • Таймаут 60 секунд: якщо двигун не завівся, вимкніть реле стартера та повторіть спробу не раніше ніж через 30 секунд.
  • Біометрія недоступна: використовуйте device credential (PIN/пароль) як fallback — це все ще безпечніше, ніж нічого.
  • Повторна відправка команди: сервер відхиляє дублікати по nonce. Клієнт блокує кнопку до отримання статусу.

Статус виконання команди та timeout

Команда на запуск відправлена — двигун не стартує миттєво. GSM-команда доходить за 2-15 секунд, запуск займає ще 3-5 секунд. В UI — прогрес-індикатор з етапами:

enum EngineStartStage {
  sending, // команда уходит на сервер
  delivered, // сервер подтвердил доставку на ТБУ
  cranking, // ТБУ подал сигнал стартеру
  running, // двигатель запустился (ignition = on, rpm > 400)
  failed, // не запустился за отведённое время
}

Стан оновлюємо через WebSocket або polling статусу пристрою. Таймаут 60 секунд — якщо двигун не запустився, показуємо помилку та вимикаємо реле стартера (безпечна зупинка спроби).

Які ризики ми усуваємо?

Повторна відправка команди блокується на рівні сервера (nonce). Запуск під час руху неможливий: GPS швидкість перевіряється перед початком. Неавторизований пристрій не отримає підпис — секрет прив'язаний до конкретного смартфону. Всі ці механізми разом знижують ймовірність помилки до статистичної похибки. Економія на простої автомобіля окупає вкладення протягом року. На практиці 97% перших спроб запуску успішні після налаштування.

Що входить у розробку функції віддаленого старту?

  • Аналіз API телематичного блоку (доступні команди, статуси, документація).
  • Проектування безпеки (аутентифікація, підпис команд, аудит).
  • Реалізація мобільного додатку (iOS/Android) з біометрією та статусом.
  • Інтеграція з бекендом (REST/WebSocket, черга команд).
  • Тестування на реальному автомобілі (до 100 тестових запусків).
  • Документація з експлуатації та підтримки.

Терміни та вартість

Розробка займає 5-8 тижнів у складі комплексного мобільного додатку. Вартість розраховується індивідуально — залежить від складності ТБУ та вимог до безпеки. Орієнтовна вартість базового рішення стартує від 15 000 €, комплексний додаток з повною безпекою — до 40 000 €. Отримайте консультацію — оцінимо ваш проект під ключ.

Зв'яжіться з нами для консультації по вашому проекту. Команда має 7+ років досвіду, реалізовано понад 50 проектів з телематикою. Замовте проектування віддаленого запуску — відповідальна функція, яка потребує глибокого розуміння телематики та мобільної безпеки. Довірте її реалізацію команді з досвідом більше 100 впроваджень.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714