Giter VIP home page Giter VIP logo

liquid-prep / liquid-prep Goto Github PK

View Code? Open in Web Editor NEW
129.0 19.0 64.0 120.47 MB

Liquid Prep offers an end-to-end solution for farmers looking to optimize their water usage, especially during times of drought.

Home Page: https://liquidprep.wixsite.com/website

License: Apache License 2.0

call-for-code water water-sustainability climate-change ibm-cloud soil-moisture-sensor farmers iot weather-company-data water-advice

liquid-prep's Introduction

Liquid Prep

License Slack Web App

Liquid Prep offers an end-to-end solution for farmers who want to optimize their water usage; especially during times of drought. It is specially designed for low-literate farmers in developing countries who also need access to advanced agricultural advice to be successful.

By using an intuitive mobile app, local soil sensors, and backend service in IBM cloud, farmers can be better informed on how to use limited water supplies and increase their chances of growing healthy crops for their small plots of land.

Watch the video

Solution Details

The Call for Code 2019 Global Challenge asked teams of developers, designers, data scientists and business analysts to build solutions that significantly improve preparedness for natural disasters and accelerate relief when they hit. That year, the team answered the call and we have developed a solution for the many low-literate farmers in mostly developing countries to optimize the use of their limited water supply during times of drought.

Learn more about the history, testing, and ecosystem of Liquid Prep

Farmers are the key food providers of the world. Their crops are essential to global human survival and prosperity. Natural disasters, such as droughts, end up affecting farmers and all of us down the line. With increasing fluctuations in global climate, we believe this is a very important problem to tackle.

We have developed Liquid Prep, an end-to-end solution for farmers looking to optimize their usage of water; especially during times of drought. The following depicts the Liquid Prep solution architecture:

Liquid Prep architecture

Liquid Prep architecture

The Soil Moisture Sensor Module, measures the soil moisture level and transmits the data to Liquid Prep App when the App is connected to the sensor module.

Liquid Prep App is designed and developed for users/farmers with low literacy to easily understand, interact and get water advice for selected crop in their current location. The App interacts with the Soil Moisture Sensor Module to get the soil moisture data and IBM Cloud Backend Service to fetch weather data and crop data to generate watering advice for the selected crop.

The Backend Service exposes APIs that are handled by Cloud Functions which interacts with Cloudant Database for crop data and The Weather Company APIs for weather data. The Backend Service is hosted on the IBM Cloud.

The Weather Company

The Weather Data for a given location is being requested to The Weather Company APIs from the Backend Service.

Get Started

Project Roadmap

The Liquid Prep solution currently comprises mainly highly visual and easy-to-use mobile web application, a hardware sensor to measure soil moisture, a back-end data service to power the app, and the IBM Cloud platform for accessing weather and crop data. Our future roadmap adds more functionality to the Liquid Prep platform by:

  1. Localizing the app
  2. Adding more crop data
  3. Considering soil properties for better watering advice.

The goal of the project is to help farmers globally farm their crops with the least amount of water by taking advantage of real-time information that can help improve sustainability and build resiliency to climate change.

Participation is welcomed from software developers, designers, testers, agronomists/agri experts/soil experts, IoT engineers, researchers, students, farmers, and others that can help improve the quality and value of the solution for small farmers around the world.

Key areas the team are interested in developing include localizing the mobile app, considering soil properties for the improvement of the watering advice, updating project documentation, software and hardware testing, more in-depth research, and adding more crops data to the database.

Contributors

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, areas where we'd like to see community contributions, and the process for submitting pull requests to the project.

Technical Steering Committee

Per the The Liquid Prep Technical Charter.

See the CONTRIBUTING.md file for TSC details.

Public meetings

Thursdays at 4:30pm ET. Join us on Zoom.

License

Copyright 2019-2022 Liquid Prep

Unless otherwise noted, this project is licensed under the Apache 2 License - see the LICENSE file for details.

liquid-prep's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

liquid-prep's Issues

Advice page - redesign

Design changes to the advice page - we need to choose what to do first, what is the easiest to do?

Input
Ilse wrote on July 22:
We currently have the following advice in the Liquid Prep app:
image
To water or not, if water, how much --> can we improve with mm? Inches?
Soil moisture is low, medium, high - we probably need to also indicate the % as measured. Would this indicator of low, med, high be influenced by the need of the crop? Yes
Next watering - is there information on why they should water then… does it make sense to have this if we already provide them watering advice for now? Yes
Also, in the new design direction, we want farmers to indicate if they actually gave water. This was for later on the roadmap, but that should feed into the ML model.
Another idea we had was that this advice page needs to have - clickable/selectable elements, so users can go deeper and see more details. What kind of information on why a certain advice is given can be provided by the ML output?
Can the ML model provide “Predicted soil moisture”? Yes
Can the ML model provide “Expected harvest date”? Yes

Fearghal answered:
The short answer is that for Texas pilot we can do all these things. Since we have relatively detailed information on the crop planting, harvesting, and management scheduling. We are currently developing a reinforcement learning model for crop management that identifies appropriate management actions (when to water and how much, when to apply fertilizer, etc.) We can output these decisions for liquidprep to use. The challenge there is that the more sophisticated machine learning models are pretty data hungry when we try to move to different locations.
We need to balance here the data that's coming from the farmer (e.g. crops planted, planting time, etc) that are then fed to the ML model to generate predictions (probably of soil moisture but not sure if more is needed), and consequently inform crop management.
The prototyping of this is pretty advanced, the key challenge will be the automated deployment to different regions that we need to consider

Sustainability program - SWAT + Texas A&M

Initial discussions around research / agriculture
Overlapping issues for Agrolly and LiquidPrep
Idea, to work with them on e.g. crop research, testing, soil research, enhance the watering decision algorithm
Brandi created a private channel in the CallforCode Slack workspace
Clemson university
Swat https://swat.tamu.edu/

https://github.com/fearghalodonncha/swat_source/
https://github.com/fearghalodonncha/swat_exploration/

Please keep the TAMU engagement confidential. It is not to be shared with the Liquid Prep community during the open-source public meetings or on LP social media pages. Thanks!

Note: Issue migrated from Trello - https://trello.com/c/ZfXwQBYf/72-sustainability-program-swat-texas-am

Integrate SWAT insights (EPIC)

Work closely with Fearghal's team - AgroScience might need similar predictions, will maybe collaborate with them.

We need to figure out to get Anas assigned for some of his team

  • Create development and testing environment for SWAT AI/ML models

Design - Farm Dashboard

Design the details for the Farm Dashboard - to make the flow work
Design the details for the Advice page - to make the flow work

Add Linux Foundation footer to liquidprep.org

We need to add a footer to the bottom of the web page, similar to this:

Liquid Prep is a Call for Code® with The Linux Foundation project. Copyright © 2020-2021 Liquid Prep a Series of LF Projects, LLC. For web site terms of use, trademark policy and general project policies please see www.lfprojects.org.

Also, I see it's hosted on Wix. We could make the site itself open source and publish it through GitHub Pages.

App: Implement Crop Seeding Date UI page

Currently, the users have to choose a crop growth stage as part of the crop water decision process. Chances are users might know the right crop growth stage information.

Therefore, to avoid users choosing crop growth stage we decided to ask the user to enter crop seeding date and determine the right crop growth stage programmatically.

The UI designs/graphics for the new seeding date selection are in BOX

Enable location services

use html geo- location
figure out how to extract that
used for when we start tagging crop data with geo-location

App not meeting Progressive Web App requirements according to Lighthouse

Describe the bug
App not meeting Progressive Web App requirements according to Lighthouse

To reproduce
Steps to reproduce the behavior:

  1. Bring up web app
  2. Open Lighthouse from Developer Tools (must have loaded as extension)
  3. Run a report

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
image

Desktop (please complete the following information):

  • OS: MacOs
  • Browser: Chrome

Smartphone (please complete the following information):
N/A

Additional context
Add any other context about the problem here.

Review the dependabot alert

Describe the bug
Committers to this project will see a security alert at the top of the repo. There is one dependency that needs to be updated, along with the package it depends on.

Enable edge computing

Enable edge computing to achieving resilience, distribute dependencies, data protection, minimize latency and manage application workload autonomously

Related to: OpenHorizon project

Seeed Studio - company to talk with about having a repeater - gateway at the house... relating messages to the house

Student/Developers engagements - Virginia and Jumpstart and PTech

Developer Jumpstart

  • Austin - August 18th
  • Bay Area - August 25th

Students
University Students - Virginia (graduates - most capable/hydrology/civil engineers)/TAMU/UTDallas
ML related work - ask Fearghal
Time-series related configuration
Crop data integration, crop images, crop research integration, expected harvest date
Work items from list - based on discussion Ilse/Fearghal

Jumpstart
Software development:

  • Larger farm solution, with multiple IoT sensors
    Edge computing
  • Jeff to provide suggestions by eod August 5th

Students - PTech
-- get more students - for later phases? - high school and early college - max 20 yrs

  • General research
  • Less technical work
  • Front end work?

Today weather data is not shown/working between the time 3:30 pm to 6 pm EST

Describe the bug
Weather data for day part is not shown/working between 3:30 pm to 6 pm EST time.
Tested the backend service weather API "https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/96fd655207897b11587cfcf2b3f58f6e0792f788cf2a04daa79b53fc3d4efb32/liquidprep-cf-api/get_weather_info?geoCode=42.359,-71.068&units=e" in the browser and looks like in the day part-today data returns null values. Therefore the app is not showing any value.

To reproduce
Steps to reproduce the behavior:

  1. Open a browser between 3:30 pm and 6 pm EST
  2. Enter the backend weather API URL - https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/96fd655207897b11587cfcf2b3f58f6e0792f788cf2a04daa79b53fc3d4efb32/liquidprep-cf-api/get_weather_info?geoCode=42.359,-71.068&units=e
  3. You will notice the today data will be null values
  4. { "data": { "dayOfWeek": ["Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], "daypart": [{ "cloudCover": [null, 60, 25, 60, 89, 100, 82, 18, 7, 12, 18, 24], "dayOrNight": [null, "N", "D", "N", "D", "N", "D", "N", "D", "N", "D", "N"], "daypartName": [null, "Tonight", "Tomorrow", "Tomorrow night", "Thursday", "Thursday night", "Friday", "Friday night", "Saturday", "Saturday night", "Sunday", "Sunday night"], "iconCode": [null, 29, 34, 29, 39, 5, 16, 29, 32, 31, 34, 33], "iconCodeExtend": [null, 9000, 3400, 2900, 7103, 510, 6913, 2900, 3200, 3100, 3400, 3300], "narrative": [null, "Cloudy skies early, followed by partial clearing. Low 29F. Winds SW at 10 to 15 mph.", "Generally sunny despite a few afternoon clouds. High 53F. Winds SW at 5 to 10 mph.", "Partly cloudy skies during the evening will give way to cloudy skies overnight. Low 38F. Winds SW at 10 to 15 mph.", "Considerable cloudiness. Occasional rain showers in the afternoon. High 57F. Winds SW at 5 to 10 mph. Chance of rain 70%.", "Rain...becoming windy with some snow mixing in late. Low 31F. Winds NNE at 20 to 30 mph. Chance of precip 100%. Snowfall around one inch.", "Windy. Snow will end during the morning giving way to some clearing during the afternoon. High near 35F. Winds N at 20 to 30 mph. Chance of snow 60%. Snow accumulations less than one inch. Winds could occasionally gust over 40 mph.", "Partly cloudy skies. Low near 25F. Winds N at 10 to 20 mph.", "Mainly sunny. High 44F. Winds NNW at 10 to 15 mph.", "Clear. Low 29F. Winds W at 5 to 10 mph.", "Mostly sunny skies. High 53F. Winds NNW at 5 to 10 mph.", "Mostly clear skies. Low near 35F. Winds WNW at 5 to 10 mph."], "precipChance": [null, 17, 3, 8, 68, 98, 63, 2, 3, 2, 3, 21], "precipType": [null, "precip", "rain", "precip", "rain", "precip", "snow", "snow", "rain", "precip", "rain", "precip"], "qpf": [null, 0, 0, 0, 0.07, 0.68, 0.06, 0, 0, 0, 0, 0], "qpfSnow": [null, 0, 0, 0, 0, 1, 0.6, 0, 0, 0, 0, 0], "qualifierCode": [null, null, null, null, null, null, "Q1021", null, null, null, null, null], "qualifierPhrase": [null, null, null, null, null, null, "Winds could occasionally gust over 40 mph.", null, null, null, null, null], "relativeHumidity": [null, 39, 48, 67, 62, 74, 52, 48, 41, 54, 42, 53], "snowRange": [null, "", "", "", "", "~ 1", "< 1", "", "", "", "", ""], "temperature": [null, 29, 54, 38, 57, 31, 35, 25, 44, 29, 53, 35], "temperatureHeatIndex": [null, 37, 52, 47, 55, 49, 34, 34, 43, 39, 52, 48], "temperatureWindChill": [null, 24, 24, 34, 34, 24, 17, 15, 16, 23, 25, 29], "thunderCategory": [null, "No thunder", "No thunder", "No thunder", "No thunder", "No thunder", "No thunder", "No thunder", "No thunder", "No thunder", "No thunder", "No thunder"], "thunderIndex": [null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "uvDescription": [null, "Low", "Moderate", "Low", "Moderate", "Low", "Moderate", "Low", "Moderate", "Low", "Moderate", "Low"], "uvIndex": [null, 0, 4, 0, 3, 0, 3, 0, 5, 0, 5, 0], "windDirection": [null, 217, 222, 215, 219, 27, 10, 358, 338, 274, 327, 288], "windDirectionCardinal": [null, "SW", "SW", "SW", "SW", "NNE", "N", "N", "NNW", "W", "NNW", "WNW"], "windPhrase": [null, "Winds SW at 10 to 15 mph.", "Winds SW at 5 to 10 mph.", "Winds SW at 10 to 15 mph.", "Winds SW at 5 to 10 mph.", "Winds NNE at 20 to 30 mph.", "Winds N at 20 to 30 mph.", "Winds N at 10 to 20 mph.", "Winds NNW at 10 to 15 mph.", "Winds W at 5 to 10 mph.", "Winds NNW at 5 to 10 mph.", "Winds WNW at 5 to 10 mph."], "windSpeed": [null, 12, 9, 10, 8, 22, 23, 16, 10, 9, 8, 9], "wxPhraseLong": [null, "Clouds Early/Clearing Late", "Mostly Sunny", "Partly Cloudy", "PM Showers", "Rain/Snow/Wind", "AM Snow/Wind", "Partly Cloudy", "Sunny", "Clear", "Mostly Sunny", "Mostly Clear"], "wxPhraseShort": [null, "Clear Late", "M Sunny", "P Cloudy", "PM Showers", "Rn/Snw/Wind", "AM Snow/Wind", "P Cloudy", "Sunny", "Clear", "M Sunny", "M Clear"] }], "expirationTimeUtc": [1615924959, 1615924959, 1615924959, 1615924959, 1615924959, 1615924959], "moonPhase": ["Waxing Crescent", "Waxing Crescent", "Waxing Crescent", "Waxing Crescent", "Waxing Crescent", "First Quarter"], "moonPhaseCode": ["WXC", "WXC", "WXC", "WXC", "WXC", "FQ"], "moonPhaseDay": [3, 4, 5, 5, 6, 7], "moonriseTimeLocal": ["2021-03-16T08:35:30-0400", "2021-03-17T08:59:01-0400", "2021-03-18T09:25:12-0400", "2021-03-19T09:55:05-0400", "2021-03-20T10:30:22-0400", "2021-03-21T11:13:30-0400"], "moonriseTimeUtc": [1615898130, 1615985941, 1616073912, 1616162105, 1616250622, 1616339610], "moonsetTimeLocal": ["2021-03-16T22:10:08-0400", "2021-03-17T23:11:31-0400", "", "2021-03-19T00:12:27-0400", "2021-03-20T01:13:32-0400", "2021-03-21T02:12:12-0400"], "moonsetTimeUtc": [1615947008, 1616037091, null, 1616127147, 1616217212, 1616307132], "narrative": ["Skies clearing overnight. Lows overnight in the upper 20s.", "More sun than clouds. Highs in the low 50s and lows in the upper 30s.", "Chance of afternoon showers. Highs in the upper 50s and lows in the low 30s.", "Morning snow, windy at times. Highs in the mid 30s and lows in the mid 20s.", "Mainly sunny. Highs in the mid 40s and lows in the upper 20s.", "A few clouds. Highs in the low 50s and lows in the mid 30s."], "qpf": [0, 0, 0.75, 0.06, 0, 0], "qpfSnow": [0, 0, 1, 0.6, 0, 0], "sunriseTimeLocal": ["2021-03-16T06:53:49-0400", "2021-03-17T06:52:04-0400", "2021-03-18T06:50:19-0400", "2021-03-19T06:48:34-0400", "2021-03-20T06:46:49-0400", "2021-03-21T06:45:04-0400"], "sunriseTimeUtc": [1615892029, 1615978324, 1616064619, 1616150914, 1616237209, 1616323504], "sunsetTimeLocal": ["2021-03-16T18:52:02-0400", "2021-03-17T18:53:12-0400", "2021-03-18T18:54:22-0400", "2021-03-19T18:55:32-0400", "2021-03-20T18:56:42-0400", "2021-03-21T18:57:51-0400"], "sunsetTimeUtc": [1615935122, 1616021592, 1616108062, 1616194532, 1616281002, 1616367471], "temperatureMax": [null, 54, 57, 35, 44, 53], "temperatureMin": [29, 38, 31, 25, 29, 35], "validTimeLocal": ["2021-03-16T07:00:00-0400", "2021-03-17T07:00:00-0400", "2021-03-18T07:00:00-0400", "2021-03-19T07:00:00-0400", "2021-03-20T07:00:00-0400", "2021-03-21T07:00:00-0400"], "validTimeUtc": [1615892400, 1615978800, 1616065200, 1616151600, 1616238000, 1616324400] }, "headers": { "Content-Type": "application/json" }, "message": null, "status": "success", "statusCode": 200 }

Expected behavior
The today day part data should be non null values

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • Browser [e.g. chrome]

Set up branches

Main branch
Development branch
Feature branches, e.g. TAMU, SWAT, UI

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.