Реалізація сценаріїв автоматизації (if-then) для IoT у мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація сценаріїв автоматизації (if-then) для IoT у мобільному додатку
Середній
~3-5 днів
Часті запитання

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

Етапи розробки

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Сценарії автоматизації (if-then) для IoT у мобільному додатку

Клієнт хоче управляти умним домом з телефона — і це вже не просто «включити світло». Йому потрібно: коли датчик руху сработав після 23:00 — включити прихожу, через 2 хвилини вимкнути, і відправити push. Або: якщо температура у серверній вище 28°C — включити кондиціонер та написати у Telegram. Це й є if-then автоматизація, і реалізувати її правильно у мобільному додатку — нетривіальна задача.

Де ломається типова реалізація

Найчастіший сценарій провалу — зберігати логіку сценаріїв лише на пристрої. Користувач закрив додаток, телефон ліг у режим економії — автоматизація перестала працювати. На Android WorkManager з constraints не вирішує завдання, якщо умова залежить від зовнішнього IoT-брокера (MQTT, WebSocket): WorkManager не тримає постійне з'єднання, він лише запускає завдання за розкладом або при зміні стану мережі.

Друга проблема — конфлікти умов. Користувач створив два сценарії з пересічними триггерами. Без черги та пріоритетів команди йдуть на пристрій у непередбачуваному порядку. Реле щелькає, лампа мигає. Клієнт дзвонить.

Третя — відсутність атомарності. Сценарій запустився, перша команда виконалася, друга упала по timeout. Стан пристроїв рассинхронизувався. Логувати нечого, откатиться некуди.

Архітектура, яка працює

Логіку виконання сценаріїв тримаємо на бекенді — Node.js або Python-сервіс з постійним підключенням до MQTT-брокера (Mosquitto або AWS IoT Core). Мобільний додаток лише створює, редагує та відображає сценарії. Це розграничення критично.

На стороні сервера кожен сценарій — це структура з триггером, умовами та списком дій:

{
  "trigger": { "topic": "home/sensor/motion", "payload": "1" },
  "conditions": [
    { "type": "time_range", "from": "23:00", "to": "07:00" }
  ],
  "actions": [
    { "topic": "home/light/hall", "payload": "ON", "delay_ms": 0 },
    { "topic": "home/light/hall", "payload": "OFF", "delay_ms": 120000 }
  ]
}

Сервіс підписаний на всі trigger-топіки через MQTT paho-mqtt / mqtt.js. При отриманні подій проверяет условия, формує чергу дій з delay та публікує команди. Redis використовуємо як state storage — зберігаємо останнє відоме стану кожного пристрою, щоб не посилати дублюючі команди.

На мобільному клієнті (Flutter або React Native) редактор сценаріїв будується через drag-and-drop блоків. Кожен блок — це окремий віджет/компонент з валідацією. Збереження йде через REST API на бекенд. Реальний статус виконання показуємо через WebSocket або MQTT over WebSocket — підписка на топік home/automation/log.

Зберігання та версіонування сценаріїв

Використовуємо PostgreSQL: таблиця automations з полями trigger_json, conditions_json, actions_json, enabled, last_triggered_at. Версіонування через automation_versions — зберігаємо історію змін, щоб можна було откатить сценарій, який щось зломав ночью.

На Flutter використовуємо flutter_riverpod для стейт-менеджменту списку сценаріїв. AutomationNotifier оновлює UI при зміні статусу через WebSocket. На React Native — Zustand з persist middleware для кешу.

Складні кейси з практики

Проект: управління теплицею. 14 датчиків вологості, 6 зон поливу, автоматизація залежить від показань відразу кількох датчиків одночасно. Стандартний if-then не справлявся — потрібні були складні умови з AND/OR/NOT.

Вирішили через JSON Schema для описування умов та рекурсивний evaluator на сервері. Користувач у додатку будував дерево умов візуально. Під капотом — структура:

{
  "operator": "AND",
  "conditions": [
    { "sensor": "zone_1_humidity", "lt": 40 },
    { "operator": "OR", "conditions": [
      { "time_range": { "from": "06:00", "to": "08:00" } },
      { "sensor": "soil_temp", "gt": 22 }
    ]}
  ]
}

Evaluator обходив дерево рекурсивно, запрашивая текущие значения из Redis (TTL 30 сек). Если данных нет — условие считалось false, выполнение откладывалось, клиент получал уведомление через FCM/APNs.

Процес роботи

Почнемо з аудиту: які пристрої та протоколи вже є (MQTT, Zigbee, Z-Wave, HTTP), які дані потрібні для триггерів. Проектуємо схему топіків та структуру сценаріїв під конкретну задачу. Потім — API та бекенд-рушій, паралельно UI редактора сценаріїв у додатку. Фінальний етап — інтеграційне тестування з реальними пристроями.

Терміни

Базовий редактор сценаріїв з простими if-then та бекенд-рушієм — 3–5 тижнів. Складні складені умови, візуальний конструктор, історія виконання, push-повідомлення за подіями — 8–12 тижнів. Стоимость рассчитывается после анализа протоколов и количества типов устройств.