#!/usr/bin/env python3 # PLANETYOYO AI Ultimate v19.0 - Final Release with pre-loading and manual local training # This version is the complete code with all requested features. import subprocess, sys, os, time, json, requests, threading, hashlib, random, math from datetime import datetime, timedelta from collections import Counter, defaultdict, deque from dataclasses import dataclass, field from typing import Dict, List, Any, Optional, Tuple import io # Install packages quietly and handle dependencies try: for pkg in ["gradio", "torch", "transformers", "requests", "Pillow", "pandas", "prophet", "adafruit-io", "geopy", "numpy", "cloudinary", "Pillow", "matplotlib", "scikit-learn"]: subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", pkg], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) except: pass import gradio as gr from PIL import Image import numpy as np import pandas as pd import matplotlib.pyplot as plt # Conditional imports try: import torch from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification AI_AVAILABLE = True device = "cuda" if torch.cuda.is_available() else "cpu" except ImportError: AI_AVAILABLE = False device = "cpu" try: from adafruit_io.rest_client import Client as AdafruitClient from adafruit_io.rest_client import APIError from geopy.geocoders import Nominatim ADAFRUIT_AVAILABLE = True GEOPY_AVAILABLE = True except ImportError: ADAFRUIT_AVAILABLE = False GEOPY_AVAILABLE = False try: import cloudinary import cloudinary.api import cloudinary.uploader CLOUDINARY_AVAILABLE = True except ImportError: CLOUDINARY_AVAILABLE = False try: from prophet import Prophet PROPHET_AVAILABLE = True except ImportError: PROPHET_AVAILABLE = False # ==================== CONFIGURATION & SECRETS ==================== # Hardcoded keys as requested PLANTNET_API_KEY = "2b10HlR0yP4wZbvHjP8jCo3Aae" CLOUDINARY_CLOUD_NAME = "dru8hdesf" CLOUDINARY_API_KEY = "959867312261694" CLOUDINARY_API_SECRET = "3S0glC5W38T2hh-SGVskOOODVFk" ADAFRUIT_IO_USERNAME = "planetserver" ADAFRUIT_IO_KEY = "aio_lhXC90tYptqosfgidyXWtdkb9e6b" WEATHER_API_KEY = "e541061f22d8727d1cae4f22157fe7ec" TELEGRAM_BOT_TOKEN = "8437890500:AAFIeITryixh9WbHif7D30mMB" HUGGING_FACE_TOKEN = os.environ.get("HF_TOKEN", "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") TELEGRAM_CHAT_ID = "667462198" ADAFRUIT_IO_BASE_URL = "https://io.adafruit.com/api/v2" REPO_ID = "Yoyo-9877/planet_monitor_YOYO" # Adafruit IO Feed names and Cloudinary Folder as per user request ADAFRUIT_FEEDS = { "temperature": "temperature-sensor", "humidity": "humidity-sensor", "soil_moisture": "soil-moisture-sensor", "light": "light-sensor", "analysis_results": "plant-analysis-results" } CLOUDINARY_FOLDER = "ESP32CAMPLANET" # Weather API Endpoint WEATHER_API_URL = "http://api.openweathermap.org/data/2.5/weather" # Plant Database PLANT_DATABASE = { "aloe_vera": {"care_tips": ["שמש חלקית עד מלאה", "השקיה מועטה מאוד"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/aloe_vera.jpg", "plant_id": "aloe_vera"}, "almond": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["חור שחור", "ריקבון חום", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dalmond", "plant_id": "almond"}, "apple": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח", "חלודת ארז-תפוח", "ריקבון שחור"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/apple.jpg", "plant_id": "apple"}, "apple_fuji": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfuji_apple", "plant_id": "apple_fuji"}, "apple_gala": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgala_apple", "plant_id": "apple_gala"}, "apple_granny_smith": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgranny_smith", "plant_id": "apple_granny_smith"}, "apricot": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון חום", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dapricot", "plant_id": "apricot"}, "artichoke": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["ריקבון כתר", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dartichoke", "plant_id": "artichoke"}, "asparagus": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודת האספרגוס", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dasparagus", "plant_id": "asparagus"}, "avocado": {"care_tips": ["שמש מלאה", "הגנה מרוח חזקה"], "common_diseases": ["גלד האבוקדו", "כתם שמש", "ריקבון שורשים"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/avocado.jpg", "plant_id": "avocado"}, "azalea": {"care_tips": ["צל חלקי", "קרקע חומצית", "לחות גבוהה"], "common_diseases": ["קשקשת האזליה", "קימחון", "ריקבון שורשים"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/4/4b/Azalea_flower_in_Japan.jpg", "plant_id": "azalea"}, "bamboo": {"care_tips": ["שמש מלאה או חלקית", "השקיה מרובה", "לחות גבוהה"], "common_diseases": ["חנקן הבמבוק", "וירוס פסיפסת הבמבוק", "כתם עלים"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/bamboo.jpg", "plant_id": "bamboo"}, "barley": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ננסות שעורה צהובה", "כנימות", "כתם רשת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbarley", "plant_id": "barley"}, "basil": {"care_tips": ["שמש חלקית", "השקיה סדירה", "קרקע עשירה"], "common_diseases": ["קשקשת", "פטריה אפורה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/basil.jpg", "plant_id": "basil"}, "bean": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה", "אנתרקנוז", "חנקן חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbean", "plant_id": "bean"}, "birch": {"care_tips": ["שמש מלאה", "קרקע לחה"], "common_diseases": ["תמותת ליבנה", "חלודה", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbirch", "plant_id": "birch"}, "blueberry": {"care_tips": ["קרקע חומצית", "השקיה מרובה"], "common_diseases": ["ענבת אוכמניות", "חנקן גזע", "אנתרקנוז"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/blueberry.jpg", "plant_id": "blueberry"}, "broccoli": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["מועדון השורש", "רגל שחורה", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbroccoli", "plant_id": "broccoli"}, "cabbage": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון השורש", "כתם עלים אלטרנריה", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcabbage", "plant_id": "cabbage"}, "cacao": {"care_tips": ["צל חלקי", "לחות גבוהה"], "common_diseases": ["תרמיל שחור", "מטאטא המכשפות", "וירוס יריעה נפוחה"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/5/51/Theobroma_cacao_tree.jpg", "plant_id": "cacao"}, "cactus": {"care_tips": ["שמש מלאה", "השקיה מועטה מאוד"], "common_diseases": ["ריקבון קקטוס", "חלודה", "ריקבון רך"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/cactus.jpg", "plant_id": "cactus"}, "camellia": {"care_tips": ["צל חלקי", "השקיה קבועה", "הגנה מרוח חזקה"], "common_diseases": ["חנקן עלי כליל", "פצע", "מרה בעלה"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/e/e0/Camellia_japonica_flower.jpg", "plant_id": "camellia"}, "carrot": {"care_tips": ["שמש מלאה", "קרקע רכה ועמוקה"], "common_diseases": ["חנקן חיידקי", "חנקן עלים צרקספורה", "קימחון"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/carrot.jpg", "plant_id": "carrot"}, "cauliflower": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודה לבנה", "ריקבון שחור", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcauliflower", "plant_id": "cauliflower"}, "cherry": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ספחת חיידקית", "ריקבון חום", "כתם עלים דובדבן"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/cherry.jpg", "plant_id": "cherry"}, "cilantro": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["כתם עלים צרקספורה", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcilantro", "plant_id": "cilantro"}, "coffee": {"care_tips": ["שמש חלקית", "קרקע חומצית ומנוקזת"], "common_diseases": ["חלודת הקפה", "מחלת פרי הקפה", "חנקן חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcoffee", "plant_id": "coffee"}, "cucumber": {"care_tips": ["שמש מלאה", "השקיה עקבית"], "common_diseases": ["קימחון", "וירוס פסיפסת המלפפון", "חנקן גזע גומי"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/cucumber.jpg", "plant_id": "cucumber"}, "daffodil": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["זבוב בצל נרקיס", "ריקבון בסיסי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddaffodil", "plant_id": "daffodil"}, "date_palm": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["בייוד", "כאמדג'", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddate_palm", "plant_id": "date_palm"}, "dill": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים צרקספורה", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddill", "plant_id": "dill"}, "dragon_fruit": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ספחת פרי הדרקון", "כתם שחור", "ריקבון גזע"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/dragon_fruit.jpg", "plant_id": "dragon_fruit"}, "eggplant": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קמילה פוסרית", "חנקן פומופסיס", "אנתרקנוז"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/eggplant.jpg", "plant_id": "eggplant"}, "fern": {"care_tips": ["צל חלקי", "לחות גבוהה"], "common_diseases": ["נמטודות עלים", "חלודה", "ריקבון שורשים"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/fern.jpg", "plant_id": "fern"}, "ficus": {"care_tips": ["אור לא ישיר", "השקיה מתונה", "ניקוי עלים מאבק"], "common_diseases": ["ריקבון שורשים", "אנתרקנוז", "עפץ כתר"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/ficus.jpg", "plant_id": "ficus"}, "fig": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["חלודת התאנה", "חנקן ורוד", "וירוס פסיפסת התאנה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/fig.jpg", "plant_id": "fig"}, "garlic": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון לבן", "חלודה", "ריקבון צוואר"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/garlic.jpg", "plant_id": "garlic"}, "geranium": {"care_tips": ["שמש מלאה", "השקיה מתונה", "הסרת פרחים יבשים"], "common_diseases": ["חלודה", "חנקן בוטריטיס", "בצקת"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/geranium.jpg", "plant_id": "geranium"}, "ginseng": {"care_tips": ["צל מלא", "קרקע לחה"], "common_diseases": ["חנקן אלטרנריה", "חלודת ג'ינסנג"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dginseng", "plant_id": "ginseng"}, "grapevine": {"care_tips": ["שמש מלאה", "גיזום קבוע"], "common_diseases": ["ריקבון שחור", "קימחון", "חלודה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/grapevine.jpg", "plant_id": "grapevine"}, "hawthorn": {"care_tips": ["שמש מלאה", "השקיה סדירה", "עמיד למחלות"], "common_diseases": ["כתם עלים", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhawthorn", "plant_id": "hawthorn"}, "hibiscus": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קמילת היביסקוס", "כתם עלים חיידקי", "כתם שחור"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/hibiscus.jpg", "plant_id": "hibiscus"}, "jasmine": {"care_tips": ["שמש מלאה או חלקית", "השקיה סדירה", "טיפוס מטפס"], "common_diseases": ["ריקבון שורשים", "כתם עלים", "עובש מפויח"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/jasmine.jpg", "plant_id": "jasmine"}, "juniper": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["חנקן פומופסיס", "חנקן קבטינה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djuniper", "plant_id": "juniper"}, "kiwi": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["חנקן חיידקי", "ריקבון כתר", "ריקבון שורשים"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/kiwi.jpg", "plant_id": "kiwi"}, "lantana": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["עובש מפויח", "זבוב לבן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlantana", "plant_id": "lantana"}, "laurel": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["עלים נגועים", "פצע פיטופטורה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/laurel.jpg", "plant_id": "laurel"}, "lavender": {"care_tips": ["שמש מלאה", "קרקע מנוקזת", "גיזום לאחר הפריחה"], "common_diseases": ["כתם עלים ספטמברי", "ריקבון שורשים", "פצע גזע"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/f/f8/Lavandula_angustifolia_field.jpg", "plant_id": "lavender"}, "leek": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודת כרישה", "ריקבון בסיסי פוסריום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dleek", "plant_id": "leek"}, "lemon": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מחלת ריקבון", "כנימות"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/lemon_tree.jpg", "plant_id": "lemon"}, "lettuce": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["הטלת חסה", "קימחון", "ריקבון סקלרוטיניה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/lettuce.jpg", "plant_id": "lettuce"}, "lilac": {"care_tips": ["שמש מלאה", "גיזום לאחר פריחה"], "common_diseases": ["קימחון", "חנקן חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlilac", "plant_id": "lilac"}, "lily": {"care_tips": ["שמש מלאה עד חלקית", "השקיה בינונית"], "common_diseases": ["וירוס מוזאיקת השושן"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/lily.jpg", "plant_id": "lily"}, "magnolia": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה", "הגנה מרוח חזקה"], "common_diseases": ["כתם עלים", "פצע", "תמותה"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/a/a2/Magnolia_grandiflora_tree.jpg", "plant_id": "magnolia"}, "mango": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["אנתרקנוז", "קימחון", "תמותה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/mango.jpg", "plant_id": "mango"}, "maple": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם זפת", "קמילה פוסרית", "אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmaple", "plant_id": "maple"}, "melon": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "קמילה פוסרית", "חנקן עלים אלטרנריה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/melon.jpg", "plant_id": "melon"}, "melon_cantaloupe": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcantaloupe", "plant_id": "melon_cantaloupe"}, "melon_honeydew": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhoneydew_melon", "plant_id": "melon_honeydew"}, "mint": {"care_tips": ["צל חלקי", "השקיה מרובה", "רגיש למזיקים"], "common_diseases": ["חלודה", "קמחונית"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/mint.jpg", "plant_id": "mint"}, "myrtle": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה מתונה", "גיזום לאחר הפריחה"], "common_diseases": ["חלודת ההדס", "חנקן בוטריטיס", "כתם עלים"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/a/a2/Myrtus_communis_plant.jpg", "plant_id": "myrtle"}, "nutmeg": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חנקן חוט", "חנקן אגוז מוסקט"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dnutmeg", "plant_id": "nutmeg"}, "oak": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["קמילת האלון", "אנתרקנוז", "שלפוחית עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Doak", "plant_id": "oak"}, "oat": {"care_tips": ["שמש מלאה", "עמיד לקרקעות דלות"], "common_diseases": ["חלודת הכתר", "כנימות", "הכללה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Doat", "plant_id": "oat"}, "okra": {"care_tips": ["שמש מלאה", "עמידה לבצורת"], "common_diseases": ["קמילה פוסרית", "קימחון", "חנקן חיידקי"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/okra.jpg", "plant_id": "okra"}, "olive": {"care_tips": ["שמש מלאה", "עמיד לבצורת", "קרקע מנוקזת היטב"], "common_diseases": ["זבוב הפירות", "מחלת עיניים טווס"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/olive_tree.jpg", "plant_id": "olive"}, "onion": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קימחון בצל", "ריקבון בסיסי פוסריום", "חנקן עלים בוטריטיס"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/onion.jpg", "plant_id": "onion"}, "orchid": {"care_tips": ["אור לא ישיר", "השקיה מועטה", "לחות גבוהה"], "common_diseases": ["ריקבון שורשים", "כנימות קמח"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/orchid.jpg", "plant_id": "orchid"}, "oregano": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["חלודת נענע", "ריקבון גזע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Doregano", "plant_id": "oregano"}, "palm": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קמילה פוסרית", "ריקבון ניצן", "ריקבון גזע גאנודרמה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/palm.jpg", "plant_id": "palm"}, "parsley": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים ספטמברי", "דעיכה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dparsley", "plant_id": "parsley"}, "passion_fruit": {"care_tips": ["שמש מלאה", "תמיכה לטיפוס"], "common_diseases": ["קמילה פוסרית", "כתם ספטמברי", "כתם חום"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/passion_fruit.jpg", "plant_id": "passion_fruit"}, "pea": {"care_tips": ["שמש חלקית", "קרקע קרירה"], "common_diseases": ["קימחון", "קמילה פוסרית", "חנקן אסקוכיתה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpea", "plant_id": "pea"}, "peach": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["עלים מסולסלים של אפרסק", "ריקבון חום", "כתם חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpeach", "plant_id": "peach"}, "pear": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חנקן אש", "גלד אגס", "ריקבון שורשים"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/pear.jpg", "plant_id": "pear"}, "pecan": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["גלד פקאן", "כוויות עלים פטרייתיות"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpecan", "plant_id": "pecan"}, "pepper": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם חיידקי", "קמילה פוסרית", "וירוס פסיפסת פלפל"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/pepper.jpg", "plant_id": "pepper"}, "persimmon": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["אנתרקנוז", "קמילת אפרסמון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpersimmon", "plant_id": "persimmon"}, "petunia": {"care_tips": ["שמש מלאה", "השקיה סדירה", "יש להסיר פרחים נבולים"], "common_diseases": ["ריקבון שורשים", "כנימות"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/petunia.jpg", "plant_id": "petunia"}, "pine": {"care_tips": ["שמש מלאה", "עמיד לבצורת", "קרקע מנוקזת"], "common_diseases": ["חלודה", "קמחונית", "ספחת", "כליה עלים"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/pine_tree.jpg", "plant_id": "pine"}, "plum": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["וירוס אבעבועות שזיף", "קשר שחור", "ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dplum", "plant_id": "plum"}, "poinsettia": {"care_tips": ["אור בהיר", "השקיה סדירה", "הגנה מקור"], "common_diseases": ["ריקבון שורשים", "קימחון", "גלד הפוינסטיאה"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/4/4c/Euphorbia_pulcherrima_plant.jpg", "plant_id": "poinsettia"}, "pomegranate": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["כתם פרי", "אנתרקנוז", "ריקבון פרי אלטרנריה"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/pomegranate.jpg", "plant_id": "pomegranate"}, "potato": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מאוחרת", "כליה מוקדמת", "גלד", "קמילה פוסרית"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/potato.jpg", "plant_id": "potato"}, "pumpkin": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון", "חנקן גזע גומי", "חגב דלעת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpumpkin", "plant_id": "pumpkin"}, "pumpkin_spaghetti": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dspaghetti_squash", "plant_id": "pumpkin_spaghetti"}, "quinoa": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קימחון קינואה", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dquinoa", "plant_id": "quinoa"}, "raspberry": {"care_tips": ["שמש מלאה", "גיזום שנתי"], "common_diseases": ["אנתרקנוז", "חנקן קנה", "חנקן דורבן"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/raspberry.jpg", "plant_id": "raspberry"}, "rhododendron": {"care_tips": ["צל חלקי", "קרקע חומצית", "השקיה סדירה"], "common_diseases": ["חגב התחרה של האזליה", "חנקן עלים", "ריקבון שורשים פיטופטורה"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/e/ec/Rhododendron_yakushimanum_flower.jpg", "plant_id": "rhododendron"}, "rice": {"care_tips": ["שמש מלאה", "קרקע לחה במיוחד"], "common_diseases": ["פיצוץ אורז", "חנקן נדן", "חנקן עלים חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Drice", "plant_id": "rice"}, "rose": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם שחור", "קימחון", "מחלת ורד"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/rose.jpg", "plant_id": "rose"}, "rosemary": {"care_tips": ["דרוש שמש מלאה", "השקיה מועטה", "קרקע מנוקזת היטב"], "common_diseases": ["קימחון", "ריקבון שורשים"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/rosemary.jpg", "plant_id": "rosemary"}, "sage": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קמילה פוסרית", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsage", "plant_id": "sage"}, "scallion": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["טריפס בצל", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dscallion", "plant_id": "scallion"}, "spinach": {"care_tips": ["שמש מלאה", "השקיה סדירה", "קרקע עשירה"], "common_diseases": ["קימחון תרד", "חלודה לבנה", "קמילה פוסרית"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/1/15/Spinach_plant.jpg", "plant_id": "spinach"}, "strawberry": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["אנתרקנוז", "עובש אפור", "צריבת עלים", "כתם עלים זוויתי"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/strawberry.jpg", "plant_id": "strawberry"}, "succulent": {"care_tips": ["אור בהיר", "השקיה מועטה"], "common_diseases": ["ריקבון שורשים", "כנימות קמח", "כוויות שמש"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/succulent.jpg", "plant_id": "succulent"}, "sunflower": {"care_tips": ["שמש מלאה", "השקיה מרובה", "קרקע לחה"], "common_diseases": ["קימחון", "חלודה", "חנקן גזע פומה", "קמילה ורטיצילית"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/sunflower.jpg", "plant_id": "sunflower"}, "sweet_potato": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שחור", "ריקבון רך", "סקלף"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/sweet_potato.jpg", "plant_id": "sweet_potato"}, "swiss_chard": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים", "כתם עלים צרקספורה", "נמטודת ציסטה של סלק"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dswiss_chard", "plant_id": "swiss_chard"}, "tea": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["חנקן שלפוחית", "חלודה אדומה"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/5/54/Camellia_sinensis_plant.jpg", "plant_id": "tea"}, "thyme": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון גזע", "חנקן בוטריטיס"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dthyme", "plant_id": "thyme"}, "tilia": {"care_tips": ["שמש מלאה או חלקית", "השקיה סדירה", "קרקע לחה"], "common_diseases": ["קמילה ורטיצילית", "אנתרקנוז", "ספחת"], "img_url": "https://upload.wikimedia.org/wikipedia/commons/e/e2/Tilia_cordata_tree.jpg", "plant_id": "tilia"}, "tobacco": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["עובש כחול", "וירוס פסיפסת הטבק", "ספחת שחורה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dtobacco", "plant_id": "tobacco"}, "tomato": {"care_tips": ["שמש מלאה", "השקיה סדירה", "תמיכה בצמיחה"], "common_diseases": ["כליה מוקדמת", "כליה מאוחרת", "כתם עלים ספטמברי", "קמילה חיידקית"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/tomato.jpg", "plant_id": "tomato"}, "tomato_cherry": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מוקדמת", "כליה מאוחרת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcherry_tomato", "plant_id": "tomato_cherry"}, "tomato_heirloom": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מוקדמת", "כליה מאוחרת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dheirloom_tomato", "plant_id": "tomato_heirloom"}, "tulip": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["וירוס שבירת הצבע של הצבעוני", "ריקבון בצל פוסריום", "חנקן בוטריטיס"], "img_url": "https://res.cloudinary.com/dru8hdesf/image/upload/v1716900000/ESP32CAMPLANET/tulip.jpg", "plant_id": "tulip"}, "walnut": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwalnut", "plant_id": "walnut"}, "apple_golden_delicious": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["קימחון", "גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgolden_delicious_apple", "plant_id": "apple_golden_delicious"}, "apple_honeycrisp": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhoneycrisp_apple", "plant_id": "apple_honeycrisp"}, "apple_red_delicious": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_delicious_apple", "plant_id": "apple_red_delicious"}, "apricot_royal": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון חום", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Droyal_apricot", "plant_id": "apricot_royal"}, "avocado_hass": {"care_tips": ["שמש מלאה", "הגנה מרוח חזקה"], "common_diseases": ["כתם שמש", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhass_avocado", "plant_id": "avocado_hass"}, "basil_sweet": {"care_tips": ["שמש חלקית", "השקיה סדירה"], "common_diseases": ["כליה", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsweet_basil", "plant_id": "basil_sweet"}, "basil_thai": {"care_tips": ["שמש חלקית", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dthai_basil", "plant_id": "basil_thai"}, "bean_green": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה", "אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgreen_bean", "plant_id": "bean_green"}, "bean_kidney": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["אנתרקנוז", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dkidney_bean", "plant_id": "bean_kidney"}, "blueberry_highbush": {"care_tips": ["קרקע חומצית", "השקיה מרובה"], "common_diseases": ["ענבת אוכמניות", "חנקן גזע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhighbush_blueberry", "plant_id": "blueberry_highbush"}, "broccoli_calabrese": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcalabrese_broccoli", "plant_id": "broccoli_calabrese"}, "cabbage_red": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון השורש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_cabbage", "plant_id": "cabbage_red"}, "carrot_nantes": {"care_tips": ["שמש מלאה", "קרקע רכה ועמוקה"], "common_diseases": ["חנקן חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dnantes_carrot", "plant_id": "carrot_nantes"}, "cherry_black": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblack_cherry", "plant_id": "cherry_black"}, "cherry_sour": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsour_cherry", "plant_id": "cherry_sour"}, "corn_sweet": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודה נפוצה", "עובש תירס"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsweet_corn", "plant_id": "corn_sweet"}, "corn_popcorn": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודה נפוצה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpopcorn", "plant_id": "corn_popcorn"}, "cucumber_pickling": {"care_tips": ["שמש מלאה", "השקיה עקבית"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpickling_cucumber", "plant_id": "cucumber_pickling"}, "eggplant_japanese": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djapanese_eggplant", "plant_id": "eggplant_japanese"}, "fig_black": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["חלודת התאנה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblack_fig", "plant_id": "fig_black"}, "fig_mission": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["חלודת התאנה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmission_fig", "plant_id": "fig_mission"}, "garlic_softneck": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון לבן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsoftneck_garlic", "plant_id": "garlic_softneck"}, "garlic_hardneck": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון לבן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhardneck_garlic", "plant_id": "garlic_hardneck"}, "grape_concord": {"care_tips": ["שמש מלאה", "גיזום קבוע"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dconcord_grape", "plant_id": "grape_concord"}, "grape_thompson_seedless": {"care_tips": ["שמש מלאה", "גיזום קבוע"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dthompson_seedless_grape", "plant_id": "grape_thompson_seedless"}, "jasmine_star": {"care_tips": ["שמש מלאה או חלקית", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dstar_jasmine", "plant_id": "jasmine_star"}, "kiwi_hardy": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["חנקן חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhardy_kiwi", "plant_id": "kiwi_hardy"}, "lavender_english": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Denglish_lavender", "plant_id": "lavender_english"}, "lemon_meyer": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מחלת ריקבון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmeyer_lemon", "plant_id": "lemon_meyer"}, "lettuce_romaine": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["קימחון", "ריקבון סקלרוטיניה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dromaine_lettuce", "plant_id": "lettuce_romaine"}, "lettuce_iceberg": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Diceberg_lettuce", "plant_id": "lettuce_iceberg"}, "mint_peppermint": {"care_tips": ["צל חלקי", "השקיה מרובה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpeppermint", "plant_id": "mint_peppermint"}, "mint_spearmint": {"care_tips": ["צל חלקי", "השקיה מרובה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dspearmint", "plant_id": "mint_spearmint"}, "oak_white": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["קמילת האלון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwhite_oak", "plant_id": "oak_white"}, "oak_red": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["קמילת האלון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_oak", "plant_id": "oak_red"}, "olive_black": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["זבוב הפירות"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblack_olive", "plant_id": "olive_black"}, "onion_red": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון בסיסי פוסריום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_onion", "plant_id": "onion_red"}, "onion_sweet": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קימחון בצל"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsweet_onion", "plant_id": "onion_sweet"}, "parsley_flat_leaf": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["דעיכה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dflat_leaf_parsley", "plant_id": "parsley_flat_leaf"}, "peach_nectarine": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dnectarine", "plant_id": "peach_nectarine"}, "pear_anjo": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חנקן אש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Danjo_pear", "plant_id": "pear_anjo"}, "pepper_bell": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbell_pepper", "plant_id": "pepper_bell"}, "pepper_jalapeno": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djalapeno_pepper", "plant_id": "pepper_jalapeno"}, "plum_damson": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["קשר שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddamson_plum", "plant_id": "plum_damson"}, "potato_russet": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["גלד", "כליה מאוחרת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Drusset_potato", "plant_id": "potato_russet"}, "potato_yukon_gold": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["גלד"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dyukon_gold_potato", "plant_id": "potato_yukon_gold"}, "pumpkin_jack_o_lantern": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djack_o_lantern_pumpkin", "plant_id": "pumpkin_jack_o_lantern"}, "raspberry_black": {"care_tips": ["שמש מלאה", "גיזום שנתי"], "common_diseases": ["אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblack_raspberry", "plant_id": "raspberry_black"}, "rose_hybrid_tea": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם שחור", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhybrid_tea_rose", "plant_id": "rose_hybrid_tea"}, "sage_common": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcommon_sage", "plant_id": "sage_common"}, "spinach_savoy": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון תרד"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsavoy_spinach", "plant_id": "spinach_savoy"}, "strawberry_everbearing": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["עובש אפור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Deverbearing_strawberry", "plant_id": "strawberry_everbearing"}, "sweet_potato_jewel": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djewel_sweet_potato", "plant_id": "sweet_potato_jewel"}, "tomato_roma": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מוקדמת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Droma_tomato", "plant_id": "tomato_roma"}, "tomato_beefsteak": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מאוחרת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbeefsteak_tomato", "plant_id": "tomato_beefsteak"}, "tulip_darwin_hybrid": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון בצל פוסריום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddarwin_hybrid_tulip", "plant_id": "tulip_darwin_hybrid"}, "walnut_black": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblack_walnut", "plant_id": "walnut_black"}, "watermelon": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["קימחון", "כתם עלים", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwatermelon", "plant_id": "watermelon"}, "watermelon_sugar_baby": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsugar_baby_watermelon", "plant_id": "watermelon_sugar_baby"}, "zucchini": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "וירוס פסיפסת הדלעת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dzucchini", "plant_id": "zucchini"}, "zucchini_black_beauty": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblack_beauty_zucchini", "plant_id": "zucchini_black_beauty"}, "arborvitae": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["דעיכה", "קמילה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Darborvitae", "plant_id": "arborvitae"}, "banana": {"care_tips": ["שמש מלאה", "אקלים טרופי", "קרקע לחה"], "common_diseases": ["קמילת פנמה", "כתם סיגאטוקה שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbanana", "plant_id": "banana"}, "beech": {"care_tips": ["שמש מלאה עד צל חלקי", "קרקע לחה ומנוקזת"], "common_diseases": ["מחלת ליבנה אמריקאית", "מחלת ליבנה אירופית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbeech", "plant_id": "beech"}, "beet": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbeet", "plant_id": "beet"}, "bok_choy": {"care_tips": ["שמש מלאה עד חלקית", "קרקע לחה"], "common_diseases": ["מועדון שורש", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbok_choy", "plant_id": "bok_choy"}, "cauliflower_romanesco": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודה לבנה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dromanesco_cauliflower", "plant_id": "cauliflower_romanesco"}, "celery": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["כתם עלים מוקדם", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcelery", "plant_id": "celery"}, "chamomile": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["קימחון", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dchamomile", "plant_id": "chamomile"}, "chive": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון בסיסי", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dchive", "plant_id": "chive"}, "collard_greens": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון שורש", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcollard_greens", "plant_id": "collard_greens"}, "corn_indian": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודה נפוצה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dindian_corn", "plant_id": "corn_indian"}, "cranberry": {"care_tips": ["שמש מלאה", "קרקע חומצית", "השקיה קבועה"], "common_diseases": ["קמילה פוסרית", "ריקבון פירות"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcranberry", "plant_id": "cranberry"}, "currant": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה"], "common_diseases": ["קימחון", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcurrant", "plant_id": "currant"}, "elderberry": {"care_tips": ["שמש מלאה עד חלקית", "השקיה מרובה"], "common_diseases": ["קימחון", "ריקבון פירות"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Delderberry", "plant_id": "elderberry"}, "endive": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dendive", "plant_id": "endive"}, "fennel": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfennel", "plant_id": "fennel"}, "foxglove": {"care_tips": ["צל חלקי", "קרקע לחה"], "common_diseases": ["כתם עלים", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfoxglove", "plant_id": "foxglove"}, "gardenia": {"care_tips": ["שמש חלקית", "קרקע חומצית", "לחות גבוהה"], "common_diseases": ["כתם שחור", "עובש מפויח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgardenia", "plant_id": "gardenia"}, "ginger": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["ריקבון שורשים", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dginger", "plant_id": "ginger"}, "gooseberry": {"care_tips": ["שמש מלאה עד חלקית", "השקיה סדירה"], "common_diseases": ["קימחון", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgooseberry", "plant_id": "gooseberry"}, "hazelnut": {"care_tips": ["שמש מלאה עד חלקית", "השקיה מתונה"], "common_diseases": ["קפוא", "ריקבון עץ"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhazelnut", "plant_id": "hazelnut"}, "honeysuckle": {"care_tips": ["שמש מלאה עד חלקית", "השקיה סדירה"], "common_diseases": ["קימחון", "פצעים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhoneysuckle", "plant_id": "honeysuckle"}, "iris": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון רך חיידקי", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Diris", "plant_id": "iris"}, "kohlrabi": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון שורש", "חלודה לבנה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dkohlrabi", "plant_id": "kohlrabi"}, "lemon_lime": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מחלת ריקבון", "כנימות"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlemon_lime", "plant_id": "lemon_lime"}, "lettuce_butterhead": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["הטלה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbutterhead_lettuce", "plant_id": "lettuce_butterhead"}, "lettuce_leaf": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dleaf_lettuce", "plant_id": "lettuce_leaf"}, "lime": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון כתר", "כתם שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlime", "plant_id": "lime"}, "mandarin": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חור שחור", "עובש אפור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmandarin", "plant_id": "mandarin"}, "marigold": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmarigold", "plant_id": "marigold"}, "oat_rolled": {"care_tips": ["שמש מלאה", "עמיד לקרקעות דלות"], "common_diseases": ["חלודת הכתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Drolled_oat", "plant_id": "oat_rolled"}, "olive_green": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["זבוב הפירות"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgreen_olive", "plant_id": "olive_green"}, "onion_white": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון בסיסי פוסריום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwhite_onion", "plant_id": "onion_white"}, "orange": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון כתר", "מחלת ריקבון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dorange", "plant_id": "orange"}, "orange_navel": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dnavel_orange", "plant_id": "orange_navel"}, "orange_valencia": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dvalencia_orange", "plant_id": "orange_valencia"}, "papaya": {"care_tips": ["שמש מלאה", "קרקע מנוקזת היטב"], "common_diseases": ["ריקבון שורשים", "וירוס טבעת פסיפסת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpapaya", "plant_id": "papaya"}, "parsley_curly": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["דעיכה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcurly_parsley", "plant_id": "parsley_curly"}, "peach_white": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwhite_peach", "plant_id": "peach_white"}, "pecan_paper_shell": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["גלד פקאן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpaper_shell_pecan", "plant_id": "pecan_paper_shell"}, "pepper_cayenne": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcayenne_pepper", "plant_id": "pepper_cayenne"}, "pepper_habanero": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhabanero_pepper", "plant_id": "pepper_habanero"}, "pepper_poblano": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["וירוס פסיפסת פלפל"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpoblano_pepper", "plant_id": "pepper_poblano"}, "pistachio": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["גלד", "ריקבון פירות"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpistachio", "plant_id": "pistachio"}, "potato_red": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["גלד"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_potato", "plant_id": "potato_red"}, "pumpkin_pie": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpie_pumpkin", "plant_id": "pumpkin_pie"}, "quince": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חנקן אש", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dquince", "plant_id": "quince"}, "rose_floribunda": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם שחור", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfloribunda_rose", "plant_id": "rose_floribunda"}, "safflower": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["חלודה", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsafflower", "plant_id": "safflower"}, "shallot": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["חלודה", "ריקבון צוואר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dshallot", "plant_id": "shallot"}, "sorghum": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["עובש ראש", "חלודה", "קמילה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsorghum", "plant_id": "sorghum"}, "soybean": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה", "ריקבון גזע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsoybean", "plant_id": "soybean"}, "spinach_new_zealand": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה לבנה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dnew_zealand_spinach", "plant_id": "spinach_new_zealand"}, "squash_butternut": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbutternut_squash", "plant_id": "squash_butternut"}, "strawberry_alpine": {"care_tips": ["שמש חלקית", "השקיה מועטה"], "common_diseases": ["עובש אפור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dalpine_strawberry", "plant_id": "strawberry_alpine"}, "sunflower_confection": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dconfection_sunflower", "plant_id": "sunflower_confection"}, "thyme_lemon": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlemon_thyme", "plant_id": "thyme_lemon"}, "tomato_grape": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מוקדמת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgrape_tomato", "plant_id": "tomato_grape"}, "turnip": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה לבנה", "מועדון שורש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dturnip", "plant_id": "turnip"}, "vanilla": {"care_tips": ["צל חלקי", "לחות גבוהה"], "common_diseases": ["ריקבון גזע", "אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dvanilla", "plant_id": "vanilla"}, "watermelon_seeded": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dseeded_watermelon", "plant_id": "watermelon_seeded"}, "wheat": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["חלודה", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwheat", "plant_id": "wheat"}, "zucchini_yellow_squash": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dyellow_squash", "plant_id": "zucchini_yellow_squash"}, "alyssum": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dalyssum", "plant_id": "alyssum"}, "anemone": {"care_tips": ["שמש חלקית", "קרקע לחה"], "common_diseases": ["חלודה", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Danemone", "plant_id": "anemone"}, "apple_pink_lady": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpink_lady_apple", "plant_id": "apple_pink_lady"}, "artemisia": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dartemisia", "plant_id": "artemisia"}, "azalea_mollis": {"care_tips": ["צל חלקי", "קרקע חומצית"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmollis_azalea", "plant_id": "azalea_mollis"}, "balsam": {"care_tips": ["שמש חלקית", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים", "ריקבון גזע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbalsam", "plant_id": "balsam"}, "basil_lemon": {"care_tips": ["שמש חלקית", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlemon_basil", "plant_id": "basil_lemon"}, "blackberry": {"care_tips": ["שמש מלאה", "גיזום שנתי"], "common_diseases": ["אנתרקנוז", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblackberry", "plant_id": "blackberry"}, "boxwood": {"care_tips": ["שמש חלקית", "קרקע מנוקזת"], "common_diseases": ["קמילה פוסרית", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dboxwood", "plant_id": "boxwood"}, "canna": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודה", "וירוס פסיפסת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcanna", "plant_id": "canna"}, "carnation": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["חלודה", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcarnation", "plant_id": "carnation"}, "cherry_bing": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbing_cherry", "plant_id": "cherry_bing"}, "chrysanthemum": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dchrysanthemum", "plant_id": "chrysanthemum"}, "clematis": {"care_tips": ["שמש מלאה או חלקית", "קרקע קרירה"], "common_diseases": ["קמילה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dclematis", "plant_id": "clematis"}, "crocus": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון בצל", "וירוס"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcrocus", "plant_id": "crocus"}, "dahlia": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "וירוס פסיפסת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddahlia", "plant_id": "dahlia"}, "daisy": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddaisy", "plant_id": "daisy"}, "dogwood": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה"], "common_diseases": ["אנתרקנוז", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddogwood", "plant_id": "dogwood"}, "echinacea": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["כתם עלים", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dechinacea", "plant_id": "echinacea"}, "eucalyptus": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["חלודה", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Deucalyptus", "plant_id": "eucalyptus"}, "forsythia": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dforsythia", "plant_id": "forsythia"}, "geranium_zonal": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dzonal_geranium", "plant_id": "geranium_zonal"}, "ginger_butterfly": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbutterfly_ginger", "plant_id": "ginger_butterfly"}, "gladiolus": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון גלדיולי", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgladiolus", "plant_id": "gladiolus"}, "grape_cabernet_sauvignon": {"care_tips": ["שמש מלאה", "גיזום קבוע"], "common_diseases": ["קימחון", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcabernet_sauvignon", "plant_id": "grape_cabernet_sauvignon"}, "holly": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה"], "common_diseases": ["כתם עלים", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dholly", "plant_id": "holly"}, "hydrangea": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["כתם עלים", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhydrangea", "plant_id": "hydrangea"}, "iris_bearded": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון רך חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbearded_iris", "plant_id": "iris_bearded"}, "kiwi_golden": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["חנקן חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgolden_kiwi", "plant_id": "kiwi_golden"}, "lemon_eureka": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מחלת ריקבון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Deureka_lemon", "plant_id": "lemon_eureka"}, "lettuce_leaf_red": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_leaf_lettuce", "plant_id": "lettuce_leaf_red"}, "lilac_common": {"care_tips": ["שמש מלאה", "גיזום לאחר פריחה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcommon_lilac", "plant_id": "lilac_common"}, "lily_asiatic": {"care_tips": ["שמש מלאה עד חלקית", "השקיה בינונית"], "common_diseases": ["וירוס מוזאיקה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dasiatic_lily", "plant_id": "lily_asiatic"}, "lily_oriental": {"care_tips": ["שמש מלאה עד חלקית", "השקיה בינונית"], "common_diseases": ["וירוס מוזאיקה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Doriental_lily", "plant_id": "lily_oriental"}, "linden": {"care_tips": ["שמש מלאה או חלקית", "השקיה סדירה"], "common_diseases": ["קמילה ורטיצילית", "אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlinden", "plant_id": "linden"}, "mango_ataulfo": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dataulfo_mango", "plant_id": "mango_ataulfo"}, "marjoram": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmarjoram", "plant_id": "marjoram"}, "melaleuca": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חנקן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmelaleuca", "plant_id": "melaleuca"}, "mint_chocolate": {"care_tips": ["צל חלקי", "השקיה מרובה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dchocolate_mint", "plant_id": "mint_chocolate"}, "morning_glory": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["כתם לבן", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmorning_glory", "plant_id": "morning_glory"}, "nasturtium": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["וירוס פסיפסת", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dnasturtium", "plant_id": "nasturtium"}, "oak_pin": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["קמילת האלון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpin_oak", "plant_id": "oak_pin"}, "oregano_greek": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["חלודה נענע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgreek_oregano", "plant_id": "oregano_greek"}, "pansy": {"care_tips": ["שמש מלאה עד חלקית", "השקיה סדירה"], "common_diseases": ["קימחון", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpansy", "plant_id": "pansy"}, "passion_fruit_purple": {"care_tips": ["שמש מלאה", "תמיכה לטיפוס"], "common_diseases": ["קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpurple_passion_fruit", "plant_id": "passion_fruit_purple"}, "pear_bartlett": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חנקן אש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbartlett_pear", "plant_id": "pear_bartlett"}, "pecan_elliott": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["גלד פקאן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Delliott_pecan", "plant_id": "pecan_elliott"}, "pepper_chili": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["וירוס פסיפסת פלפל"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dchili_pepper", "plant_id": "pepper_chili"}, "pine_scots": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dscots_pine", "plant_id": "pine_scots"}, "pomegranate_wonderful": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["כתם פרי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwonderful_pomegranate", "plant_id": "pomegranate_wonderful"}, "potato_sweet": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsweet_potato", "plant_id": "potato_sweet"}, "pumpkin_mini": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmini_pumpkin", "plant_id": "pumpkin_mini"}, "radish": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון שורש", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dradish", "plant_id": "radish"}, "rhubarb": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון כתר", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Drhubarb", "plant_id": "rhubarb"}, "rose_climbing": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dclimbing_rose", "plant_id": "rose_climbing"}, "sage_purple": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpurple_sage", "plant_id": "sage_purple"}, "squash_acorn": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dacorn_squash", "plant_id": "squash_acorn"}, "strawberry_june_bearing": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["עובש אפור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djune_bearing_strawberry", "plant_id": "strawberry_june_bearing"}, "thyme_creeping": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcreeping_thyme", "plant_id": "thyme_creeping"}, "tomato_san_marzano": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מוקדמת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsan_marzano_tomato", "plant_id": "tomato_san_marzano"}, "tulip_parrot": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["וירוס שבירת הצבע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dparrot_tulip", "plant_id": "tulip_parrot"}, "valerian": {"care_tips": ["שמש מלאה", "קרקע לחה"], "common_diseases": ["חלודה", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dvalerian", "plant_id": "valerian"}, "walnut_english": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Denglish_walnut", "plant_id": "walnut_english"}, "water_lily": {"care_tips": ["שמש מלאה", "מים מתוקים"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwater_lily", "plant_id": "water_lily"}, "yarrow": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["ריקבון שורשים", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dyarrow", "plant_id": "yarrow"}, "yucca": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["כתם עלים", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dyucca", "plant_id": "yucca"}, "agapanthus": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שורשים", "ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dagapanthus", "plant_id": "agapanthus"}, "anise": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Danise", "plant_id": "anise"}, "aralia": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Daralia", "plant_id": "aralia"}, "artichoke_globe": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dglobe_artichoke", "plant_id": "artichoke_globe"}, "aster": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Daster", "plant_id": "aster"}, "asparagus_fern": {"care_tips": ["שמש חלקית", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dasparagus_fern", "plant_id": "asparagus_fern"}, "borage": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dborage", "plant_id": "borage"}, "broccoli_raab": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbroccoli_raab", "plant_id": "broccoli_raab"}, "cabbage_napa": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון שורש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dnapa_cabbage", "plant_id": "cabbage_napa"}, "caladium": {"care_tips": ["צל מלא", "לחות גבוהה"], "common_diseases": ["ריקבון שורשים", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcaladium", "plant_id": "caladium"}, "camphor": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcamphor", "plant_id": "camphor"}, "celosia": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שורשים", "ריקבון גזע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcelosia", "plant_id": "celosia"}, "chive_garlic": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון בסיסי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgarlic_chive", "plant_id": "chive_garlic"}, "citronella": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcitronella", "plant_id": "citronella"}, "cranesbill": {"care_tips": ["שמש חלקית", "קרקע מנוקזת"], "common_diseases": ["ריקבון שורשים", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcranesbill", "plant_id": "cranesbill"}, "creeping_myrtle": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה מתונה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcreeping_myrtle", "plant_id": "creeping_myrtle"}, "daffodil_jonquil": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון בסיסי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djonquil_daffodil", "plant_id": "daffodil_jonquil"}, "daisy_shasta": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dshasta_daisy", "plant_id": "daisy_shasta"}, "dandelion": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["חלודה לבנה", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddandelion", "plant_id": "dandelion"}, "dianthus": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["חלודה", "ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddianthus", "plant_id": "dianthus"}, "dracaena": {"care_tips": ["אור לא ישיר", "השקיה מתונה"], "common_diseases": ["כתם עלים", "ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddracaena", "plant_id": "dracaena"}, "echinacea_purpurea": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dechinacea_purpurea", "plant_id": "echinacea_purpurea"}, "feverfew": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfeverfew", "plant_id": "feverfew"}, "gardenia_cape_jasmine": {"care_tips": ["שמש חלקית", "קרקע חומצית"], "common_diseases": ["כתם שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcape_jasmine_gardenia", "plant_id": "gardenia_cape_jasmine"}, "goldenrod": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["קימחון", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgoldenrod", "plant_id": "goldenrod"}, "gooseberry_jostaberry": {"care_tips": ["שמש מלאה עד חלקית", "השקיה סדירה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djostaberry", "plant_id": "gooseberry_jostaberry"}, "grape_chardonnay": {"care_tips": ["שמש מלאה", "גיזום קבוע"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dchardonnay_grape", "plant_id": "grape_chardonnay"}, "holly_american": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Damerican_holly", "plant_id": "holly_american"}, "honeysuckle_vine": {"care_tips": ["שמש מלאה או חלקית", "השקיה סדירה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhoneysuckle_vine", "plant_id": "honeysuckle_vine"}, "hyssop": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["חלודה", "קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhyssop", "plant_id": "hyssop"}, "iris_dutch": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון בצל"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddutch_iris", "plant_id": "iris_dutch"}, "kale": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון שורש", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dkale", "plant_id": "kale"}, "kiwi_fuzzy": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfuzzy_kiwi", "plant_id": "kiwi_fuzzy"}, "lavender_french": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfrench_lavender", "plant_id": "lavender_french"}, "lemon_pink_eureka": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מחלת ריקבון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpink_eureka_lemon", "plant_id": "lemon_pink_eureka"}, "lettuce_bibb": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbibb_lettuce", "plant_id": "lettuce_bibb"}, "magnolia_star": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dstar_magnolia", "plant_id": "magnolia_star"}, "mango_kent": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dkent_mango", "plant_id": "mango_kent"}, "maple_sugar": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם זפת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsugar_maple", "plant_id": "maple_sugar"}, "melon_galia": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgalia_melon", "plant_id": "melon_galia"}, "mint_apple": {"care_tips": ["צל חלקי", "השקיה מרובה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dapple_mint", "plant_id": "mint_apple"}, "myrtle_crape": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcrape_myrtle", "plant_id": "myrtle_crape"}, "narcissus": {"care_tips": ["שמש מלאה עד חלקית", "השקיה מועטה"], "common_diseases": ["ריקבון בצל", "וירוס"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dnarcissus", "plant_id": "narcissus"}, "oak_live": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["קמילת האלון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlive_oak", "plant_id": "oak_live"}, "orange_blood": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblood_orange", "plant_id": "orange_blood"}, "paprika": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם חיידקי", "קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpaprika", "plant_id": "paprika"}, "parsley_italian": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["דעיכה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ditalian_parsley", "plant_id": "parsley_italian"}, "peach_flat": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dflat_peach", "plant_id": "peach_flat"}, "pecan_cheyenne": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["גלד פקאן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcheyenne_pecan", "plant_id": "pecan_cheyenne"}, "pepper_ghost": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dghost_pepper", "plant_id": "pepper_ghost"}, "petunia_wave": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dwave_petunia", "plant_id": "petunia_wave"}, "pine_eastern_white": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["חלודה", "קמחונית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Deastern_white_pine", "plant_id": "pine_eastern_white"}, "plum_japanese": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djapanese_plum", "plant_id": "plum_japanese"}, "pomegranate_pink": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["כתם פרי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpink_pomegranate", "plant_id": "pomegranate_pink"}, "potato_fingerling": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["גלד"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfingerling_potato", "plant_id": "potato_fingerling"}, "pumpkin_sugar": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsugar_pumpkin", "plant_id": "pumpkin_sugar"}, "quinoa_red": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_quinoa", "plant_id": "quinoa_red"}, "raspberry_red": {"care_tips": ["שמש מלאה", "גיזום שנתי"], "common_diseases": ["אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_raspberry", "plant_id": "raspberry_red"}, "rose_miniature": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dminiature_rose", "plant_id": "rose_miniature"}, "rosemary_prostrate": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dprostrate_rosemary", "plant_id": "rosemary_prostrate"}, "saffron_crocus": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון בצל"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsaffron_crocus", "plant_id": "saffron_crocus"}, "spinach_perpetual": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון תרד"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dperpetual_spinach", "plant_id": "spinach_perpetual"}, "squash_spaghetti": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון", "ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dspaghetti_squash", "plant_id": "squash_spaghetti"}, "sunflower_tall": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dtall_sunflower", "plant_id": "sunflower_tall"}, "sweet_potato_purple": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpurple_sweet_potato", "plant_id": "sweet_potato_purple"}, "thyme_common": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון גזע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcommon_thyme", "plant_id": "thyme_common"}, "tomato_brandywine": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מאוחרת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbrandywine_tomato", "plant_id": "tomato_brandywine"}, "verbena": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["קימחון", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dverbena", "plant_id": "verbena"}, "wheat_durum": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddurum_wheat", "plant_id": "wheat_durum"}, "zinnia": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dzinnia", "plant_id": "zinnia"}, "anemone_coronaria": {"care_tips": ["שמש חלקית", "קרקע לחה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Danemone_coronaria", "plant_id": "anemone_coronaria"}, "apple_honeycrisp": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhoneycrisp_apple", "plant_id": "apple_honeycrisp"}, "apple_macintosh": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["גלד התפוח"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmacintosh_apple", "plant_id": "apple_macintosh"}, "avocado_reed": {"care_tips": ["שמש מלאה", "הגנה מרוח חזקה"], "common_diseases": ["כתם שמש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dreed_avocado", "plant_id": "avocado_reed"}, "basil_genovese": {"care_tips": ["שמש חלקית", "השקיה סדירה"], "common_diseases": ["כליה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgenovese_basil", "plant_id": "basil_genovese"}, "bean_lima": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlima_bean", "plant_id": "bean_lima"}, "bean_snap": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsnap_bean", "plant_id": "bean_snap"}, "beet_sugar": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsugar_beet", "plant_id": "beet_sugar"}, "bellflower": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה מתונה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbellflower", "plant_id": "bellflower"}, "cabbage_savoy": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון שורש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsavoy_cabbage", "plant_id": "cabbage_savoy"}, "calla_lily": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה מרובה"], "common_diseases": ["ריקבון רך", "וירוס"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcalla_lily", "plant_id": "calla_lily"}, "camellia_sinensis": {"care_tips": ["צל חלקי", "השקיה קבועה"], "common_diseases": ["חנקן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcamellia_sinensis", "plant_id": "camellia_sinensis"}, "cannabis": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון", "עובש אפור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcannabis", "plant_id": "cannabis"}, "castor_bean": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcastor_bean", "plant_id": "castor_bean"}, "cherry_rainier": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Drainier_cherry", "plant_id": "cherry_rainier"}, "chrysanthemum_garden": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgarden_chrysanthemum", "plant_id": "chrysanthemum_garden"}, "coleus": {"care_tips": ["צל חלקי", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcoleus", "plant_id": "coleus"}, "corn_dent": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["חלודה נפוצה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddent_corn", "plant_id": "corn_dent"}, "cranberry_american": {"care_tips": ["שמש מלאה", "קרקע חומצית"], "common_diseases": ["ריקבון פירות"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Damerican_cranberry", "plant_id": "cranberry_american"}, "cucumber_english": {"care_tips": ["שמש מלאה", "השקיה עקבית"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Denglish_cucumber", "plant_id": "cucumber_english"}, "daisy_gerbera": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgerbera_daisy", "plant_id": "daisy_gerbera"}, "date_palm_deglet_noor": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["בייוד"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddeglet_noor_date_palm", "plant_id": "date_palm_deglet_noor"}, "delphinium": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קימחון", "ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddelphinium", "plant_id": "delphinium"}, "dogwood_flowering": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה"], "common_diseases": ["אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dflowering_dogwood", "plant_id": "dogwood_flowering"}, "fern_maidenhair": {"care_tips": ["צל מלא", "לחות גבוהה"], "common_diseases": ["נמטודות עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmaidenhair_fern", "plant_id": "fern_maidenhair"}, "ficus_lyrata": {"care_tips": ["אור לא ישיר", "השקיה מתונה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dficus_lyrata", "plant_id": "ficus_lyrata"}, "garlic_elephant": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון לבן"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Delephant_garlic", "plant_id": "garlic_elephant"}, "grape_merlot": {"care_tips": ["שמש מלאה", "גיזום קבוע"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmerlot_grape", "plant_id": "grape_merlot"}, "hazelnut_filbert": {"care_tips": ["שמש מלאה עד חלקית", "השקיה מתונה"], "common_diseases": ["קפוא"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dfilbert_hazelnut", "plant_id": "hazelnut_filbert"}, "hibiscus_syriacus": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קמילת היביסקוס"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhibiscus_syriacus", "plant_id": "hibiscus_syriacus"}, "hollyhock": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dhollyhock", "plant_id": "hollyhock"}, "hydrangea_oakleaf": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Doakleaf_hydrangea", "plant_id": "hydrangea_oakleaf"}, "iris_siberian": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון רך חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsiberian_iris", "plant_id": "iris_siberian"}, "kale_lacinato": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מועדון שורש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dlacinato_kale", "plant_id": "kale_lacinato"}, "kiwi_arctic_beauty": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["חנקן חיידקי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Darctic_beauty_kiwi", "plant_id": "kiwi_arctic_beauty"}, "lemon_ponzu": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["מחלת ריקבון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dponzu_lemon", "plant_id": "lemon_ponzu"}, "lettuce_mesclun": {"care_tips": ["שמש חלקית", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmesclun_lettuce", "plant_id": "lettuce_mesclun"}, "lilac_dwarf": {"care_tips": ["שמש מלאה", "גיזום לאחר פריחה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddwarf_lilac", "plant_id": "lilac_dwarf"}, "magnolia_southern": {"care_tips": ["שמש מלאה עד צל חלקי", "השקיה סדירה"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsouthern_magnolia", "plant_id": "magnolia_southern"}, "maple_japanese": {"care_tips": ["שמש חלקית", "השקיה סדירה"], "common_diseases": ["קמילה ורטיצילית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Djapanese_maple", "plant_id": "maple_japanese"}, "melissa": {"care_tips": ["שמש מלאה עד חלקית", "השקיה סדירה"], "common_diseases": ["קימחון", "חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmelissa", "plant_id": "melissa"}, "mint_catnip": {"care_tips": ["שמש חלקית", "השקיה מועטה"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dcatnip_mint", "plant_id": "mint_catnip"}, "oak_bur": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["קמילת האלון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbur_oak", "plant_id": "oak_bur"}, "orange_mandarin": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון כתר"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmandarin_orange", "plant_id": "orange_mandarin"}, "papaya_solo": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsolo_papaya", "plant_id": "papaya_solo"}, "pea_sugar_snap": {"care_tips": ["שמש חלקית", "קרקע קרירה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsugar_snap_pea", "plant_id": "pea_sugar_snap"}, "peach_donut": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddonut_peach", "plant_id": "peach_donut"}, "pepper_banana": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["וירוס פסיפסת פלפל"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbanana_pepper", "plant_id": "pepper_banana"}, "petunia_super_tunia": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsuper_tunia_petunia", "plant_id": "petunia_super_tunia"}, "pine_loblolly": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["חלודה"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dloblolly_pine", "plant_id": "pine_loblolly"}, "plum_greengage": {"care_tips": ["שמש מלאה", "השקיה בינונית"], "common_diseases": ["ריקבון חום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dgreengage_plum", "plant_id": "plum_greengage"}, "pomegranate_kazake": {"care_tips": ["שמש מלאה", "עמיד לבצורת"], "common_diseases": ["כתם פרי"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dkazake_pomegranate", "plant_id": "pomegranate_kazake"}, "potato_sweet_red": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dred_sweet_potato", "plant_id": "potato_sweet_red"}, "pumpkin_blue_hubbard": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblue_hubbard_pumpkin", "plant_id": "pumpkin_blue_hubbard"}, "quince_orange": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["חנקן אש"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dorange_quince", "plant_id": "quince_orange"}, "raspberry_black_cap": {"care_tips": ["שמש מלאה", "גיזום שנתי"], "common_diseases": ["אנתרקנוז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dblack_cap_raspberry", "plant_id": "raspberry_black_cap"}, "rhododendron_pjm": {"care_tips": ["צל חלקי", "קרקע חומצית"], "common_diseases": ["כתם עלים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpjm_rhododendron", "plant_id": "rhododendron_pjm"}, "rice_basmati": {"care_tips": ["שמש מלאה", "קרקע לחה במיוחד"], "common_diseases": ["פיצוץ אורז"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbasmati_rice", "plant_id": "rice_basmati"}, "rose_knockout": {"care_tips": ["שמש מלאה", "השקיה עמוקה"], "common_diseases": ["כתם שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dknockout_rose", "plant_id": "rose_knockout"}, "rosemary_tuscan_blue": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dtuscan_blue_rosemary", "plant_id": "rosemary_tuscan_blue"}, "sage_tri_color": {"care_tips": ["שמש מלאה", "קרקע מנוקזת"], "common_diseases": ["קמילה פוסרית"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dtri_color_sage", "plant_id": "sage_tri_color"}, "spinach_malabar": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dmalabar_spinach", "plant_id": "spinach_malabar"}, "squash_pattypan": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dpattypan_squash", "plant_id": "squash_pattypan"}, "strawberry_dayneutral": {"care_tips": ["שמש מלאה", "השקיה מרובה"], "common_diseases": ["עובש אפור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Ddayneutral_strawberry", "plant_id": "strawberry_dayneutral"}, "sweet_potato_beauregard": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["ריקבון שחור"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dbeauregard_sweet_potato", "plant_id": "sweet_potato_beauregard"}, "thyme_silver": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון שורשים"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dsilver_thyme", "plant_id": "thyme_silver"}, "tomato_amish_paste": {"care_tips": ["שמש מלאה", "השקיה סדירה"], "common_diseases": ["כליה מוקדמת"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Damish_paste_tomato", "plant_id": "tomato_amish_paste"}, "tulip_triumph": {"care_tips": ["שמש מלאה", "השקיה מועטה"], "common_diseases": ["ריקבון בצל פוסריום"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dtriumph_tulip", "plant_id": "tulip_triumph"}, "vanilla_planifolia": {"care_tips": ["צל חלקי", "לחות גבוהה"], "common_diseases": ["ריקבון גזע"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dvanilla_planifolia", "plant_id": "vanilla_planifolia"}, "verbena_perennial": {"care_tips": ["שמש מלאה", "השקיה מתונה"], "common_diseases": ["קימחון"], "img_url": "https://www.google.com/search?q=https://placehold.co/600x400/000000/FFFFFF%3Ftext%3Dperennial_verbena", "plant_id": "verbena_perennial"}, } # User-provided list of all models PLANT_AI_MODELS = { "PlantVillage-Disease": { "model_id": "linkanjarad/mobilenet_v2_1.0_224-plant-disease-identification", "specialty": "Plant Disease Detection", "reliability": 0.94, "priority": 1 }, "Pest-Identifier": { "model_id": "linkanjarad/mobilenet_v2_1.0_224-plant-diseases", "specialty": "Pest Identification", "reliability": 0.92, "priority": 2 }, "PlantNet-Species": { "model_id": "google/vit-base-patch16-224-in21k", "specialty": "Species Identification", "reliability": 0.91, "priority": 3 }, "Botanical-Vision": { "model_id": "facebook/deit-base-patch16-224", "specialty": "Botanical Features", "reliability": 0.87, "priority": 4 }, "Soil-Analysis-AI": { "model_id": "facebook/deit-base-patch16-224-in21k", "specialty": "Soil Composition Analysis", "reliability": 0.88, "priority": 5 }, "Plant-Health": { "model_id": "google/efficientnet-b4", "specialty": "Health Assessment", "reliability": 0.86, "priority": 6 }, "Weed-Identifier": { "model_id": "microsoft/resnet-50", "specialty": "Weed Identification", "reliability": 0.85, "priority": 7 }, "Flora-ID": { "model_id": "google/vit-large-patch16-224", "specialty": "Wild Flora", "reliability": 0.84, "priority": 8 }, "Crop-Vision": { "model_id": "facebook/convnext-base-224-22k-1k", "specialty": "Crop Recognition", "reliability": 0.83, "priority": 9 }, "Plant-Lifecycle": { "model_id": "microsoft/beit-base-patch16-224-in21k", "specialty": "Plant Lifecycle", "reliability": 0.82, "priority": 10 }, "Medicinal-Plants": { "model_id": "google/efficientnet-b3", "specialty": "Medicinal Plants", "reliability": 0.81, "priority": 11 }, "Tree-Detector": { "model_id": "facebook/dino-vitb16", "specialty": "Tree Species", "reliability": 0.80, "priority": 12 }, "Flower-ID": { "model_id": "microsoft/resnet-50", "specialty": "Flower Recognition", "reliability": 0.79, "priority": 13 }, "Nutrient-Deficiency-Detector": { "model_id": "facebook/convnext-base-224-22k-1k", "specialty": "Nutrient Deficiency", "reliability": 0.87, "priority": 14 }, "Fruit-Classifier": { "model_id": "google/efficientnet-b2", "specialty": "Fruit Recognition", "reliability": 0.85, "priority": 15 }, "Vegetable-Expert": { "model_id": "microsoft/resnet-34", "specialty": "Vegetable Classification", "reliability": 0.84, "priority": 16 }, "Herb-Specialist": { "model_id": "google/efficientnet-b1", "specialty": "Herb Identification", "reliability": 0.83, "priority": 17 }, "Flower-Morphology": { "model_id": "facebook/convnext-small-224", "specialty": "Flower Analysis", "reliability": 0.82, "priority": 18 }, "Aquatic-Flora-Expert": { "model_id": "microsoft/beit-base-patch16-224-in21k", "specialty": "Aquatic Plants", "reliability": 0.80, "priority": 19 }, "Leaf-Shape-AI": { "model_id": "microsoft/resnet-18", "specialty": "Leaf Shape Analysis", "reliability": 0.81, "priority": 20 }, "Model-21": { "model_id": "google/vit-base-patch16-224-in21k", "specialty": "Pest & Disease Vector Identification", "reliability": 0.90, "priority": 21 }, "Model-22": { "model_id": "facebook/deit-base-patch16-224-in21k", "specialty": "Nutrient Deficiency Detection", "reliability": 0.89, "priority": 22 }, "Model-23": { "model_id": "microsoft/resnet-50", "specialty": "Drought & Water Stress", "reliability": 0.88, "priority": 23 }, "Model-24": { "model_id": "google/efficientnet-b5", "specialty": "Weed vs. Crop Classification", "reliability": 0.87, "priority": 24 }, "Model-25": { "model_id": "facebook/convnext-base-224-22k-1k", "specialty": "Urban Plant Species", "reliability": 0.86, "priority": 25 }, "Model-26": { "model_id": "microsoft/swin-tiny-patch4-window7-224", "specialty": "Wildflower Identification", "reliability": 0.85, "priority": 26 }, "Model-27": { "model_id": "google/vit-large-patch16-224-in21k", "specialty": "Common Allergen Plants", "reliability": 0.84, "priority": 27 }, "Model-28": { "model_id": "facebook/dino-vitb16", "specialty": "Poisonous Plant Detection", "reliability": 0.83, "priority": 28 }, "Model-29": { "model_id": "microsoft/beit-base-patch16-224-in21k", "specialty": "Aquatic & Wetland Plants", "reliability": 0.82, "priority": 29 }, "Model-30": { "model_id": "google/efficientnet-b4", "specialty": "Fungi & Mushroom Identification", "reliability": 0.81, "priority": 30 }, "Model-31": { "model_id": "facebook/convnext-small-224", "specialty": "Plant Anatomy (Root/Stem/Leaf)", "reliability": 0.80, "priority": 31 }, "Model-32": { "model_id": "microsoft/resnet-18", "specialty": "Plant Lifecycle Stage", "reliability": 0.79, "priority": 32 }, "Model-33": { "model_id": "google/mobilenet-v2-1.0-224", "specialty": "Microscopic Plant Features", "reliability": 0.78, "priority": 33 }, "Model-34": { "model_id": "microsoft/resnet-101", "specialty": "Seed & Spore Identification", "reliability": 0.77, "priority": 34 }, "Model-35": { "model_id": "facebook/deit-tiny-patch16-224", "specialty": "Rare & Exotic Herbs", "reliability": 0.76, "priority": 35 }, "Model-36": { "model_id": "google/efficientnet-b1", "specialty": "Tropical Plant Identification", "reliability": 0.75, "priority": 36 }, "Model-37": { "model_id": "microsoft/swinv2-base-patch4-window8-256", "specialty": "Forest & Woodland Species", "reliability": 0.74, "priority": 37 }, "Model-38": { "model_id": "facebook/convnext-tiny-224", "specialty": "Desert Plant Identification", "reliability": 0.73, "priority": 38 }, "Model-39": { "model_id": "google/vit-base-patch16-224-in21k", "specialty": "Mountain Flora", "reliability": 0.72, "priority": 39 }, "Model-40": { "model_id": "microsoft/beit-base-patch16-224-in21k", "specialty": "Polar & Alpine Plants", "reliability": 0.71, "priority": 40 }, "Disease-Scanner": { "model_id": "google/mobilenet_v2_1.0_224", "specialty": "Disease Detection", "reliability": 0.80, "priority": 41 }, "Garden-Botanist": { "model_id": "facebook/deit-small-patch16-224", "specialty": "Garden Plant Expert", "reliability": 0.79, "priority": 42 }, "Plant-Anatomy": { "model_id": "microsoft/beit-base-patch16-224", "specialty": "Plant Structure Analysis", "reliability": 0.78, "priority": 43 }, "Agricultural-AI": { "model_id": "google/vit-base-patch16-224", "specialty": "Agricultural Crops", "reliability": 0.77, "priority": 44 }, "Botanical-Scanner": { "model_id": "facebook/convnext-tiny-224", "specialty": "General Botany", "reliability": 0.76, "priority": 45 }, "Plant-Taxonomy": { "model_id": "microsoft/swinv2-base-patch4-window8-256", "specialty": "Taxonomic Classification", "reliability": 0.75, "priority": 46 }, "Fungi-Classifier": { "model_id": "google/efficientnet-b0", "specialty": "Fungi & Mushroom", "reliability": 0.74, "priority": 47 }, "Urban-Flora-Expert": { "model_id": "microsoft/resnet-101", "specialty": "Urban Plants", "reliability": 0.78, "priority": 48 }, "Weed-Identifier_2": { "model_id": "microsoft/resnet-50", "specialty": "Weed Identification", "reliability": 0.85, "priority": 49 }, "Plant-Lifecycle_2": { "model_id": "google/efficientnet-b5", "specialty": "Plant Lifecycle", "reliability": 0.82, "priority": 50 } } # Pre-trained models @dataclass class PretrainedModel: model: Any name: str # Cache for loaded models PLANT_MODELS_CACHE = {} # ==================== UTILITY FUNCTIONS & CLASSES ==================== def get_user_location(): """Tries to get user's location based on IP.""" try: response = requests.get('http://ipinfo.io/json') data = response.json() city = data.get('city', 'Tel Aviv') country = data.get('country', 'IL') return f"{city}, {country}" except Exception as e: print(f"Failed to get location from IP: {e}. Using default.") return "Tel Aviv, IL" # A simple way to load and save a dictionary of model weights def load_weights(): """Loads model weights from a JSON file, or creates defaults based on reliability if none exist.""" if os.path.exists("model_weights.json"): try: with open("model_weights.json", "r") as f: return json.load(f) except json.JSONDecodeError: print("Error decoding model_weights.json. Using default weights from PLANT_AI_MODELS.") pass # Default weights based on the `reliability` field weights = {name: data['reliability'] for name, data in PLANT_AI_MODELS.items()} return weights def save_weights(weights): """Saves model weights to a JSON file.""" try: with open("model_weights.json", "w") as f: json.dump(weights, f, indent=4) except Exception as e: print(f"Failed to save model weights: {e}") # Load weights at startup MODEL_WEIGHTS = load_weights() def load_hugging_face_model(model_name: str, repo_id: str): """Loads and caches a Hugging Face model and tokenizer.""" if repo_id not in PLANT_MODELS_CACHE: try: print(f"Loading model '{model_name}' from Hugging Face...") model_pipeline = pipeline("image-classification", model=repo_id, device=0 if torch.cuda.is_available() else -1, token=HUGGING_FACE_TOKEN) PLANT_MODELS_CACHE[repo_id] = model_pipeline print(f"Model '{model_name}' loaded successfully.") except Exception as e: print(f"Failed to load model {model_name} from {repo_id}: {e}") PLANT_MODELS_CACHE[repo_id] = None return PLANT_MODELS_CACHE[repo_id] def load_all_models(): """Loads all models into cache at startup.""" print("Pre-loading all models...") for model_name, model_info in PLANT_AI_MODELS.items(): load_hugging_face_model(model_name, model_info['model_id']) print("All models pre-loaded.") # ==================== ADAFRUIT IO & CLOUDINARY HANDLERS ==================== class DataIntegrator: def __init__(self): self.aio = None if ADAFRUIT_AVAILABLE: try: self.aio = AdafruitClient(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) except Exception as e: print(f"Failed to initialize AdafruitClient: {e}. Check your credentials.") if GEOPY_AVAILABLE: self.geolocator = Nominatim(user_agent="plantscope_app") def get_adafruit_data(self, feed_name: str, limit: int = 1000) -> Optional[List[Dict]]: """Fetches data from an Adafruit IO feed - up to 1000 records without time limits.""" if not self.aio: print("Adafruit IO not available or failed to initialize, skipping data fetch.") return None try: feed = self.aio.feeds(feed_name) data = self.aio.receive(feed.key, limit=limit) print(f"נמשכו {len(data) if data else 0} נתונים מהפיד {feed_name}") return data except APIError as e: print(f"Adafruit API Error fetching data from {feed_name}: {e}. Check your feed key or network connection.") return None except Exception as e: print(f"General Adafruit API Error: {e}") return None def post_adafruit_data(self, feed_name: str, value: Any) -> bool: """Posts a new data point to an Adafruit IO feed.""" if not self.aio: print(f"Adafruit IO not available or failed to initialize, skipping data post for {feed_name}.") return False try: feed = self.aio.feeds(feed_name) self.aio.send_data(feed.key, value) return True except APIError as e: print(f"Adafruit API Error posting data to {feed_name}: {e}. Check your feed key or network connection.") return False except Exception as e: print(f"General Adafruit API Error: {e}") return False def get_cloudinary_images(self, count: int = 100) -> List[Dict]: """Fetches ALL images from Cloudinary from a specific folder WITHOUT TIME LIMITS.""" if not CLOUDINARY_AVAILABLE: print("Cloudinary not available, returning empty list.") return [] try: cloudinary.config(cloud_name=CLOUDINARY_CLOUD_NAME, api_key=CLOUDINARY_API_KEY, api_secret=CLOUDINARY_API_SECRET) all_images = [] next_cursor = None # לולאה שמושכת את כל התמונות ללא הגבלת זמן while len(all_images) < count: request_params = { "type": "upload", "prefix": CLOUDINARY_FOLDER, "max_results": min(500, count - len(all_images)), # Cloudinary מגביל ל-500 בבקשה "direction": "desc" } # הוספת cursor אם יש המשך if next_cursor: request_params["next_cursor"] = next_cursor results = cloudinary.api.resources(**request_params) batch_images = results.get('resources', []) all_images.extend(batch_images) # בדיקה אם יש עוד תמונות next_cursor = results.get('next_cursor') if not next_cursor or len(batch_images) == 0: break print(f"נמשכו {len(all_images)} תמונות מ-Cloudinary (ללא הגבלת זמן)") return all_images[:count] # החזרת המספר המבוקש except Exception as e: print(f"Cloudinary API Error: {e}. Check your Cloudinary credentials or folder name.") return [] def get_weather_for_location(self, location: str) -> Optional[Dict]: """Fetches weather data using OpenWeatherMap API.""" if not WEATHER_API_KEY: return None try: response = requests.get(WEATHER_API_URL, params={ "q": location, "appid": WEATHER_API_KEY, "units": "metric" }) response.raise_for_status() data = response.json() return { "location": data.get("name"), "temperature": data.get("main", {}).get("temp"), "humidity": data.get("main", {}).get("humidity"), "description": data.get("weather", [{}])[0].get("description") } except requests.exceptions.HTTPError as e: print(f"Weather API HTTP Error: {e}") return None except Exception as e: print(f"Weather API Error: {e}") return None def find_closest_sensor_data(self, image_timestamp, sensor_data): if not sensor_data: return None try: image_dt = datetime.fromisoformat(image_timestamp.replace('Z', '+00:00') if 'Z' in image_timestamp else image_timestamp) except ValueError: print(f"Could not parse image timestamp: {image_timestamp}") return None closest_data = None min_diff = float('inf') for data_point in sensor_data: try: data_dt = datetime.fromisoformat(data_point['created_at'].replace('Z', '+00:00') if 'Z' in data_point['created_at'] else data_point['created_at']) time_diff = abs((image_dt - data_dt).total_seconds()) if time_diff < min_diff: min_diff = time_diff closest_data = data_point except ValueError: continue return closest_data min_diff = float('inf') for data_point in sensor_data: try: data_dt = datetime.fromisoformat(data_point['created_at'].replace('Z', '+00:00') if 'Z' in data_point['created_at'] else data_point['created_at']) time_diff = abs((image_dt - data_dt).total_seconds()) if time_diff < min_diff: min_diff = time_diff closest_data = data_point except ValueError: continue return closest_data # Function to get a plant identification from PlantNet def get_plant_id_from_plantnet(image_path: str) -> Optional[Dict]: """Sends an image to the PlantNet API and returns the top result.""" if not PLANTNET_API_KEY: print("PlantNet API key is missing.") return None url = "https://my-api.plantnet.org/v2/identify/all" try: with open(image_path, "rb") as image_file: files = {'images': image_file} payload = {'api-key': PLANTNET_API_KEY} print("Sending image to PlantNet API...") response = requests.post(url, files=files, params=payload) response.raise_for_status() data = response.json() if data['results']: top_result = data['results'][0] # Find the Hebrew common name if available, otherwise use the scientific name plant_name = None for name in top_result['species']['commonNames']: if any('\u0590' <= c <= '\u05EA' for c in name): # Check for Hebrew characters plant_name = name break if not plant_name: plant_name = top_result['species']['scientificNameWithoutAuthor'] score = top_result['score'] return {"plant_name": plant_name, "score": score} else: return None except requests.exceptions.HTTPError as e: print(f"HTTP Error: {e} - Could not connect to PlantNet API.") return None except Exception as e: print(f"Error communicating with PlantNet API: {e}") return None # ==================== AI ANALYSIS & CONSENSUS ENGINE ==================== # Define keywords to separate models into two consensus groups SPECIES_KEYWORDS = ["Species", "Flora", "Botanical", "Tree", "Crop", "Flower", "Fruit", "Vegetable", "Herb", "Weed", "Anatomy", "Lifecycle", "Taxonomy", "Expert", "Wild", "Urban", "Desert", "Mountain", "Forest", "Polar", "Aquatic", "Agricultural"] HEALTH_KEYWORDS = ["Disease", "Pest", "Health", "Deficiency", "Stress", "Fungi", "Poisonous"] # Automatically divide models based on keywords SPECIES_MODELS = {name: data for name, data in PLANT_AI_MODELS.items() if any(k in data["specialty"] for k in SPECIES_KEYWORDS)} HEALTH_MODELS = {name: data for name, data in PLANT_AI_MODELS.items() if any(k in data["specialty"] for k in HEALTH_KEYWORDS)} # Pre-trained models @dataclass class PretrainedModel: model: Any name: str # Cache for loaded models PLANT_MODELS_CACHE = {} # List of non-plant keywords to filter from species identification NON_PLANT_KEYWORDS = ['pot', 'label', 'unhealthy', 'disease', 'background', 'hand', 'stem', 'leaf', 'flower', 'fruit', 'root', 'tree', 'plant'] def run_dual_consensus(image_path: str, manual_plant_name: Optional[str] = None) -> Tuple[str, Dict]: """ Runs a weighted dual-core consensus analysis on the given image. If a manual plant name is provided, skips species identification. """ if not AI_AVAILABLE: return "שגיאה: יכולות ה-AI אינן זמינות.", {"confidence": 0, "details": "AI not available."} global MODEL_WEIGHTS plant_results = [] health_results = [] # Check if a manual plant name was provided if manual_plant_name: print(f"Manual plant name '{manual_plant_name}' provided. Skipping species identification consensus.") top_plant_prediction = manual_plant_name plant_confidence = 1.0 # Set confidence to 100% since it's a manual override else: # 1. Species Identification Consensus (Weighted) - only if no manual name provided print("Running Species Identification Consensus...") for model_name, model_info in SPECIES_MODELS.items(): try: classifier = PLANT_MODELS_CACHE.get(model_info['model_id']) if classifier: predictions = classifier(image_path) for pred in predictions: if not any(keyword in pred['label'].lower() for keyword in NON_PLANT_KEYWORDS): plant_results.append({ "model_name": model_name, "label": pred['label'], "score": pred['score'] * MODEL_WEIGHTS.get(model_name, model_info['reliability']) }) except Exception as e: print(f"Error with model {model_name}: {e}") # Aggregate results based on weighted scores plant_scores = defaultdict(float) for result in plant_results: plant_scores[result['label']] += result['score'] if not plant_scores: return "לא זוהה אף צמח, ייתכן שהתמונה אינה מתאימה", {"confidence": 0, "details": "No plants detected."} top_plant_prediction = max(plant_scores, key=plant_scores.get) total_plant_score = sum(plant_scores.values()) plant_confidence = plant_scores[top_plant_prediction] / total_plant_score if total_plant_score > 0 else 0 # 2. Health Analysis Consensus (Weighted) - this always runs print("Running Health Analysis Consensus...") for model_name, model_info in HEALTH_MODELS.items(): try: classifier = PLANT_MODELS_CACHE.get(model_info['model_id']) if classifier: predictions = classifier(image_path) for pred in predictions: health_results.append({ "model_name": model_name, "label": pred['label'], "score": pred['score'] * MODEL_WEIGHTS.get(model_name, model_info['reliability']) }) except Exception as e: print(f"Error with model {model_name}: {e}") # Aggregate health results health_scores = defaultdict(float) for result in health_results: health_scores[result['label']] += result['score'] top_health_prediction = max(health_scores, key=health_scores.get) if health_scores else "לא ידוע" total_health_score = sum(health_scores.values()) health_confidence = health_scores[top_health_prediction] / total_health_score if total_health_score > 0 else 0 return ( f"**זיהוי סופי:** {top_plant_prediction}", { "plant_prediction": top_plant_prediction, "plant_confidence": plant_confidence, "health_prediction": top_health_prediction, "health_confidence": health_confidence, "plant_scores_log": dict(plant_scores) if not manual_plant_name else {}, "health_scores_log": dict(health_scores), "image_path": image_path, } ) def update_model_weights(original_analysis: Dict, user_correction: str): """ Updates the model weights based on user feedback (manual training from Cloudinary). """ global MODEL_WEIGHTS if not original_analysis: return "No original analysis found to update weights." print(f"Updating model weights based on user correction. Old weights: {MODEL_WEIGHTS}") plant_scores_log = original_analysis.get('plant_scores_log', {}) for model_name, model_info in PLANT_AI_MODELS.items(): if model_name in SPECIES_MODELS: if user_correction in plant_scores_log: MODEL_WEIGHTS[model_name] = min(1.0, MODEL_WEIGHTS.get(model_name, model_info['reliability']) + 0.05) else: MODEL_WEIGHTS[model_name] = max(0.01, MODEL_WEIGHTS.get(model_name, model_info['reliability']) - 0.02) print(f"New weights: {MODEL_WEIGHTS}") save_weights(MODEL_WEIGHTS) return "Weights updated based on your correction." def update_model_weights_from_plantnet(plantnet_result: Dict, original_analysis: Dict): """ Updates the model weights based on the PlantNet result (automatic training). """ global MODEL_WEIGHTS if not plantnet_result or not original_analysis: return "No PlantNet result or original analysis found to update weights." print(f"Updating model weights using PlantNet data. Old weights: {MODEL_WEIGHTS}") plantnet_prediction = plantnet_result.get("plant_name") for model_name, model_info in SPECIES_MODELS.items(): try: classifier = PLANT_MODELS_CACHE.get(model_info['model_id']) if classifier: predictions = classifier(original_analysis.get("image_path")) if predictions: model_top_prediction = predictions[0]['label'] if model_top_prediction == plantnet_prediction: MODEL_WEIGHTS[model_name] = min(1.0, MODEL_WEIGHTS.get(model_name, model_info['reliability']) + 0.05) else: MODEL_WEIGHTS[model_name] = max(0.01, MODEL_WEIGHTS.get(model_name, model_info['reliability']) - 0.02) except Exception as e: print(f"Failed to get individual prediction from {model_name}: {e}") print(f"New weights: {MODEL_WEIGHTS}") save_weights(MODEL_WEIGHTS) return f"Weights updated based on PlantNet's identification: '{plantnet_prediction}'." def analyze_plant_image(image_path: str, manual_plant_name: Optional[str] = None): """ Main analysis function using the weighted consensus. """ if not image_path: return "אנא העלה תמונה.", [] final_prediction, analysis_details = run_dual_consensus(image_path, manual_plant_name) plant_name = analysis_details.get("plant_prediction") plant_info = PLANT_DATABASE.get(plant_name, {}) care_tips = plant_info.get("care_tips", ["אין נתונים זמינים."]) health_prediction = analysis_details['health_prediction'] if health_prediction in ["לא ידוע", "healthy"]: # Add "healthy" check for future model improvements common_diseases = ["הצמח במצב מצוין! תזכור להמשיך לטפל בו"] else: common_diseases = plant_info.get("common_diseases", ["אין נתונים זמינים."]) if len(common_diseases) > 0: common_diseases.append(f"ייתכן והמערכת זיהתה: {health_prediction}") else: common_diseases = [f"ייתכן והמערכת זיהתה: {health_prediction}"] img_url = plant_info.get("img_url", None) output_text = f""" **תוצאות הניתוח:** * **זיהוי צמח:** {plant_name} (ביטחון: {analysis_details['plant_confidence']:.2%}) * **מצב בריאות:** {analysis_details['health_prediction']} (ביטחון: {analysis_details['health_confidence']:.2%}) * **טיפים לטיפול:** {', '.join(care_tips)} * **מחלות נפוצות:** {', '.join(common_diseases)} """ gallery_data = [(img_url, plant_name)] if img_url else [] analysis_details["image_path"] = image_path analysis_details["timestamp"] = datetime.now().isoformat() data_integrator.post_adafruit_data(ADAFRUIT_FEEDS["analysis_results"], json.dumps(analysis_details)) return output_text, gallery_data # ==================== GRADIO INTERFACE FUNCTIONS ==================== data_integrator = DataIntegrator() last_analysis_details = None def refresh_cloudinary_images_interface(): """Fetches images from Cloudinary and returns them for the gallery.""" images = data_integrator.get_cloudinary_images() if not images: return "לא נמצאו תמונות ב-Cloudinary. אנא בדוק את הגדרות התיקייה.", [] image_list = [(img['secure_url'], f"Image taken at: {img['created_at']}") for img in images] return f"נמצאו {len(images)} תמונות.", image_list def get_image_details(evt: gr.SelectData, image_data): """Retrieves and displays details for a selected image.""" selected_image_url = evt.value selected_image_info = [img for img in image_data if img[0] == selected_image_url][0] # Get sensor data timestamp_str = selected_image_info[1].replace("Image taken at: ", "") temp_data = data_integrator.get_adafruit_data(ADAFRUIT_FEEDS["temperature"]) humid_data = data_integrator.get_adafruit_data(ADAFRUIT_FEEDS["humidity"]) closest_temp_data = data_integrator.find_closest_sensor_data(timestamp_str, temp_data) closest_humid_data = data_integrator.find_closest_sensor_data(timestamp_str, humid_data) sensor_info = f"טמפרטורה: {closest_temp_data['value']}°C\n" if closest_temp_data else "אין נתוני טמפרטורה.\n" sensor_info += f"לחות: {closest_humid_data['value']}%" if closest_humid_data else "אין נתוני לחות." return f"URL: {selected_image_url}", sensor_info, selected_image_url, "פרטי תמונה נטענו.", gr.update(visible=True), gr.update(visible=True) def save_plant_definition(image_path, plant_name): """ Saves the user's manual plant classification and uses it to update model weights. Now also uses the PlantNet API as a reference. """ if not image_path or not plant_name: return "שגיאה: אנא בחר תמונה וצמח." analysis_record = { "image_path": image_path, "user_defined_plant": plant_name, "timestamp": datetime.now().isoformat() } try: # Step 1: Get original analysis raw_data = data_integrator.get_adafruit_data(ADAFRUIT_FEEDS["analysis_results"], limit=10) original_analysis = json.loads(raw_data[0]['value']) # Step 2: Use user correction to update weights (as before) update_model_weights(original_analysis, plant_name) # Step 3: Use PlantNet to update weights (as requested) plantnet_result = get_plant_id_from_plantnet(image_path) if plantnet_result: update_model_weights_from_plantnet(plantnet_result, original_analysis) except Exception as e: print(f"Failed to retrieve original analysis for weight update: {e}") return "הגדרת הצמח נשמרה. אך עדכון המשקלות נכשל." return f"הצמח '{plant_name}' נשמר בהצלחה. מערכת הלמידה עודכנה." def train_from_upload(image_path: str, plant_name: str): """ A new function for manual training from a user-uploaded image. This function directly updates weights without relying on Adafruit IO. """ if not image_path or not plant_name: return "שגיאה: אנא העלה תמונה ובחר צמח." global MODEL_WEIGHTS print(f"Starting manual training for plant '{plant_name}' from uploaded image.") for model_name, model_info in SPECIES_MODELS.items(): try: classifier = PLANT_MODELS_CACHE.get(model_info['model_id']) if classifier: predictions = classifier(image_path) # Check for an exact or partial match with the user-provided name matches = [p for p in predictions if p['label'].lower().strip() == plant_name.lower().strip() or plant_name.lower().strip() in p['label'].lower().strip()] if matches: # Reward the model if it made a correct prediction (even if it wasn't the top one) MODEL_WEIGHTS[model_name] = min(1.0, MODEL_WEIGHTS.get(model_name, model_info['reliability']) + 0.05) else: # Penalize if the model's predictions didn't include the correct plant at all MODEL_WEIGHTS[model_name] = max(0.01, MODEL_WEIGHTS.get(model_name, model_info['reliability']) - 0.02) except Exception as e: print(f"Failed to get individual prediction from {model_name}: {e}") save_weights(MODEL_WEIGHTS) return f"המערכת למדה בהצלחה! משקלות המודלים עודכנו עבור הצמח '{plant_name}'." def get_sensor_weather_data(city: str): """Retrieves and displays sensor and weather data.""" weather = data_integrator.get_weather_for_location(city) temp_data = data_integrator.get_adafruit_data(ADAFRUIT_FEEDS["temperature"]) output_text = "" if weather: output_text += f"מזג אוויר ב{weather['location']}:\nטמפרטורה: {weather['temperature']}°C\nלחות: {weather['humidity']}%\nתיאור: {weather['description']}\n\n" if temp_data: output_text += f"נתוני חיישנים אחרונים:\n" for i, point in enumerate(temp_data[:5]): output_text += f"טמפ' {i+1}: {point['value']}°C ({point['created_at']})\n" return output_text, None def run_prophet_forecast(): """Generates a forecast using Prophet.""" data_integrator = DataIntegrator() temp_data = data_integrator.get_adafruit_data(ADAFRUIT_FEEDS["temperature"]) if not temp_data or len(temp_data) < 20: print("Not enough real data, generating dummy data for forecast.") end_date = datetime.now() start_date = end_date - timedelta(days=30) dates = [start_date + timedelta(days=i) for i in range(31)] y_values = [random.uniform(20.0, 30.0) + math.sin(math.radians(i * 15)) * 2 for i in range(31)] df = pd.DataFrame({'ds': dates, 'y': y_values}) output_message = "אין מספיק נתונים אמיתיים. מוצגת תחזית על בסיס נתונים פיקטיביים." else: df = pd.DataFrame([{'ds': datetime.fromisoformat(d['created_at'].replace('Z', '+00:00')), 'y': float(d['value'])} for d in temp_data]) df.sort_values('ds', inplace=True) output_message = "תחזית טמפרטורה ל-30 הימים הקרובים נוצרה בהצלחה." m = Prophet(daily_seasonality=True, weekly_seasonality=True) m.fit(df) future = m.make_future_dataframe(periods=30, freq='D') forecast = m.predict(future) fig = m.plot(forecast) plt.title("Temperature Forecast") return output_message, fig def send_robot_command(command: str): """Sends a command to the robot and gets a response.""" if not TELEGRAM_BOT_TOKEN or not TELEGRAM_CHAT_ID: return "שגיאה: פרטי Telegram חסרים." try: url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": TELEGRAM_CHAT_ID, "text": f"פקודה מהמשתמש: {command}"} response = requests.post(url, data=payload) response.raise_for_status() return "הפקודה נשלחה בהצלחה לרובוט." except requests.exceptions.HTTPError as e: return f"שגיאה בשליחת פקודה לטלגרם: {e}" except Exception as e: return f"שגיאה כללית: {e}" def get_care_tips_interface(plant_name: str): """Retrieves care tips for a selected plant.""" plant_info = PLANT_DATABASE.get(plant_name, {}) if not plant_info: return "אין מידע זמין על צמח זה.", None care_tips = plant_info.get("care_tips", ["אין נתונים."]) common_diseases = plant_info.get("common_diseases", ["אין נתונים."]) tips_str = '\n- '.join(care_tips) diseases_str = '\n- '.join(common_diseases) text_output = f"**{plant_name}**\n\n**טיפים לטיפול:**\n- {tips_str}\n\n**מחלות נפוצות:**\n- {diseases_str}" image_output = plant_info.get("img_url", None) return text_output, image_output # ==================== MAIN GRADIO INTERFACE ==================== def create_gradio_app(): css = """ .gradio-container { background-color: #40E0D0; /* Turquoise color */ } """ with gr.Blocks(title="YOYOPLANET AI", theme=gr.themes.Soft(), css=css) as app: gr.Markdown( """

YOYOPLANET AI

מערכת חכמה לניטור, ניתוח וטיפול בצמחים

ברוכים הבאים למערכת ניטור הצמחים הכי חכמה בעולם!

""" ) with gr.Tabs(): # --- Tab 1: Image Analysis --- with gr.TabItem("ניתוח תמונות"): gr.Markdown("השתמש בטאב זה כדי לנתח תמונה חדשה באמצעות מערכת הקונסנזוס המשוקללת.") with gr.Row(): image_input = gr.Image(type="filepath", label="העלה תמונה של הצמח שלך") manual_plant_dropdown = gr.Dropdown( choices=[""] + sorted(list(PLANT_DATABASE.keys())), label="אופציונלי: בחר צמח ידנית (לניתוח בריאותי בלבד)", info="בחירה זו תבטל את קונסנזוס זיהוי הצמחים ותתמקד במחלות." ) analysis_button = gr.Button("בצע ניתוח") analysis_output = gr.Textbox(label="תוצאות ניתוח", interactive=False) analysis_gallery = gr.Gallery(label="השוואה לדוגמאות מהמאגר", columns=5, allow_preview=True) # --- Tab 2: Manual Training (Local Upload) --- with gr.TabItem("אימון ידני (העלאה מקומית)"): gr.Markdown( """ השתמש בטאב זה כדי לאמן את המערכת על תמונה חדשה שאתה מעלה.
**כיצד זה עובד**: המערכת לומדת מההגדרות שלך ומתאימה את עצמה. כאשר אתה בוחר צמח ומפעיל את האימון, המערכת מחזקת את המודלים שזיהו נכון ומחלישה את אלה שטעו, וכך משפרת את הדיוק הכללי. """ ) with gr.Row(): manual_training_image_input = gr.Image(type="filepath", label="העלה תמונה לאימון") with gr.Row(): manual_training_plant_dropdown = gr.Dropdown( choices=sorted(list(PLANT_DATABASE.keys())), label="בחר את שם הצמח מהתמונה" ) manual_training_btn = gr.Button("אמן את המערכת") manual_training_output = gr.Textbox(label="תוצאות אימון", interactive=False) # --- Tab 3: Ultimate Analysis --- with gr.TabItem("ניתוח אולטימטיבי"): gr.Markdown( """

חיזויים (פרופ'ט)

הפעל תחזית מבוססת AI על נתוני הטמפרטורה ההיסטוריים.

""" ) prophet_btn = gr.Button("הפעל תחזית") prophet_output = gr.Textbox(label="תוצאות תחזית", interactive=False) prophet_graph = gr.Plot(label="גרף תחזית") gr.Markdown("---") gr.Markdown( """

שליטה מרחוק על הרובוט

שלח פקודות לרובוט שלך באמצעות הודעות טלגרם.

""" ) with gr.Row(): robot_command_input = gr.Textbox(label="הקלד פקודה לרובוט (לדוגמה: 'השקה פטוניה', 'הפעל משאבה')") send_robot_command_btn = gr.Button("שלח פקודה") robot_output = gr.Textbox(label="תגובת הרובוט", interactive=False) # --- Tab 4: Sensor Data & Forecasting --- with gr.TabItem("ניטור חיישנים ותחזיות"): gr.Markdown( """

נתוני חיישנים ומזג אוויר

עקוב אחר הנתונים מהחיישנים שלך וקבל נתוני מזג אוויר עדכניים.

""" ) city_input = gr.Textbox(value=get_user_location(), label="הכנס מיקום (עיר)") sensor_btn = gr.Button("רענן נתוני חיישנים") sensor_weather_output = gr.Textbox(label="נתונים אחרונים ומזג אוויר", interactive=False) # --- Tab 5: Tips --- with gr.TabItem("טיפים"): gr.Markdown( """

מדריך טיפול בצמחים

""" ) with gr.Row(): plant_dropdown_care = gr.Dropdown(choices=sorted(list(PLANT_DATABASE.keys())), label="בחר צמח לקבלת טיפים לטיפול") care_btn = gr.Button("קבל טיפים") plant_display = gr.Textbox(label="מידע על הצמח", interactive=False) plant_img_display = gr.Image(label="תמונה להמחשה") # --- Tab 6: Facts about the system --- with gr.TabItem("עובדות על המערכת"): gr.Markdown( f"""

עובדות על המערכת

**מצב מודלים:** {len(SPECIES_MODELS)} מודלי זיהוי צמחים פעילים.
**מצב מודלים:** {len(HEALTH_MODELS)} מודלי זיהוי מחלות פעילים.
**מצב המאגר:** {len(PLANT_DATABASE)} מיני צמחים ידועים במאגר.
**יכולות עיקריות:** ניתוח בזמן אמת, מערכת למידה עצמאית, ניטור חיישנים, שליטה מרחוק.
**פרוטוקול תקשורת:** המערכת משתמשת בפרוטוקול MQTT דרך Adafruit IO וב-Telegram API.

""" ) # --- Tab 7: Plant Image Comparison & Manual Training (Cloudinary) --- with gr.TabItem("השוואת תמונות צמחים ואימון ידני (Cloudinary)"): gr.Markdown( """

גלריית תמונות מהמצלמה החכמה שלך

כאן תוכל לצפות בתמונות שהועלו ולספק מידע מתקן. **מידע זה ישמש לאימון המודל העצמאי שלך!**

""" ) refresh_cloudinary_btn = gr.Button("רענן גלריה") cloudinary_message = gr.Textbox(label="מצב חיבור ל-Cloudinary", interactive=False) cloudinary_gallery = gr.Gallery(label="תמונות אחרונות", columns=4, height=400, preview=True, object_fit="contain") with gr.Column(visible=False) as details_column: selected_image_display = gr.Image(label="תמונה נבחרת", type="filepath") with gr.Row(): image_info_display = gr.Textbox(label="פרטי תמונה", interactive=False) sensor_info_display = gr.Textbox(label="נתוני חיישנים קרובים", interactive=False) with gr.Row() as plant_setter_row: plant_dropdown = gr.Dropdown(choices=sorted(list(PLANT_DATABASE.keys())), label="בחר צמח ידנית") save_plant_btn = gr.Button("שמור הגדרת צמח") # --- Event Handlers --- analysis_button.click( fn=analyze_plant_image, inputs=[image_input, manual_plant_dropdown], outputs=[analysis_output, analysis_gallery] ) manual_training_btn.click( fn=train_from_upload, inputs=[manual_training_image_input, manual_training_plant_dropdown], outputs=manual_training_output ) prophet_btn.click( fn=run_prophet_forecast, outputs=[prophet_output, prophet_graph] ) send_robot_command_btn.click( fn=send_robot_command, inputs=[robot_command_input], outputs=robot_output ) sensor_btn.click( fn=get_sensor_weather_data, inputs=[city_input], outputs=[sensor_weather_output] ) care_btn.click( fn=get_care_tips_interface, inputs=[plant_dropdown_care], outputs=[plant_display, plant_img_display] ) refresh_cloudinary_btn.click( fn=refresh_cloudinary_images_interface, outputs=[cloudinary_message, cloudinary_gallery] ) cloudinary_gallery.select( fn=lambda evt: get_image_details(evt, cloudinary_gallery.value), inputs=[gr.State(None)], outputs=[image_info_display, sensor_info_display, selected_image_display, cloudinary_message, details_column, plant_setter_row], show_progress=True ) save_plant_btn.click( fn=save_plant_definition, inputs=[selected_image_display, plant_dropdown], outputs=cloudinary_message ) return app # ==================== MAIN ==================== if __name__ == "__main__": print("===== Application Startup at {} =====".format(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) print("YOYOPLANET AI v19.0 Starting...") print("=" * 60) print(f"AI Available: {AI_AVAILABLE}") print(f"Adafruit IO Available: {ADAFRUIT_AVAILABLE}") print(f"Cloudinary Available: {CLOUDINARY_AVAILABLE}") print(f"Prophet Available: {PROPHET_AVAILABLE}") print(f"Plant Database: {len(PLANT_DATABASE)} species") print(f"Species Models: {len(SPECIES_MODELS)}") print(f"Health Models: {len(HEALTH_MODELS)}") print("=" * 60) # Pre-load all models at startup for faster inference if AI_AVAILABLE: load_all_models() app = create_gradio_app() app.launch()