Mpongwe deployment
At Agri-iO, our core business is IoT automation, with a primary focus on the agricultural industry. We are dedicated to addressing the challenges faced by farmers dealing with unstable GSM signals
We have solved this challenge by basing our solution on LoraWan to provide an uninterrupted automation platform.
Our most recent installation took place in Zambia, where Agri-iO, in collaboration with our partner TurboFluid, successfully automated 22 Motorelli VSD pumps with water level control on two dams.
The Agri-iO unit communicates with the VSD pumps through Modbus over RS485, providing the client with the capability to remotely monitor and control the pumps via the Agri-iO application, which is available for both iOS and Android devices.
Agri-iO offers a runtime solution for automation. When the water level in the dams falls below a predetermined threshold or the flow rate exceeds a specific level, certain pumps are activated. Conversely, the pumps can be turned off when they are not needed or when specific conditions are met.
We also store inbound telemetry data, allowing our clients to access detailed reports on water and electricity usage. Additionally, we store information on measured pressures, voltages, and downtime for reporting purposes.
To create our custom electronics, we utilized Flux, and the support and libraries offered by the service significantly expedited our time to market for developing custom PCB hardware. The production and assembly of the PCBs were handled by SevenLabs.
On the software side, a significant portion of the Agri-iO stack was developed using the Rust programming language. This includes the firmware on the nodes themselves. The only component in our stack that does not use Rust (at least for now) is the mobile application.
Our choice of Rust was driven by its exceptional correctness checking at compile time and its minimal memory usage. For firmware, these qualities are essential since these nodes are deployed in remote areas where maintenance should be kept to a minimum and reliability must be maximized. In the case of web services, Rust's efficiency leads to more cost-effective deployments and ensures great uptime.
As part of this effort, we have also open-sourced a few Rust libraries, including a cron scheduler for tokio, AT command drivers for the Seeed Lora-E5 module, and Moko MKL64BA. We've made some upstream open-source contributions, notably to the Embassy runtime and ATAT AT command parser.