Розробка мобільного додатка для розумного дому (полив/сад)
Автоматизація поливу — завдання, де мобільний додаток повинен працювати з комбінацією факторів: розклад, дані датчиків вологості грунту, прогноз погоди, геолокація користувача. Розумний контроллер поливу відрізняється від простого таймера саме інтеграцією з цими источниками даних.
Обладнання та протоколи
Rachio — один з найбільш API-відкритих контролерів поливу. REST API на https://api.rach.io/1/public. OAuth2. Управління зонами: PUT /device/{deviceId}/zone/start_multiple з вказанням zones та durations. Отримання стану: GET /device/{deviceId}. Webhook підтримка для подій (полив запущен, завершен, помилка).
Hunter Pro-HC — популярний комерційний контроллер. Wi-Fi модуль, HTTP API через локальну мережу. Немає публічної документації — інтеграція через реверс-інжиніринг або Home Assistant rainbird integration.
RainBird — офіційний Local API задокументований. UDP протокол на порту 80. LNK WiFi Module підтримує JSON команди локально без хмари.
ESPHome — для DIY контролерів на ESP32. MQTT або HTTP API. Повний контроль над логікою, відкритий протокол.
Zigbee клапани (SASWELL, Woox R4044) — Zigbee2MQTT, команда {"state": "ON", "duration": 600} (600 секунд відкриття).
Розклад поливу
Розклад поливу складніший ніж розклад освітлення. Потрібні:
- Дні тижня або інтервал (кожні N днів)
- Час запуску (з урахуванням часового поясу та DST)
- Тривалість для кожної зони
- Умови пропуску (дощ, висока вологість грунту)
UI розкладу: таблиця з днями тижня по горизонталі, зонами по вертикалі. Тап на ячейку — налаштування тривалості для цієї зони в цей день. На Flutter: Table з InkWell ячейками або кастомний CustomPainter для багатшого UI.
Зберігання розкладу на бекенді або прямо в контролері (Rachio зберігає у себе). При зберіганні на бекенді — cron виконання через node-cron або APScheduler, враховуємо timezone користувача (moment-timezone або Python zoneinfo).
Інтеграція з прогнозом погоди
Пропуск поливу при дощі — ключева «розумна» функція. Варіанти API прогнозу погоди:
Open-Meteo — безплатний, без API ключа, хороша точність. GET https://api.open-meteo.com/v1/forecast?latitude=...&longitude=...&daily=precipitation_sum&forecast_days=2. Якщо precipitation_sum > 5mm за наступні 24 години — пропускаємо полив.
OpenWeatherMap — daily endpoint у One Call API 3.0 (платний, але дешево). rain.1h в мм.
Weather Underground Personal Weather Station — якщо рядом є приватна метеостанція, дані точніші ніж у крупних провайдерів.
Логіка пропуску: за 30 хвилин до запланованого поливу бекенд запрашує прогноз. Якщо очікуються опади — скасуємо сеанс, пишемо у лог причину, відправляємо push користувачу. Користувач може відключити авто-пропуск у налаштуваннях.
Датчики вологості грунту
Capacitive soil moisture sensor (на ESP32/Arduino) — аналогові значення 0–4095, лінійна калібровка до процента вологості. MQTT публікація кожні 5–30 хвилин. Висока вологість → автоматичний пропуск поливу.
Для комерційних датчиків: Xiaomi Mi Flora — BLE, flutter_blue_plus для читання характеристики 00001a01-0000-1000-8000-00805f9b34fb (рівень вологості + освітленість + температура грунту + поживність). Опрос по BLE раз в 5 хвилин при нахождении телефона рядом або через Bluetooth-шлюз (Raspberry Pi) для постійного моніторингу.
На екрані зони поливу: графік вологості грунту за останні 7 днів + лінія «поріг поливу». Під графіком — історія сеансів з причинами пропуску. fl_chart з LineChart, BarChart для історії.
Мобільний додаток: що важливо у UI
Головний екран — список зон з іконками культур (газон, городня, квіти), статусом поливу (активен/не активен), останнім поливом, вологістю грунту. Кнопка «Запустити вручну» для кожної зони з вибором тривалості.
Важливо: показувати залишень час активного поливу з зворотним відліком. Не polling кожну секунду — WebSocket з оновленням раз в 10 секунд від бекенду.
Сповіщення: полив почався, полив завершений, полив пропущен через дощ, помилка (немає тиску води, клапан не відповідь).
Строки
Базовий додаток з ручним управлінням, розкладом та інтеграцією Rachio — 4–6 тижнів. Датчики вологості, прогноз погоди, розумний пропуск, кілька контролерів, історія з графіками — 10–14 тижнів. Вартість розраховується після визначення набору пристроїв та источників даних.







