%global _empty_manifest_terminate_build 0
Name: python-Agrothon
Version: 1.3.2
Release: 1
Summary: A Farm Monitoring Bot
License: GPL3.0
URL: https://github.com/viswanathbalusu/agrothon
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/d0/a0/cc814cd6c200ec7e3cf49c8b70c03b0fb651912ce113ca69a12d889ea5ba/Agrothon-1.3.2.tar.gz
BuildArch: noarch
Requires: python3-pyrogram
Requires: python3-tgcrypto
Requires: python3-motor
Requires: python3-fastapi[all]
Requires: python3-requests
Requires: python3-dotenv
Requires: python3-aiohttp
Requires: python3-telegram-bot
Requires: python3-pandas
Requires: python3-numpy
Requires: python3-tensorflow
Requires: python3-prettytable
Requires: python3-opencv-python
Requires: python3-pillow
Requires: python3-seaborn
Requires: python3-Keras
Requires: python3-scikit-learn
Requires: python3-telegraph
Requires: python3-psutil
%description
Agrothon
A Farm Monitoring Bot
## Introduction
- This project has three parts
- The [Agrothon-Client](https://github.com/viswanathbalusu/Agrothon-Client) Module which will be running in Raspberry Pi
- API Server
- Telegram Bot
- API Server handles Everything, All the routes are shown below

- Telegram bot is just a frontend for the whole Project
- [Agrothon-Client](https://github.com/viswanathbalusu/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](agrothon/BaseConfig.py)
- Get the latest [Release](https://github.com/viswanathbalusu/Agrothon/releases/latest/download/Agrothon-Data.tar.gz) 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](./docker-compose.yml) and Map the ports according to your use
- ```wget -q https://viswanathbalusu.github.io/Agrothon/docker-compose.yml```
- Download [agrothon.env](./agrothon-sample.env) and Fill the Variables (can be extended from [Base Config](agrothon/BaseConfig.py))
- ```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](https://my.telegram.org/auth) |
| TELEGRAM_API_HASH | Telegram API Hash | 022d29afxxxxxxxxf825980a7974ec42 | True | Can be obtained from [Telegram](https://my.telegram.org/auth) |
| BOT_TOKEN | Telegram Bot Token | 123456:abcdefghij | True | Can be obtained from [Bot Father](https://t.me/botfather)
| 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](https://openweathermap.org/api)|
| 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](https://mongodb.com) |
| 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

- 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
```

- Object Detection






- Bot Commands Usage
- Pump Prediction

- Language Change

- Complete info

- Field Command

- Help Command

- Object Detection by sending an Image to Bot

- Language Menu

- Pump Keyboard

- Pump on/off

- Rainfall Prediction

- Settings Keyboard

- Server Stats

- Weather Data

%package -n python3-Agrothon
Summary: A Farm Monitoring Bot
Provides: python-Agrothon
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-Agrothon
Agrothon
A Farm Monitoring Bot
## Introduction
- This project has three parts
- The [Agrothon-Client](https://github.com/viswanathbalusu/Agrothon-Client) Module which will be running in Raspberry Pi
- API Server
- Telegram Bot
- API Server handles Everything, All the routes are shown below

- Telegram bot is just a frontend for the whole Project
- [Agrothon-Client](https://github.com/viswanathbalusu/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](agrothon/BaseConfig.py)
- Get the latest [Release](https://github.com/viswanathbalusu/Agrothon/releases/latest/download/Agrothon-Data.tar.gz) 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](./docker-compose.yml) and Map the ports according to your use
- ```wget -q https://viswanathbalusu.github.io/Agrothon/docker-compose.yml```
- Download [agrothon.env](./agrothon-sample.env) and Fill the Variables (can be extended from [Base Config](agrothon/BaseConfig.py))
- ```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](https://my.telegram.org/auth) |
| TELEGRAM_API_HASH | Telegram API Hash | 022d29afxxxxxxxxf825980a7974ec42 | True | Can be obtained from [Telegram](https://my.telegram.org/auth) |
| BOT_TOKEN | Telegram Bot Token | 123456:abcdefghij | True | Can be obtained from [Bot Father](https://t.me/botfather)
| 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](https://openweathermap.org/api)|
| 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](https://mongodb.com) |
| 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

- 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
```

- Object Detection






- Bot Commands Usage
- Pump Prediction

- Language Change

- Complete info

- Field Command

- Help Command

- Object Detection by sending an Image to Bot

- Language Menu

- Pump Keyboard

- Pump on/off

- Rainfall Prediction

- Settings Keyboard

- Server Stats

- Weather Data

%package help
Summary: Development documents and examples for Agrothon
Provides: python3-Agrothon-doc
%description help
Agrothon
A Farm Monitoring Bot
## Introduction
- This project has three parts
- The [Agrothon-Client](https://github.com/viswanathbalusu/Agrothon-Client) Module which will be running in Raspberry Pi
- API Server
- Telegram Bot
- API Server handles Everything, All the routes are shown below

- Telegram bot is just a frontend for the whole Project
- [Agrothon-Client](https://github.com/viswanathbalusu/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](agrothon/BaseConfig.py)
- Get the latest [Release](https://github.com/viswanathbalusu/Agrothon/releases/latest/download/Agrothon-Data.tar.gz) 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](./docker-compose.yml) and Map the ports according to your use
- ```wget -q https://viswanathbalusu.github.io/Agrothon/docker-compose.yml```
- Download [agrothon.env](./agrothon-sample.env) and Fill the Variables (can be extended from [Base Config](agrothon/BaseConfig.py))
- ```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](https://my.telegram.org/auth) |
| TELEGRAM_API_HASH | Telegram API Hash | 022d29afxxxxxxxxf825980a7974ec42 | True | Can be obtained from [Telegram](https://my.telegram.org/auth) |
| BOT_TOKEN | Telegram Bot Token | 123456:abcdefghij | True | Can be obtained from [Bot Father](https://t.me/botfather)
| 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](https://openweathermap.org/api)|
| 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](https://mongodb.com) |
| 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

- 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
```

- Object Detection






- Bot Commands Usage
- Pump Prediction

- Language Change

- Complete info

- Field Command

- Help Command

- Object Detection by sending an Image to Bot

- Language Menu

- Pump Keyboard

- Pump on/off

- Rainfall Prediction

- Settings Keyboard

- Server Stats

- Weather Data

%prep
%autosetup -n Agrothon-1.3.2
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-Agrothon -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Wed May 10 2023 Python_Bot - 1.3.2-1
- Package Spec generated