#!/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 = "0823.48N" # DDMM.mmN (0831.27N) longitude = "08225.91W" # 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 ###### 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/*