Announcing FarmBot OS v8
Hi FarmBot community,
At the end of last week we published FarmBot OS v8! Congratulations to our main OS developer, @connor for getting us to this huge milestone!!
This major new release brings a big set of new features and stability improvements to all FarmBots, and lays the foundation for what’s to come. Let’s dive in to see what’s changed:
Variables
FarmBot OS (and the web application) now support variables within sequences. Variables allow you to create more generic sequences and then pass in a variable value from another sequence, a regimen, or an event. For example, you could make a generic “Water 1 plant” sequence, and then pass in the specific plant you wish to water by using a variable that is defined in an event. With this architecture, the single generic sequence can be used to water different plants, rather than having to create many variants of the same sequence to accomplish the same task.
The v8.0.0 release includes support for single-location variables and one variable form per execute step/sequence/regimen/event. However, we’ve also laid a lot of the foundation to support multiple variables, variables of other types (time, value, etc), and variables for multiple-locations which will invoke a loop-like functionality.
To learn more about how to use variables, please see our updated documentation: https://software.farm.bot/docs/variables
Networking
The v8 release includes a new networking library which has improved stability. When configuring FarmBot, you’ll also now see a new captive portal experience much like when logging onto a WiFi hotspot at an airport or hotel.
Configurator
The new configurator is faster and more streamlined because we’ve removed the firmware selection and firmware flashing steps. Now, FarmBot OS will determine which firmware to flash based on the setting downloaded from the web app. Under usual circumstances, the firmware choice will have been automatically made for the user during the web app account seeding/setup process.
Guaranteed log delivery
FBOS now supports guaranteed log delivery. This means that if the network connection is unavailable when logs are generated, they will be stored and then uploaded to the web app when the network connection is restored. This is a huge improvement for users who only connect their FarmBot to the internet periodically with a cellular connection, or have intermittent connectivity.
Better offline performance
In addition to having guaranteed log delivery, FarmBot OS is now more stable overall when working without an internet connection, or with an unreliable internet connection. One outstanding issue however is that the Raspberry Pi does not have a real-time clock, so FarmBot’s time will slowly diverge from the real time if there is no connection. This can result in sequences being run at incorrect times if FarmBot remains disconnected from the internet for too long. Express v1.0 and Genesis v1.5 kits will include a real-time clock which will address this issue and allow for accurate offline operation indefinitely.
Farmware installation records
Farmware installation records are now stored in the API. This allows 3rd party farmwares to be re-installed automatically after a factory reset of the device, and also allows broken installations to be more easily fixed.
Assertions
FarmBot OS now has a built-in automated testing feature in the form of the new assertion sequence command. Internally, this is allowing us to perform more comprehensive testing of FarmBot’s software and hardware, and you can use the feature as well if you’re comfortable doing a little bit of programming. See our developer docs for more details: https://developer.farm.bot/docs/assertions
What’s next
The next big software development priority for us is supporting multiple-location variables, which will invoke a loop-like functionality when FarmBot is executing sequences. We’ve already implemented much of the web app functionality to create custom groups of plants. Next is allowing FarmBot to use those groups. Stay tuned!
How you can help
Over the last few months we’ve migrated most of our issue/feature development and project management over to GitHub. If you’re a software developer looking for a fun project to contribute to, we have many open issues and pull requests are always welcome. We also appreciate detailed bug reports and read all of the feature requests here on the forum, which helps guide our development.