I agree the initial code effort is trivially easy, and this does indeed work.
The goal I was shooting for was a little beyond this. Here's the requirements
doc for what I'm aiming for:
* work for multiple users, with multiple notification paths for each.
Specifically, provide multiple email addresses and the option for an APRS
message sent to a specific call sign.
* allow for both point and area zones of interest, i.e. "within 500 meters of
point x,y", or "incusion into zone defined by "x,y (NE) - x,y (SW)"
* differentiate between "approaching" and "departing" (i.e. "AB0OO is
approaching home" shouldn't trigger when I leave the house in the morning to
go to work)
* set up time windows for various notifications, and reset-times that prevent
rapid-fire messaging (unfortunately, your Perl script will page me at 0200,
when I really don't want to be woken up).
The design of a set of business rules, a method for storing those rules, and
the logic to execute those rules requires some framework and some support code
to go with it. On top of that, the user interface needs to be something more
than "edit this script with your hardcoded information". Something more along
the lines of "go to this web page, register as a user, select call signs
you're interested in, select the times and other business rules you want
applied to those callsigns, send a test message, etc" is what I'm shooting
for. Finally, in the end, it needs to be documented (which your Perl is,
kudos to you) and published in a source repository so people 5 years from now
can find it, modify it, extend it, or whatever. There's nothing more
frustrating than having a new guy join the APRS sig 10 months from now and ask
this same question, and someone shoot back "yeah, there was a Perl script
posted a few months back that does that. Search the archives."
On the other hand, quick and dirty gets the job done. It's just unfortunate
that so many good ideas die at the "quick and dirty, I scratched my itch
you're on your own for anything else" stage.
Imagine the value of being part of a road race that is supported by APRS. You
can ask the race director for his cell phone number, and then set him up to
recieve a text message whenever the LEAD, TRAIL, or SAG tracker passes any
number of specific points on the course...
Thanks for proving it can be done in less than 60 lines of Perl, though. I
think all 3 of Larry Wall's "Three Virtues of a Programmer" are well
represented here.
John Gorkos
Post by Rich MulveyI hadn't followed this topic before, but if you have a machine you can run
perl on, this is trivially easy. I just whipped up this script and tested
it. Replace the callsign, recipient, and sender addresses, and run it
periodically.
It will store the last position found for the callsign, then, then next
time it runs, if the lat/long differ, it will send an email. Most cell
providers provide an email gateway to allow you to email SMS messages to
someone.
Obviously you'd want to surpress position changes within some window (
i.e., less than 100 feet ). Plus probably some more error checking. ;-)
---
#!/usr/bin/perl
use strict;
use Ham::APRS::LastPacket;
use Storable;
use Email::Sender::Simple qw(sendmail);
use Email::Simple;
use Email::Simple::Creator;
my $callsign = "MYCALLSIGN";
my %lastPosition;
my $aprs = Ham::APRS::LastPacket->new;
$aprs->set_callsign($callsign);
# Load the last position, if we've stored it
if( -r $callsign ) {
%lastPosition = %{retrieve $callsign};
}
my $packet = $aprs->get_data;
die $aprs->error_message if $aprs->is_error;
# get the position report
print "$callsign is at
$packet->{position}->{latitude}->{degrees},$packet->{position}->{longitude}
->{degrees}\n";
# If the position has changed, send out an email
if( ( $lastPosition{latitude} != $packet->{position}->{latitude}->{degrees}
) ||
( $lastPosition{'longitude'} !=
$packet->{position}->{longitude}->{degrees} ) ) {
sendEmail();
}
# Save the position
$lastPosition{'latitude'} = $packet->{position}->{latitude}->{degrees};
$lastPosition{'longitude'} = $packet->{position}->{longitude}->{degrees};
store \%lastPosition, $callsign;
sub sendEmail {
print "Sending a movement report\n";
my $email = Email::Simple->create(
header => [
To => $recipient,
From => $sender,
Subject => "$callsign position report",
],
body => "$callsign has moved",
);
sendmail($email);
}
Post by John GorkosPost by John GorkosPost by Steve HanisHi John,
I have no intention of irritating anyone one the list, and apologize
if I have done so. I haven't written any programs since college back
in the early 90's and don't consider myself programmer, I use Linux
occasionally. I was made aware of this list after I posed this same
question on the APRS Yahoo group.
What I am looking for is something like what is described on
"APRS Messages to Your Cellphone: . N3FLR Frank Rossi reports that he
uses "YahooAlert" to send all of his APRS messages to his cell phone.
First, Find-U has RSS output capability so he has his computer RSS
Feed Reader watching his Feed From FindU, and YahooAlert also
watching. After setting up Yahoo Alert for a pager, he uses his
just need to know what your phone's "e-mail address" to "text
address" is. You don't need mobile internet to do it this way, just
text ability. That will work with a text pager also. . When FINDU
sees a message to him on APRS it generates an RSS Feed that now
Yahoo-Alerts is watching. YahooAlerts then forwards the RSS Message
as Text to his cell phone. Although this is only one way
communications, it still lets him receive his APRS messages. He also
says that you can set up RSS feeds from FindU for weather alerts, or
APRS users X amount of miles from you. You can make the miles
anything you want. He has not tried that function yet."
I've tried this to no avail, but was wondering if anyone else had
come up with a different way to accomplish the same goal. I have no
commercial interest in this, I just want to be pinged on my cell
phone (SMS, Email, IM) when my friend goes mobile, or for special
cases like a high altitude balloon with a known call sign goes
active on APRS.
Kind Regards,
Steve
Post by John GorkosIt "can" be done. It hasn't yet. What you're asking for is 4-6
hours of
Post by John GorkosPost by Steve HanisPost by John Gorkoscustom coding (mostly for the web interface). Do you have a web
server
Post by John GorkosPost by Steve HanisPost by John Gorkosthat can host something like this? I've got a few hours this weekend
I
Post by John GorkosPost by Steve HanisPost by John Gorkoscan use to code this.
You want a web interface that allows you to enter a "monitored"
call sign, and an email address to send a message to when that
position report from that monitored callsign indicates movement.
You want one message only. Then, time passes and the monitored
station stops
moving.
Post by John GorkosPost by Steve HanisPost by John GorkosOnce the station starts moving again, you want another text message.
The SMS messages will have to be sent via email (i.e.
and
Post by John GorkosPost by Steve HanisPost by John Gorkosless standard.
Do you have any programming skills you could apply to this? Web
design,
Post by John GorkosPost by Steve HanisPost by John Gorkosmaybe? I hate web design, but the back-end portion isn't too
difficult.
Post by John GorkosPost by Steve HanisPost by John GorkosThis request will probably irritate some people on this list,
FWIW. Everyone has an imaginary line they draw between "ham
radio" and
"commercial radio and internet." Using your cellphone/commercial
radio
Post by John GorkosPost by Steve HanisPost by John Gorkosto get updates about APRS happenings on ham radio is probably on the
far
Post by John GorkosPost by Steve HanisPost by John Gorkosside of some peoples' lines.
John Gorkos
AB0OO
Post by Steve HanisThank you for your reply. I am looking for a way to trigger an
email,
to
Post by John GorkosPost by Steve HanisPost by John GorkosPost by Steve Hanisme when I am working or relaxing at home. Can this be done?
Kind Regards,
Steve
On Tue, Feb 8, 2011 at 10:41 AM, Guido Trentalancia
Post by Guido TrentalanciaHello Steve !
Post by Steve HanisA friend and I just starting using APRS. Is there way to
trigger a
active
view
this
Post by John GorkosPost by Steve HanisPost by John GorkosPost by Steve HanisPost by Guido TrentalanciaPost by Steve Hanislist, I am a newbie.
Thanks,
Steve
AB5ID
Suppose your friend has call AB4HB, then you could use
APRSCALLSIGN=AB4HB
SMTP_SERVER=smtp.ab5id.org
axlisten -a | grep -q " fm $APRSCALLSIGN to " && echo "An APRS
packet
Post by John GorkosPost by Steve HanisPost by John GorkosPost by Steve HanisPost by Guido Trentalanciafrom $APRSCALLSIGN has been heard" > /tmp/aprs_message.txt &&
env MAILRC=/dev/null from=$FROMEMAILADDRESS smtp=$SMTP_SERVER
mailx
-v -n
-f
Post by John GorkosPost by Steve HanisPost by John GorkosPost by Steve HanisPost by Guido Trentalancia/tmp/aprs_message.txt
Note that APRSCALLSIGN is case sensitive (unless you pass the
-i option to grep). Note that SMTP_SERVER needs to be defined
according
message
might
Post by John GorkosPost by Steve HanisPost by John GorkosPost by Steve HanisPost by Guido Trentalancianot be desirable as there might be a lot of packets coming
continuously (so you might do things better with some extra
code that checks whether a message has already been sent
recently, for example by creating a temporary file each time a
message is sent
and
Post by John GorkosPost by Steve HanisPost by John GorkosPost by Steve HanisPost by Guido Trentalanciathen checking that the timestamp of such file is not too recent
before sending a new email message).
(ax_emergency_listen) which is generally used to monitor APRS
emergency packets and adapt it to your needs (by modifying the
http://iz6rdb.trentalancia.com/en/aprs_igate.html
73,
Guido IZ6RDB
Believe it or not, I've not forgotten about this. I've spent about 10
hours
Post by John Gorkosso far doing design and outline work on the code. I've also had to hunt
down
Post by John Gorkossome extremely nasty off-by-one bugs in the Java AVRS position parsers.
Now
Post by John Gorkosthat I'm getting reliable, accurate positions from all 4 types of
position
Post by John Gorkospackets (compressed, uncompressed, MICe, and raw NMEA) I can move on to
alarms.
In the AVRS sourceforge repo, there is a new package called Wedjet
(net.ab0oo.aprs.wedjet) that contains some rudimentary code for
monitoring
Post by John Gorkospositions. The alerting portion will come later. I'm using a
Spring-injected
Post by John GorkosJetty container as a base web-server, so the whole thing can be self-
contained.
Give me another few days and I'll have something you can play with.
Once
we
Post by John Gorkosreach a stable beta point, we'll look for hosting options.
John Gorkos
AB0OO
John,
A sincere thank you. I had no idea how much work would be involved.
Kind Regards,
Steve
AB5ID
_______________________________________________
aprssig mailing list
https://www.tapr.org/cgi-bin/mailman/listinfo/aprssig