FarmBot Wiki

Document, share, and discover FarmBot technology

User Tools

Site Tools


decision-support-system

The Decision Support System (DSS) is software designed to use all available data to create an optimized schedule of operations for FarmBot to grow plants. It consists of four main components:

  • Data Sources that allow for data-driven decisions to be made
  • Modules for acquiring data, changing data based on other data (making decisions), and outputting results
  • Channels for each grow specification (eg: watering amount) that define which Modules are used and in what order they are executed in
  • An Engine that coordinates and executes all of the Channels Read on for in depth descriptions of these components and examples of what the DSS can do.

Data Sources

Data sources are what feed the DSS and allow it to make data-driven decisions. Without any data, the DSS does not function. Below are the major categories and types of data that the DSS may use. This is only a partial list as any piece of data could be used if a module called for it.

  • Desired location of plants and time of planting as specified by the user in the farm designer (location, spacing, timing)
  • Recommended planting and growing specifications from OpenFarm or another source (seed spacing and depth; timing; watering, pesticide, and fertilizing regimens; companion plantings)
  • Weather data from a web resource or device sensors (temperature, wind, rainfall, humidity, incident sunlight, sunrise/sunset times)
  • Soil data from a web resource or device sensors (pH, moisture content, temperature, nutrient content)
  • Farm history from web resource or user's historical records (weather, yield, soil)

Channels and Modules

In order to break down the DSS into a manageable problem, the entire system is divided into Channels, with each Channel made of many Modules. Channels are configured to optimize a single specification for growing a plant (eg: seed spacing). Modules within a Channel dictate how that optimized specification is created and usually follow the order of:

Data Acquisition Module(s) » Optimization Module(s) » Output Module.

See examples for each Channel below.

Seed Spacing Channel

Optimizes the spacing between plants

Available Modules

Coming soon

Example

  1. GET: plant type from user's farm design
  2. GET: first plant's X and Y coordinates from user's desired farm design
  3. GET: recommended seed spacing from OpenFarm based on (1)
  4. GET: last pH reading at location from (2)
  5. GET: average annual rainfall at farm's location from wunderground.com
  6. MOD: (3) based on (4) with algorithm A
  7. MOD: (6) based on (5) with algorithm B
  8. OUT: result of (7)

Watering Channel

Optimizes the amount, when, and where each plant is watered.

Available Modules

Coming soon

Example

  1. GET: plant type and age from user's farm design
  2. GET: recommended watering amount from OpenFarm based on (1)
  3. GET: rainfall prediction from wunderground.com
  4. MOD: (2) based on (3) with algorithm A
  5. OUT: result of (4)

Fertilizer Channel

Optimizes the amount, when, and where, each plant is fertilized.

Available Modules

Coming soon

Example

Pesticides Channel

Optimizes the amount, when, and where each plant is treated with pesticides.

Available Modules

Coming soon

Example

DSS Engine

The DSS Engine is the central piece of software that coordinates and executes all of the channels and modules, ultimately producing the optimized schedule of operations. GitHub repository coming soon.

decision-support-system.txt · Last modified: 2016/11/16 23:46 by gabriel