{"skill":{"slug":"farmos-weather","displayName":"Farmos Weather","summary":"Query weather data and forecasts for farm fields via the Agronomy module.","description":"---\nname: farmos-weather\ndescription: Query weather data and forecasts for farm fields via the Agronomy module.\ntags: [farming, weather, forecast]\n---\n\n# FarmOS Weather\n\nCurrent conditions and forecasts for farm fields, sourced from the Agronomy module.\n\n## When to Use This\n\n**What this skill handles:** Current weather conditions, forecasts, growing degree days (GDD), spray condition evaluation, and historical weather data for farm fields.\n\n**Trigger phrases:** \"what's the weather\", \"can we spray\", \"GDD for field X\", \"forecast\", \"will it rain this week?\", \"temperature and wind right now\", \"field conditions?\"\n\n**What this does NOT handle:** Field observations about weather damage like hail, flooding, or frost injury (use farmos-observations with weather_damage type -- that logs the damage for tracking). This skill tells you what the weather IS; observations logs what the weather DID.\n\n**Minimum viable input:** \"Weather\" or a field reference. If no field is specified, any nearby field ID works since all 69 fields are in central Indiana.\n\n## API Base\n\nhttp://100.102.77.110:8012\n\n## Endpoints\n\n### Health Check\nGET /api/weather/health\n\nReturns: Weather service health status.\n\n### Current Weather\nGET /api/weather/field/{field_id}/current\n\nReturns: Current conditions for a specific field (temperature, precipitation, wind).\n\n### Forecast\nGET /api/weather/field/{field_id}/forecast?days=7\n\nReturns: Daily and hourly forecast data (up to 14 days).\n\n### Historical\nGET /api/weather/field/{field_id}/historical?days=30\n\nReturns: Historical weather records for a field.\n\n### Growing Degree Days\nGET /api/weather/field/{field_id}/gdd?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&baseTemp=10\n\nReturns: GDD accumulation for a field over a date range.\n\n### Spray Conditions\nGET /api/weather/field/{field_id}/spray-conditions\n\nReturns: Spray condition evaluation (wind, rain probability, temperature checks).\n\n### Weather by Coordinates\nGET /api/weather/coordinates?latitude={lat}&longitude={lon}&type=current\n\nReturns: Weather by coordinates (no field ID required). Use type=forecast for forecast data.\n\n### Integration Dashboard\nGET /api/integration/dashboard\n\nReturns: Agronomy summary including weather data if available.\n\n## Data Completeness\n\n1. **The `/api/integration/dashboard` returns agronomy summary data** — use it for a quick overview only, not as the primary weather source.\n2. **If a weather endpoint fails or returns empty**, say so: \"The weather service isn't responding right now.\" Don't guess the weather.\n3. **For GDD queries**, always include the date range in your response so the user knows the scope: \"GDD from April 1 to today: 1,142.\"\n\n## Cross-Module Context\n\nWhen answering weather questions, think about what else on the farm is affected:\n\n**Weather → Tasks:**\n- Before answering \"can we spray?\" or \"should we get in the field?\", check farmos-tasks for what's on the board. Connect the forecast to specific scheduled work: \"Rain Thursday through Saturday — if you're planning to spray field 14, today's your window.\"\n- When reporting the forecast, flag weather-sensitive tasks that conflict: \"You've got 3 spray tasks this week but wind picks up Wednesday. Today and tomorrow are your best shot.\"\n- GDD milestones trigger agronomic actions. When GDD data crosses key thresholds (V6 ~450 GDD, VT ~1,100 GDD, R1 ~1,400 GDD for corn), connect to tasks: \"Field 12 just hit 1,100 GDD — that's your V6 marker. Side-dress window is now. Want me to create a task?\"\n\n**Weather → Observations:**\n- After extended rain + warm temps, flag disease pressure: \"We've had 3 days of rain and highs in the 80s — conditions are ripe for gray leaf spot and tar spot. Worth scouting the corn this week.\"\n- After frost or severe weather, suggest damage checks: \"First frost was last night. Might be worth checking the late-planted fields for damage.\"\n- Connect recent weather to existing observation patterns: if there are recent disease observations, note the weather connection.\n\n**Weather → Equipment:**\n- If rain is coming and there are field operations scheduled, note the equipment implication: \"Rain starts Thursday — anything that needs to be in the field should get there before then.\"\n\nQuery farmos-tasks and farmos-observations alongside weather for any field operation question. You don't need to cross-reference on every simple \"what's the temperature?\" question — use judgment. Cross-reference when the weather materially affects the plan.\n\n## Units — Already Imperial, Display Directly\n\nThe weather API returns all values in US imperial units. **Display them as-is — no conversion needed.**\n\n| API field | Unit | Example display |\n|-----------|------|-----------------|\n| `temperature_max` / `temperature_min` | °F | \"high of 55°F\" |\n| `precipitation_sum` | inches | \"about a quarter inch of rain\" |\n| `wind_speed_10m_max` / `wind_gusts_10m_max` | mph | \"winds up to 21 mph\" |\n\n**Do not convert, do not relabel.** `0.25` means 0.25 inches. `55` means 55°F. `16` means 16 mph.\n\n## Date Handling — Anchor to Today\n\nThe API returns dates as `YYYY-MM-DD` strings starting from today. The first entry is **today**, not tomorrow.\n\n- Use your system date to label each day correctly: \"Today (Feb 28)\", \"Tomorrow (Mar 1)\", \"Wednesday (Mar 2)\"\n- Do not assume the first forecast entry is tomorrow — it is today\n- If you're unsure of today's date, say so rather than guess\n\n## Usage Notes\n\n- Farm is located in central Indiana. If specific field weather isn't available, general local weather is fine.\n- Spray conditions matter: wind speed under 10mph, no rain in forecast for 24hrs, temperature ranges.\n- \"Can we spray?\" is a common question -- check wind, rain probability, and temperature via the spray-conditions endpoint.\n- Field IDs are integers -- 69 fields across the operation. Most weather queries can use any nearby field ID since they are all in the same area.\n- For coordinates-based queries without a field ID, use the /coordinates endpoint with the farm's approximate location (latitude ~40.25, longitude ~-85.67).\n","tags":{"latest":"1.0.1"},"stats":{"comments":0,"downloads":1022,"installsAllTime":2,"installsCurrent":2,"stars":0,"versions":2},"createdAt":1771750863366,"updatedAt":1778992319322},"latestVersion":{"version":"1.0.1","createdAt":1772615239212,"changelog":"- Adds a \"Units\" section clarifying that all weather API values are in US imperial units and must be displayed as-is with no conversion.\n- Adds a \"Date Handling\" section explaining that forecast data is anchored to today (not tomorrow) and how to reference dates properly when displaying information.","license":null},"metadata":null,"owner":{"handle":"brianppetty","userId":"s17ayv2vrvdycq58dkjx8wpbg9885kes","displayName":"brianppetty","image":"https://avatars.githubusercontent.com/u/26852668?v=4"},"moderation":null}