Add wetter-bot.sh
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -x
|
||||
set -eou pipefail
|
||||
|
||||
logdir="$HOME/.logs/wetter"
|
||||
mkdir -p $logdir
|
||||
log="$logdir/wetter-$(date +%Y-%m-%d_%H:%M).log"
|
||||
exec > >(tee -i ${log}) 2>&1
|
||||
|
||||
# Koordinaten von meinem Zuhause
|
||||
lat=""
|
||||
long=""
|
||||
|
||||
# API-URLs
|
||||
base_url="api.open-meteo.com"
|
||||
api_url="https://${base_url}/v1/forecast/?latitude=${lat}&longitude=${long}&daily=temperature_2m_max¤t=temperature_2m&timezone=Europe%2FBerlin&forecast_days=1"
|
||||
|
||||
# Telegram
|
||||
telegram_token=""
|
||||
CHAT_ID=""
|
||||
|
||||
# Error-Handling
|
||||
handle_error() {
|
||||
MESSAGE="Fehler!"
|
||||
curl -s -X POST https://api.telegram.org/bot${telegram_token}/sendMessage -d chat_id=${CHAT_ID} -d \
|
||||
text="${MESSAGE}" > /dev/null
|
||||
}
|
||||
|
||||
trap handle_error ERR
|
||||
|
||||
# Teste Verbindung (10 Versuche)
|
||||
count=0
|
||||
while true; do
|
||||
if ping -c3 -W3 "${base_url}"; then
|
||||
break
|
||||
else
|
||||
if [[ count -ge 10 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
count=$((count + 1))
|
||||
sleep 5
|
||||
fi
|
||||
done
|
||||
|
||||
# Hole Temperaturen für heute (10 Versuche)
|
||||
count=0
|
||||
while true; do
|
||||
if curl --connect-timeout 3 "${api_url}" | jq . > /tmp/todays-forecast.json; then
|
||||
break
|
||||
else
|
||||
if [[ count -ge 10 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
count=$((count + 1))
|
||||
sleep 5
|
||||
fi
|
||||
done
|
||||
|
||||
max_temp=$(cat /tmp/todays-forecast.json | jq '.daily.temperature_2m_max.[]')
|
||||
current_temp=$(cat /tmp/todays-forecast.json | jq '.current.temperature_2m')
|
||||
|
||||
# Sende Nachricht (Linebreak = %0A)
|
||||
MESSAGE="Heute werden es höchsten ${max_temp} °C, aktuell sind es ${current_temp} °C."
|
||||
curl -s -X POST https://api.telegram.org/bot${telegram_token}/sendMessage -d chat_id=${CHAT_ID} -d \
|
||||
text="${MESSAGE}" > /dev/null
|
||||
Reference in New Issue
Block a user