Разработка мобильного приложения для умного дома (полив/сад)
Автоматизация полива — задача, где мобильное приложение должно работать с комбинацией факторов: расписание, данные датчиков влажности почвы, прогноз погоды, геолокация пользователя. Умный контроллер полива отличается от простого таймера именно интеграцией с этими источниками данных.
Оборудование и протоколы
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 недель. Стоимость рассчитывается после определения набора устройств и источников данных.







