Мы сталкиваемся с полями в 100 гектар — не квартира с умными лампочками. Датчики разбросаны на километры, GSM-связь есть не везде, батарейки менять раз в год — требование, а не пожелание. Мобильное приложение для агро-IoT строится вокруг нескольких реальных ограничений: низкая связность, длинные циклы данных (раз в 15-60 минут от LoRaWAN-узла), высокая стоимость ошибки (потерянный урожай). За 10+ лет в агро-разработке мы накопили опыт, который гарантирует надёжное решение под ключ.
Какие протоколы связи подходят для агро-IoT?
LoRaWAN — основной протокол для полевых датчиков на больших площадях. Диапазон до 15 км в открытом поле, потребление милливаты, пакеты 51-222 байта в зависимости от Spreading Factor. LPWAN-альтернативы: NB-IoT (нужна операторская сеть, зато двусторонняя связь), Sigfox (ограничение 140 сообщений в сутки).
Для теплиц и объектов с инфраструктурой — Zigbee/Thread, Wi-Fi, проводной Modbus. Для мобильных активов (техника, животные) — GPRS/LTE с GPS-трекером.
Данные с LoRaWAN-узлов идут через Network Server (TTN, ChirpStack, Helium) → Application Server → MQTT или REST → мобильное приложение.
| Протокол | Дальность | Энергопотребление | Пропускная способность | Типичное применение |
|---|---|---|---|---|
| LoRaWAN | до 15 км | очень низкое | 0.3-50 кбит/с | Полевые датчики |
| NB-IoT | до 10 км | низкое | до 250 кбит/с | Стационарные датчики с сетью |
| Sigfox | до 10 км | очень низкое | 100 бит/с | Простые метки |
| Zigbee | до 100 м | низкое | до 250 кбит/с | Теплицы, системы полива |
| Wi-Fi | до 100 м | высокое | до 1 Гбит/с | Точки доступа, камеры |
| Modbus | до 1200 м | среднее | до 115 кбит/с | Промышленные контроллеры |
Архитектура данных: редкие обновления, богатая аналитика
LoRaWAN-датчик обновляет данные каждые 15-60 минут. Мобильное приложение показывает не только текущие значения, но и тренды, аномалии, прогнозы. Это требует серверной агрегации и хранения в Time Series DB.
Структура данных для датчика почвы:
{ "deviceEui": "0004A30B001C3A4D", "applicationId": "crop-monitoring-prod", "timestamp": "2024-07-15T08:30:00Z", "location": {"lat": 51.2345, "lon": 23.4567}, "payload": { "soilMoistureVwc": 28.5, "soilTemperatureC": 18.2, "soilElectricalConductivity": 0.45, "batteryPercent": 87, "signalRssi": -98, "snr": 4.2 } } На мобильной стороне — Kotlin Flow с roomdb для офлайн-работы:
@Dao interface SensorReadingDao { @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertAll(readings: List<SensorReading>) @Query(""" SELECT * FROM sensor_readings WHERE device_eui = :eui AND timestamp >= :from ORDER BY timestamp DESC """) fun observeReadings(eui: String, from: Long): Flow<List<SensorReading>> @Query(""" SELECT CAST(strftime('%s', datetime(timestamp/1000, 'unixepoch', 'start of day')) AS INTEGER) * 1000 AS day, AVG(soil_moisture_vwc) AS avg_moisture, MIN(soil_temperature_c) AS min_temp, MAX(soil_temperature_c) AS max_temp FROM sensor_readings WHERE device_eui = :eui AND timestamp >= :from GROUP BY day ORDER BY day """) fun getDailyAggregates(eui: String, from: Long): Flow<List<DailyAggregate>> } Карта полей и зональное управление
Ключевой экран в агро-приложении — карта с полигонами полей и маркерами датчиков. На Flutter с flutter_map (Leaflet-based, бесплатно без API-key) или Google Maps:
class FieldMapWidget extends StatelessWidget { final List<Field> fields; final List<SensorDevice> sensors; @override Widget build(BuildContext context) { return FlutterMap( options: MapOptions(center: LatLng(51.23, 23.45), zoom: 13), children: [ TileLayer( urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', // Или агро-слои: Sentinel-2 NDVI через EO Browser ), PolygonLayer( polygons: fields.map((f) => Polygon( points: f.boundary, color: _fieldColorByStatus(f), borderColor: Colors.white, borderStrokeWidth: 1.5, )).toList(), ), MarkerLayer( markers: sensors.map((s) => Marker( point: LatLng(s.lat, s.lon), builder: (_) => SensorMarker(sensor: s), )).toList(), ), ], ); } Color _fieldColorByStatus(Field field) { final ndvi = field.latestNdvi; if (ndvi == null) return Colors.grey.withOpacity(0.3); if (ndvi < 0.3) return Colors.red.withOpacity(0.4); if (ndvi < 0.5) return Colors.yellow.withOpacity(0.4); return Colors.green.withOpacity(0.4); } } NDVI (индекс вегетации) получают из Sentinel-2 снимков через Copernicus Data Space API или Planet API. Снимки раз в 5-12 дней при безоблачной погоде — автоматически скачиваются на бэкенд и рассчитываются попиксельно.
Как рассчитывается NDVI попиксельно?
NDVI = (NIR - Red) / (NIR + Red), где NIR — ближний инфракрасный канал, Red — красный канал снимка. Значения от -1 до 1. Для растительности от 0,2 до 0,9. Применяем маску облачности, чтобы исключить помехи.
Как обеспечить офлайн-режим для полевых датчиков?
LoRaWAN шлюз на поле может не иметь постоянного интернета. Часть данных синхронизируется пачками при появлении связи. Приложение показывает «последнее обновление 2 часа назад» и не паникует. Критично правильно обрабатывать временны́е метки: данные с датчика имеют свой timestamp, который может сильно отличаться от времени доставки на сервер.
Для офлайн-работы мы используем локальное хранилище с синхронизацией через фоновые задачи. На iOS — Background Fetch, на Android — WorkManager. Конфликты разрешаются по принципу «более свежий timestamp побеждает».
Уведомления по агро-порогам
Для агро-IoT критичны пороговые алерты: «Влажность почвы ниже 25% на поле Северный-3» или «Заморозок ожидается к 04:00, 3 датчика показывают температуру ниже 2°C». Логика на бэкенде, доставка через FCM/APNs.
Нюанс мобильных уведомлений для фермеров: телефон часто в кармане во время работы, нужны краткие информативные тексты без лишних слов. Первая строка уведомления — главное: «Поле Восток: влажность 18%, нужен полив».
Что входит в работу?
- Аудит парка датчиков и агрономических требований.
- Проектирование архитектуры: серверная часть, мобильное приложение, интеграции.
- Реализация под ключ: iOS (Swift, SwiftUI) и Android (Kotlin, Jetpack Compose) или кросс-платформа (Flutter/React Native).
- Интеграция с LoRaWAN-сетью, MQTT, REST API.
- Разработка карты полей с NDVI-слоями.
- Настройка уведомлений по порогам.
- Тестирование и развертывание в App Store и Google Play.
- Обучение агрономов и техническая поддержка.
Мы используем LoRaWAN и NDVI — проверенные отраслевые стандарты.
Сроки разработки
| Вариант | Срок |
|---|---|
| Мониторинг одной культуры с картой полей и алертами | 2–3 месяца |
| Многокультурный мониторинг с NDVI и управлением ирригацией | 4–6 месяцев |
| Полный цикл с прогнозированием и интеграцией ERP | 6–9 месяцев |
Стоимость рассчитывается индивидуально после анализа ваших датчиков и задач. Получите консультацию — обсудим детали вашего проекта.
Наши инженеры сертифицированы в области мобильной разработки и агро-IoT. За 10+ лет мы реализовали 50+ проектов для сельского хозяйства. Обращайтесь — поможем превратить данные в урожай.







