farmbot v6.0.1-alpha API Reference

Modules

Supervises the individual modules that make up the Farmbot Application. This is the entry point of the application

Background worker that refreshes a token every 30 minutes

Functionality responsible for getting a JWT

Bootstraps the application

JSON Serializable state tree that gets pushed over variour transports

MQTT BotState Transport

Underlying client for interfacing MQTT

RESTful API for accessing internal Farmbot state

Plug for authorizing local REST access

Underlying router for HTTP Transport

Handles the websocket connection from a browser

CeleryScript is the scripting language that Farmbot OS understands

Handy functions for turning various data types into Farbot Celery Script Ast nodes

Executes CeleryScript

Behaviour for implementing CeleryScript nodes

Map of CeleryScript kind to implementation module

Farmware is Farmbot’s plugin system. Developing a farmware is simple. You will need 3 things:

  • A manifest.json hosted on the internet somewhere.
  • A zip package of your farmware

Handles installation of Farmwares and syncronization of Farmware Repos

A Repository is a way of enabling multiple farmware’s at a time

An entry in the Repository

Init module for installing first party farmware repo. Requires internet

Metadata about a Farmware

Handles execution of a Farmware

Allows communication with the firmware

Firmware paramaters

Parses farmbot_arduino_firmware G-Codes

Any module that implements this behaviour should be a GenStage

Stubs out firmware functionality when you don’t have an arduino

Handles communication between farmbot and uart devices

Init module for configuring a UART handler. Here’s what it does

Each message is one line. This framer appends and removes newline sequences as part of the framing. Buffering is performed internally, so users can get the complete messages under normal circumstances. Attention should be paid to the following

A three position vector

Wraps an HTTP Adapter

Behaviour for a Farmbot HTTP adapter implementation

Farmbot HTTP adapter for accessing the world and farmbot web api easily

Helpful stuff

Watches a directory on the File System and uploads images

HTTP Response

Host implementation for Farmbot.System

Routes web connections

Functions for dealing with the Farmbot JSON Web Token

Helper Functions/Macros for common things

Farmbot Log Object

Wrapper between two repos

Storage for Farmbot Resources

Storage for Farmbot Resources

FarmEvent’s are events that happen on a schedule. When it is time for the event to execute one of several things may happen

A GenericPointer is just a normal pointer with no special stuff

JSON Formatters truncate .0 on floats

Stores JSON as :text data type

Custom Ecto.Type for changing a string to a module

Custom Ecto.Type for changing a string field to one of [“Sequence”, “Regimen”]

Custom Ecto.Type for changing a string field to one of [“GenericPointer”, “ToolSlot”, “Plant”]

Peripherals are descriptors for pins/modes

A Point is a location in the planting bed as denoted by X Y and Z

A Regimen is a schedule to run sequences on

A Sequence is a list of CeleryScript nodes

Custom Ecto.Type for convirting a sequence args to CS args

Custom Ecto.Type for convirting text to CelecyScript

Behaviour for syncable modules

A Tool is an item that lives in a ToolSlot

A ToolSlot is the Point to a Tool

Common functionality that should be implemented by a system

Repo for storing config data

Lets write init.d in Elixir!

Init module for bringup and teardown of ecto

Supervises Platform specific stuff for Farmbot to operate

A behaviour module for implementing MQTT client processes

Farmbot Loggerr Backend

rpc_error

rpc_ok

rpc_request

Exceptions