@Phrohdoh Welcome! This is possible, but it is still in the early phases.
Is it already done?
Yes, you can do this via:
- The message queue (uses MQTT, which is supported in every mainstream language).
- A “Farmware” plugin that resides on the host (supports many common languages like Python and MRuby)
- An API (HTTP) client. Very simple to setup but does not meet your requirement for device control- it is only useful for viewing records such as sequences.
Is there more work to be done?
Yes, there is, please contact me privately if you have specific questions or are looking for ways to contribute. Things move very quickly on our small team and maintaining a purely technical road map for public viewing has shown to be difficult. We do have a plan and a backlog of things we want to implement and improve.
Is this possible without modifying the farmbot_os project?
Yes, if you want to run a plugin in language XYZ onboard the device, you may author a “farmware”. Although it is in the alpha phases, we do have documentation available.
Is this something desired by the farmbot company, developers, community?
Absolutely!!! @mdingena was our first developer to author a third party tool and we are always happy to help developers learn the platform. It’s still very much in the early phases, so feedback is always welcome.
Other important things:
If you are interested in writing an application that commands the bot remotely (or reads the bot state remotely), we have an JSON based RPC format known as “Celery Script” which can be sent to the device over MQTT. The way it works more or less is that you:
- Connect to MQTT using your preferred MQTT client or library. Use your email as a user name and an MQTT token as a password.
- Subscribe to the relevant MQTT channels
- Send the appropriate Celery Script command to the device*.
- Let us know if you get stuck, we’re here to help.
* The FarmBotJS library provides wrapper methods, but if you wish to write in a langauge other than JS/Python, please take a look at these interface files after reading the Celery Script docs. I’d be more than happy to answer any questions you have.
Sorry if that’s a whole bunch of information all at once- I hope it helps! Please let us know where we can best focus our efforts for developer documentation. Questions such as this help guide the content of documentation, which is still very much a work in progress. We really appreciate it.