Ми стикаємося з полями в 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» або «Завтра очікується заморозок, 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+ проєктів для сільського господарства. Звертайтеся — допоможемо перетворити дані на врожай.







