Claude
Skills
Sign in
Back

farming-expert

Included with Lifetime
$97 forever

Expert-level precision agriculture, farm management systems, crop monitoring, and agtech

domainsagriculturefarmingprecision-agricultureagtechcrop-management

What this skill does


# Farming Expert

Expert guidance for precision agriculture, farm management systems, crop monitoring, IoT sensors, and agricultural technology.

## Core Concepts

### Precision Agriculture
- GPS-guided equipment
- Variable rate technology
- Crop monitoring and sensors
- Soil analysis and mapping
- Drone/satellite imagery
- Automated irrigation systems

### Farm Management
- Crop planning and rotation
- Resource optimization
- Yield prediction
- Weather forecasting integration
- Equipment maintenance
- Financial management

### AgTech Solutions
- IoT sensors (soil, weather)
- Machine learning for yield prediction
- Automated harvesting
- Livestock tracking
- Supply chain integration
- Marketplace platforms

## Farm Management System

```python
from dataclasses import dataclass
from typing import List, Optional
from datetime import datetime, timedelta
from enum import Enum

class CropType(Enum):
    WHEAT = "wheat"
    CORN = "corn"
    SOYBEANS = "soybeans"
    RICE = "rice"
    VEGETABLES = "vegetables"

class GrowthStage(Enum):
    PLANTED = "planted"
    GERMINATION = "germination"
    VEGETATIVE = "vegetative"
    FLOWERING = "flowering"
    HARVEST_READY = "harvest_ready"
    HARVESTED = "harvested"

@dataclass
class Field:
    field_id: str
    name: str
    area_hectares: float
    soil_type: str
    coordinates: List[tuple]  # GPS polygon
    irrigation_system: str
    drainage_quality: str

@dataclass
class CropCycle:
    cycle_id: str
    field_id: str
    crop_type: CropType
    variety: str
    planting_date: datetime
    expected_harvest_date: datetime
    growth_stage: GrowthStage
    seed_rate: float
    fertilizer_applied: List[dict]
    pesticides_applied: List[dict]
    irrigation_schedule: List[dict]

class FarmManagementSystem:
    """Farm management and crop tracking"""

    def __init__(self, db):
        self.db = db

    def plan_crop_rotation(self, field_id, years=3):
        """Generate crop rotation plan"""
        field = self.db.get_field(field_id)
        history = self.db.get_crop_history(field_id, years=10)

        # Analyze soil nutrients and previous crops
        rotation_plan = []

        # Rules for rotation:
        # - Alternate nitrogen-fixing and nitrogen-demanding crops
        # - Avoid same crop family consecutively
        # - Consider soil health and pest management

        for year in range(years):
            recommended_crop = self.recommend_next_crop(field, history, year)
            rotation_plan.append({
                'year': datetime.now().year + year,
                'crop': recommended_crop,
                'reason': self.explain_recommendation(recommended_crop, history)
            })

        return rotation_plan

    def monitor_crop_health(self, field_id):
        """Monitor crop health using sensor data"""
        field = self.db.get_field(field_id)
        current_crop = self.db.get_current_crop(field_id)

        # Collect sensor data
        soil_moisture = self.get_soil_moisture_data(field_id)
        weather_data = self.get_weather_data(field.coordinates)
        ndvi_data = self.get_ndvi_from_satellite(field.coordinates)

        # Analyze health indicators
        health_score = self.calculate_health_score(
            soil_moisture,
            weather_data,
            ndvi_data,
            current_crop
        )

        alerts = []
        if soil_moisture < current_crop.optimal_moisture_min:
            alerts.append({
                'type': 'irrigation_needed',
                'severity': 'high',
                'message': 'Soil moisture below optimal level'
            })

        if ndvi_data < 0.6:  # Vegetation health threshold
            alerts.append({
                'type': 'crop_stress',
                'severity': 'medium',
                'message': 'NDVI indicates possible crop stress'
            })

        return {
            'field_id': field_id,
            'health_score': health_score,
            'soil_moisture': soil_moisture,
            'ndvi': ndvi_data,
            'alerts': alerts,
            'recommendations': self.generate_recommendations(alerts)
        }

    def predict_yield(self, field_id):
        """Predict crop yield using ML"""
        field = self.db.get_field(field_id)
        current_crop = self.db.get_current_crop(field_id)

        # Features for prediction
        features = {
            'field_area': field.area_hectares,
            'soil_type': field.soil_type,
            'crop_variety': current_crop.variety,
            'days_since_planting': (datetime.now() - current_crop.planting_date).days,
            'total_rainfall': self.get_accumulated_rainfall(field_id),
            'avg_temperature': self.get_avg_temperature(field_id),
            'fertilizer_amount': sum(f['amount'] for f in current_crop.fertilizer_applied),
            'ndvi_avg': self.get_avg_ndvi(field_id)
        }

        # Use trained model to predict yield
        predicted_yield_per_hectare = self.yield_model.predict([features])[0]
        total_yield = predicted_yield_per_hectare * field.area_hectares

        return {
            'field_id': field_id,
            'predicted_yield_kg': total_yield,
            'yield_per_hectare': predicted_yield_per_hectare,
            'confidence': 0.85,
            'expected_harvest_date': current_crop.expected_harvest_date
        }
```

## IoT Sensor Integration

```python
class AgricultureIoT:
    """IoT sensor data collection and analysis"""

    def process_soil_sensor_data(self, sensor_id):
        """Process soil sensor readings"""
        readings = self.db.get_recent_readings(sensor_id, hours=24)

        analysis = {
            'sensor_id': sensor_id,
            'avg_moisture': np.mean([r['moisture'] for r in readings]),
            'avg_temperature': np.mean([r['temperature'] for r in readings]),
            'avg_ph': np.mean([r['ph'] for r in readings]),
            'avg_ec': np.mean([r['ec'] for r in readings]),  # Electrical conductivity
            'nitrogen_level': np.mean([r['nitrogen'] for r in readings]),
            'phosphorus_level': np.mean([r['phosphorus'] for r in readings]),
            'potassium_level': np.mean([r['potassium'] for r in readings])
        }

        # Detect anomalies
        anomalies = []
        if analysis['avg_moisture'] < 20:
            anomalies.append('Low soil moisture - irrigation recommended')
        if analysis['avg_ph'] < 5.5 or analysis['avg_ph'] > 7.5:
            anomalies.append(f'Soil pH out of optimal range: {analysis["avg_ph"]:.1f}')

        analysis['anomalies'] = anomalies

        return analysis

    def automate_irrigation(self, field_id):
        """Automated irrigation control"""
        field = self.db.get_field(field_id)
        soil_moisture = self.get_soil_moisture_data(field_id)
        weather_forecast = self.get_weather_forecast(field.coordinates, days=3)

        # Decision logic
        should_irrigate = False
        duration_minutes = 0

        # Check if irrigation is needed
        if soil_moisture < field.moisture_threshold:
            # Check if rain is expected
            expected_rainfall = sum(day['rainfall_mm'] for day in weather_forecast)

            if expected_rainfall < 10:  # Less than 10mm expected
                should_irrigate = True
                # Calculate irrigation duration
                moisture_deficit = field.moisture_threshold - soil_moisture
                duration_minutes = int(moisture_deficit * field.area_hectares * 60 / field.irrigation_rate)

        if should_irrigate:
            self.activate_irrigation(field_id, duration_minutes)

        return {
            'field_id': field_id,
            'irrigation_activated': should_irrigate,
            'duration_minutes': duration_minutes,
            'reason': 'Soil moisture below threshold' if should_irrigate else 'No irrigation needed'
        }
```

## Weather and Climate Analysis

```python
class WeatherAnalytics:
    """Weather-based 
Files: 1
Size: 13.1 KB
Complexity: 20/100
Category: domains

Related in domains