Where are they and – if yes – how many?

Fleet management using agrirouter and the GPS Info App

Intro – What are chopping chains?

Harvest time – the “shopping” of Agriculture

You can never be sure who reads this, so, first a brief excursus for our non-Ag-Readers: If you ever went to a shop twice – once during the day and once shortly before they close – you know this incident: During the day, the shop is not really crowded, the cashiers sometimes have a lot of time. Shortly before closing their doors, the game is totally different. Suddenly it looks like everyone would starve if they cannot get their bread and milk and chips *RIGHT NOW*. Long line ups and the cashiers have to cash up like it’s the olympics of grocery stores.

Taking this as a comparison, chopping season is the “shopping” of agriculture. A chopper cuts corn (the whole plant) and “throws” it to a wagon that is driving behind or next to him; mostly towed to a tractor. Once the wagon is fully loaded, the transport vehicle is heading to the storage place for unloading. At the unloading place, there is tractor who compresses the stack. Once the transport vehicle unloads, the “compression tractor” will have to push the corn up the stack. Choppers don’t have a bunker (most of them), so don’t mix that up:

No cashier => no shopping

No transport => no chopping

No chain – no gain

For a constant and smooth harvesting process, it takes multiple transport vehicles. The longer the distance between storage and field, the more vehicles are required. In case of long distances of more than 20 km, transport is handled using trucks, otherwise it’s mostly done with tractors and towed wagons. This chopping chain needs to run as smooth as possible to ensure that the chopper doesn’t need to wait. The reasons why this chain could work unsmooth are quite diverse:

Traffic jams

Depending on the traffic situation, the chopper driver might be all alone for a few minutes and then there are suddenly 3 tractors who all waited at this one traffic light that feels like it takes longer than the corn to turn green.

Missing field changes

Once a field is fully processed, the chopper driver might go on to the next field and wonder why no one is coming there while all the tractors navigate to the old field.

This leads to the 2 situations that first the chopper has to wait for the transport vehicles and later the transport vehicles have to wait for the chopper.

An app a day keeps the boredom away

I’ve seen both of these incidents back when I worked for a machine manufacturer. Sometimes it took like 20 minutes to say “Hi” to a chopper driver because he had to organize everything by phone or radio.

Over the last 10 years there has been good progress and chopping chains organize themselves with fleet management. That can either be a professional software or – hands-on but less comfortable – just sharing their GPS positions via a messenger such as WhatsApp.

Experimentierfeld Nordwest – Testing fleet management with agrirouter

Agrirouter goes fleet management

One important thing upfront:

Please note, that in general, agrirouter is *not* a fleet management system. It’s a data exchange platform to connect farming software such as fleet management systems with communication units.

With a little trick however we accomplished the most basic requirements of a fleet management system:

  • Spread incoming position of communication units
  • “Organize” fleets => decide who should see whom

Agrirouter – the basics

If you already know agrirouter, you know that you can do a couple of things there:

  • Connect your farming software
  • Connect communication units
  • Connect communication units
  • Create Groups in agrirouter
  • Set routings between endpoints and groups


You can think about routings like doors in a wall. By default, no data can be exchanged between endpoints. But by setting a routing, you add a door into your wall, so that data can pass in one or both directions.

Chain management with agrirouter groups

To handle different chains, agrirouter groups can be used. Groups are a possibility to handle multiple endpoints in agrirouter the same way. If you set a routing for the group, all members in the group will have such routing.

Our smartphone app is a communication unit, one endpoint for each Smartphone is created in a central account. (Remark: it would also work if each user had its own account and those accounts were connected).

First, we create 2 groups for our chopping chains, called Chopper1 and Chopper2. For each of these groups, we create exactly one Routing: “Exchange gps:info with yourself”.

This leads to a situation where all apps within one group can only communicate with such applications that are also in this group.

Side note:

Be aware that with more routings and with one app being in multiple groups, this rule could be overwritten.

Now, we onboard our apps. The software is provided to the testers via TestFlight (iOS) and the App Store Beta program
(Android). Each user needs a registration code to agrirouter.

After all apps are  onboarded, they can be distributed between the two chains where one chain could use user names, the other could use machine names.

The name of the endpoint can be edited in the agrirouter UI so that a common naming convention can be used.
Now, agrirouter is setup and the data exchange can start.

The app

Heard of the app is a full screen map view that shows all other chain participants and means to start/stop the sending of GPS positions. The background layer can be changed on the fly, a zoom to a specific endpoint or a zoom out to the whole fleet is possible.

The app runs on Android and iOS, on smartphones and tablets.

Now, the chains can be maintained by adding or removing endpoints to one of the groups.

For the techies

Now, after all the process stuff, let’s dive a bit into the technolog

A little background

It’s – of course – open source

As part of the “Experimentierfeld NordWest”-Project the source code was published in the DKE Data Repository DKE-Data/agrirouter-gps-info-app (github.com) . Feel free to take a look. 😊


The app was built using the Xamarin Framework of Microsoft to ensure compatibility with the 2 operating systems. It uses the agrirouter SDK and the GPS:Info Data Format which is a protobuf message. The GPS:Info message is quite close but not equal to agrirouter-EFDI messages for 2 reasons:

  1. Agrirouter-EFDI provides more information such as machine data while GPS:Info only provides position and Timestamps
  2. Agrirouter-EFDI belongs to a machine while GPS:Info belongs to a communication unit. This is important to understand as we would have to generate a pseudo-Machine to send agrirouter-efdi.

GPS:Info Analysing

The format GPS:Info is a binary, protobuf based format. You can find the specification in the agrirouter Repositories here: DKE-Data/agrirouter-tmt-protobuf-definitions: Protobuf definitions of additional technical message types (github.com)

Analysis as developer can be done using the IO-Tool (https://io.my-agrirouter.com).

We’ve also build a command line converter that can read GPS:Info and transfer it to CSV. Of course it’s open source as well; find it here: dev4Agriculture/ar_telemetry_converter: A tool to convert agrirouter gps:info efdi:timelog messages to other formats (github.com)

What’s next?

There are several ideas of what to do with the app:

  • Take pictures. Simple but powerful: Document your farmwork independent of the FMIS
  • Document simple machines: Select machines and document working progress for non-digital machines such as plows

Interested in developments for the app? Feel free to contact us 😊