Frequently Asked Questions
Where can I download FarmBot source code?
Like most open source projects, we host our software on GitHub. Here are the most popular source code links:
- Web App (Ruby, Typescript) - Cloud storage, REST API and user interface.
- FarmBot OS (Elixir) - Embedded operating system that runs on the Raspberry Pi. The “glue” between the API, frontend and firmware.
- Firmware (C++) - Arduino source code. Controls stepper motors, pins, etc.
Which technologies must I learn to program a FarmBot?
For users who only need to control a FarmBot, any language that provides the following will suffice:
- An HTTP client for talking to the REST API.
- An MQTT client for talking to the Message Broker
If you wish to write a Farmware, Python is the only language currently supported, but most developers do not need to write a Farmware.
Does the web API support ARM-based processors?
Not at this time. The only software that supports Raspberry Pi is FarmBot OS. Do not attempt to run a web server on a Raspberry Pi.
What language is FarmBot written in?
FarmBot is comprised of many different software systems and the language used varies across projects. Generally speaking, we use a combination of C++, Ruby, Elixir, and TypeScript.
Do I need to know Elixir to program FarmBot?
No. FarmBot provides a system for plugins known as “Farmware”. Farmware may be written in other languages, such as Python. See Farmware documentation for details.
The best approach is to write a standalone application that interacts with FarmBot externally via REST API, FarmBot JS or the Message Broker.
Should I clone FarmBot OS on GitHub or use the image?
You almost certainly want the image. The only exception is if you plan on modifying the FarmBot OS source code.
Why was my device blocked?
If your device attempts to connect to the message broker more than 20 times in a 10 minute period, it will be temporarily blocked from re-connecting. You will be able to reconnect after the 10 minute cool down period. This measure is put in place to protect server resources. Your device may be blocked from the server for a number of reasons:
- (Most common) Your device does not have an adequately reliable internet connection, which is causing the device to reconnect to the network too often. This is commonly seen on cellular networks and in setups where the device is too far from the WiFi access point. FarmBot requires a stable internet connection to function properly. More information is available here.
- (Less common) If you are a third party software developer, the error may be caused by bugs in third party software, such as code that connects to the MQTT broker within a loop. Ensure that your plugin or farmware does not leak TCP connections.