אפליקציית מובייל לגננים: זיהוי צמחים חכם ומתכנן השקיה לא מקוון
תארו לעצמכם: גנן מעלה תמונה של כתם חשוד על עלה עגבנייה — תוך שניות האפליקציה מחזירה אבחנה (מכת עלים, 87% ביטחון) וממליצה על טיפול בסולפט נחושת. הכל לא מקוון, באזור כפרי מרוחק. בניית אפליקציה זו ל-iOS ואנדרואיד דורשת תשומת לב לכל פרט: מבחירת מודל ML ועד סנכרון ברקע.
אנו יוצרים אפליקציות שבהן מודלי CV, טריגרים של מזג אוויר ומצב לא מקוון פועלים כמנגנון אחד. אנו מביאים 6 שנות ניסיון בפיתוח מובייל ו-50+ פרויקטים של AgriTech. האתגר אינו ברכיבים בודדים, אלא בשילוב החלק שלהם: חיישן גשם דרך OpenWeatherMap, מסד נתונים מקומי של SQLite, זיהוי דרך CoreML או TFLite — הכל פועל בצורה אמינה גם במכשירים בני חמש שנים.
איך פועל זיהוי צמחים
התכונה המרכזית — זיהוי צמחים ומחלות מתמונות. שתי גישות: API בענן (Plant.id, PlantNet) או מודל על המכשיר (CoreML/TFLite). בואו נשווה:
| פרמטר | API בענן (Plant.id / PlantNet) | על המכשיר (CoreML / TFLite) |
|---|---|---|
| דיוק | 85–95% | 70–80% |
| מהירות | 1–3 שניות (תלוי ברשת) | 0.2–0.5 שניות |
| אינטרנט | נדרש | לא נדרש |
| עלות | מנוי בתשלום ($0.01–$0.10 לבקשה) | חינם (פיתוח בלבד) |
| לא מקוון | לא | כן |
זיהוי על המכשיר מהיר פי 5 מהענן — 0.2 שניות לעומת 1–3 שניות — אבל הדיוק נמוך ב-15–20%. עבור בקתה ללא אינטרנט, זו האפשרות היחידה.
ה-API של Plant.id מחזיר את השם, מחלות עם ציון ביטחון והמלצות טיפול. התמונה מקודדת ב-base64 ונשלחת דרך POST; התשובה מכילה suggestions עם probability. חשוב: ה-API דורש צילום מואר היטב של עלה או פרח — צילום רחב נותן דיוק נמוך. אנו תמיד מלמדים את המשתמש טכניקת צילום נכונה.
struct PlantIdentificationRequest: Encodable {
let images: [String] // base64
let modifiers: [String] // ["crops_fast", "similar_images"]
let plant_language: String // "ru"
let plant_details: [String] // ["common_names", "url", "description", "treatment"]
}הגישה על המכשיר משתמשת במודלים מ-iNaturalist או מאומנת על מערך הנתונים של PlantVillage (54,000 תמונות, 38 מחלקות מחלות עלים). הדיוק נמוך ב-15–20% מהענן, אבל לגמרי לא מקוון.
למה שילוב מזג אוויר חשוב
נשמע פשוט, אבל טעות נפוצה היא הגדרת התראות בזמן קבוע ותהייה מדוע משתמשים מפספסים השקיות. הבעיה: ההתראות לא מחושבות מחדש כשמשקעים משתנים.
הלוגיקה הנכונה: כל בוקר יש למשוך את תחזית מזג האוויר דרך OpenWeatherMap API או Apple WeatherKit. אם צפוי גשם >5 מ"מ, דלגו על ההשקיה ובטלו את ההתראה דרך struct PlantIdentificationRequest: Encodable { let images: [String] // base64 let modifiers: [String] // ["crops_fast", "similar_images"] let plant_language: String // "ru" let plant_details: [String] // ["common_names", "url", "description", "treatment"] } . זה דורש משימת רקע: BGAppRefreshTask ב-iOS או UNUserNotificationCenter.removePendingNotificationRequests באנדרואיד.
באנדרואיד אנו משתמשים ב-WorkManager עם WorkManager ואילוץ PeriodicWorkRequest. לא NetworkType.CONNECTED ישירות — באנדרואיד 12+ נדרשת הרשאת AlarmManager ולעתים רחוקות ניתנת על ידי משתמשים.
חיסכון בזמן בתכנון השקיה ידני — עד שעתיים בשבוע. חיסכון במים מחישוב חכם של משקעים — עד 30% בעונה.
מה כלול בעבודה
הזמנת פיתוח מפתח כוללת:
- עיצוב ארכיטקטורה ובחירת טכנולוגיות (iOS/אנדרואיד/קרוס-פלטפורמה)
- שילוב כל ה-APIs (מזג אוויר, זיהוי)
- מסד נתונים לא מקוון של צמחים עם שמירת תמונות במטמון
- הגדרת התראות push ומשימות רקע
- תיעוד תפעולי וקישורי גישה
- סיוע בפרסום ל-App Store ול-Google Play
- אחריות על קוד — 3 חודשי תמיכה חינם
מצב לא מקוון ומסד נתונים של צמחים
מסד הנתונים המקומי של צמחים (שם, תיאור, הוראות טיפול, לוח זריעה) מאוחסן ב-SQLite. עבור 500–1000 רשומות אנו משתמשים ב-Room באנדרואיד, Core Data או GRDB ב-iOS. תמונות נשמרות במטמון בצפייה ראשונה עם מדיניות LRU (Kingfisher ב-iOS, Coil באנדרואיד).
אין אינטרנט בדאצ'ה — מציאות. כל הפונקציות הבסיסיות (הוספת צמחים, צפייה בטיפים, הגדרת תזכורות) פועלות לא מקוון. סנכרון כשהחיבור משוחזר מתבצע דרך תור של פעולות דחויות.
שילוב מזג אוויר
OpenWeatherMap הוא הסטנדרט לאפליקציות כאלה: המסלול החינמי מכסה 1000 בקשות ביום. WeatherKit ב-iOS (מגרסאות חדשות יותר) מדויק יותר ואינו דורש מפתח משלך, אבל זמין רק בפלטפורמות של Apple. עבור אפליקציית גינון, מלבד טמפרטורה, SCHEDULE_EXACT_ALARM, humidity ו-uvi (משקעים של שעה ו-3 שעות) הם קריטיים — זמינים ב-endpoint rain של OWM.
תהליך
- אנליטיקה — הגדרת מערך התכונות: אילו צמחים (רק ירקות או גם גינה + צמחי בית), האם נדרש רכיב חברתי, האם נדרש מסד נתונים לא מקוון של מחלות.
- עיצוב — יצירת הארכיטקטורה, בחירת הטכנולוגיות (native או קרוס-פלטפורמה).
- פיתוח — מסד נתונים לא מקוון → הוספת צמחים → לוח השקיה עם התראות → שילוב מזג אוויר → זיהוי. הזיהוי אחרון כי יש צורך בהסכמה על מפתחות API ומחירים.
- בדיקות — כיסוי הלוגיקה המרכזית בבדיקות יחידה, ביצוע בדיקות שטח על מכשירים אמיתיים.
- השקה — פרסום בחנויות, הגדרת ניטור Crashlytics ואנליטיקה.
צרו קשר לייעוץ על הפרויקט שלכם — נעזור לבחור את הטכנולוגיות האופטימליות ולהעריך לוחות זמנים.
מדריך לוחות זמנים
| תצורה | לוח זמנים |
|---|---|
| בסיס + לוח זמנים + מזג אוויר | 5–7 שבועות |
| עם זיהוי צמחים/מחלות | 9–12 שבועות |
| פונקציונליות מלאה (לא מקוון + רשת חברתית) | 12–16 שבועות |
כדי להעריך את הפרויקט שלכם, צרו קשר — נכין הצעת מחיר מדויקת ונציע את הפתרון הטוב ביותר. אנו מבטיחים מעבר ב-App Store Review וב-Google Play Review בניסיון הראשון.







