Announcement

Collapse
No announcement yet.

Amateur Radio APRS Parsing Plugin

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Amateur Radio APRS Parsing Plugin

    What is APRSParser?
    APRSParser is used to capture and parse amateur radio APRS data from either your own internal server, or an APRS-IS server then trigger events based on location. Right now the focus of the plugin is to grab location information of specified SSIDs, calculate the distance based on specified locations, then trigger events accordingly. It will also allow you to map locations of the SSIDs you specify, and even track them on a Historical basis. Weather data can also be decoded for received weather stations.

    What is APRS?
    See here for information: http://web.usna.navy.mil/~bruninga/aprs.html

    What servers do you support?
    It currently can grab information from Xastir or from an APRS-IS server. It can grab both clear text and Mic-E location data, all except for direct NMEA transmissions at this time. In theory just about any application that outputs clear text APRS data should work as long as you know the port to connect to.
    APRS-IS servers can be found here: http://www.aprs-is.net/APRSServers.htm
    Xastir information can be found here: http://www.xastir.org

    What ports do I connect to on my server/aprs software?
    All depends on the server you are using. Xastir defaults to port 2023, while APRS-IS supports multiple ports depending on the data you require. You can often connect to the server by clicking on the link above, and it will list the currently supported ports. By default the plugin is read only so does not send any data to the APRS-IS server. However for location filtering, there is an option when connecting to the APRS-IS server to send your location information from the Options page in order to do filtering such as m/30, etc.

    What version of Homeseer does this require?
    Plugin utilizes .Net Framework 2.0 and has been written for Homeser 2.1 or higher.

    What kind of mapping does it support?
    You can map with either Google Maps or Microsoft Live Maps.

    Why doesn't the Google Maps link work?
    First you need a Google Maps API key which can be requested by following the link inside of the Options link. You will need to request it based on http://machinename. Google is very specific on the url, so if you specified http://homeseer, http://localhost or http://www.my-dynamic-dns-name.com won't work. Also please note Google Maps does not fully support mapping outside the US and Canada, so it may display grey boxes.

    How do I enable debugging?
    To enable, check the Debug checkbox under Options. I wouldn't let it run to long as it currently logs to the Homeseer log for now (will be changing that hopefully in the future.) However it should dump all incoming data it receives as it tries to decode it. When done, just uncheck the Debug checkbox under Options.

    Will this be a free plugin?
    My goal is to leave this plugin free. It does have an option for donations in the About screen, but is not required (but is appreciated ).

    What features are coming/maybe coming?
    Potentially the ability to send Homeseer weather station information direct to an APRS-IS server without the need for another client. Change debug logging to write to log files rather than HS log. Database management needs to be done as well... ie compact, clear, etc. Lastly a Help file is badly needed.

    APRSParser isn't decoding my location from my packet, what can I do?
    I'm trying to write the parser to support as many APRS packets as possible. It's possible I haven't gotten to that one yet... or it may be transmitting bad data believe it or not. In any case, feel free to send me the packet string and I'll do my best to see what's wrong and try to add support as well. Here's some examples of what to send:
    KB1MTS-1>APX185,N1NCI-3,WIDE1,K1DF-7,WIDE2*,qAR,K2RRT-1:=4232.90N/07133.65W_360/001g001t020r000P000p000h56b10142XOWW
    KB1MTS-7>4R3R9P,WIDE2-2,qAo,KB1MTS-1:'c=]l [/>
    Another great resource as well is to check FindU. Many times stations are transmitting bad location data that can't be decoded so it's being thrown out.

    Scripting Functions:
    return_ssidlocation(devicecode) - Returns text string of SSID location; i.e. "Home", "Work", "Boston", etc.
    Example:
    Code:
    hs.Plugin("APRSParser").return_ssidlocation("t1")
    Version Information:

    LATEST STABLE BETA VERSION can be found here: http://forums.homeseer.com/showpost....&postcount=118

    Changes for 1.1.14
    - Added option to only decode Weather information if the station is being tracked
    - Added preliminary support for database management, currently just a placeholder at this point
    - Added ability to hide Latitude/Longitude from being added to the HS device string. Note you will lose ability to display map by clicking on the device inside of the HS interface with this enabled, however all other maps will work fine.
    - Added option for GeoNames to return City Only

    Known Issues:
    - Running the plugin while Homeseer is in Service mode may not work correctly
    - Edit button in Locations does not function
    - Some data is still not decoded; ie $ULTW000000000000000000000000
    - Some incoming packet data may throw a warning into the HS Log. This should not cause you any problems however.

    Important Notes for Build 1.0.8 and later:
    Starting with 1.0.8, only HS 2.1 or higher is supported.

    Adding SSIDs:
    To get started, click the APRSParser button and go to Devices; this is where you can add SSIDs you want to watch inside of Homeseer. They will show up under the APRSParser location, and initially be set to 0 until the first packet is received with a valid position. If the station has already been heard by FindU, you can do a manual update from here as well.

    Updating to a specific location:
    To update the location rather than just using Geocode, create an event for the SSID you want to update it's location. For the Trigger, set it to some distance less than the location you want. For the Action, specify the SSID, then the location you want to set it to. For example I have mine set the location to Home if less than 3 miles from Home. To set it to Away/Unknown, create a new event with the Condition of SSID and specify a location; add all of your locations for you sides to this condition group. The default distant value is 3 (miles/km/etc) which is settable in the options now. Finally set for the Action Away or Unknown depending on your preference. What this will do is create a single event so if the SSID goes outside out any of your specified locations, it will set it as Away or Unknown.

    If you do not want to set the values as Away or Unknown, you can use the GeoNames lookup option which is enabled by default. Geonames lets me pass it a lat/lon position, and return thru XML it's location information. This information contains its unique ID, location name closest to it, location coorids and country. For United States locations, it can also try to guess the street number and address location. This level of detail can be changed in Options. If you have an event to set it to "Home" or "Work", etc, these should override the Geoname lookup.

    Tracking Stations:
    Version 1.1.10 added the ability to track stations on a historical basis. Go to the Received Stations link and click the Track button next to the SSID you wish to track. The station should now show up under the Track Stations link. Whenever a packet is received for that station, it is logged to a seperate database. You can then display on a map locations where that station has been, and filter based on home many to display as well as over what time frame.

    Update Stations via FindU:
    New for version 1.1.13 is the ability to update locations from FindU. To update an existing SSID, go to the APRSParser plugin and then select Devices. Select the SSID you want to download from FindU and hit update. This will pull down the last known location last seen on FindU.

    73,

    Mike
    KB1MTS
    Attached Files
    Last edited by mloebl; January 29, 2013, 10:27 AM. Reason: Update for 1.1.14 release

    #2
    Originally posted by mloebl
    Hello,

    I'm in the process of writing an APRS Parsing plugin. Right now the focus of the plugin is to grab location information to calculate distance based on a fixed location or locations. Right now for testing I'm only using one fixed location. It currently can grab information from Xastir or from an APRS-IS server. It can grab both clear text and Mic-E location data, all except for direct NMEA transmissions at this time. My goal (or goals) is to allow people to create events for position based triggers, so you can annouce if within x miles of home, or turn on lights, etc etc. I may also try add support for virtual devices so you can have it have your status "Near work" or "near home", etc. Some of the semantics need to be worked out first however. If interested, let me know.

    Here is some of the sample debug data so far:
    Code:
      2/25/2006 1:58:49 PM   APRSParser Info  Attempting to connect to newengland.aprs2.net:14579 
      2/25/2006 1:58:49 PM   APRSParser Info  Connected 
      2/25/2006 1:58:49 PM   APRSParser Info  # javAPRSSrvr 3.10b08 
     2/25/2006 1:58:49 PM APRSParser Info Server type is APRS-IS, attempting to authenticate: user KB1MTS pass -1 APRSParser 1.0.2240 
      2/25/2006 1:58:49 PM   APRSParser Info  # logresp KB1MTS unverified, server T2NUENGLD 
     2/25/2006 1:58:49 PM APRSParser Info Server type is APRS-IS, attempting to authenticate: user KB1MTS pass -1 APRSParser 1.0.2240 
     2/25/2006 1:58:49 PM APRSParser Info SSID: VE1WRG Message: ;Sarah *251858z4306.66N/06910.92WO060/032Happy B'day Sarah!! 88 de Derek Mic-E: False 
      2/25/2006 1:58:49 PM   APRSParser Info  Distance from my location is 126.643 Miles 
     2/25/2006 1:58:53 PM APRSParser Info SSID: CW2296 Message: @251358z4206.80N/07218.88W_176/001g003t026r000P000p000h69b10138v31 Mic-E: False 
      2/25/2006 1:58:53 PM   APRSParser Info  Distance from my location is 48.844 Miles
    -Mike
    Mike

    Sounds like a great plugin, I could put the distance from Home up onto Mainlobby :-) Only problem is, I got so tired of APRS, I sold the TMD-700 and the GPS. I still have the APRS digi and wormhole that covers Sydney however APRS is just about dead.

    Good luck with it anyway, it looks way cool !

    Pete..vk2yx
    HS 2.2.0.11

    Comment


      #3
      Hey Pete,

      I was thinking about getting into APRS (instead of something like GPRS) to do some car tracking. Not a good idea?

      Ross.

      Comment


        #4
        Originally posted by rirvine
        Hey Pete,

        I was thinking about getting into APRS (instead of something like GPRS) to do some car tracking. Not a good idea?

        Ross.
        Ross, not sure how alive it is in VK3...It works really well and I used to have UI-VIEW running here and the kids could see where I was. Novelty wore off after a while when I wanted to use the dual bander for voice :-)

        73's Pete
        HS 2.2.0.11

        Comment


          #5
          Mike:
          Do I need to have local software running or does your plugin pull info from one of the central databases ?
          Bruce

          "The universal answer is 42."

          Comment


            #6
            Originally posted by bruce l
            Mike:
            Do I need to have local software running or does your plugin pull info from one of the central databases ?
            Hi Bruce,

            No local server required as long as you have Internet access. Any of these servers should work; http://www.aprs-is.net/APRSServers.htm . I see that AGWPE does have it's format listed (which is also very popular), so may at some point add support if there is enough demand.

            I do not have direct filtering from APRS-IS servers enabled yet, so there will be a *lot* of traffic until I do. I was seeing from 3 - 12 events per second coming from the server the other day. The plugin is mulithreaded so it does help this a bit.

            Also I should note this is a .Net 1.1 plugin so will require HS2 to work, and I am thinking the plugin will probably be free.

            -Mike

            Comment


              #7
              I'm interested!

              I would be interested in this plugin. I have a small vhf radio with homebrew Motorola GPS rx in the Boot (or trunk if you come from USA) of the car. I also run the GPS rs232 output to the dashboard for my XDA2 PDA map/route software simultaneously.

              I too would be interested in the source of the data for the plugin. I use UI-View32 on another windows XP machine via souncard modem. It would be nice to have the choice of using the soft modem software as a source and/or the internet databases or live feeds.

              I would like to trigger events based on my (or any callsign) general location (home, work), a very specific location (within GPS radius of a point) and also loss of signal after a period of time, and first visibility of signal after a period of loss.

              I also like the idea of current distance from a point such as home.

              I would use this with Mainlobby. I'd like to be able to have three states based on time "last heard", ie Green=active, yellow=alert, red=offline. Setting a value in minutes say green is 10, yellow is 30 and red is 60 minutes. etc I'd also like a 4th state I guess of Moving/Stationary.

              Thanks for your efforts with an APRS plug-in!

              Phil

              Comment


                #8
                Originally posted by rirvine
                Hey Pete,

                I was thinking about getting into APRS (instead of something like GPRS) to do some car tracking. Not a good idea?

                Ross.
                Ross,

                If you are curious about other people in your area, check this out: http://www.aprs-is.net/javalive.htm . These are just messages that make it to an APRS-IS server, so could be more. Very popular in the US and Europe. With a 0db omni antenna in the attic, I typically here see about 200+ stations within a 100mile radius or so, however I'm only 20miles from Boston.

                You can get started with TinyTraker3, a serial GPS, simple 2m radio and ext antenna. Buying it all brand new, not used ran me about ~$200 US (getting it used can probably cut it down quite a bit.) I now use the Kenwood TM-D700 dual bander with a cheapy Sirfstar3 GPS in the back window.

                -Mike

                Comment


                  #9
                  Originally posted by mloebl
                  Also I should note this is a .Net 1.1 plugin so will require HS2 to work,
                  AWWW crap that blew it for me.


                  Originally posted by mloebl
                  and I am thinking the plugin will probably be free.
                  Thank you thats generous.
                  Bruce

                  "The universal answer is 42."

                  Comment


                    #10
                    Is this something like you are looking for?

                    Here is a page that is available already.
                    Attached Files

                    Comment


                      #11
                      Here's the work in progress. I have a ways to go, so don't feel too underwhelmed . Basic trigger support at this point that uses your home cooridinates for the basis of the less than or greater than; this will probably change in later builds. Still working out how to add locations and new SSIDs to monitor, but I have a few ideas in mind. The Google maps API doesn't do much yet other than display your Home location. You will need to get a Google API key to use it (click the link in the options.) You will need to request it based on http://machinename. Google is very specific on the url, so if you specified http://homeseer, http://localhost or http://www.my-dynamic-dns-name.com won't work. In theory any server that sends data as normal APRS traffic should work.


                      73,

                      Mike

                      EDIT: Removed old version
                      Last edited by mloebl; March 4, 2006, 09:42 PM.

                      Comment


                        #12
                        Future Capabilities ?

                        Mike,

                        Just a thought, can you track more than 1 vehicle ?
                        Can we specify different Icons based on say type of vehicle (boat, van, car, plane, teleporter).

                        Steven

                        Comment


                          #13
                          Steven,

                          You could in theory (well right now via events) track as many as you want. I'm thinking that I may use virtual devices for the the SSIDs you want to track similair to DooNetwork. You can then use "Last Change" to know the last time the station was seen. May use name or status string for location... haven't decided yet. For example status "[ICON] 41.233, -71.22222 at Home"... or some combo of those where "at Home" is a variable based on locations specified. Also gives the users the ability to write their own scripts and events. You could create an event if "KB1MTS-3 greater than 3 miles from home" then set Device string "En route", then if "KB1MTS-3 less than .1 miles from Work" then device string "At work", etc. Just up in the air at this point. I was going to try to keep the plugin simple and avoid a back end database, but if it gets too logistically confusing to put it all in the HS window, I may end up doing a dbase.

                          I will probably use the stock APRS icons, and hopefully map to those the incoming messages for both the Device Icon, as well as maybe the location icon in Googlemaps.

                          Just got the attachment before you posted but thanks for catching it too, working on too many plugins at once.

                          -Mike

                          Comment


                            #14
                            Format for lat/log?

                            Hi Mloebl,

                            Thanks for the parser, I am trying it in Sydney Australia. I need to confirm the format for the lat long as we generally are positive when you are negative etc in the northern hemisphere. Also, what format do I need for the partial minutes.

                            ie 33.xx.xx and -151.xx.xx or 33xxxx and -151xxxx?

                            Just a bit confused, seems I can only get first 33 and -151 accepted, any decimals causes config to revert to the defaults.

                            Thanks!

                            psampson

                            Comment


                              #15
                              psampson,

                              It's actually in the (-)xx.xxxxx format. I'll try those addresses today and see if I can save them. I don't think I'm doing much logic checking on the addresses other than "00.00xxxx".

                              -Mike

                              Comment

                              Working...
                              X