Adapt usage

The 20|20 ADAPT plugin reads all .2020 files from the Precision Planting 20|20 Generation 3 monitors.

The plugin is released as a .NET NuGet package for easy integration into other software packages. The latest version can also be downloaded directly from the 20|20 ADAPT download page.

What is ADAPT?

ADAPT is an open-source, industry defined specification and framework for agricultural field operation data sponsored by AgGateway. The ADAPT framework is based on Microsoft's .NET Framework. The ADAPT source code is available on Github.

Prior to ADAPT's widespread adoption, FODM was primarily used. FODM is an earlier approach to standardizing Field Operations data. ADAPT was developed to replace FODM, and it's development has been influenced by a wider group of industry participants. Precision Planting does not offer a FODM or FODD for 20|20 data.

Please note that the 20/20 SeedSense Generation 1 or Generation 2 monitors produce .dat files that utilize the Climate FieldView file format and are readable only by the Climate FODD. Climate provides information about using the .dat file format via the FieldView for Developers portal.

Data Visualizer

The ADAPT project contains an open source Visualizer program. The ADAPT Visualizer can be used in conjunction with the 20|20 ADAPT plugin to examine the contents of a .2020 file.

Please visit to the 20|20 ADAPT Visualizer tutorial for more information.

Integrating the plugin to your code

To integrate the 20|20 ADAPT plugin into your software, reference the plugin using the NuGet package, or reference the DLL files directly. Additionally, a reference must be added to the AgGatewayADAPTFramework package, available from NuGet.org, or from Github.

Within your code, instantiate the PrecisionPlanting.ADAPT._2020.Plugin class and invoke the import method with the path to the .2020 files intending to be read.

    // Instantiate the 20|20 ADAPT plugin
    var myPlugin = new PrecisionPlanting.ADAPT._2020.Plugin();

    // Import data from a given path.  The plugin will return a single ADM object.
    string datapath = @"C:\My_2020_Files";

    AgGateway.ADAPT.ApplicationDataModel.ADM.ApplicationDataModel admObject =
      myPlugin.Import(dataPath).SingleOrDefault();

    if (admObject != null)
    {
      // Retrieve data from admObject
    }

Data Formatting

The data within the ADAPT ApplicationDataModel uses the following conventions.

Summaries

Totals/Summaries recorded by the 20|20 for an operation are included under Documents/Summaries. Per-product summaries are under OperationSummaries, and all products summaries are under SummaryData.

ADAPT Representations

Where a standard ADAPT Representation exists, the 20|20 ADAPT plugin reports values using that Representation. For example, ADAPT defines vrSeedRateSeedsActual as the instantaeous actual planting population; the 20|20 ADAPT plugin reuses this representation.

Where types specific to the 20|20 are present, the 20|20 ADAPT plugin uses a Representation of CodeSource = UserDefined. Examples of this are Representations for SmartFirmer. A complete list of Representations are present on the 20|20 ADAPT download page.

Operation Data

There exists a set of OperationData objects for regions of the operation. If Insecticide or Fertilizer was applied alongside Seed, these data will be separate OperationData objects with correlated timestamps.

Because the 20|20 ADAPT plugin complies with ADAPT Framework 2.0, it is possible to use the OperationData.CoincidentOperationDataIds property to identify such correlated data.

Null Values

In the case of SpatialRecords that have <null> WorkingData values, the <null> represents a case where no value was logged by the sensor. For the purposes of interpreting this data where other SpatialRecords on corresponding WorkingData objects contain values, consumers may wish to consider interpolating values from other SpatailRecords instead of treating these values as zero, depending on the nature of the sensor.

Inline Offsets

ADAPT provides a detailed model for modeling the implement offsets. The inline offsets as reported by the 20|20 ADAPT plugin have the following meanings:

  • MachineConfiguration.GPSXOffset: distance the GPS receiver is forward of the rear axle
  • HitchPoint.ReferencePoint.XOffset (Tractor): distance the hitch is behind of the rear axle
  • HitchPoint.ReferencePoint.XOffset (Implement): distance the hitch point is forward of the implement reference point
  • ImplementConfiguration.ControlPoint.XOffset: distance the implement reference point is backward of the hitch. This value is the inverse of HitchPoint.ReferencePoint.XOffset (Implement).
  • SectionConfiguration.InlineOffset: distance the section reference point is backward of the hitch

Positive values are forward and negative values are backward. The EquipmentConfiguration objects model the Connector mappings of the MachineConfiguration (in most cases, the tractor) to the ImplementConfiguration.

Lateral Offsets

Positive values are right of the reference point from the point of view of the driver's seat, and negative values are left.

Sample Data

Sample data is available for ADAPT development.

Download Sample Data Here

Importing data from the 20|20

The 20|20 ADAPT plugin supports customizing the contents included in the ADAPT ApplicationDataModel through passing one or more properties into the second parameter of the Plugin.Import() method. Common property settings are indicated in this section. Additional property settings are indicated inline in the Representations section below.

  • DataFrequency: Frequency at which data is returned. For most data, 5 Hz is the native frequency. 1 Hz down-samples the data from its native sampling rate.

    Values: 1/5 Default: 1

Data provided by the 20|20

Common items

These items are common and included for all types of data.

Data Representations

  • dtRecordingStatus: Returns On or Off based on whether data was being recorded at this time

    Units: On/Off

  • vrVehicleSpeed: Instanteous velocity at which the vehicle is traveling

    Units: miles/hour

  • vrHeading: Instantenous heading towards which the vehicle is traveling

    Units: degrees

  • vrDistanceTraveled: Cumulatative distance traveled by the vehicle within the data frequency time frame.

    Units: feet

Planting Rates

Planting information describes the rates at which seeds are applied. The following are included whenever a metered seeding system is configured.

If an operation contains multiple hybrids, the data follows these conventions:

  • If a planter supports multiple-hybrid-per-row capabilities (Precision Planting mSet or vSet Select), the data will include a vrProductIndex datum for each row. This value maps to the Reference ID of the product in the ADAPT ApplicationDataModel catalog.
  • If a planter is configured with left/right varieties or a similar partial planter configuration, the OperationData will include an intermediate operation device depth with a vrProductIndex defining the product for the governed rows. The rows may be associated to their parent portion of the implement by referencing the DeviceElementUse's DeviceElementConfiguration and its associated DeviceElement. The DeviceElement will have a ParentDeviceId associated to the corresponding element that maps to the DeviceElementUse reporting a vrProductIndex.

Data Representations

  • vrSeedRateSeedsTarget: Instantaneous intended seeding rate at which the equipment should be seeding or planting

    Units: seeds/acre

  • vrSeedRateSeedsActual: Instantaneous actual seeding rate at which the equipment should be seeding or planting

    Units: seeds/acre

  • vrProductIndex: Value containing the Reference ID of the product being applied at this sample point. See information listed in the header section above.

    Units: -

Seeding Quality

Seeding quality describes the performance of seed metering, taking into account the seeds and equipment metering the seeds.

Properties

  • SeedingQuality: If True, seeding/planting quality data is populated upon import. By default, seeding quality data is not automatically imported.

    Values: True/False Default: False

Data Representations

  • vrPlantingSingulation: Percentage of properly singulated seeds. This value is an average based on the user set Seeds to Average.

    Units: percent

  • vrPlantingSkips: Percentage of improperly singulated seeds classified as skips. This value is an average based on the user set Seeds to Average.

    Units: percent

  • vrPlantingDoubles: Percentage of improperly singulated seeds classified as doubles. This value is an average based on the user set Seeds to Average.

    Units: percent

  • Spacing_Variation: Percentage representing the consistency of seed spacing. This value is an average based on the user set Seeds to Average.

    Units: percent

  • NewSeeds: Count of new seeds from the seeding system.

    Units: count

  • Vacuum: Vacuum pressure observed at the seed meter.

    Units: kPa

Harvest (YieldSense)

Harvest data describes the monitoring of a harvesting operation on a combine or other type of harvesting equipment. Data is always imported if present within a file.

Data Representations

  • vrYieldCalibration: Per field calibration value of the harvest system vrYield.

    Units: double

  • vrYieldMass: Measured dry mass of grain by the mass flow sensor.

    Units: lb

  • vrYieldWetMass: Measured wet mass of grain by the mass flow sensor.

    Units: lbf

  • vrYieldWetMassFlow: Measured flow of wet grain mass by the mass flow sensor.

    Units: lbf/second

  • vrHarvestMoisture: Percentage of grain moisture as read by the combine moisture sensor.

    Units: percent

  • vrYieldVolumePerArea: Average dry yield being harvested.

    Units: bushels/acre

  • vrYieldWetVolumePerArea: Average wet yield being harvested.

    Units: bushels/acre

  • dtHeaderStatus: Returns 'On' or 'Off' based on user calibration of the combine header.

    Units: on/off

  • SeparatorStatus: Status of the combine separator.

    Units: on/off

  • dtUnloadingAugerState: Status of the combine unloading auger.

    Units: on/off

  • FeedHousePositionDegrees: Instantaneous position of the combine feedhouse.

    Units: degrees

  • AugerPositionDegrees: Instantaneous position of the combine unloading auger.

    Units: degrees

  • CombineDirection: Instantaneous combine direction {Forward, Reverse}.

    Units: Enumeration

  • vrEngineSpeed: Instantaneous combine engine speed.

    Units: revolutions/minute

  • vrTotalAreaCovered: Acccumulated acres harvested by combine.

    Units: acres

Liquid Application (vApply, vApplyHD, FlowSense and Sprayers)

Liquid applications describe the measured rates at which liquid application products are being applied.

Properties

  • LiquidApplication: If True, liquid product application data is populated upon import. By default, liquid product application data is not automatically imported.

    Values: True/False Default: False

Data Representations

  • vrAppRateVolumeActual: Actual flow rate of the liquid product being applied.

    Units: gallons/acre

Granular Application (vDrive Insecticide and Air Seeders/Drills)

Insecticide applications describe the rates at which insecticide application products are being applied. At present, insecticide application values report the commanded rates, or the inferred rate based on metering system speed, without actually sensing the volume or mass of the product being applied.

Properties

  • GranularApplication: If True, granular product application data is populated upon import. By default, granular application data is not automatically imported.

    Values: True/False Default: False

Data Representations

  • vrAppRateMassActual: Application rate of the granular product being applied, as described above.

    Units: lbf/acre

  • Magnitude: Estimate of applied granular particles in Air Seeder data.

Units: count/acre

  • Deviation: Statistical deviation in Air Seeder data.

Units: percent

Row Unit Down Force (DeltaForce, Smart Pin)

Row unit down force describes the pressures and forces that are being applied to the row unit, as well as row unit performance.

Properties

  • Downforce: If True, row unit down force data is populated upon import. By default, row unit down force data is not automatically imported.

    Values: True/False Default: False

Data Representations

  • NetAppliedForce: Net applied down force value in pounds for each row from the active Downforce system.

    Units: lbf

  • vrDownForceApplied: Actual down force sensor value in pounds for each row from the active Downforce system.

    Units: lbf

  • vrGroundContact: Percentage representing the amount of time weight is present on the gauge wheel. Anything less than 100% represents seeds possibly being planted shallower than desired.

    Units: percent

  • vrDownForceMargin: The lowest measured down force reading in a given period of time.

    Units: lbf

  • vrRideQuality: Percentage representing the amount of time the row unit acceleration data is greater than desired.

    Units: percent

Soil Sensing (SmartFirmer)

SmartFirmer senses properties of the soil by means of contact with the furrow during a planting operation.

Properties

  • SoilSensing: If True, sensed soil data is populated upon import. By default, sensed soil data is not automatically imported.

    Values: True/False Default: False

Data Representations

  • Uniform_Furrow: Percent of time the furrow is considered to be uniform

    Units: percent

  • Organic_Matter: Organic matter percentage of the soil

    Units: percent

  • CEC: Cation exchange capacity of the soil

    Units: meq/1000g

  • Furrow_Moisture: Percent of soil moisture the seed will take up over the next 3 days

    Units: percent

  • Clean_Furrow: Percent of time the furrow is considered to be clean

    Units: percent

  • vrSoilTemperature: Temperature of the soil

    Units: degrees fahrenheit

Depth Control (SmartDepth)

Depth control describes the depth control equipment present on the row unit.

Properties

  • RowUnitDepthControl: If True, depth control is populated upon import. By default, depth control data is not automatically imported.

    Values: True/False Default: False

Data Representations

  • Smart_Depth: Commanded depth setting by the row unit depth actuator.

    Units: inches

Closing System (FurrowForce)

The following items are populated based on the following settings:

Properties

  • RowUnitClosingSystem: If True, data for the FurrowForce closing system is populated upon import. By default, closing system data is not automatically imported.

    Values: True/False Default: False

Representations

  • Applied_Closing_Force: Amount of force applied to the closing system by the closing system hardware

    Units: lbf

  • Closing_Actuator_Pressure: Pressure measured by the closing

    Units: pounds/inch^2

  • Closing_Margin: Amount of force being applied to the closing system beyond that required to keep the closing system in the ground

    Units: lbf

  • Good_Closing: Percentage representing the amount of time that the closing system is maintaining the intended closing force

    Units: percent

  • Closing_Uniformity: Percentage representing the amount of time that the closing system signal variation exceeds a set threshold.

    Units: percent

Row Cleaner System

The following item is populated based on the following settings:

Properties

  • RowCleanerSystem: If True, row cleaner data is populated upon import. By default, row cleaner data is not automatically imported.

    Values: True/False Default: False

Representations

  • Row_Cleaner_Net_Pressure: Amount of pressure applied to the row cleaner hardware

    Units: psi

Sprayers

The following items are populated for sprayers:

Representations

  • Nozzle_Pressure: Pressure at the nozzle

    Units: psi

  • Nozzle_Duty_Cycle: Percentage of time the nozzle is open

    Units: percent

Camera System (SymphonyVision)

  • TargetedSpray: If True, data is populated upon import. By default, data is not automatically imported.

    Values: True/False Default: False

Representations

  • Weed_Density: Percentage of the ground covered by weeds at this location.

    Units: percent

  • Weed_Severity: Determined weed pressure at this location. {None, Low, Medium, High, Unknown}

    Units: Enumeration

  • Weed_Type: Type of weed(s) present at this location. {None, Emerging, Grass, Broadleaf, Multiple, Unknown}

    Units: Enumeration

Exporting data to the 20|20

The plugin supports exporting Field Boundaries and Vector Prescriptions to the 20|20.

Field Boundaries

Configure the relevant Grower, Farm and Field data within an Application Data Model, and associate any Field Boundaries to Fields. Upon Plugin.Export() this information will be written to the .2020 file.

Vector Prescriptions

Configure the relevant Grower, Farm and Field data within an Application Data Model, and associate any Prescriptions to Fields. Be sure the correct units of measure are set on the rate attributes within the prescription. The plugin supports seed rate, liquid rate, granular rate and seed depth prescriptions. Upon Plugin.Export() this information will be written to the .2020 file.