Compare commits

..

80 Commits

Author SHA1 Message Date
ae44bf94b0 fix build, enaled libre and ookla 2023-12-30 10:32:47 +05:00
71095eb629 highest value instead of averae 2023-11-28 02:32:07 +05:00
ef5d9031e3 better null handling 2023-11-28 02:22:01 +05:00
99951c1fb3 disable ookla and libre 2023-11-28 02:06:46 +05:00
120fec0843 replace null values 2023-11-28 02:05:18 +05:00
361b91fad2 spit in a distance 2023-11-27 22:30:05 +05:00
b98e3b6d34 fix upload value 2023-11-27 22:28:59 +05:00
d143be1ed0 spit them out 2023-11-27 22:28:00 +05:00
a588e2807f add average download and upload to caption 2023-11-27 22:11:09 +05:00
d173d6904d enabled libre and fast, added average speed meter 2023-11-27 22:00:42 +05:00
6c96c6efb5 Merge pull request 'main' (#1) from ibattus/starlink_status:main into main
Reviewed-on: #1
2023-11-22 18:30:31 +05:00
b72f95407a added weather files 2023-11-22 17:54:07 +05:00
315a49fe57 added weather files 2023-11-22 17:53:57 +05:00
793310303b added weather files 2023-11-22 17:53:43 +05:00
e7448cf7be weather images 2023-11-22 17:53:18 +05:00
d4818361c2 Delete resources/tornado.png 2023-11-22 17:51:34 +05:00
95b055db9b Delete resources/thunder_cloud_and_rain.png 2023-11-22 17:51:29 +05:00
f10f8cb3e4 Delete resources/sweat_drops.png 2023-11-22 17:51:24 +05:00
d6bd88d23a Delete resources/sun.png 2023-11-22 17:51:20 +05:00
b69d6335ec Delete resources/snowflake.png 2023-11-22 17:51:15 +05:00
1a374005ef Delete resources/shower.png 2023-11-22 17:51:10 +05:00
e7944da8c7 Delete resources/snow_cloud.png 2023-11-22 17:51:04 +05:00
30f7ba26da Delete resources/rainbow.png 2023-11-22 17:50:59 +05:00
270874bac7 Delete resources/rain_cloud.png 2023-11-22 17:50:53 +05:00
f3a56b21c4 Delete resources/ocean.png 2023-11-22 17:50:47 +05:00
1b0e5ad2d2 Delete resources/partly_sunny_rain.png 2023-11-22 17:42:31 +05:00
bfe0a6e67a Delete resources/partly_sunny.png 2023-11-22 17:42:25 +05:00
0afade2057 Delete resources/needle.png 2023-11-22 17:42:20 +05:00
556fdc21cf Delete resources/mostly_sunny.png 2023-11-22 17:42:15 +05:00
70c69b036e Delete resources/lightning.png 2023-11-22 17:42:10 +05:00
782f224f7f Delete resources/globe_with_meridians.png 2023-11-22 17:42:06 +05:00
7ffc527e78 Delete resources/fog.png 2023-11-22 17:41:56 +05:00
5adf9e1dd1 Delete resources/droplet.png 2023-11-22 17:41:48 +05:00
7a785deac1 Delete resources/dash.png 2023-11-22 17:41:42 +05:00
6f24123e5d Delete resources/cyclone.png 2023-11-22 17:41:31 +05:00
02c6a11db9 Delete resources/crescent_moon.png 2023-11-22 17:41:26 +05:00
fd18087026 Delete resources/cloud.png 2023-11-22 17:41:21 +05:00
3e3bf5d5b8 Delete resources/christmas_tree.png 2023-11-22 17:41:16 +05:00
3daee5433a Delete resources/barely_sunny.png 2023-11-22 17:41:11 +05:00
337c8ac62f Delete resources/wind_blowing_face.png 2023-11-22 17:41:04 +05:00
973a34fecb Delete resources/zap.png 2023-11-22 17:40:55 +05:00
c0eb6ef02d Merge pull request 'added weather image resources' (#1) from ibattus-main into main
Reviewed-on: ibattus/starlink_status#1
2023-11-22 16:17:46 +05:00
46a9833d50 added weather image resources 2023-11-22 16:13:47 +05:00
9ca0c748b7 emoji png for weather 2023-11-22 14:52:43 +05:00
ce1e9bcff7 updated image to better handle text background color 2023-11-21 21:08:51 +05:00
b9aea5db34 added scale to image 2023-11-21 11:27:18 +05:00
61e055ee84 new image 2023-11-21 10:56:02 +05:00
fa6d73bf48 WHAT THE FUCK ITS UPLOAD 2023-11-21 10:52:52 +05:00
4beae61f76 white more readable 2023-11-21 10:48:25 +05:00
50c42090d4 customize meter scale, set new font style and color 2023-11-21 10:40:09 +05:00
c11d561bba customize scale and location of meter 2023-11-21 10:19:40 +05:00
0c81f7a1fe overlay speed result on image dependecy 2023-11-21 09:58:50 +05:00
3cc77a9ead overlay speed result on image 2023-11-21 09:57:13 +05:00
652c209fef update ignore 2023-11-21 06:24:31 +05:00
c35dfac2db rm 2023-11-14 01:03:20 +05:00
c6e4b5c26a slightly cleaner code 2023-11-14 01:02:32 +05:00
b69df2c87f more appropriate weather emojis 2023-11-14 00:23:13 +05:00
60d03dbb13 more appropriate weather emojis 2023-11-13 23:51:50 +05:00
ab604a2016 more weather conditions added 2023-11-13 23:34:48 +05:00
ba4041feb2 disable librr and fast 2023-11-13 11:28:34 +05:00
8f1210e5ef disable librr and fast 2023-11-13 11:24:51 +05:00
2a8f6c9a1f disable librr and fast 2023-11-13 11:19:41 +05:00
68edfdea31 SPACES 2023-11-12 21:54:23 +05:00
41b0ef8a45 added cf, google and valo ping 2023-11-12 21:51:52 +05:00
e2ecf2c0f5 added waste monitoring 2023-11-12 21:14:18 +05:00
dc232ce618 no clue how i manged to not realize that 2023-11-12 20:45:06 +05:00
373ba94277 hama beykaaru step eh 2023-11-12 20:34:56 +05:00
06792242e6 hama beykaaru step eh 2023-11-12 20:26:23 +05:00
3e536ddbd6 updated image 2023-11-12 18:17:35 +05:00
97704ed648 Satellite View added 2023-11-12 17:32:24 +05:00
b95c26e879 attmept to make image look smaller 2023-11-12 15:29:05 +05:00
05be054977 attmept to make image look smaller 2023-11-12 15:28:08 +05:00
f86e5f40f0 attmept to make image look smaller 2023-11-12 15:27:44 +05:00
f3610beb3f table 2023-11-12 15:23:17 +05:00
960d03d0d5 lower image quality 2023-11-12 15:21:12 +05:00
f97560c012 lower image quality 2023-11-12 15:17:38 +05:00
47cd6eddff documentation and image 2023-11-12 15:15:40 +05:00
c22cc62460 remove old config file 2023-11-12 14:50:38 +05:00
3557119852 documented config fi;e 2023-11-12 14:49:57 +05:00
21780aa6cf change var name to standize between my scripts 2023-11-12 14:49:23 +05:00
28 changed files with 257 additions and 52 deletions

View File

@@ -2,11 +2,14 @@ FROM archlinux
WORKDIR /root WORKDIR /root
# update all
RUN pacman -Syu --noconfirm
# Basic # Basic
RUN pacman -Sy --noconfirm mpv jq curl bc RUN pacman -S --noconfirm mpv jq curl bc
# Ookla Speedtest # Ookla Speedtest
RUN pacman -Sy --noconfirm speedtest-cli RUN pacman -S --noconfirm speedtest-cli
# LibreSpeed # LibreSpeed
RUN curl -LOJ https://github.com/librespeed/speedtest-cli/releases/download/v1.0.10/librespeed-cli_1.0.10_linux_amd64.tar.gz \ RUN curl -LOJ https://github.com/librespeed/speedtest-cli/releases/download/v1.0.10/librespeed-cli_1.0.10_linux_amd64.tar.gz \
@@ -18,6 +21,9 @@ RUN curl -LOJ https://github.com/librespeed/speedtest-cli/releases/download/v1.0
RUN pacman -S --noconfirm atk cups libxcomposite nodejs npm nss \ RUN pacman -S --noconfirm atk cups libxcomposite nodejs npm nss \
&& npm install --global fast-cli && npm install --global fast-cli
# Image Magic
RUN pacman -S --noconfirm imagemagick
COPY . . COPY . .
CMD ./bot.sh CMD ./bot.sh

1
.gitignore vendored
View File

@@ -1 +1,2 @@
.env .env
tmp/

Binary file not shown.

53
README.md Normal file
View File

@@ -0,0 +1,53 @@
# Starlink Performance Monitoring Bot
## Introduction
This project provides a performance monitoring solution for Starlink internet service. It utilizes an IP camera to capture images of the sky, fetches weather data, conducts speed tests through multiple platforms, and uploads the results to a specified Telegram chat.
<img src="tgchat.jpg" alt="Screenshot of chat" style="max-height:250px;">
## Features
- **Sky Image Capture:** Uses an IP camera's RTSP feed to take a picture of the sky.
- **Weather Data Fetching:** Retrieves weather information using Open-Meteo API.
- **Speed Tests:** Conducts internet speed tests using Ookla Speedtest, LibreSpeed, and Fast.com.
- **Telegram Integration:** Automatically uploads the results to a Telegram chat.
## Requirements
- Docker or Podman
- A Telegram bot and chat ID
- An IP camera with RTSP support
- Internet connection
## Setup
1. **Create Telegram Bot:** Use Telegram's BotFather to create a new bot and get the API token.
2. **Find Telegram Chat ID:** Identify your user, group, supergroup, or channel ID. Add "-100" if it's a supergroup or channel.
3. **Configure IP Camera:** Ensure the camera's RTSP feed is accessible.
## Configuration
Create a `.env` file with the following variables:
- copy `env.example` to `.env` and configure it.
Replace the placeholder values with your actual data.
## Installation
1. **Clone Repository:** Clone this repository to your local machine or server.
2. **Run with Docker/Podman:**
- Use `docker compose up -d` or `podman compose up -d` to start the service.
## Usage
Once set up, the bot will operate automatically. It will capture sky images, perform speed tests, fetch weather data, and send updates to the configured Telegram chat every 30 minutes.
## Troubleshooting
- **Bot Not Responding:** Ensure that the `.env` file is correctly set up and that the bot has the necessary permissions in your Telegram chat.
- **Camera Issues:** Verify that the RTSP URL is correct and that the camera is accessible from your network.
## Contributing
Contributions to improve this project are welcome. Please submit pull requests with your proposed changes.

206
bot.sh
View File

@@ -2,27 +2,54 @@
source .env source .env
download_meter=resources/download_meter.png
upload_meter=resources/upload_meter.png
needle=resources/needle.png
font=resources/CODE_Bold.otf
while true; do while true; do
date=$(date "+%Y%m%d_%H%M%S") date=$(date "+%Y%m%d_%H%M%S")
image=data/image_$date.png camera_image=data/image_$date.png
satellite_image=data/satellite_image_$date.png
speedtest_ookla=data/speedtest_ookla_$date.json speedtest_ookla=data/speedtest_ookla_$date.json
speedtest_libre=data/speedtest_libre_$date.json speedtest_libre=data/speedtest_libre_$date.json
speedtest_fast=data/speedtest_fast_$date.json speedtest_fast=data/speedtest_fast_$date.json
speedtest_download_meter=data/speedtest_download_meter_$date.png
speedtest_upload_meter=data/speedtest_upload_meter_$date.png
speedtest_meter_image=data/speedtest_meter_image_$date.png
weather_file=data/weather_$date.json weather_file=data/weather_$date.json
edited_image=data/edited_image_$date.png edited_image=data/edited_image_$date.png
tg_log=data/tg_log_$date.json
#################################################################################
latency(){
echo $(ping -c 1 $1) | \
grep 'time=' | \
awk -F'time=' '{print $2}' | \
awk '{print $1}'
}
#################################################################################
################################################################################# #################################################################################
echo Grabbing Image echo Grabbing Camara Image
# Capture a frame from RTSP stream # Capture a frame from RTSP stream
mpv $RTSP_URL --frames=1 --vo=image --ovc=png --o=$image >> /dev/null mpv $RTSP_URL --frames=1 --vo=image --ovc=png --o=$camera_image >> /dev/null
echo Image grabbed echo Camera Image grabbed
#################################################################################
#################################################################################
echo Grabbing Satellite Image
# scrap html, get image link and download it.
curl -s $(curl -s "https://www.meteorology.gov.mv/" | \
grep -o 'https://mobile.codeworks.mv/uploads/Satellite/[^"]*' | \
tail -n 1) -o $satellite_image
echo Satellite Image grabbed
################################################################################# #################################################################################
################################################################################# #################################################################################
echo Doing speedtest by Ookla echo Doing speedtest by Ookla
# Run speedtest and output to a file # Run speedtest and output to a file
speedtest --json > $speedtest_ookla speedtest --json | tee $speedtest_ookla
# Extract information from the speedtest output # Extract information from the speedtest output
# Parsing JSON data # Parsing JSON data
@@ -35,14 +62,23 @@ ookla_upload=$(jq '.upload' "$speedtest_ookla")
ookla_bytes_received=$(jq '.bytes_received' "$speedtest_ookla") ookla_bytes_received=$(jq '.bytes_received' "$speedtest_ookla")
ookla_bytes_sent=$(jq '.bytes_sent' "$speedtest_ookla") ookla_bytes_sent=$(jq '.bytes_sent' "$speedtest_ookla")
# replacing null values
[ -z "$ookla_ping" ] && ookla_ping="-"
[ -z "$ookla_download" ] && ookla_download=0
[ -z "$ookla_upload" ] && ookla_upload=0
[ -z "$ookla_bytes_received" ] && ookla_bytes_received=0
[ -z "$ookla_bytes_sent" ] && ookla_bytes_sent=0
# Converting to human readable units # Converting to human readable units
ookla_download_mbps=$(echo "scale=2; $ookla_download / 1000000" | bc) ookla_download_mbps=$(echo "scale=2; $ookla_download / 1000000" | bc)
ookla_upload_mbps=$(echo "scale=2; $ookla_upload / 1000000" | bc) ookla_upload_mbps=$(echo "scale=2; $ookla_upload / 1000000" | bc)
ookla_bytes_received_mb=$(echo "scale=2; $ookla_bytes_received / 1048576" | bc) ookla_bytes_received_mb=$(echo "scale=2; $ookla_bytes_received / 1048576" | bc)
ookla_bytes_sent_mb=$(echo "scale=2; $ookla_bytes_sent / 1048576" | bc) ookla_bytes_sent_mb=$(echo "scale=2; $ookla_bytes_sent / 1048576" | bc)
ookla_total=$(echo $ookla_bytes_sent_mb+$ookla_bytes_received_mb | bc)
echo Starting LibreSpeed echo Starting LibreSpeed
librespeed-cli --json > $speedtest_libre librespeed-cli --json | tee $speedtest_libre
# Parsing JSON data # Parsing JSON data
libre_bytes_sent=$(jq '.[0].bytes_sent' "$speedtest_libre") libre_bytes_sent=$(jq '.[0].bytes_sent' "$speedtest_libre")
@@ -52,81 +88,177 @@ libre_upload=$(jq '.[0].upload' "$speedtest_libre")
libre_download=$(jq '.[0].download' "$speedtest_libre") libre_download=$(jq '.[0].download' "$speedtest_libre")
libre_server_name=$(jq -r '.[0].server.name' "$speedtest_libre") libre_server_name=$(jq -r '.[0].server.name' "$speedtest_libre")
# Converting to human readable units # replacing null values
[ "$libre_ping" = "null" ] || [ -z "$libre_ping" ] && libre_ping="-"
[ "$libre_download" = "null" ] || [ -z "$libre_download" ] && libre_download=0
[ "$libre_upload" = "null" ] || [ -z "$libre_upload" ] && libre_upload=0
[ "$libre_bytes_received" = "null" ] || [ -z "$libre_bytes_received" ] && libre_bytes_received=0
[ "$libre_bytes_sent" = "null" ] || [ -z "$libre_bytes_sent" ] && libre_bytes_sent=0
# Converting to human readable units and replacing null values with 0
libre_bytes_sent_mb=$(echo "scale=2; $libre_bytes_sent / 1048576" | bc) libre_bytes_sent_mb=$(echo "scale=2; $libre_bytes_sent / 1048576" | bc)
libre_bytes_received_mb=$(echo "scale=2; $libre_bytes_received / 1048576" | bc) libre_bytes_received_mb=$(echo "scale=2; $libre_bytes_received / 1048576" | bc)
libre_total=$(echo $libre_bytes_sent_mb+$libre_bytes_received_mb | bc)
echo Starting Fast echo Starting Fast
fast --upload --json > $speedtest_fast fast --upload --json | tee $speedtest_fast
fast_download_speed=$(jq '.downloadSpeed' "$speedtest_fast") fast_download_speed=$(jq '.downloadSpeed' "$speedtest_fast")
fast_upload_speed=$(jq '.uploadSpeed' "$speedtest_fast") fast_upload_speed=$(jq '.uploadSpeed' "$speedtest_fast")
fast_latency=$(jq '.latency' "$speedtest_fast") fast_latency=$(jq '.latency' "$speedtest_fast")
fast_downloaded=$(jq '.downloaded' "$speedtest_fast") fast_downloaded=$(jq '.downloaded' "$speedtest_fast")
fast_uploaded=$(jq '.uploaded' "$speedtest_fast") fast_uploaded=$(jq '.uploaded' "$speedtest_fast")
[ -z "$fast_latency" ] && fast_latency="-"
[ -z "$fast_download_speed" ] && fast_download_speed=0
[ -z "$fast_upload_speed" ] && fast_upload_speed=0
[ -z "$fast_downloaded" ] && fast_downloaded=0
[ -z "$fast_uploaded" ] && fast_uploaded=0
fast_total=$(echo $fast_downloaded+$fast_uploaded | bc)
average_download=$(echo $ookla_download_mbps+$libre_download+$fast_download_speed/3 | bc)
average_upload=$(echo $ookla_upload_mbps+$libre_upload+$fast_upload_speed/3| bc)
highest_download=$(echo $ookla_download_mbps $libre_download $fast_download_speed | tr ' ' '\n' | sort -nr | head -n1)
highest_upload=$(echo $ookla_upload_mbps $libre_upload $fast_upload_speed | tr ' ' '\n' | sort -nr | head -n1)
total_wasted=$(echo $ookla_total+$libre_total+$fast_total | bc)
echo Speedtests complete echo Speedtests complete
################################################################################# #################################################################################
#################################################################################
valorant_ping=$(latency dynamodb.ap-southeast-1.amazonaws.com)
cfdns_ping=$(latency 1.1.1.1)
googledns_ping=$(latency 8.8.8.8)
[ -z "$valorant_ping" ] && valorant_ping="-"
[ -z "$cfdns_ping" ] && cfdns_ping="-"
[ -z "$googledns_ping" ] && googledns_ping="-"
#################################################################################
################################################################################# #################################################################################
echo Checking weather echo Checking weather
# Make the API request # Make the API request
curl -s "https://api.open-meteo.com/v1/forecast?latitude=${LATITUDE}&longitude=${LONGITUDE}&current_weather=true" > $weather_file curl -s "https://api.open-meteo.com/v1/forecast?latitude=${LATITUDE}&longitude=${LONGITUDE}&current_weather=true" | tee $weather_file
# Extract Weather Condition # Extract Weather Condition and day or not
weather_condition=$(cat $weather_file | jq '.current_weather.weathercode') weather_condition=$(jq '.current_weather.weathercode' "$weather_file")
is_day=$(jq '.current_weather.is_day' "$weather_file")
case $weather_condition in case $weather_condition in
0) current_weather="☀️ Clear sky" ;; 0) current_weather="$([ "$is_day" = "1" ] && echo "☀️" || echo "🌙") Clear Sky";;
1|2|3) current_weather="☁️ Cloudy" ;; 1) current_weather="$([ "$is_day" = "1" ] && echo "☀️" || echo "🌙") Mainly Clear";;
45|48) current_weather="🌫️ Fog" ;; 2) current_weather="⛅ Partly Cloudy" ;;
51|53|55|56|57) current_weather="🌧 Drizzle" ;; 3) current_weather=" Overcast" ;;
61|63|65|66|67) current_weather="🌦 Rain" ;; 45) current_weather="🌫 Fog" ;;
80|81|82) current_weather="🌧️ Rain showers" ;; 48) current_weather="🌫️🌬️ Depositing Rime Fog" ;;
85|86) current_weather="🌨️ Snow showers" ;; 51) current_weather="🌦️💧 Light Drizzle" ;;
95|96|99) current_weather="⛈️ Thunderstorm" ;; 53) current_weather="🌦️💧 Moderate Drizzle" ;;
*) current_weather="🌐 Weather condition not recognized" ;; 55) current_weather="🌦️💧 Dense Drizzle" ;;
56) current_weather="🌦️❄️ Light Freezing Drizzle" ;;
57) current_weather="🌦️❄️ Dense Freezing Drizzle" ;;
61) current_weather="🌧️ Slight Rain" ;;
63) current_weather="🌧️ Moderate Rain" ;;
65) current_weather="🌧️ Heavy Rain" ;;
66) current_weather="🌧️❄️ Light Freezing Rain" ;;
67) current_weather="🌧️❄️ Heavy Freezing Rain" ;;
71) current_weather="🌨️ Slight Snowfall" ;;
73) current_weather="🌨️ Moderate Snowfall" ;;
75) current_weather="🌨️ Heavy Snowfall" ;;
77) current_weather="❄️ Snow Grains" ;;
80) current_weather="🌧️🚿 Slight Rain Showers" ;;
81) current_weather="🌧️🚿 Moderate Rain Showers" ;;
82) current_weather="🌧️🚿 Violent Rain Showers" ;;
85) current_weather="🌨️❄️ Slight Snow Showers" ;;
86) current_weather="🌨️❄️ Heavy Snow Showers" ;;
95) current_weather="⛈️ Slight Thunderstorm" ;;
96) current_weather="⛈️🌨️ Thunderstorm with Slight Hail" ;;
99) current_weather="⛈️🌨️ Thunderstorm with Heavy Hail" ;;
*) current_weather="🌐 Weather Condition Not Recognized" ;;
esac esac
echo Weather checked echo Weather checked
################################################################################# #################################################################################
#################################################################################
download_angle=$(echo "scale=2; -118 + ($highest_download - 0) / ($MAX_DOWNLOAD_SPEED - 0) * (118 - -118)" | bc)
upload_angle=$(echo "scale=2; -118 + ($highest_upload - 0) / ($MAX_UPLOAD_SPEED - 0) * (118 - -118)" | bc)
convert $download_meter \
\( $needle -background none \
-rotate $download_angle \) \
-gravity center \
-compose over \
-composite \
-pointsize 41 \
-font $font \
-fill white \
-annotate +0+-15 $highest_download \
-annotate +120+85 $MAX_DOWNLOAD_SPEED \
$speedtest_download_meter
convert $upload_meter \
\( $needle -background none \
-rotate $upload_angle \) \
-gravity center \
-compose over \
-composite \
-pointsize 41 \
-font $font \
-fill white \
-annotate +0+-15 $highest_upload \
-annotate +120+85 $MAX_UPLOAD_SPEED \
$speedtest_upload_meter
convert $camera_image \
\( $speedtest_download_meter \
-resize $METER_SCALE% \
-gravity southwest \
-geometry +10+0 \) \
-composite \
\( $speedtest_upload_meter \
-resize $METER_SCALE% \
-gravity southwest \
-geometry +$UPLOAD_METER_LOCATION+0 \) \
-composite \
$speedtest_meter_image
#################################################################################
################################################################################# #################################################################################
caption=" caption="
$current_weather $current_weather
🔫 Valorant SEA ping: $valorant_ping ms
🌐 1.1.1.1 ping: $cfdns_ping ms
🌐 8.8.8.8 ping: $googledns_ping ms
*Speedtest by Ookla*: *Speedtest by Ookla*:
🌐 *Server*: $ookla_server, $ookla_city, $ookla_country 🌐 *Server*: $ookla_server, $ookla_city, $ookla_country
🏓 *Latency*: $ookla_ping ms 🏓 *Latency*: $ookla_ping ms
⬇️ *Download*: $ookla_download_mbps Mbit/s, Used: $ookla_bytes_received_mb MB ⬇️ *Download*: $ookla_download_mbps Mbit/s, Used: $ookla_bytes_received_mb MB
⬆️ *Upload*: Upload: $ookla_upload_mbps Mbit/s, Used: $ookla_bytes_sent_mb MB ⬆️ *Upload*: $ookla_upload_mbps Mbit/s, Used: $ookla_bytes_sent_mb MB
*LibreSpeed*: *LibreSpeed*:
🌐 *Server*: $libre_server_name 🌐 *Server*: $libre_server_name
🏓 *Latency*: $libre_ping ms 🏓 *Latency*: $libre_ping ms
⬇️ *Download*: $libre_download Mbit/s, Used: $libre_bytes_received_mb MB ⬇️ *Download*: $libre_download Mbit/s, Used: $libre_bytes_received_mb MB
⬆️ *Upload*: Upload: $libre_upload Mbit/s, Used $libre_bytes_sent_mb MB ⬆️ *Upload*: $libre_upload Mbit/s, Used $libre_bytes_sent_mb MB
*Fast Powered by Netflix*: *Fast Powered by Netflix*:
🏓 *Latency*: $fast_latency ms 🏓 *Latency*: $fast_latency ms
⬇️ *Download*: $fast_download_speed Mbit/s, Used: $fast_downloaded MB ⬇️ *Download*: $fast_download_speed Mbit/s, Used: $fast_downloaded MB
⬆️ *Upload*: Upload: $fast_upload_speed Mbit/s, Used: $fast_uploaded MB ⬆️ *Upload*: $fast_upload_speed Mbit/s, Used: $fast_uploaded MB
Total data wasted: $total_wasted MB
" "
################################################################################# #################################################################################
################################################################################# #################################################################################
#convert "$image" \ echo Uploading to Telegram
# -gravity South \ curl -X POST https://api.telegram.org/bot$TG_BOT_TOKEN/sendMediaGroup \
# -font $PWD/JoyPixels.ttf \ -F chat_id=$TG_CHATID \
# -pointsize 20 \ -F media='[{"type": "photo", "media": "attach://photo1", "caption": "'"$caption"'", "parse_mode": "Markdown"}, {"type": "photo", "media": "attach://photo2"}]' \
# -annotate +0+10 "$caption" \ -F photo1=@$speedtest_meter_image \
# $edited_image -F photo2=@$satellite_image | tee $tg_log
################################################################################# #################################################################################
#################################################################################
echo Uploading to Telegram
curl -X POST https://api.telegram.org/bot$TG_BOT_API_KEY/sendPhoto \
-F chat_id=$TG_CHANNEL_ID \
-F photo=@$image \
-F caption="$caption" \
-F parse_mode=Markdown >> /dev/null
#################################################################################
echo Ok done, Sleeping for $DELAY echo Ok done, Sleeping for $DELAY
sleep $DELAY sleep $DELAY

26
env.example Normal file
View File

@@ -0,0 +1,26 @@
# Your Telegram Bot API Token, Contact @BotFather on Telegram to obtain token
TG_BOT_TOKEN=''
# Your Telegram chat ID, This could be your user, group, supergroup or channel ID
# add "-100" first if supergroup or channel
TG_CHATID=''
# accepted units: s (seconds), m (minutes), h (hours), d (days), ms (milliseconds)
# Example: DELAY=10m
DELAY=30m
# Exmaple: RTSP_URL=rtsp://usernams:password@ipaddress:port/streampath
RTSP_URL=rtsp://
# Use some maps service to fetch this, this is used to fetch weather from API. (Default is Male', Maldives)
LATITUDE="4.1752"
LONGITUDE="73.5092"
# Change these as you see fit based on RTSP image resolution
UPLOAD_METER_LOCATION=510 # in px starting from download meter start
METER_SCALE=100 # in percentage
# Change meter scale in Mbps
MAX_DOWNLOAD_SPEED=300
MAX_UPLOAD_SPEED=50

View File

@@ -1,13 +0,0 @@
TG_BOT_API_KEY=
TG_CHANNEL_ID=
DELAY=10
RTSP_AUTH=false
RTSP_IP=
RTSP_PORT=
RTSP_USERNAME=
RTSP_PASSWORD=
LATITUDE=""
LONGITUDE=""

BIN
resources/CODE_Bold.otf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
resources/cloud.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
resources/crescent_moon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
resources/droplet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
resources/needle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
resources/rainbow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
resources/snowflake.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
resources/sun.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
resources/upload_meter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
resources/wind-face.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
tgchat.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB