- Where can I download FarmBot source code?
- Which technologies must I learn to program a FarmBot?
- Does the web API support ARM-based processors?
- What language is FarmBot written in?
- Do I need to know Elixir to program FarmBot?
- Should I clone FarmBot OS on GitHub or use the image?
- Why was my device blocked?
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.
For users who only need to control a FarmBot, any language that provides the following will suffice:
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.
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.
You almost certainly want the image. The only exception is if you plan on modifying the FarmBot OS source code.
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.