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!')

Post Disclaimer

Creative common license BY-NC_SA

Informazioni Importanti

Note generali: Le informazioni contenute in questo articolo sono di carattere informativo e rispecchiano le opinioni personali del autore. Tutte le guide nel sito vengono proposte "as it is" puramente a scopo didattico. L'utente che accetta di seguirne i passaggi si assume ogni responsabilità in caso di guasto/malfunzionamento o altro problema come conseguenza della modifica.

Link di affiliazione e contenuti promozionali: Nei post di iu2frl.it posso includere collegamenti a rivenditori. Posso ricevere una piccola commissione dal rivenditore se effettui un acquisto dopo aver fatto clic su uno di questi link. I post non sono espressamente sponsorizzati da rivenditori, editori, promotori o produttori, se non diversamente specificato chiaramente e tutte le decisioni editoriali sono prese esclusivamente dagli autori dei singoli articoli.

Contenuti riguardanti regolamenti e/o normative: Eventuali riferimenti a normative non costituiscono valore legale, si tratta di libere interpretazioni ed estratti di circolari corredate da eventuali commenti, si invitano tutti gli utenti a verificare la veridicità di tali informazioni sugli organi ufficiali di riferimento, nessuna colpa o responsabilità può essere data agli autori degli articoli.

Licenza di utilizzo: Tutti i contenuti vengono condivisi con licenza CC BY-NC-SA 4.0: Questa licenza consente ad altri di remixare, adattare e sviluppare i contenuti in modo non commerciale, purché accreditino l'autore originale e concedano in licenza le loro nuove creazioni con gli stessi termini. Per maggiori informazioni visitare il sito Creative Commons.

Important Informations

General notes: The information contained in this article is of an informative nature and reflects the personal opinions of the author. All the guides/tutorial on the website are offered "as it is" for educational purposes only. The user who agrees to follow the steps assumes all responsibility in case of failure/malfunctioning or other problem as a result of the modification.

Affiliate links and promotional products: In some posts of iu2frl.it I can include links to resellers. I can get a small commission from the reseller if you make a purchase after clicking on one of these links. The posts are not expressly sponsored by resellers, publishers, promoters or producers, unless otherwise clearly specified and all editorial decisions are made solely by the authors of the individual articles.

Contents about rules and laws: Some articles may contain portions or whole laws or rules regarding specific areas, these kind of content are meant to be indicative only, no responsability can be given to the authors. Always refer to official sources when looking for rules or laws.

Contents licenses: All the contents are published as CC BY-NC-SA 4.0: This license lets others remix, adapt, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.. For more informations please visit Creative Commons website.

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

Rispondi a Marco IU1GKW Annulla risposta

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