אנו נתקלים בשדות של 100 דונם—לא דירות עם נורות חכמות. חיישנים הפזורים על פני קילומטרים, קישוריות GSM לא בכל מקום, החלפת סוללה פעם בשנה היא דרישה, לא משאלה. אפליקציה ניידת ל-agri-IoT בנויה סביב מספר אילוצים אמיתיים: קישוריות נמוכה, מחזורי נתונים ארוכים (כל 15–60 דקות מצומת LoRaWAN), עלות גבוהה של טעות (אובדן יבול). עם ניסיון של 10+ שנים בפיתוח חקלאי, צברנו ניסיון שמבטיח פתרון סוהר אמין.
אילו פרוטוקולי תקשורת מתאימים ל-agri-IoT?
LoRaWAN הוא הפרוטוקול המרכזי לחיישני שדה על פני שטחים גדולים. טווח של עד 15 ק"מ בשדה פתוח, צריכת חשמל במיליוואטים, מנות של 51–222 בתים בהתאם ל-Spreading Factor. חלופות LPWAN: NB-IoT (דורש רשת ספק, אך תקשורת דו-כיוונית), Sigfox (מגבלה של 140 הודעות ביום).
לחממות ומתקנים עם תשתית — Zigbee/Thread, Wi-Fi, Modbus חוטי. לנכסים ניידים (מכונות, בעלי חיים) — GPRS/LTE עם GPS tracker.
נתונים מצומת LoRaWAN עוברים דרך Network Server (TTN, ChirpStack, Helium) → Application Server → MQTT או REST → אפליקציה ניידת.
| פרוטוקול | טווח | צריכת חשמל | רוחב פס | שימוש אופייני |
|---|---|---|---|---|
| LoRaWAN | עד 15 ק"מ | נמוכה מאוד | 0.3–50 kbps | חיישני שדה |
| NB-IoT | עד 10 ק"מ | נמוכה | עד 250 kbps | חיישנים נייחים עם רשת |
| Sigfox | עד 10 ק"מ | נמוכה מאוד | 100 bps | תגיות פשוטות |
| Zigbee | עד 100 מ' | נמוכה | עד 250 kbps | חממות, מערכות השקיה |
| Wi-Fi | עד 100 מ' | גבוהה | עד 1 Gbps | נקודות גישה, מצלמות |
| Modbus | עד 1200 מ' | בינונית | עד 115 kbps | בקרים תעשייתיים |
ארכיטקטורת נתונים: עדכונים נדירים, אנליטיקה עשירה
חיישן 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 עם { "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 } } (מבוסס Leaflet, חינמי ללא מפתח API) או 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 (Normalized Difference Vegetation Index) מתקבל מתמונות 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 בשדה עשוי שלא להיות מחובר לאינטרנט באופן קבוע. חלק מהנתונים מסונכרנים בקבוצות כאשר הקישוריות זמינה. האפליקציה מציגה "עדכון אחרון לפני שעתיים" ולא נכנסת לפאניקה. חשוב לטפל בחותמות זמן בצורה נכונה: לנתוני החיישן יש חותמת זמן משלהם, שעשויה להיות שונה משמעותית מזמן ההגעה לשרת.
לעבודה לא מקוונת, אנו משתמשים באחסון מקומי עם סנכרון דרך משימות רקע. ב-iOS — Background Fetch, באנדרואיד — WorkManager. קונפליקטים נפתרים לפי העיקרון "חותמת הזמן החדשה יותר מנצחת".
התראות לספי agri
ל-agri-IoT, התראות סף הן קריטיות: "לחות קרקע מתחת ל-25% בשדה צפון-3" או "צפוי כפור עד 04:00, 3 חיישנים מראים טמפרטורה מתחת ל-2°C". הלוגיקה בשרת, משלוח דרך FCM/APNs.
ניואנס של התראות ניידות לחקלאים: הטלפון נמצא לעיתים קרובות בכיס במהלך העבודה, ולכן יש צורך בטקסטים תמציתיים ואינפורמטיביים ללא מילים מיותרות. השורה הראשונה של ההתראה צריכה להיות הנקודה המרכזית: "שדה מזרח: לחות 18%, יש צורך בהשקיה".
מה כלול בעבודה?
- ביקורת צי החיישנים והדרישות האגרונומיות.
- עיצוב ארכיטקטורה: צד שרת, אפליקציה ניידת, אינטגרציות.
- יישום סוהר: iOS (Swift, SwiftUI) ואנדרואיד (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 חודשים |
העלות מחושבת באופן אישי לאחר ניתוח החיישנים והמשימות שלכם. התייעצו איתנו כדי לדון בפרטי הפרויקט שלכם.
המהנדסים שלנו מוסמכים בפיתוח נייד וב-agri-IoT. עם ניסיון של 10+ שנים, השלמנו 50+ פרויקטים לחקלאות. צרו קשר — נעזור לכם להפוך נתונים ליבול.







