June 13, 2024 Software and Hardware Update

Hello all,

Yesterday we released a new version of FarmBot OS, and over the last few weeks there have been a few other quiet changes to the web app. Here’s what’s new:

New get_tool() Lua helper

We’ve added a new get_tool() Lua helper that gets a tool by name or id from FarmBot’s local database and returns a table with the tool’s id , name , and flow_rate_ml_per_s. Here is the documentation along with some code examples.

Reduced reliance on the API for some Lua helpers

API calls to get tool properties in the dismount_tool(), mount_tool(), verify_tool(), and dispense() Lua helpers have all been replaced with the new get_tool() function which uses FarmBot’s local database. This reduces reliance on the API, allowing FarmBot to perform these functions more quickly, reliably, and without an internet connection. Thank you @mvillion for the suggestion on this one.

Fixed an issue with water()

We fixed an issue where the water() function in Lua did not work if the plant was fetched from the API. The underlying problem was that if the plant object was fetched from the local DB with variable(“Plant”) then FarmBot OS would compute the age field as needed. If the plant object was fetched from the API with api() then the age field was neither present nor being computed. In the newest release, the water() function will now compute the age of the plant based on the planted_at date even if it was fetched from the API.

Thank you @Christian for bringing this to our attention and @jsimmonds for the debugging help as always!


  • Updated the Lua auto code generation model to gpt-4o which brings slightly improved intelligence and about twice the speed.
  • Fixed an issue where plant variables were unusable in Lua due to a type issue when the started_at date was present. Thank you @farmS1m for reporting this and @jsimmonds for the investigative assist.
  • A tool’s flow_rate_ml_per_s value is now available in FarmBot OS’s local database and easily accessible via get_tool() without needing to use the API. This change has fixed a bug where this value was not previously POST or PATCHable from Lua as the developer documentation implied.
  • Fixed an issue where setting mounted_tool_id = 0 in Lua was not correctly mapping to an Elixir nil. The problem would self-correct after a few seconds via the API, but this delay could cause failures in some scenarios and required the FarmBot being online. Thank you @mvillion and @jsimmonds for the help on this one!
  • When creating a new demo account, the farm designer will now get fully populated with plants:

Genesis v1.8 development has just begun

We’re in the early stages of developing FarmBot Genesis and Genesis XL v1.8, due to be available at the end of this year or early 2025. The main goal of this version is to reduce the cost to manufacture and deliver the machine to customers, which will have some functional side effects along the way. Here are the main focus points of the new design:

  • Fit the entire kit (including the extrusions) into a single box. This will eliminate a lot of packaging, significantly reduce total shipping weight and cost, simplify warehouse logistics, and reduce the frequency of damaged or lost packages in transit.
  • Improve the cable carrier supports. We’re developing extruded plastic cable carrier supports for the Y and Z axes that will give FarmBot a much cleaner aesthetic and reduce the number of parts, cost, and assembly time required. Genesis v1.8 will also have smaller Y and Z cable carriers to further reduce cost and weight with the added benefit of marginally improving movements.
  • Move the vacuum pump to the cross-slide. This will significantly reduce the weight that must be lifted by the Z-axis motor which will improve Z movement speed and reliability. This change also eliminates the need for a Z-axis section of the vacuum pump cable.
  • Improve the track, gantry column, and gantry main beam extrusion profiles. These new profiles are designed to put more material where it is needed for strength and remove material where it has little impact on strength or function. The new tracks will be more ergonomic to install and the new main beam will have an improved aesthetic from the front of the machine. A reduction in weight throughout the machine will incrementally improve movement speed and reliability along the X and Y axes. Extrusions will have a maximum length of 1m (same as the Z-axis) so everything can fit into one box.
1 Like

Thank you for taking my suggestion.

Love the focus on local databases. :smiling_face_with_three_hearts:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.