[FARMWARE] PowerLoop v1.2

Hi all,

Amazing work, Farmbot team! Awesome platform!

I finally have a stable copy of PowerLoop Farmware for everybody to try.

I’d love everybody’s feedback, feature requests and bug reports.


PowerLoop Farmware for Farmbot OS

Loop your Farmbot by plants with search filters, or by automatic waypoint calculation to cover Plant search results grid area. Features include executing sequences and saving meta data.

Tutorials and installation information; see README at https://github.com/amerkay/powerloop


PowerLoop taking a Selfie of my Farmbot garden, automatically choosing steps where the photos includes plants (with their radius), excluding empty shots



Travelling Salesman Solution for moving between the resulting filtered list of plants (default behaviour)


PowerLoop v1.2 Features

  • Load all plants for current device from Farmbot API.
  • Filter plants by plant name, Openfarm slug, age in day range. meta data key/value, and coordinates. See manifest.json.
  • Sort resulting plants or Grid waypoints using simple sort(x, y), or using Travelling Salesman Greedy Algorithm by setting ‘Use Travelling Salesman Problem Greedy algorithm’ to ‘True’.
  • Calculate grid coverage waypoints, using (optionally filtered) plant list as input. This is useful when you want to scan your garden with multiple photos or run the deweeding algorithm. See examples section.
  • Execute list of sequences (initial, before each move, after each move, end).
  • Offset X and Offset Y for each move. Can be set to randint(i,j) to randomize the X Y offset. One use case is for repetitive tasks like watering seedlings that you don’t want to harm with the water pressure, e.g set offset randint(-20,20) to randomize movement by +/- 2cm.
  • Loop all filtered plants
    • Move to plant coordinate (X, Y) with offset X, offset Y, default Z and default speed
    • Save meta data key/value, if set
    • Save plant_stage value, if set
    • Runs before and after list of sequences, if set
  • Uses official farmware_tools to contact Farmbot API and control device.
  • Uses concurrent task executor to save meta data to API, to save time executing each move. More about concurrent.futures.ProcessPoolExecutor at Python docs.

Work in progress: Automatic Water Doser Farmware, that calculates how much water to dose each plant based on it’s adult size from OpenFarm API and age.

3 Likes

Great farmware, thanks a lot! Looking forward to your water calculator :wink::wave:

1 Like

Thanks! It’s ready, testing it on my setup. Rain adjustment working using Dark Sky API. Give it a try: Water Doser Farmware and let me know your thoughts.

Here is the link to the tutorial on how to setup.

2 Likes

Hey @amerkay that looks great. I would like to use it without the dark api, would that be possible? I am measuring the soil moisture with an independent ESP826 and project it with the weather forecast myself, so a watering dose based on the plants’ attributes would be great…

Good point. v0.2.7 now checks if lat or lon entered are “None”, then it skips the rain checking with DarkSky API. Just hit update on your Farmware page for water-doser.

FYI, it works on per plant basis. So whatever plant farmbot is above, closest match will be chosen, and watered based on it’s size and age. The rain within 18 hour window will be subtracted if you set you lat/lon. On my end, the soil sensor checks if the entire watering powerloop needs to be called, then the water-doser DarkSky API modulates how much water.

2 Likes

@amerkay Everyone on the team is impressed with your work. I’ve added it to the Awesome Farmbot list on Github. Thanks for sharing with us!

2 Likes

Thanks, Rick! :slight_smile:

Great job, this is awesome and working farmware like this is essential for this product. I ll test it as soon as i get more time to spend on my fb.

My 2 cents on precise watering - i have water from well and water pressure fluctuates. So timing based water dosage does not provide consistent water amounts. Solution may be either hw (water pressure regulator) or calibration on the watering software, which would measure amount of water during a time period.

Thanks, eide!

With the current hardware, I’m not sure if we can measure it. If you have an average value, it could do the trick. The entire farmware is ball parking it as it is :stuck_out_tongue:

Idea: Not sure if we have a microphone on board somewhere, if the USB camera has one, maybe we can listen to the water pressure? Not sure how to really build that, could be fun to figure out tho!

I’m thinking of pest control now, let me know if you have thoughts on the topic.

@amerkay
Your manifest.json files need to be updated to work with FBOS v8.0.0. You can find additional information in the developer docs.

I merged your fork updates into:
https://raw.githubusercontent.com/amerkay/powerloop/master/manifest_v2.json

I fixed the errors I found, but my weak wifi got even worse with OS 8. My Farmbot keeps on freezing.

Please test and let me know if it works as expected on your end.

Thanks for your quick response and updates, its working for me again. Not sure what went wrong yesterday, but it was running twice in a row now. The sequence won’t run any steps that are set after the RUN FARMWARE step, I suspect that the farmware does not report that its done. Chaining sequences in the END SEQUENCES, ONE-TIME EXECUTION. EG. input may be a workaround for now. I’ll take that into my issue thread.

Also there are still a few cosmetic issues that I documented in another thread yesterday.

I was wondering where the “help” information in your manifest.json is used at? I’ve erased it in my fork because I wasn’t sure if the brackets are correctly read by the farmware installer.