Script Linux per APRS Beacon tramite TCP/IP

Oggi vi propongo un semplice script in PERL per inviare il proprio beacon APRS tramite un qualunque computer Linux o Windows con modulo Perl installato:

#! /usr/bin/perl

use IO::Socket;
# -------------- inizio parte da modificare -----------------------

$aprsServer = "italy1.aprs2.net"; # server aprs a cui collegarsi
$port = 14580; # porta del server
$callsign = "XXYXXX-1"; # inserire qui il nominativo
$pass = "YYYYY"; # inserire qui il passcode
$coord = "0000.00N/00000.00E-"; # inserire qui le coordinate
$altInFeet = 0; # inserire qui l'altitudine in piedi
$comment = "APRS TCP/IP Beacon"; # modificare a proprio piacimento

# ------------- fine parte da modificare --------------------------
my $sock = new IO::Socket::INET (
   PeerAddr => $aprsServer,
   PeerPort => $port,
   Proto => 'tcp'
);

die( "Could not create socket: $!n" ) unless $sock;
$sock->recv( $recv_data,1024 );
print $sock "user $callsign pass $pass ver\n";
$sock->recv( $recv_data,1024 );

if( $recv_data !~ /^# logresp $callsign verified.*/ )
{
    die( "Error: invalid response from server: $recv_data\n" );
}

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime();

$message = sprintf( "%s>APRS,TCPIP*:@%02d%02d%02dz%s/A=%06d %s\n",
    $callsign,$hour,$min,$sec,$coord,$altInFeet,$comment );
print $sock $message;
close( $sock );

print "beacon sent.\n"

Per inviare il proprio beacon occorre solamente inserire il server APRS a cui collegarsi (se non si hanno esigenze particolari lasciare quello preimpostato) e la porta, nel campo CALLSIGN inserire il proprio nominativo e appena dopo il PASSCODE (generato alla pagina http://apps.magicbug.co.uk/passcode/index.php ). Per conoscere le proprie coordinate basta andare su google maps, individuare la propria posizione, fare click col tasto destro e cliccare su “cosa c’è qui?“, nella parte bassa dello schermo appariranno le coordinate pronte da copiare, dovrete solo rimuovere il primo punto decimale (ad esempio 45.172127N, 10.785530E diventa 4517.21N e 01078.55E – ATTENZIONE: le coordinate devono per forza essere nel formato APRS o GPS – dopo la E lasciare il carattere “-” per indicare la propria stazione fissa), se volete potete aggiungere la vostra altitudine in piedi ed un eventuale commento.

Una volta salvato il file con estensione .pl nella cartella che preferite dovrete renderlo eseguibile (su linux click destro, proprietà e poi “permetti l’esecuzione di questo file” oppure da terminale chmod +x nomefile.pl ), clickateci su due volte oppure da terminale date il comando ./nomefile.pl per inviare la propria posizione (o eventualmente visualizzare il messaggio di errore di risposta).

aprs-script

Per eseguire in maniera automatica il beacon aprite il terminale e digitate in ordine:

export EDITOR=nano
crontab -e

spostatevi con le frecce alla fine del file e aggiungete una nuova riga:

15 * * * * /percorso/del/file/nomefile.pl

15 corrisponde al minuto di ogni ora a cui il beacon viene inviato, per salvare le modifiche premente CTRL + O e poi CTRL + X

 

NOTA: lo stesso server (o computer) può ospitare più script ed inviare più posizioni, basta ricordarsi di inserire un piccolo ritardo tra le esecuzioni dei vari script e ricordarsi di non eseguire troppo spesso lo stesso script, per stazioni fisse 60 minuti di intervallo sono perfetti.

 

Per dubbi o malfunzionamenti inviatemi una mail tramite il modulo “contatti” nella parte alta della pagina. Buon divertimento!!

Qui trovate il calcolatore per il PASSCODE APRS

Adattato per l’italia dal sito F8FFP – Testato su CentOS 5

Aggiornamento Febbraio 2019:

Su consiglio del amico Francesco IU3GNB riporto anche una versione alternativa:

import aprslib
import datetime

callsign = 'CALLSIGN'
passcode = 'PASSCODE'
port = 14580
callsign_beacon = 'CALLSIGN-10'
timestamp = datetime.datetime.now(datetime.timezone.utc).strftime("%H%M%S")
coord = '0000.00N/00000.00E-';
altInFeet = '000000';
comment = 'APRS TCP/IP Beacon';

AIS = aprslib.IS(callsign, passwd=passcode, port=port)
AIS.connect()

beacon = "{}>APRS,TCPIP*:@{}z{}/A={} {}\n".format(callsign_beacon,timestamp,coord,altInFeet,comment)

AIS.sendall(beacon)

print('beacon sent!')

Una risposta a “Script Linux per APRS Beacon tramite TCP/IP”

  1. Grazie! Davvero uno script utile, ha funzionato al primo colpo!
    Vorrei solamente dare due indicazioni se posso:
    _ ricordarsi di inserire le coordinate in minuti/secondi
    _ attenzione se compilate lo script in windows (ad es. Notepad++) e ad eseguirlo in linux, passatelo con dos2unix per togliere i caratteri di terminazione e renderlo correttamente eseguibile da perl

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *