FarmOS Equipment
Query and manage farm equipment data — status, maintenance schedules, service records, and parts inventory.
When to Use This
What this skill handles: Fleet status, maintenance schedules, equipment issues, hour/mileage logging, service manual lookups, parts questions, and maintenance completion records.
Trigger phrases: "the [machine] is...", "equipment status", "log hours on...", "maintenance due", "what equipment needs service?", "search equipment manuals for...", "what oil does the 8370R take?"
What this does NOT handle: Field observations about crop/soil/pest issues (use farmos-observations), scheduling repairs for people or assigning work (create a task via farmos-tasks), weather damage reports (use farmos-observations with weather_damage type).
Minimum viable input: A machine name or description of an equipment issue. "The combine sounds funny" is enough.
API Base
http://100.102.77.110:8005
Data Completeness Rules
CRITICAL: Always return complete data, never truncated results.
- 1. Dashboard endpoint is for SUMMARY STATS ONLY — use
/api/integration/dashboard for counts and overdue items, NOT for listing equipment. - For listing equipment, use
/api/integration/equipment which returns ALL equipment without pagination. - For due maintenance, use
/api/integration/due-maintenance which returns ALL due/overdue items. - Always state the total count of items returned: "Found 3 overdue maintenance items" (not just "overdue items:").
- If suspiciously few results, flag it: "Only seeing X items — that may be incomplete. Let me try a different endpoint."
- If an endpoint fails, report the failure to the user rather than silently falling back to partial data.
Integration Endpoints (No Auth Required)
Dashboard Summary
GET /api/integration/dashboard
Returns: Equipment counts, maintenance stats, overdue items.
Use for: Summary statistics and counts ONLY. Do NOT use for listing equipment or maintenance items.
Equipment List
GET /api/integration/equipment
Returns: All equipment with id, name, make, model, type, status, current_hours.
Use for: Complete equipment listing. This endpoint returns ALL equipment without truncation.
Use this to look up equipment IDs for other queries.
Equipment Detail
GET /api/integration/equipment/{id}/summary
Returns: Full equipment summary including maintenance history, upcoming service, documents.
Due Maintenance
GET /api/integration/due-maintenance
Returns: List of maintenance items that are due or overdue, including:
- - scheduleid, equipmentid, equipmentname
- maintenancename, priority (low/normal/high/critical)
- triggertype (hours/calendar/seasonal)
- hoursoverdue or daysoverdue
- estimateddurationminutes
- partsrequired list
Use for: Complete list of ALL due/overdue maintenance. Returns all items without truncation.
Record Maintenance Completion
POST /api/integration/record-completion
Content-Type: application/json
Body:
CODEBLOCK0
Use this when someone reports maintenance was done.
Semantic Search (Service Documents)
POST /api/integration/search
Content-Type: application/json
Body:
CODEBLOCK1
Returns: Relevant chunks from service manuals and parts catalogs with similarity scores. Use this for technical questions about equipment specs, procedures, and parts.
RAG Q&A
POST /api/integration/ask
Content-Type: application/json
Body:
CODEBLOCK2
Returns: AI-generated answer sourced from service documents. Use for natural language equipment questions.
Regular API Endpoints
These endpoints provide additional functionality:
Equipment CRUD
GET /api/equipment — List with pagination and filters (?equipment_type=tractor&status=active&search=deere)
GET /api/equipment/{id} — Full detail
POST /api/equipment/{id}/hours — Log hour meter reading: {"hours": 1500, "recorded_at": "2026-02-13"}
Maintenance
GET /api/maintenance/due — Detailed due maintenance list
GET /api/schedules — All maintenance schedules
GET /api/maintenance — Maintenance history records
Usage Notes
- - Equipment IDs are integers. Use the equipment list to find IDs by name.
- Hour-based maintenance triggers when currenthours >= dueat_hours.
- Calendar-based maintenance triggers on date.
- Priority levels: low, normal, high, critical. Flag "critical" items prominently.
- When reporting maintenance status, always mention overdue items first.
- The RAG search endpoints can answer technical questions from uploaded service manuals.
Conversational Equipment Issue Intake
When crew reports an equipment problem -- even vaguely -- capture it. "The combine sounds funny" is a valid starting point. Your job is to guide toward useful detail without interrogating.
Symptom Detection
Auto-detect from the message what you can:
Sound symptoms (map to likely systems):
- - Grinding: bearings, gears, brakes
- Clicking/knocking: engine, drivetrain, loose components
- Whining/squealing: belts, hydraulic pump, power steering
- Hissing: air leak, hydraulic line, cooling system
Performance symptoms:
- - Sluggish/underpowered: fuel system, air filter, turbo, transmission
- Jerky/rough: drivetrain, clutch, hydraulic valves
- Drifting/pulling: steering, alignment, tire pressure
- Vibrating: balance, bearings, driveshaft, loose components
- Overheating: coolant, radiator, fan, thermostat
Visual symptoms:
- - Leaking: identify fluid color (oil=dark, hydraulic=amber/red, coolant=green/orange, fuel=clear/diesel smell)
- Smoking: color matters (white=coolant, blue=oil burning, black=rich fuel)
- Cracked/worn/loose: note component and location
Accept vague reports: "Something is off," "doesn't feel right," "acting weird" are ALL valid. Log them and ask follow-ups.
Follow-Up Questions (2-3 Max, Not Interrogation)
Pick the most useful questions based on what is missing. Never ask more than 3.
| Missing Info | Question |
|---|
| Sound type | "Is it more of a grinding, clicking, or whining sound?" |
| Condition |
"Does it happen all the time or just under load / at certain speeds / when turning?" |
| Onset | "When did you first notice it -- today, or has it been building?" |
| Context | "Anything change recently -- new attachment, hit something, different field conditions?" |
| Location | "Can you tell where it is coming from -- front, rear, left side, engine area?" |
| Severity | "Can you still operate it safely, or should it be parked?" |
For detailed reporters (mechanics, experienced operators): auto-detect everything, confirm, offer work order. Skip redundant questions.
For sparse reporters ("something is wrong with the combine"): ask 2-3 targeted questions, then log with what you have. A vague report logged is better than no report.
Auto-Correlation
When an equipment issue is reported, automatically check:
- 1. Hour meter vs maintenance schedule: "Current hours are 1,247 -- it is due for service at 1,250 anyway, so good timing to look at this."
- Recent maintenance history: "The hydraulic filter was changed 200 hours ago -- probably not that, but worth mentioning."
- Similar recent issues: "Someone reported a similar noise on this machine last week -- could be related."
Use the equipment detail endpoint (GET /api/integration/equipment/{id}/summary) to pull maintenance history and service intervals.
Creating Maintenance Flags
After capturing the issue:
- 1. Always offer before creating: "Want me to flag this for the shop?" or "Should I create a work order?"
- Create a task via the task-manager skill with:
- Title: equipment name + symptom summary (e.g., "8370R -- grinding noise on left turns")
- Description: all captured details (symptoms, conditions, operator observations)
- Equipment reference: equipment ID
- Priority: based on severity assessment
- 3. Log hour meter reading if the operator mentions it: POST /api/equipment/{id}/hours
Safety Escalation
If the reported issue involves ANY of the following, switch to CRITICAL MODE immediately:
- - Brakes -- any brake issue on any equipment
- Steering -- loss of steering, play in steering, pulling hard
- Hydraulic failure -- sudden loss of hydraulic pressure, header or loader won't hold
- Structural -- cracks in frame, ROPS damage, roll bar issues
- Rollover risk -- stability concerns, leaning, uneven ground incidents
- Fire risk -- smoke from engine compartment, electrical smell, fuel leak near hot components
In critical mode:
- - State the safety risk plainly
- Recommend parking the equipment immediately
- Auto-escalate to operator (notify Brian)
- Create a critical-priority maintenance task
- Do NOT wait for the reporter to ask -- act immediately
Post-Issue Actions
After logging the issue, offer:
- - "Want me to check if we have the parts in stock?" (if applicable)
- "Should I search the service manual for this symptom?" (use RAG search)
- "Want me to schedule downtime for this?" (create task with date)
Example Flows
Detailed reporter (experienced operator):
CODEBLOCK3
Sparse reporter (vague but valid):
CODEBLOCK4
Safety escalation:
Crew: "FarmBot the brakes on the grain cart feel spongy"
FarmBot: "Flagging this immediately -- spongy brakes on the grain cart
is a safety issue. I have created a critical-priority work
order and notified Brian. Do not use the cart until someone
checks it. Good call reporting this."
Cross-Module Context
When dealing with equipment issues, think about what else is affected:
Equipment → Tasks:
- - When equipment is reported as having issues or going down, check farmos-tasks for work orders assigned to that machine: "The 8370R has 3 tasks this week — 2 need the planter. If this takes the planter offline, I can flag those tasks as blocked."
- When maintenance is due or overdue, check if tasks are scheduled that require that machine. Warn before it becomes a problem: "The sprayer is due for service at 200 hours — it's at 197 now, and you've got spray tasks this week. Want me to schedule the service first?"
- When equipment is marked as back in service, check for tasks that were waiting on it.
Equipment → Observations:
- - When an equipment issue is reported in the field, check farmos-observations for related field observations. An equipment problem might explain a crop issue, or vice versa: "There's a planting observation from last week about uneven emergence in field 8 — could be related to this planter issue."
Equipment → Weather:
- - When field equipment goes down, check the forecast. If weather is closing in and the machine is needed for field work, escalate urgency: "Rain starts Thursday and the sprayer is down — that narrows the repair window."
Cross-reference when a machine issue could ripple into the work schedule. Don't cross-reference for routine hour logging or simple status checks.
Image Understanding
When a photo accompanies an equipment report (the image description will appear in your context as [Image] Description: ...), use it to enhance your response.
Photo of Damage or Symptoms
- - Identify the component: Use the image description to identify what part of the machine is shown -- hose, belt, tire, bearing, cylinder, panel, etc.
- Assess visible damage: Note cracks, leaks, wear patterns, discoloration, deformation, corrosion, missing parts.
- Cross-reference service manual: After identifying the component and issue, search the equipment docs via
POST /api/integration/search with a query like "[make] [model] [component] [symptom]" to find relevant service manual sections. - Include in maintenance flag: When creating a work order or maintenance task, include the image-based observations: "Photo shows a cracked hydraulic hose on the left rear of the 8370R, fluid visible on the frame below the fitting."
Photo of Hour Meter or Dashboard
- - Read the numbers: Extract the hour meter reading, odometer, or other gauge values from the image description.
- Offer to log: "I can see the hour meter reads [X] hours. Want me to log that?" Then use
POST /api/equipment/{id}/hours with the reading. - Note warning lights: If dashboard warning lights are visible, identify them and cross-reference with the service manual for that machine.
- Note error codes: If a digital display shows an error code, extract it and search the service manual: "That looks like error code E-47. Let me check the manual."
Photo of Error Codes or Warning Lights
- - Extract the code: Read the error code from the display in the image description.
- Search for meaning: Use
POST /api/integration/search with the error code and machine make/model: {"query": "error code E-47 Case IH 8250"}. - Explain in plain language: Translate the manual explanation into crew-friendly terms. Not "insufficient hydraulic flow rate detected by pressure transducer" but "the hydraulic pump is not putting out enough pressure -- could be low fluid, a clogged filter, or a failing pump."
- Recommend action: Based on the error code severity, recommend next steps (continue with caution, park it, call the shop).
Photo Quality Handling
- - Clear photo: Use it confidently. State what you see and your assessment.
- Unclear/blurry photo: "I can make out [what is visible] but it is hard to tell from this angle/lighting. Can you get a closer shot of the [component]?"
- Cannot identify the machine: "What machine is this from? I cannot tell from the photo alone."
Prompting for Photos
When crew reports equipment issues without a photo, and a photo would genuinely help diagnosis:
- - "Can you snap a photo of that? It would help me figure out what is going on."
- Do NOT demand photos for every issue. Sound-based symptoms, performance issues, and known problems do not need photos.
- Photos are most useful for: visible damage, fluid leaks, error codes/displays, worn parts, and unknown components.
FarmOS Equipment
查询和管理农机设备数据——状态、维护计划、服务记录和零件库存。
何时使用此技能
此技能处理的内容: 车队状态、维护计划、设备问题、工时/里程记录、服务手册查询、零件问题以及维护完成记录。
触发短语: [机器]是...、设备状态、记录...的工时、维护到期、哪些设备需要保养?、搜索设备手册...、8370R用什么机油?
此技能不处理的内容: 关于作物/土壤/病虫害问题的田间观察(使用 farmos-observations)、为人员安排维修或分配工作(通过 farmos-tasks 创建任务)、天气损害报告(使用 farmos-observations 并选择 weather_damage 类型)。
最低有效输入: 机器名称或设备问题的描述。收割机声音不对劲就足够了。
API 基础地址
http://100.102.77.110:8005
数据完整性规则
关键:始终返回完整数据,绝不返回截断结果。
- 1. 仪表盘端点仅用于摘要统计——使用 /api/integration/dashboard 获取计数和逾期项目,而非列出设备。
- 列出设备时,使用 /api/integration/equipment,该端点返回所有设备,无分页。
- 查询到期维护时,使用 /api/integration/due-maintenance,该端点返回所有到期/逾期项目。
- 始终说明返回项目的总数:找到 3 个逾期维护项目(而不仅仅是逾期项目:)。
- 如果结果少得可疑,请标记:只看到 X 个项目——这可能不完整。让我尝试另一个端点。
- 如果某个端点失败,向用户报告失败,而不是默默回退到部分数据。
集成端点(无需认证)
仪表盘摘要
GET /api/integration/dashboard
返回:设备数量、维护统计、逾期项目。
用于: 仅用于摘要统计和计数。不要用于列出设备或维护项目。
设备列表
GET /api/integration/equipment
返回:所有设备,包含 id、名称、品牌、型号、类型、状态、当前工时。
用于: 完整的设备列表。此端点返回所有设备,无截断。
使用此端点通过名称查找设备 ID 以进行其他查询。
设备详情
GET /api/integration/equipment/{id}/summary
返回:完整的设备摘要,包括维护历史、即将到来的服务、文档。
到期维护
GET /api/integration/due-maintenance
返回:到期或逾期的维护项目列表,包括:
- - scheduleid、equipmentid、equipmentname
- maintenancename、优先级(低/正常/高/关键)
- 触发类型(工时/日历/季节性)
- hoursoverdue 或 daysoverdue
- estimateddurationminutes
- parts_required 列表
用于: 所有到期/逾期维护的完整列表。返回所有项目,无截断。
记录维护完成
POST /api/integration/record-completion
Content-Type: application/json
请求体:
json
{
schedule_id: 1,
equipment_id: 5,
performed_at: 2026-02-13T10:00:00Z,
performedby: username,
equipment_hours: 1250,
work_performed: 更换了发动机机油和滤清器,
parts_used: [],
task_id: null
}
当有人报告维护已完成时使用此端点。
语义搜索(服务文档)
POST /api/integration/search
Content-Type: application/json
请求体:
json
{
query: 8370R 液压油容量,
limit: 5
}
返回:来自服务手册和零件目录的相关片段,附带相似度评分。用于关于设备规格、程序和零件的技术问题。
RAG 问答
POST /api/integration/ask
Content-Type: application/json
请求体:
json
{
question: 8370R 用什么机油?
}
返回:来自服务文档的 AI 生成答案。用于自然语言的设备问题。
常规 API 端点
这些端点提供额外功能:
设备 CRUD
GET /api/equipment — 带分页和过滤器的列表(?equipment_type=tractor&status=active&search=deere)
GET /api/equipment/{id} — 完整详情
POST /api/equipment/{id}/hours — 记录工时表读数:{hours: 1500, recorded_at: 2026-02-13}
维护
GET /api/maintenance/due — 详细的到期维护列表
GET /api/schedules — 所有维护计划
GET /api/maintenance — 维护历史记录
使用说明
- - 设备 ID 为整数。使用设备列表通过名称查找 ID。
- 基于工时的维护在 currenthours >= dueat_hours 时触发。
- 基于日历的维护在指定日期触发。
- 优先级级别:低、正常、高、关键。突出标记关键项目。
- 报告维护状态时,始终先提及逾期项目。
- RAG 搜索端点可以回答来自上传服务手册的技术问题。
对话式设备问题接收
当工作人员报告设备问题时——即使很模糊——也要记录下来。收割机声音不对劲是一个有效的起点。你的工作是引导出有用的细节,而不是审问。
症状检测
从消息中自动检测你能检测到的内容:
声音症状(映射到可能的系统):
- - 研磨声:轴承、齿轮、刹车
- 咔嗒声/敲击声:发动机、传动系统、松动部件
- 啸叫声/尖叫声:皮带、液压泵、动力转向
- 嘶嘶声:漏气、液压管路、冷却系统
性能症状:
- - 迟钝/动力不足:燃油系统、空气滤清器、涡轮增压器、变速箱
- 颠簸/粗糙:传动系统、离合器、液压阀
- 跑偏/偏航:转向、定位、胎压
- 振动:平衡、轴承、传动轴、松动部件
- 过热:冷却液、散热器、风扇、节温器
视觉症状:
- - 泄漏:识别液体颜色(机油=深色、液压油=琥珀色/红色、冷却液=绿色/橙色、燃油=透明/柴油味)
- 冒烟:颜色很重要(白色=冷却液、蓝色=烧机油、黑色=燃油过浓)
- 开裂/磨损/松动:注意部件和位置
接受模糊报告: 有点不对劲、感觉不对、表现异常都是有效的。记录下来并询问后续问题。
后续问题(最多 2-3 个,不是审问)
根据缺失的信息选择最有用的问題。绝不超过 3 个。
| 缺失信息 | 问题 |
|---|
| 声音类型 | 是研磨声、咔嗒声还是啸叫声? |
| 条件 |
是一直发生,还是只在负载下/特定速度/转弯时发生? |
| 开始时间 | 你是什么时候第一次注意到的——今天,还是已经持续一段时间了? |
| 背景 | 最近有什么变化吗——新的附件、撞到了什么东西、不同的田间条件? |
| 位置 | 你能说出声音来自哪里吗——前部、后部、左侧、发动机区域? |
| 严重程度 | 还能安全操作吗,还是应该停用? |
对于详细报告者(机械师、经验丰富的操作员):自动检测所有内容,确认,提供工单。跳过重复的问题。
对于信息稀疏的报告者(收割机有点问题):问 2-3 个有针对性的问题,然后用已有的信息记录下来。记录一个模糊的报告总比没有报告好。
自动关联
当报告设备问题时,自动检查:
- 1. 工时表与维护计划: 当前工时为 1,247——无论如何它都该在 1,250 工时保养了,所以这是个好时机来处理这个问题。
- 最近的维护历史: 液压滤清器在 200 小时前更换过——可能不是那个问题,但值得一提。
- 类似的近期问题: 上周有人报告这台机器有类似的噪音——可能有关联。
使用设备详情端点(GET /api/integration/equipment/{id}/summary)来获取维护历史和服务间隔。
创建维护标记
记录问题后:
- 1. 在创建之前始终提供选择: 要我标记给车间吗?或要我创建工单吗?
- 通过任务管理器技能创建任务,包含:
- 标题:设备名称 + 症状摘要(例如,8370R——左转时研磨声)
- 描述:所有记录的细节(症状、条件、操作员观察)
- 设备引用:设备 ID
- 优先级:基于严重程度评估
- 3. 如果操作员提到工时表读数,记录