Docs

EFDI

EFDI telemetry data, Device Descriptions (TeamSets) and TimeLogs for live machine telemetry

EFDI (Extended Farm Device Interface) covers two related technical message types for machine telemetry: Device Descriptions that report the configuration of machines and devices, and TimeLogs that stream live sensor and task data.

Both types use Protobuf and are defined in the agrirouter TMT Protobuf Definitions repository.

Device Description (TeamSet)

PropertyValue
Technical Message Typeiso:11783:-10:device_description:protobuf
Information TypeTelemetry
FormatProtobuf
Protobuf Schemaefdi.ISO11783_TaskData (only the device property is filled)
TypeURLtypes.agrirouter.com/efdi.ISO11783_TaskData

Overview

A Device Description reports the devices attached to a Virtual CU (VCU), or to a legacy Communication Unit (CU) on the legacy API. This collection of devices is called a TeamSet and is identified by a unique TeamSet ID (a GUID is a good default).

TeamSet ID Rules

The TeamSet ID drives telemetry routing on the receiving side, so:

  • The ID must change whenever the device description changes, even for small edits
  • The ID should be deterministic: the same device description should always produce the same TeamSet ID
  • The ID must change when:
    • A different sender (VCU, or a legacy CU) is used
    • A machine is added or removed from the configuration
    • The DDOP (Device Descriptor Object Pool) changes
    • The order of machines in the configuration changes

If you keep the same TeamSet ID after a configuration change, telemetry will be routed and associated incorrectly on the receiving side.

When to Send

Send Device Descriptions:

  • Whenever the device configuration changes
  • On power-on of the VCU (or of a legacy CU on the legacy API)
  • Periodically, somewhere between once per hour and once per day

Since agrirouter Machine 2.0, EFDI is no longer used to create machine endpoints. You still need to send the device description so the receiver can associate telemetry data with the right machines in a TeamSet.

Protobuf Definition

The Protobuf definitions for Device Descriptions are available at:

https://github.com/DKE-Data/agrirouter-tmt-protobuf-definitions


TimeLog

PropertyValue
Technical Message Typeiso:11783:-10:time_log:protobuf
Information TypeTelemetry
FormatProtobuf
Protobuf Schemaefdi.TimeLog
TypeURLtypes.agrirouter.com/efdi.TimeLog

Overview

TimeLog messages carry live telemetry from machines: sensor readings and task values expressed as DDIs (Data Dictionary Identifiers). agrirouter can filter TimeLog data by specific DDIs based on the routing configuration, so receivers only get the data elements they subscribed to.

Each TimeLog message must not exceed 1 MB. If your telemetry data grows beyond that, split it across multiple messages.

Send a Device Description before you start sending TimeLog messages. Without it, the receiver cannot interpret the telemetry data or associate it with the right machines.

Data Format

TimeLog messages use Protobuf directly: they are not Base64-encoded. Put the Protobuf binary data straight into the message payload.

DDIs

DDIs (Data Dictionary Identifiers) are standardized identifiers for sensor and task values defined by the AEF (Agricultural Industry Electronics Foundation). Each DDI represents one measurement or parameter, for example ground speed, fuel consumption, or application rate.

The full list of standardized DDIs is at https://isobus.net.


TeamSet Context ID

The TeamSet context ID is the value that ties EFDI messages together so a receiver can correlate device descriptions and time logs from the same on-machine setup. The same identifier is also called the TeamSet ID in EFDI: both names refer to the same concept and the same value.

Senders carry it in the x-agrirouter-teamset-context-id request header on POST /messages (max 100 characters, free format, GUIDs work well). Receivers find it on the teamset_context_id field of MESSAGE_RECEIVED and FILE_RECEIVED events when the sender included it.

The TeamSet context ID is not the same as the x-agrirouter-context-id header. That header is a per-payload application-side identifier (required on every send, max 50 characters). The TeamSet context ID is a separate, optional header (x-agrirouter-teamset-context-id) that identifies the machine set the payload belongs to.

When to set it

The header is optional at the wire level, but receivers cannot interpret EFDI payloads without it. In practice, set it on every message that carries:

  • iso:11783:-10:device_description:protobuf (Device Description, see above)
  • iso:11783:-10:time_log:protobuf (TimeLog, see above)

The same value-change rules apply as for the TeamSet ID inside the device description: change the ID whenever anything in the machine set configuration changes.

For non-EFDI message types, the header is optional. The value is passed through to the receiver unchanged, but it only carries meaning if the same sender has anchored a device description with the matching ID.

Worked example

A contractor mounts a sprayer onto a tractor and starts an application job:

  1. The VCU determines the new machine configuration (Tractor A + Sprayer B) and generates a TeamSet context ID, for example a3f1c2d4-b6e7-4f08-9c1a-2b3d4e5f6a7b.
  2. The VCU sends a Device Description message with x-agrirouter-teamset-context-id: a3f1c2d4-... describing both machines and their devices.
  3. As the job runs, the VCU sends TimeLog messages with the same x-agrirouter-teamset-context-id, carrying live telemetry from the sprayer's sensors.
  4. The receiving FMIS sees both messages under the same TeamSet context ID, looks up the device description it received earlier, and decodes each TimeLog DDI against the right device.
  5. After the job, the contractor swaps the sprayer for a fertilizer spreader. The VCU detects the change and generates a new TeamSet context ID, for example 7c2e9b18-3d54-4a91-b07f-e8c6d2a14b3e. From this point on, all device descriptions and time logs from this VCU carry the new ID, and the receiving FMIS treats them as a separate machine set.

Reference

Try the request and event payloads that carry the TeamSet context ID in the API playground:

Send one or several messages1 min Receive events1 min

For the conceptual framing of TeamSets within agrirouter, see Ecosystem: Machine Identification.

On this page