python-aprs-wx/install.sh

251 lines
8.5 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.

#!/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/*