Version | Owner / Editor | Modified date |
1 | Divya Chayanam | 18 Oct 2024 |
|
|
|
|
|
|
|
|
|
...
The solution will be implemented in the following components and sub-components. The division and sub-division is done from a user perspective:
Module -1 Sensors
As a farmer and Litefarm user, I want to be able to add, view and manage sensors in my farm on the app. For this MVP, we will be supporting only sensors by the manufacturer Ensemble Scientific.
1. Study & Refactor existing sensor architecture
Research must be done on previous implementation for relevance and soundness of code. Adding notes from previous document:
Review architecture and refactor as needed
Make queries against time series data more performant
Automated migration of data out of Postgres after a certain amount of time?
2. Add / Create sensors on map view –
Flow to add multiple sensors through the UI: A single point on the map can have an array of sensors, all with same location, but different depths. Sensors can be added only on already created farms. An array of sensors can be represented by a single point.
User flow to upload an array or batch of sensors
Create sensor attributes in the DB
3. View, edit & delete sensors
See essential sensor details by clicking on a sensor point on the map: Shows if sensor is active / inactive, soil water potential, label and depths of sensors
Flow to edit the location, label and depths of a sensor array. It’s not possible to move just one sensor from an array of sensors. Can possibly make use of the create sensor flow and allow editable fields.
Flow to retire/delete a single or array of sensors.
4. Capture sensor readings
Capture sensor readings in database via webhook. Archive / delete readings older than 6 months.
Sub-component / Feature | UI details | Backend requirements | |
a | Create multiple sensors from UI | Map view > add sensor > choose location > add details | See sensor attributes in the list above |
b | Upload sensor CSV data from app | Map view > add sensor > upload via CSV | CSV template to upload to be available for download and re-upload |
c | View sensor details | Map view > click on sensor > see details (name, active/inactive, depth last soil moisture reading, soil temperature reading) & Edit & delete actions | sensor attributes, API to fetch sensor details, opportunity to cache? |
4 | Edit sensor details | Map view > click on sensor > Edit flow > confirm? |
|
5 | Delete sensors | Map view > click on sensor > delete flow > confirm? |
|
6 | Capture & show sensor readings | Flow TBD - after deciding if it’s necessary to display readings | Capture sensor readings via ES webhook. |
7 | Error handling | Unable to fetch data: default error screen and message Unable to perform requested action: error screen and message | TBD |
8 | Efficiency | Limit sensor readings on app to a week to begin with | Based on volume and frequency on data, plan to move historic data out of DB |
Module -2 Center Pivots
A pivot is an farm machinery or equipment used for irrigation in large scale farms. As a farm manager/technician and Litefarm user, I want to be able to add, view and manage pivots in my farm on the app. Some field notes on pivots from previous implementation.
...
A farm can have only one pivot. It is assumed that a particular area of the farm is never irrigated by more than one pivot. As a rare scenario, for very large farms, there can be multiple pivots. In such cases, each pivot irrigated area becomes a separate “field” or “farm” and must be created as such in the Litefarm.
A pivot-irrigated farm for MVP1 will have one homogenous crop throughout.
Farm must be created first and then only a pivot can be added
1. Add / Create pivots on map –
Add pivot: Create a pivot on the map, on an existing farm.
Create pivot attributes in the DB
2. View, edit & retire pivots
See essential pivot details by clicking on the pivot on the map: Shows if pivot is active / inactive, last irrigation prescription link (if available), else CTA to create one.
Edit & retire pivots - to verify if this is a necessary user action and plan to scope after talking to Lewis
3. Initiation / Generate Irrigation prescriptions
Generate prescription to have an additional visibility in the app, apart from the pivot on the map.
To generate this, there must be atleast one pivot, one active sensor and one crop plan added.
Irrigation prescription or a .vri file is a modified json that is understood by pivots. This will be created by Litefarm either when a user requests it, or when the sensor triggers the need for one.
This will also form the basis for the irrigated zones view on the map, described in next module.
The structure of the json could vary depending on the pivot manufacturer.
4. Irrigation prescriptions - Push & History
h) A newly generated irrigation prescription could show up in the notifications with CTA to confirm or ignore. Push prescription to pivot on confirmation. Delete prescriptions older than 24hours, notifications can remain without CTA
...
S.No | Sub-component / Feature | UI Details | Backend Requirements |
---|---|---|---|
1 | Create pivots | Map view > Add pivot Cannot add more than one pivot to a field | Create pivot attributes API to fetch pivot attributes |
2 | View pivot | Map view > Click on pivot > basic pivot details (name, farm name, irrigated area, active/inactive) including CTA to generate irrigation prescription | same as above, opportunity to cache? |
3 | Edit pivot | To be decided if needed | |
4 | Delete pivot | To be decided if needed | |
Module - 3 Layers
Layers are visual representations of data on the same map, usually simultaneously. An example would be satellite view / default / terrain view in Google maps.
...
Currently we show farm location, boundaries and structures in the map. This can be expanded to the following:
View soil layers on map
The map would give the user an idea of the type of soil that is present in their farm(s). A user can look at the map of the farm and see a visual representation of zones / areas categorized by type of soil.
SoilGrids API gives the data on type of soil and other soil data when a lat long is passed. To begin with, this will be system generated and we won’t accept user uploaded maps or zones.
View irrigation zones on map
The irrigation prescription typically is not readable by common apps and is not easily consummable. So the last executed irrigation prescription is made available on the map as irrigated zones so it gives users a user-friendly way of understanding how their area was irrigated.
...