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