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
emergency_unlock
install_farmware
install_first_party_farmware
read_all_params
remove_farmware
update_farmware
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
Logger
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
Error executing a Farmware
Some Farmbot HTTP Adapter error