All Projects → farmassistX → farmassist

farmassistX / farmassist

Licence: other
Farmassist is a smart farming app for IoT and AI-powered plant disease detection. It is built with Flutter and uses Firebase as its backend.

Programming Languages

dart
5743 projects

Projects that are alternatives of or similar to farmassist

addIt
Simple addition game made with Flutter for Mobile and Web using BLOC pattern
Stars: ✭ 16 (-60.98%)
Mutual labels:  mobile-app
crop your image
A flutter plugin which provides Crop Widget for cropping images.
Stars: ✭ 74 (+80.49%)
Mutual labels:  mobile-app
esteem
eSteem Mobile - Application for Android and iOS users, start earning cryptocurrency!
Stars: ✭ 88 (+114.63%)
Mutual labels:  mobile-app
CryptoBuddy
Android app which displays cryptocurrency prices, charts and news!
Stars: ✭ 93 (+126.83%)
Mutual labels:  mobile-app
mobile-deep-learning-classifier
Tutorial on building and deploying a Mobile Deep Learning Classifier for food
Stars: ✭ 64 (+56.1%)
Mutual labels:  mobile-app
Glance
Another client for Reddit, but this time, it's not just a client. It's a different way of browsing photos, GIFs, memes and other things there!
Stars: ✭ 104 (+153.66%)
Mutual labels:  mobile-app
MTJailed-Native
A terminal emulator with remote shell for non-jailbroken iOS devices
Stars: ✭ 24 (-41.46%)
Mutual labels:  mobile-app
AppAuth-OAuth2-Books-Demo
A companion repo for the blog article: https://blog.approov.io/adding-oauth2-to-mobile-android-and-ios-clients-using-the-appauth-sdk
Stars: ✭ 22 (-46.34%)
Mutual labels:  mobile-app
CouchDraw
A synchronized drawing app that utilizes Couchbase Sync Gateway and Xamarin to enable shared canvases.
Stars: ✭ 22 (-46.34%)
Mutual labels:  mobile-app
keplr-wallet
The most powerful wallet for the Cosmos ecosystem and the Interchain
Stars: ✭ 321 (+682.93%)
Mutual labels:  mobile-app
fire-todo
📱 Android App - simple todo-list
Stars: ✭ 16 (-60.98%)
Mutual labels:  mobile-app
Notre-Dame-v3
The 3rd generation of ÉTSMobile, the main gateway between the École de technologie supérieure and its students on mobile devices
Stars: ✭ 13 (-68.29%)
Mutual labels:  mobile-app
GalaxyBreak
Galaxy Break is a minimalistic endless video game for mobile published for Android platform.
Stars: ✭ 21 (-48.78%)
Mutual labels:  mobile-app
Ionic-ElastiChat-with-Images
Ionic Magic Chat with Angular Elastic, Autolinker.js and more!
Stars: ✭ 66 (+60.98%)
Mutual labels:  mobile-app
computeiro
Computer science courses, books and exams in your pocket. Built with Flutter and Free! ❤️
Stars: ✭ 27 (-34.15%)
Mutual labels:  mobile-app
tests-ionic2-and-aurelia-framework7
Test TODO applications to compare ionic2 and Aurelia + Framework7
Stars: ✭ 14 (-65.85%)
Mutual labels:  mobile-app
crm-mobilesdk-library-for-ios
Microsoft Dynamics CRM Mobile SDK library for iOS app development.
Stars: ✭ 13 (-68.29%)
Mutual labels:  mobile-app
IoT-iBeacon
An Ionic app for indoor localization and navigation using BLE iBeacons.
Stars: ✭ 39 (-4.88%)
Mutual labels:  mobile-app
react-native-tapjoy
This module provides react-native bindings for the Tapjoy SDK.
Stars: ✭ 16 (-60.98%)
Mutual labels:  mobile-app
flutter designs world
We at Appstree has implemented design concepts of different application using mock ups available out there at internet. These are open source projects and any once can use them. Say Hello to us at [email protected], if you want to hire our team is available to provide you top notch solutions.
Stars: ✭ 22 (-46.34%)
Mutual labels:  mobile-app

Farmassist

Farmassist is a smart farming app for IoT and AI-powered plant disease detection. It is built with Flutter and uses Firebase as its backend.

App Screenshots

View Agricultural News Receive IoT Telemetry Data Detect Plant Disease

Download Android APK

You can download the latest version of the Android APK here.

Architecture

Architecture Diagram of Farmassist

The above illustration shows a high level overview of the Farmassist project. Farmassist consists of 3 subsystems:

The backend services used are as follows:

The following sections explain more detail about the services and components used by the corresponding subsystems.

Authentication and User Profile

The signup and login flow of Farmassist is developed using the Bloc library and Firebase Authentication. After a user signs up successfully, the user data will be stored in the data model of Cloud Firestore as shown below:

{
  "users": { // "users" collection
    "4lbwvicymz71LfY9POHZ": { // "userId" document
      "id": "4lbwvicymz71LfY9POHZ",
      "email": "[email protected]",
      "displayName": "Jack",
      "tokens": [ ... ] // used by Cloud Messaging
    },
    "4DkFgqNdjZnEh78YmsE3": { ... },
    // more "userId" documents
  }
}

Farm Management

Cloud Firestore, a NoSQL, document-oriented database, is used to store farm management data using key-value pairs. In Cloud Firestore, each collection consists of a number of documents in which each document can store a number of subcollections.

There are 2 types of farm management data stored: planting data and harvesting data. An example of the data model for harvesting data is shown below:

{
  "planting": { // "planting" collection
    "4lbwvicymz71LfY9POHZ": { // "userId" document
      "months": { // "months" subcollection
        "jan": { // "jan" document
          "plantName": "tomato",
          "noOfPlants": "100",
          "plantDate": "25-03-2021",
          "estimatedHarvestWeek": "9",
          "harvestDate": "25-5-2021",
          "harvested": true
        },
        "feb": { ... } // "feb" document
        // more documents for the remaining months
      }
    },
    // more "userId" documents
  }
}

Under farm management, 2 extra APIs are used:

  • News API is used to fetch top headlines for science category.
  • OpenWeather API is used to obtain weather data of the farm location.

IoT Monitoring

Realtime Database acts as a repository of IoT telemetry data that performs data synchronization with the Farmassist app. The overall process of IoT monitoring is described as follows:

  1. When new telemetry data is stored in Realtime Database, Cloud Functions will be triggered.
  2. Cloud Functions execute a function to check for abnormal values in the received telemetry data.
  3. If abnormal values exist, Cloud Functions will call Cloud Messaging service to send an alert notification to the relevant app user, which is identified by a unique token.

5 types of telemetry data are stored as JSON objects in Realtime Database:

  • Air Humidity (%)
  • Air Temperature (°C)
  • Soil Moisture (%)
  • Soil pH (pH)
  • Soil Salinity (Millisiemens/cm)

Each telemetry data is stored as a key-value pair of timestamp and value. An example of the data model for telemetry data is shown below:

{
  "telemetry_data": {
    "4lbwvicymz71LfY9POHZ": { // userId
      "humidity": {
        "1617979596947": "56.64", // timestamp: value
        "1617979596949": "55.89",
        // more values
      },
      "moisture": { ... },
      "pH": { ... },
      "salinity": { ... },
      "temperature": { ... }
    },
    // more telemetry data from other users
  }
}

For demonstration purpose, a minimal IoT device simulator is built to send telemetry data to Realtime Database. For more information, you can refer to Farmassist IoT Device Simulator.

The code for Cloud Functions can be found in Farmassist Firebase.

Plant Disease Detection

A plant disease detection model was trained using Google Cloud AutoML Vision. The training dataset is a subset of PlantVillage dataset from Mendeley Data. A total of 2,941 diseased plant images that consists of 6 disease categories were used:

  • Corn Common Rust (500 images)
  • Corn Gray Leaf Spot (441 images)
  • Potato Early Blight (500 images)
  • Strawberry Leaf Scorch (500 images)
  • Tomato Leaf Mold (500 images)
  • Tomato Mosaic Virus (500 images)

After training, the model was exported as a TensorFlow Lite model, which is suitable to be run on a mobile device. You can find the trained model here.

Flutter Packages Used

Some of the useful Flutter packages used in the Farmassist app are listed in the table below. Refer to pubspec.yaml for the complete package information.

Package Functions
Provider A simple state management tool
bloc and flutter_bloc A state management library implemented using BLoC design pattern
fl_chart A powerful Flutter chart library with beautiful UI
getwidget A Flutter UI library with 1000+ pre-made UI components

Setup

Things to do if you want to fork or contribute to the project.

  1. Create a Firebase project and add Firebase to your Flutter app.
  2. Refer to Farmassist IoT Device Simulator to see how fake telemetery data can be sent to Realtime Database.
  3. Refer to Farmassist Firebase for the Cloud Functions code that call Cloud Messaging service.
  4. Refer to Edge Device Model Quickstart if you want to train your own model for plant disease detection.
  5. Refer to CI/CD for Flutter Apps Using GitHub Actions to set up a workflow that can release an APK for your Flutter app whenever someone pushes the code to GitHub. Instead of using push event, I set up a manual trigger with workflow_dispatch event.

References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].