python-aprs-wx/install.sh

297 lines
10 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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]
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 = "HP0XXX-13" # Callsign (HP0XXX-13)
password = "12345" # aprspasscode (12345)
latitude = "0831.27N" # DDMM.mmN (0831.27N)
longitude = "08021.59W" # 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 = "APIKEY" # Your OpenWeatherMap API key (abcd12345567890)
map_id = "MAP-ID" # Your OpenWeatherMap Map ID (123456)
##############################################################################
#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}"
time.sleep(30)
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:
name = data["name"]
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)
humidity = data["main"]["humidity"]
weather_description = data["weather"][0]["description"]
weather_data = f"{deg}/{wind}g{gust}{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 15 \
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 " Editar WX-9 " \
10 " Editar WX-10 " \
11 " Editar WX-11 " \
12 " Editar WX-12 " \
13 " Start & Restart WX " \
14 " Stop WX " \
15 " 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)
sudo nano /opt/python-wx/wx9.py ;;
10)
sudo nano /opt/python-wx/wx10.py ;;
11)
sudo nano /opt/python-wx/wx11.py ;;
12)
sudo nano /opt/python-wx/wx12.py ;;
13)
choix_servicio=$(whiptail --title "Iniciar WX" --menu "Seleccione el WX a iniciar:" 18 40 12 \
1 "WX-1" \
2 "WX-2" \
3 "WX-3" \
4 "WX-4" \
5 "WX-5" \
6 "WX-6" \
7 "WX-7" \
8 "WX-8" \
9 "WX-9" \
10 "WX-10" \
11 "WX-11" \
12 "WX-12" \
3>&1 1>&2 2>&3)
exitstatus_servicio=$?
if [ $exitstatus_servicio = 0 ]; then
echo "Iniciar servicio: $choix_servicio"
# Agrega aquií la logica para iniciar el servicio correspondiente (usando el valor de $choix_servicio)
sudo systemctl stop py-wx$choix_servicio.service && sudo systemctl start py-wx$choix_servicio.service && sudo systemctl enable py-wx$choix_servicio.service
else
echo "Volver al menu principal."
fi
;;
14)
choix_servicio=$(whiptail --title "Detener WX" --menu "Seleccione el WX a detener:" 18 40 12 \
1 "WX-1" \
2 "WX-2" \
3 "WX-3" \
4 "WX-4" \
5 "WX-5" \
6 "WX-6" \
7 "WX-7" \
8 "WX-8" \
9 "WX-9" \
10 "WX-10" \
11 "WX-11" \
12 "WX-12" \
3>&1 1>&2 2>&3)
exitstatus_servicio=$?
if [ $exitstatus_servicio = 0 ]; then
echo "Detener servicio: $choix_servicio"
# Agrega aqui la logica para iniciar el servicio correspondiente (usando el valor de $choix_servicio)
sudo systemctl stop py-wx$choix_servicio.service && sudo systemctl disable py-wx$choix_servicio.service
else
echo "Volver al menu principal."
fi
;;
15)
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
cp /opt/python-wx/wx1.py /opt/python-wx/wx9.py
cp /opt/python-wx/wx1.py /opt/python-wx/wx10.py
cp /opt/python-wx/wx1.py /opt/python-wx/wx11.py
cp /opt/python-wx/wx1.py /opt/python-wx/wx12.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
sudo sed -i "s/Python APRS WX1/Python APRS WX9/g" /opt/python-wx/wx9.py
sudo sed -i "s/Python APRS WX1/Python APRS WX10/g" /opt/python-wx/wx10.py
sudo sed -i "s/Python APRS WX1/Python APRS WX11/g" /opt/python-wx/wx11.py
sudo sed -i "s/Python APRS WX1/Python APRS WX12/g" /opt/python-wx/wx12.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
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx9.service
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx10.service
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx11.service
cp /lib/systemd/system/py-wx1.service /lib/systemd/system/py-wx12.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/WX9/g" /lib/systemd/system/py-wx9.service
sudo sed -i "s/WX1/WX10/g" /lib/systemd/system/py-wx10.service
sudo sed -i "s/WX1/WX11/g" /lib/systemd/system/py-wx11.service
sudo sed -i "s/WX1/WX12/g" /lib/systemd/system/py-wx12.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/wx9/g" /lib/systemd/system/py-wx9.service
sudo sed -i "s/wx1/wx10/g" /lib/systemd/system/py-wx10.service
sudo sed -i "s/wx1/wx11/g" /lib/systemd/system/py-wx11.service
sudo sed -i "s/wx1/wx12/g" /lib/systemd/system/py-wx12.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
sudo chmod 644 /lib/systemd/system/py-wx9.service
sudo chmod 644 /lib/systemd/system/py-wx10.service
sudo chmod 644 /lib/systemd/system/py-wx11.service
sudo chmod 644 /lib/systemd/system/py-wx12.service
systemctl daemon-reload
chmod +x /opt/python-wx/*