May 9, 2024 Software Update

Hello all,

Today we released a new version of FarmBot OS. Here’s what’s new:

utc() and local_time() Lua helpers

We’ve added two new Lua helpers to make it easier to get the current time (or a component of it) in both UTC and your local timezone. utc() returns the time in ISO 8601 format, while utc("month") would return 5 in May. You can get the individual year, month, day, hour, minute, and second with this method. local_time() acts the same but accounting for your local timezone offset.

As part of this update we’ve removed the developer documentation for current_month(), current_hour(), current_minute(), and current_second() to steer users towards the new helpers which offer greater flexibility. These helpers are still available in FBOS though, so you can continue to use them with existing sequences.

take_photo() and take_photo_raw() optional arguments

The take_photo() and take_photo_raw() Lua helpers now accept optional arguments for resolution, brightness, contrast, saturation, and hue, giving you more control and consistency over how images are captured. This can improve the look of full garden scans by avoiding the mismatched exposures and colors that can occur from the camera using auto modes.

Please read the updated documentation for usage examples, and take special note about the persistence of these values and how to reset them to auto if needed. And thank you @voortwis for this feature suggestion!

Plant age filtering fix

A user identified a discrepancy where plant groups in the web app were correctly applying age filters based on the plant’s planted_at date, but FarmBot OS was using the created_at date. This would cause unexpected results if a user created plants in the farm designer on one day and then waited until a future date to set their status to planted, thereby resulting in different created_at and planted_at dates. This would also affect setups where the planted_at date was never set.

FarmBot OS v15.4.7 fixes the issue so that group age filtering now uses the planted_at date and matches the web app.

If you are using age filtering in any of your plant groups, we have created this sequence to update the planted_at date to the created_at date for any plant without one. We recommend importing the sequence, running it once, and then you can delete it.

Laser weeder tool prototype

In case you missed it, we added a new video to our FarmBot Stories playlist on YouTube showcasing a laser weeding tool prototype made by a student team at Liberty University (@LU_Capstone_2324). Check out the video and this forum post!


  • Fixed a firmware bug where the incorrect calibration deadzone value was being used for the X and Y axes.
  • Routine dependency updates.