251 lines
8.5 KiB
Bash
251 lines
8.5 KiB
Bash
#!/bin/bash
|
||
sudo apt update
|
||
sudo apt install python3 -y
|
||
|
||
|
||
if [ -d "/opt/python-wx" ]
|
||
then
|
||
rm -r /opt/python-wx
|
||
fi
|
||
mkdir /opt/python-wx
|
||
|
||
|
||
sudo cat > /lib/systemd/system/py-wx1.service <<- "EOF"
|
||
[Unit]
|
||
Description=Python APRS WX1
|
||
After=network.target
|
||
|
||
[Service]
|
||
ExecStartPre=/bin/sleep 30
|
||
ExecStart=/usr/bin/python3 /opt/python-wx/wx1.py
|
||
WorkingDirectory=/opt/python-wx/
|
||
Restart=on-failure
|
||
RestartSec=3
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
|
||
|
||
EOF
|
||
#
|
||
sudo cat > /opt/python-wx/wx1.py <<- "EOF"
|
||
import socket
|
||
import time
|
||
import requests
|
||
from datetime import datetime, timedelta
|
||
|
||
|
||
|
||
callsign = "HP3ICC-99" # Callsign
|
||
password = "12345" # aprspasscode
|
||
latitude = "0830.60N" # DDMM.mmN (0831.27N)
|
||
longitude = "08021.57W" # DDDMM.mmW (08021.59W)
|
||
comment = "Python APRS WX1" # Beacon comment
|
||
simbol_primary = "/" # Primary symbol id
|
||
simbol_secundary = "_" # Secondary symbol code
|
||
serverHost = "rotate.aprs2.net" # aprs server url cwop.aprs.net / noam.aprs2.net
|
||
serverPort = 14580 # aprs server port
|
||
every = 10 # Time in minutes to send beacon
|
||
api_key = "YOU-APIKEY" # Your OpenWeatherMap API key
|
||
map_id = "YOU-ID-MAP" # your OpenWeatherMap mapid
|
||
|
||
|
||
|
||
|
||
|
||
##############################################################################
|
||
#scrip
|
||
address = f"{callsign}>APHP04,TCPIP:"
|
||
text = "Python APRS WX by HP3ICC"
|
||
login = f"user {callsign} pass {password} vers emq-TE1 Python APRS WX 1.4"
|
||
mlogin = f"{api_key}"
|
||
mid = f"{map_id}"
|
||
|
||
while True:
|
||
try:
|
||
# Get weather data from OpenWeatherMap API
|
||
url = f"https://api.openweathermap.org/data/2.5/weather?id={mid}&lang=es&units=imperial&appid={mlogin}"
|
||
response = requests.get(url)
|
||
data = response.json()
|
||
|
||
if "main" in data and "weather" in data and "wind" in data and "rain" in data:
|
||
temperature = int(data["main"]["temp"])
|
||
temperature = str(temperature).zfill(3)
|
||
presure = data["main"]["pressure"]
|
||
wind = int(data["wind"]["speed"])
|
||
wind = str(wind).zfill(3)
|
||
gust = int(data["wind"]["gust"])
|
||
gust = str(gust).zfill(3)
|
||
deg = int(data["wind"]["deg"])
|
||
deg = str(deg).zfill(3)
|
||
rain = int(data["rain"]["1h"])
|
||
rain = str(rain).zfill(3)
|
||
name = data["name"]
|
||
humidity = data["main"]["humidity"]
|
||
weather_description = data["weather"][0]["description"]
|
||
weather_data = f"{deg}/{wind}g{gust}t{temperature}r{rain}p000h{humidity}b{presure}0"
|
||
else:
|
||
weather_data = "Weather data not available"
|
||
current_time_utc = datetime.utcnow().strftime("%d%H%M")
|
||
packet = f"{address}@{current_time_utc}z{latitude}{simbol_primary}{longitude}{simbol_secundary}{weather_data}{comment} / Clima en {name}: {weather_description}"
|
||
packet2 = f"{address}>{text}"
|
||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||
sock.connect((serverHost, serverPort))
|
||
sock.send(f"{login}\n".encode())
|
||
sock.send(f"{packet}\n".encode())
|
||
sock.send(f"{packet2}\n".encode())
|
||
sock.close()
|
||
except Exception as e:
|
||
print(f"Error al enviar el paquete: {e}")
|
||
|
||
time.sleep(every * 60)
|
||
|
||
EOF
|
||
###########################
|
||
sudo cat > /bin/menu-py-wx <<- "EOF"
|
||
#!/bin/bash
|
||
while : ; do
|
||
choix=$(whiptail --title "Raspbian Proyect HP3ICC Menu Python WX" --menu "Suba o Baje con las flechas del teclado y seleccione el numero de opcion:" 23 56 13 \
|
||
1 " Editar WX-1 " \
|
||
2 " Editar WX-2 " \
|
||
3 " Editar WX-3 " \
|
||
4 " Editar WX-4 " \
|
||
5 " Editar WX-5 " \
|
||
6 " Editar WX-6 " \
|
||
7 " Editar WX-7 " \
|
||
8 " Editar WX-8 " \
|
||
9 " Start & Restart WX " \
|
||
10 " Stop WX " \
|
||
11 " Menu Principal " 3>&1 1>&2 2>&3)
|
||
exitstatus=$?
|
||
#on recupere ce choix
|
||
#exitstatus=$?
|
||
if [ $exitstatus = 0 ]; then
|
||
echo "Your chosen option:" $choix
|
||
else
|
||
echo "You chose cancel."; break;
|
||
fi
|
||
# case : action en fonction du choix
|
||
case $choix in
|
||
1)
|
||
sudo nano /opt/python-wx/wx1.py ;;
|
||
2)
|
||
sudo nano /opt/python-wx/wx2.py ;;
|
||
3)
|
||
sudo nano /opt/python-wx/wx3.py ;;
|
||
4)
|
||
sudo nano /opt/python-wx/wx4.py ;;
|
||
5)
|
||
sudo nano /opt/python-wx/wx5.py ;;
|
||
6)
|
||
sudo nano /opt/python-wx/wx6.py ;;
|
||
7)
|
||
sudo nano /opt/python-wx/wx7.py ;;
|
||
8)
|
||
sudo nano /opt/python-wx/wx8.py ;;
|
||
9)
|
||
choix_WX-$(whiptail --title "Iniciar WX" --menu "Seleccione estacion WX a iniciar:" 15 40 8 \
|
||
1 "WX-1" \
|
||
2 "WX-2" \
|
||
3 "WX-3" \
|
||
4 "WX-4" \
|
||
5 "WX-5" \
|
||
6 "WX-6" \
|
||
7 "WX-7" \
|
||
8 "WX-8" \
|
||
3>&1 1>&2 2>&3)
|
||
exitstatus_WX-$?
|
||
|
||
if [ $exitstatus_WX-= 0 ]; then
|
||
echo "Iniciar WX- $choix_WX-
|
||
# Agrega aqui la logica para iniciar el WX-correspondiente (usando el valor de $choix_WX-
|
||
sudo systemctl stop py-wx$choix_WX-service && sudo systemctl start py-wx$choix_WX-service && sudo systemctl enable py-wx$choix_WX-service
|
||
else
|
||
echo "Volver al menu principal."
|
||
fi
|
||
;;
|
||
10)
|
||
choix_WX-$(whiptail --title "Detener WX" --menu "Seleccione estacion WX a detener:" 15 40 8 \
|
||
1 "WX-1" \
|
||
2 "WX-2" \
|
||
3 "WX-3" \
|
||
4 "WX-4" \
|
||
5 "WX-5" \
|
||
6 "WX-6" \
|
||
7 "WX-7" \
|
||
8 "WX-8" \
|
||
3>&1 1>&2 2>&3)
|
||
exitstatus_WX-$?
|
||
|
||
if [ $exitstatus_WX-= 0 ]; then
|
||
echo "Detener WX- $choix_WX-
|
||
# Agrega aqui la logica para iniciar el WX-correspondiente (usando el valor de $choix_WX-
|
||
sudo systemctl stop py-wx$choix_WX-service && sudo systemctl disable py-wx$choix_WX-service
|
||
else
|
||
echo "Volver al menu principal."
|
||
fi
|
||
;;
|
||
11)
|
||
break;
|
||
esac
|
||
done
|
||
exit 0
|
||
|
||
EOF
|
||
######
|
||
chmod +x /bin/menu*
|
||
##########################
|
||
cp /opt/python-wx/wx1.py /opt/python-wx/wx2.py
|
||
cp /opt/python-wx/wx1.py /opt/python-wx/wx3.py
|
||
cp /opt/python-wx/wx1.py /opt/python-wx/wx4.py
|
||
cp /opt/python-wx/wx1.py /opt/python-wx/wx5.py
|
||
cp /opt/python-wx/wx1.py /opt/python-wx/wx6.py
|
||
cp /opt/python-wx/wx1.py /opt/python-wx/wx7.py
|
||
cp /opt/python-wx/wx1.py /opt/python-wx/wx8.py
|
||
|
||
sudo sed -i "s/Python APRS WX1/Python APRS WX1/g" /opt/python-wx/wx1.py
|
||
sudo sed -i "s/Python APRS WX1/Python APRS WX2/g" /opt/python-wx/wx2.py
|
||
sudo sed -i "s/Python APRS WX1/Python APRS WX3/g" /opt/python-wx/wx3.py
|
||
sudo sed -i "s/Python APRS WX1/Python APRS WX4/g" /opt/python-wx/wx4.py
|
||
sudo sed -i "s/Python APRS WX1/Python APRS WX5/g" /opt/python-wx/wx5.py
|
||
sudo sed -i "s/Python APRS WX1/Python APRS WX6/g" /opt/python-wx/wx6.py
|
||
sudo sed -i "s/Python APRS WX1/Python APRS WX7/g" /opt/python-wx/wx7.py
|
||
sudo sed -i "s/Python APRS WX1/Python APRS WX8/g" /opt/python-wx/wx8.py
|
||
|
||
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx2.service
|
||
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx3.service
|
||
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx4.service
|
||
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx5.service
|
||
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx6.service
|
||
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx7.service
|
||
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx8.service
|
||
|
||
sudo sed -i "s/WX1/WX2/g" /lib/systemd/system/py-wx2.service
|
||
sudo sed -i "s/WX1/WX3/g" /lib/systemd/system/py-wx3.service
|
||
sudo sed -i "s/WX1/WX4/g" /lib/systemd/system/py-wx4.service
|
||
sudo sed -i "s/WX1/WX5/g" /lib/systemd/system/py-wx5.service
|
||
sudo sed -i "s/WX1/WX6/g" /lib/systemd/system/py-wx6.service
|
||
sudo sed -i "s/WX1/WX7/g" /lib/systemd/system/py-wx7.service
|
||
sudo sed -i "s/WX1/WX8/g" /lib/systemd/system/py-wx8.service
|
||
|
||
sudo sed -i "s/wx1/wx2/g" /lib/systemd/system/py-wx2.service
|
||
sudo sed -i "s/wx1/wx3/g" /lib/systemd/system/py-wx3.service
|
||
sudo sed -i "s/wx1/wx4/g" /lib/systemd/system/py-wx4.service
|
||
sudo sed -i "s/wx1/wx5/g" /lib/systemd/system/py-wx5.service
|
||
sudo sed -i "s/wx1/wx6/g" /lib/systemd/system/py-wx6.service
|
||
sudo sed -i "s/wx1/wx7/g" /lib/systemd/system/py-wx7.service
|
||
sudo sed -i "s/wx1/wx8/g" /lib/systemd/system/py-wx8.service
|
||
|
||
sudo chmod 644 /lib/systemd/system/py-wx1.service
|
||
sudo chmod 644 /lib/systemd/system/py-wx2.service
|
||
sudo chmod 644 /lib/systemd/system/py-wx3.service
|
||
sudo chmod 644 /lib/systemd/system/py-wx4.service
|
||
sudo chmod 644 /lib/systemd/system/py-wx5.service
|
||
sudo chmod 644 /lib/systemd/system/py-wx6.service
|
||
sudo chmod 644 /lib/systemd/system/py-wx7.service
|
||
sudo chmod 644 /lib/systemd/system/py-wx8.service
|
||
|
||
systemctl daemon-reload
|
||
chmod +x /opt/python-wx/*
|