Skip to main content

A Farm Monitoring Bot

Project description

Agrothon

A Farm Monitoring Bot

PyPI PyPI - Python Version PyPI - Wheel PyPI - Implementation PyPI - Downloads GitHub license GitHub issues GitHub forks GitHub stars

Introduction

  • This project has three parts

    • The Agrothon-Client Module which will be running in Raspberry Pi
    • API Server
    • Telegram Bot
  • API Server handles Everything, All the routes are shown below

    API Docs

  • Telegram bot is just a frontend for the whole Project

  • Agrothon-Client Sends Sensor data, Intruder images to the API Server which will be analysed there and Stored in the Database

Installation

  • Via pip

    • Install Dependencies

      mkdir agrothon && cd agrothon
      sudo add-apt-repository ppa:deadsnakes/ppa
      sudo apt-get install python3.8 wget
      wget -q https://github.com/caddyserver/caddy/releases/download/v2.4.1/caddy_2.4.1_linux_amd64.tar.gz
      tar xzf caddy_2.4.1_linux_amd64.tar.gz
      rm -rf caddy_2.4.1_linux_amd64.tar.gz
      chmod a+x caddy
      mv caddy /usr/local/bin/caddy
      wget -q https://github.com/viswanathbalusu/Agrothon/raw/main/Caddyfile -O Caddyfile
      
    • First fill the variables in agrothon-sample.env and rename it to agrothon.env

      wget -q https://github.com/viswanathbalusu/Agrothon/raw/main/agrothon-sample.env -O agrothon.env
      
    • you can extend all tha variables from Base Config

    • Get the latest Release of data directory and untar in it the same directory where you placed agrothon.env

      wget -q https://github.com/viswanathbalusu/Agrothon/releases/latest/download/Agrothon-Data.tar.gz
      tar -xzf Agrothon-Data.tar.gz && rm -rf Agrothon-Data.tar.gz
      
    • Edit the $API_PORT in Caddyfile or Just Set $API_PORT in your Shell Environment.

    • Then Create a Virtual Environment (Optional but Recommended) and then install Agrothon with

      python3.8 -m virtualenv venv
      source venv/bin/activate
      pip install Agrothon
      
    • There are two commands in Agrothon

      • agroserver - Which actually starts the Uvicorn Server on a Unix Domain Socket at /usr/agrothon.sock, So you should use a Reverse proxy (Preferably Caddy)
      • agrobot - Which starts the telegram bot
      • agrothon - Starts Both agroserver and agrobot with caddy reverse proxy
  • Via Docker

    • Download Docker compose and Map the ports according to your use
      • wget -q https://viswanathbalusu.github.io/Agrothon/docker-compose.yml
    • Download agrothon.env and Fill the Variables (can be extended from Base Config)
      • wget -q https://viswanathbalusu.github.io/Agrothon/agrothon-sample.env -O agrothon.env
    • Finally do docker-compose up it will pull the image from container registry and run the services

Variables in agrothon.env

Variable Value Example Required Description
- - Bot Configuration - -
TELEGRAM_APP_ID Telegram API APP ID 1234567 True Can be obtained from Telegram
TELEGRAM_API_HASH Telegram API Hash 022d29afxxxxxxxxf825980a7974ec42 True Can be obtained from Telegram
BOT_TOKEN Telegram Bot Token 123456:abcdefghij True Can be obtained from Bot Father
API_BASE_URL Api base Host URL https://mysite.com/ True Must be host Without port (i.e Port 80/443* only)
ALERT_CHANNEL_ID Alert channel ID -100123456789 True Intruder Alerts will be posted to this channel
STATE name of the state Andhra Pradesh True Must be a state in India 🤔
DISTRICT name of the district East Godavari True name of your district
DEF_LANG Default Language english False Can be choosen from english, telugu, tamil, hindi (Default is english)
DEF_CITY Default City Vijayawada True City from which weather should be fetched
- - Server Configuration - -
OPEN_WEATHER_API Open weather API Key d6778a1acdd67c4xxxxxxe500e81987d True API to get the weather data of a particular region, Get this from OpenWeather
API_KEY An API Key for your Server Agrothon True This is like a Password for your API Server, So choose Wisely (Alphanumeric only)
DB_URL MongoDB URL mongodb+srv://xxx:xxx@hmmm.mongodb.net True Database to Store All the data, get this from MongoDB
SENSOR_PRIORITY_INDEX Moisture sensor priority 2 True Which moisture sensor to use for predicting on/off the pump
AUTH_ID Telegram user ID 12345678 False If this is not provided, Bot access is given to all the telegram users ⚠️

* if there are Other ports too the Bot will Work but it may not be able to post images

Note

  • We are using heavy modules like tensorflow and Yolov3, so make sure you have atleast 2.5GB RAM free to get this running
  • Only Works in UNIX environments
  • caddy,xz-utils, all OpenCV Dependencies must be installed if you are choosing non Docker method.
  • Python3.8 is compulsory

Agrothon Telegram bot

Screenshots

  • Telegram Bot Start

    Start

  • Bot Commands

      start - start command
      field - get field status
      weather - get weather status
      rainfall - get predictions of rainfall for your region
      settings - change settings of the bot
      restart - restart the bot
      log - get the log files
      stats - get the server stats
      ping - check ping of server
      help - to get help message
    

    Commands

  • Object Detection

    Bear

    Cow

    Elephant

    Farm

    Sheep

    Peacock

  • Bot Commands Usage

    • Pump Prediction

      Pump Prediction

    • Language Change

      Language Change

    • Complete info

      Complete info

    • Field Command

      Field Command

    • Help Command

      Help Command

    • Object Detection by sending an Image to Bot

      Object Detection Bot

    • Language Menu

      Language Menu

    • Pump Keyboard

      PumpKeyboard

    • Pump on/off

      pump on/off

    • Rainfall Prediction

      Rainfall

    • Settings Keyboard

      Settings

    • Server Stats

      Stats

    • Weather Data

      Weather

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Agrothon-1.3.2.tar.gz (48.5 kB view hashes)

Uploaded Source

Built Distribution

Agrothon-1.3.2-py3-none-any.whl (62.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page