Chi sono
HamRadio
Microwave contest
ATV
APRS
Server Chat radioamatoriale
WiFi
Hardware
Progetti radioamatoriali
Monitoraggio frane
Attività lavorative
Per acquistare radiocomandi, ricevitori, apriporta, apricancello
Negozio online di radiocomandi, riceventi, apriporta
Software
Server ham
Software ham
Telemetria SuperVozelj
SuperVozelj PacketCam
Utils SuperVozelj
Altri programmi...
Form per testare OpenOffice
Pubblicazioni
Dispositivi elettronici
Compatibilità elettromagnetica
Minicorso HTML
Pubblicazioni Linux
Cos'è Linux?
Kernel hacking
Installazione AX.25
EMail antivirus
RAID1 mini-HOWTO
Linux/Compaq EVO n115
Altro...
Visualizzatore QTH Locator su GoogleMaps
Mio BLOG
Foto viaggi
Barzellette ingegneri
Homepage S53MV
Un buon avvocato!
Una bella foto
OpenOffice.org
Ricettario
Quartier del Piave news
Agricoltura, chimica e biologico
Coltivare il PROSECCO in modo BIOLOGICO
Contatti
Lascia commento nel guestbook
InternetRelayChat:
Nominativo:

Linux server
Compressed with mod_gzip


Ospitato da
Ir3ip Hamradio Server

View this page in english

Automatic Position Reporting System

What is APRS?
APRS is a simple way to exchange position information on a amateur radio network.
Also, it permits to send short messages to other stations, queries, bulletins, and so on...

On ir3ip you will found a forum dedicated to the APRS activity; also, if you need other information or know available APRS projects, you can enter the APRS hamradio directory.

aprs.ir3ip.net: the APRS server

Do you know that ir3ip is a APRS server?
Now there are several port available to the hamradio users, to exchange APRS traffic.
The main ports are:
10153
Transmit only APRS data of swiss, italian and slovenian stations.
10152
Transmit all world-wide APRS traffic
10151
Transmit all world-wide APRS traffic, and at the connection it also transmit the last 30 minutes of data

If you have installed APRSD server, and you are interested about knowing an easy way to filter data, just take a look at the following Tcl script:


#! /usr/bin/tclsh
#aprslocal: Tcl script which filter data read from APRSD daemon
#Called by xinetd superdaemon (file /etc/xinetd.d/aprslocal)
#service aprslocal
#{
#        socket_type             = stream
#        wait                    = no
#        user                    = nobody
#        server                  = /usr/local/bin/aprslocal
#        log_on_success          += USERID
#        log_on_failure          += USERID
#}
# Written by Paolo Subiaco iw3grx@ir3ip.net http://www.ir3ip.net/iw3grx
#

set sd [socket 44.134.177.204 10152]
fconfigure stdin  -blocking 0 ; #nonblocking stdin
for {set i 0} {$i<10} {incr i} {
        if {[gets stdin linein]>0} {
                puts $sd "$linein\r"
                flush $sd
        }
        if {[gets $sd line]>0} {
                puts "$line\r"
        }
}
while {[gets $sd line]>=0} {
  if {[regexp {^I|:I[0-Z]+|^T7|:T7|^HB9|:HB9|^S5[0-9]|:S5[0-9]|^OE[0-9]|:OE[0-9]|^9A[0-9]|:9A[0-9]} "$line"]} {
                puts "$line\r"
        }
        if {[gets stdin linein]>0} {
                puts $sd "$linein\r"
                flush $sd
        }
}
Do you think there will be several buffer overflows?
If you think so, please help me improving the script security! :-)


SuperVozelj telemetry transmission on APRS network

The small Perl script below permit to extract temperature information from svstat data file which may be transmitted on the APRS network as weather stations do.

The script may be called from the crontab:
59 * * * * /path/to/aprstelem.pl

Here is the perl script:

#! /usr/bin/perl
# Small script which read SuperVozelj temperature from svstat data, and send
# the telemetric information on APRS internet server aprsd
use Socket;
$aprsServer = "ir3ip.ampr.org";
$port = 1315;
$datapath="/home/iw3grx/svstat/dat/";
#$datapath="/home/iw3grx/projects/svstat/dat/";


($d1, $d2, $d3, $d4, $rawserver) = gethostbyname($aprsServer);
$serveraddr = pack("Sna4x8",2,$port,$rawserver);
$prototype = getprotobyname('udp');
socket(SOCKET,2,SOCK_DGRAM,$prototype) || die("No Socket\n");

$nodenum=0;
$callsign[$nodenum]="ir3cv";            # callsign in lowercase (as data filename)
$coord[$nodenum]="4603.50N/01218.10E_"; # Latitude/Longitude; '_' specify the WX symbol
$channel[$nodenum]=3;                   # Number of AD channel (from 1 to 11)
$qth[$nodenum]="Col Visentin";                                  # Node location
$altitude[$nodenum]=1760;                                                               # Node altitude (in metres)
$nodenum++;
$callsign[$nodenum]="ir3csm";
$coord[$nodenum]="4554.10N/01205.00E_";
$channel[$nodenum]=4;
$qth[$nodenum]="Col San Martino";
$altitude[$nodenum]=156;
$nodenum++;
$callsign[$nodenum]="ir3mco";
$coord[$nodenum]="4548.43N/01132.38E_";
$channel[$nodenum]=3;
$qth[$nodenum]="Monte Corno";
$altitude[$nodenum]=1350;
$nodenum++;
$callsign[$nodenum]="ir3fon";
$coord[$nodenum]="4606.30N/01307.10E_";
$channel[$nodenum]=3;
$qth[$nodenum]="Savalons";
$altitude[$nodenum]=105;
$nodenum++;


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

for ($i=0; $i<$nodenum; $i++) {
  $filename=$datapath.$callsign[$i].".dat";
  if (!open($fd,$filename)) {
    # Error opening data file
    printf(stderr "Data file %s does not exist or is not readable!\n",$filename);
    next;
  }
  # must be improved (read in the file header): $size=48
  $size=48;
  seek($fd,-1*$size,2);
  if (read($fd,$buffer,4)!=4) {
    # Error reading the first 4 bytes (timestamp)
    printf(stderr "Error reading timestamp from data file %s!\n",$filename);
    close($fd);
    next;
  }
        $time=unpack("I",$buffer);
  if (abs($now-$time) > 9000) {
    printf(stderr "Temperature from %s node is too old (%d seconds)\n",$callsign[$i],($now-$time));
    close($fd);
    next;
  }
  if ($channel[$i]>1) {
    seek($fd,4*($channel[$i]-1),1);
  }
  if (read($fd,$buffer,4)!=4) {
    # Error reading temperature value
    printf(stderr "Error reading temperature value from data file %s!\n",$filename);
    close($fd);
    next;
  }
        $temp=unpack("f",$buffer);
  $message=sprintf("%s>APWX,WIDE:@%02d%02d%02dz%s.../...g...t%03d\0",
    uc($callsign[$i]),$mday,$hour,$min,$coord[$i],int($temp*1.8+32));
  send(SOCKET,$message,0,$serveraddr);
  $message=sprintf("%s>APWX,WIDE:@%02d%02d%02dz%s/A=%06d SuperVozelj node %s, %dm asl\0",
                uc($callsign[$i]),$mday,$hour,$min,$coord[$i],$altitude[$i]/0.305,$qth[$i],$altitude[$i]);
        send(SOCKET,$message,0,$serveraddr);
        close($fd);
}



Interesting messages



Xastir APRS program

Xastir is a nice APRS program for Linux. Take a look at the primary website www.xastir.org!
A collection of MAPS is available in the ir3ip webserver, at http://www.ir3ip.net/pub/ham/aprs/
The best, simple and very fast Europe vectorial map is available here
Other maps are available via ftp at ftp://aprs.rutgers.edu/pub/hamradio/APRS
Here is a screenshot of Xastir where you can see S53SM around North-East of Italy with his airplane!
Xastir screenshot with trace of S53SM with his airplane