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







