FarmOS Weather
Current conditions and forecasts for farm fields, sourced from the Agronomy module.
When to Use This
What this skill handles: Current weather conditions, forecasts, growing degree days (GDD), spray condition evaluation, and historical weather data for farm fields.
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?"
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.
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.
API Base
http://100.102.77.110:8012
Endpoints
Health Check
GET /api/weather/health
Returns: Weather service health status.
Current Weather
GET /api/weather/field/{field_id}/current
Returns: Current conditions for a specific field (temperature, precipitation, wind).
Forecast
GET /api/weather/field/{field_id}/forecast?days=7
Returns: Daily and hourly forecast data (up to 14 days).
Historical
GET /api/weather/field/{field_id}/historical?days=30
Returns: Historical weather records for a field.
Growing Degree Days
GET /api/weather/field/{field_id}/gdd?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&baseTemp=10
Returns: GDD accumulation for a field over a date range.
Spray Conditions
GET /api/weather/field/{field_id}/spray-conditions
Returns: Spray condition evaluation (wind, rain probability, temperature checks).
Weather by Coordinates
GET /api/weather/coordinates?latitude={lat}&longitude={lon}&type=current
Returns: Weather by coordinates (no field ID required). Use type=forecast for forecast data.
Integration Dashboard
GET /api/integration/dashboard
Returns: Agronomy summary including weather data if available.
Data Completeness
- 1. The
/api/integration/dashboard returns agronomy summary data — use it for a quick overview only, not as the primary weather source. - If a weather endpoint fails or returns empty, say so: "The weather service isn't responding right now." Don't guess the weather.
- 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."
Cross-Module Context
When answering weather questions, think about what else on the farm is affected:
Weather → Tasks:
- - 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."
- 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."
- 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?"
Weather → Observations:
- - 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."
- After frost or severe weather, suggest damage checks: "First frost was last night. Might be worth checking the late-planted fields for damage."
- Connect recent weather to existing observation patterns: if there are recent disease observations, note the weather connection.
Weather → Equipment:
- - 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."
Query 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.
Units — Already Imperial, Display Directly
The weather API returns all values in US imperial units. Display them as-is — no conversion needed.
| API field | Unit | Example display |
|---|
| INLINECODE1 / INLINECODE2 | °F | "high of 55°F" |
| INLINECODE3 |
inches | "about a quarter inch of rain" |
|
wind_speed_10m_max /
wind_gusts_10m_max | mph | "winds up to 21 mph" |
Do not convert, do not relabel. 0.25 means 0.25 inches. 55 means 55°F. 16 means 16 mph.
Date Handling — Anchor to Today
The API returns dates as YYYY-MM-DD strings starting from today. The first entry is today, not tomorrow.
- - Use your system date to label each day correctly: "Today (Feb 28)", "Tomorrow (Mar 1)", "Wednesday (Mar 2)"
- Do not assume the first forecast entry is tomorrow — it is today
- If you're unsure of today's date, say so rather than guess
Usage Notes
- - Farm is located in central Indiana. If specific field weather isn't available, general local weather is fine.
- Spray conditions matter: wind speed under 10mph, no rain in forecast for 24hrs, temperature ranges.
- "Can we spray?" is a common question -- check wind, rain probability, and temperature via the spray-conditions endpoint.
- 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.
- For coordinates-based queries without a field ID, use the /coordinates endpoint with the farm's approximate location (latitude ~40.25, longitude ~-85.67).
FarmOS 天气
农田的当前状况和预报,数据来源于农艺模块。
使用场景
本技能处理的内容: 农田的当前天气状况、预报、生长度日(GDD)、喷洒条件评估和历史天气数据。
触发短语: 天气怎么样、能喷洒吗、X地块的GDD、预报、这周会下雨吗?、现在的温度和风速、地块状况?
本技能不处理的内容: 关于冰雹、洪涝或霜冻等天气灾害的田间观测(请使用farmos-observations配合weather_damage类型——该类型用于记录灾害情况以便追踪)。本技能告诉你天气是什么;观测记录天气造成了什么。
最低有效输入: 天气或地块编号。如果未指定地块,任何附近的地块ID均可使用,因为全部69个地块都位于印第安纳州中部。
API基础地址
http://100.102.77.110:8012
接口端点
健康检查
GET /api/weather/health
返回:天气服务健康状态。
当前天气
GET /api/weather/field/{field_id}/current
返回:特定地块的当前状况(温度、降水量、风速)。
预报
GET /api/weather/field/{field_id}/forecast?days=7
返回:每日和每小时预报数据(最多14天)。
历史数据
GET /api/weather/field/{field_id}/historical?days=30
返回:地块的历史天气记录。
生长度日
GET /api/weather/field/{field_id}/gdd?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&baseTemp=10
返回:地块在指定日期范围内的GDD累积值。
喷洒条件
GET /api/weather/field/{field_id}/spray-conditions
返回:喷洒条件评估(风速、降雨概率、温度检查)。
按坐标查询天气
GET /api/weather/coordinates?latitude={lat}&longitude={lon}&type=current
返回:按坐标查询天气(无需地块ID)。使用type=forecast获取预报数据。
集成仪表盘
GET /api/integration/dashboard
返回:农艺摘要,包含天气数据(如有)。
数据完整性
- 1. /api/integration/dashboard返回农艺摘要数据——仅用于快速概览,不作为主要天气数据来源。
- 如果天气端点失败或返回空数据,请如实说明:天气服务当前无响应。不要猜测天气情况。
- 对于GDD查询,始终在回复中包含日期范围,以便用户了解范围:4月1日至今的GDD:1,142。
跨模块上下文
回答天气问题时,考虑农场其他方面的影响:
天气 → 任务:
- - 在回答能喷洒吗?或该下地了吗?之前,先检查farmos-tasks了解当前任务安排。将预报与具体计划工作联系起来:周四到周六有雨——如果你计划喷洒14号地块,今天就是你的时间窗口。
- 报告预报时,标记存在冲突的天气敏感任务:本周有3个喷洒任务,但周三风力增强。今天和明天是最佳时机。
- GDD里程碑触发农艺操作。当GDD数据跨越关键阈值时(玉米V6约450 GDD,VT约1,100 GDD,R1约1,400 GDD),与任务关联:12号地块刚达到1,100 GDD——这是V6标志。追肥窗口已开启。需要我创建一个任务吗?
天气 → 观测:
- - 持续降雨加高温后,标记病害压力:我们已经连续3天降雨,最高温在80多华氏度——灰斑病和玉米焦斑病的条件已经成熟。本周值得巡查玉米田。
- 霜冻或恶劣天气后,建议进行损害检查:昨晚出现了初霜。建议检查晚播地块的受损情况。
- 将近期天气与现有观测模式关联:如果近期有病害观测记录,注意天气关联性。
天气 → 设备:
- - 如果即将下雨且有田间作业计划,说明设备影响:周四开始下雨——任何需要下地的作业都应在此之前完成。
对于任何田间作业问题,请同时查询farmos-tasks和farmos-observations。对于简单的现在温度多少?这类问题,无需每次都交叉引用——请自行判断。当天气对计划产生实质性影响时进行交叉引用。
单位——已为英制单位,直接显示
天气API返回的所有值均为美制英制单位。按原样显示——无需转换。
| API字段 | 单位 | 显示示例 |
|---|
| temperaturemax / temperaturemin | °F | 最高55°F |
| precipitation_sum |
英寸 | 约四分之一英寸降雨 |
| wind
speed10m
max / windgusts
10mmax | 英里/小时 | 风速高达21英里/小时 |
不要转换,不要重新标注。 0.25表示0.25英寸。55表示55°F。16表示16英里/小时。
日期处理——以今天为基准
API返回的日期为从今天开始的YYYY-MM-DD格式字符串。第一条记录是今天,不是明天。
- - 使用系统日期正确标注每一天:今天(2月28日)、明天(3月1日)、周三(3月2日)
- 不要假设第一条预报记录是明天——它是今天
- 如果不确定今天的日期,请如实说明,不要猜测
使用说明
- - 农场位于印第安纳州中部。如果无法获取特定地块的天气数据,使用当地一般天气数据即可。
- 喷洒条件很重要:风速低于10英里/小时,未来24小时预报无雨,温度适宜。
- 能喷洒吗?是常见问题——通过喷洒条件端点检查风速、降雨概率和温度。
- 地块ID为整数——整个农场共有69个地块。大多数天气查询可使用任何附近的地块ID,因为它们都在同一区域。
- 对于无地块ID的坐标查询,使用/coordinates端点,输入农场的近似位置(纬度约40.25,经度约-85.67)。