APRS – Making it work

Jim,
I took a trip from Bellevue to Pullman, WA yesterday and ran APRS the whole way using the APRSdroid app on a cellphone. I just added OUTNET into the message, that’s it.

My observation is that Outernet scoops the APRS database once every five minutes, and thus during some five minute intervals several APRS messages can get reported.

WA4OSH-5>APDR14,TCPIP*,qAC,T2GYOR:=4642.74N/11710.55W$120/002/A=002424 OUTNET
KE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET
WA4OSH-5>APDR14,TCPIP*,qAC,T2GYOR:=4642.74N/11710.56W$258/002/A=002368 OUTNET
WA4OSH-5>APDR14,TCPIP*,qAC,T2GYOR:=4642.75N/11710.56W$059/002/A=002349 OUTNET

–Konrad, WA4OSH

1 Like

Just another public request. I know ya’ll are busy… but could you please code a filter, or search box, or a checkbox maybe for “Do not show callsigns that report more than 10 posts in the last 24 hours” on the Messages window?

Something to filter out the person (and maybe more in the future) that add “OUTNET” to their 10 minute position reports causing just pages and pages of the same.

Maybe I’m totally on my own here, and it just bugs me and only me… but still going to ask :slight_smile:

If I was better at linux and scripting… I’m sure one could write something that can “blacklist” callsigns and have them not show up.

Leaving on a positive note, a trigger feature would be great. If a call, list of calls, or say “emergency” appears in the text of an APRS message… The DC’s screen could, for example, flash either by backlight control, or just something like 1 second of 100% black background and then 1 second of “Call from WB1234” or “APRS Message” or “APRS Emergency” in large visible text.

Regardless, for most people Outernet will run in the background. Having a visual or audio “you’ve got mail” feature would be so great!

Thanks.

-liam

Clavo,
So if I hear you right, rather than looking into the file system, you would love to have an app that greps through your received downloads/Amateur Radio/APRS/APRSAT directory at all the .txt files for ones that match a certain call sign? (like the search box in APRS.fi?)

You can certainly right now write a script that runs on your laptop that SSH or FTP downloads the .txt files and greps the contents for only what you are looking for. Eg certain call signs, GPS coordinates inside of a certain square, etc. Bash on a Linux machine or Powershell on a Windows machine can do this.

–Konrad, WA4OSH

1 Like

Yep. Sorta I have a working knowledge of linux/unix… but just not to the level you obviously do. I’m thinking: "less +F /root/path/path/APRSmessages.txt | grep SOMETHING

(I don’t know the formatting for the grep part but, personally, I would be a list of callsigns and the word ‘emergency’)

That way one could have an open terminal and just have that running. Possibly add some trigger to make the system beep…or play an audio file (ringtone). Or make the Dreamcatcher screen flash…

Hell. I don’t even know where exactly the APRS messages file is on the device or if it’s plaintext or XML or something.

I got out of computer long ago and can’t code for shit.

But I do get the concept and know it can be done. I just need help.

Let me know if you throw something together. I’d love to see and re-learn.

Or @Abhishek to code in some filter options for us in the APRS Messaging area.

Regards,
-liam

This is exactly the kinda use case for which the API was created. You can get all the aprs messages by just making an http call to

http://(Dreamcatcher ip address)/DIRECT/getAPRS

It returns JSON, which you should be able to parse using something like jq

(unrelated, there a similar api for tuner stats http://(Dreamcatcher ip address)/DIRECT/getTunerStatus )

2 Likes

So this was my poor attempt at trying to do what I want to do.

I did find the APRS messages… a folder filled with .TXT, not just one .TXT.

/mnt/downloads/Amateur Radio/APRS/APRSAT

Tried this… but it wasn’t working great and I’m sure my syntax is wrong and there is a better way to do this.

There has to be a better way. @Abhishek

-liam

use the API I mentioned above.

1 Like

Wow. Ok. Was this published somewhere and I just missed it? Is there a complete command list?

Like I said in previous posts. I suck at coding / scripting, but will put some time aside to take a look at ‘jq’

2 Likes

What I was implying is that you would have to grep through all of the .txt files that you downloaded from the directory.

jq’s app and Abhishek’s JSON data structure is there. That hopefully is better. If jq published his source, we should be able to add anything you want.

–Konrad, WA4OSH

jq is simply a (open-source) command-line json query tool - better than having to grep/regex thru the API output. The idea is to have a standard APRS viewer grab the API feed and enable visualizing the messages as per the APRS standards - with all the symbols etc.

1 Like

I haven’t tried it out yet. Will it display the location of the data on a map? I guess you need to have static maps for it then?

Xastir’s solution to the map problem.

–Konrad, WA4OSH

Good question on off-line maps to plot an aprs locations. I have using Xastir (on debian rpi) extensively for my local digipeaters and have downloaded tiger maps available in US, Statewide, and County resolutions.

The tile set’s maps used by aprsisce are dynamically downloaded and are pretty intensive
see: Tile Sets - APRSISCE/32 The future of Amateur Radio APRS I have it loaded on my android , but don’t use it.

I find most localities now have a GIS department that has contracted to get access to maps for tax purposes and for emergency dispatching. My county has numerous maps available (they don’t use most of them), and with a little persuasion, I have access to them. Basic street name, 30m elevation, water resources, vegetation coverage and satellite are the only ones I use.

Note these are US specific, other jurisdictions usually are more restrictive.

The issues are the same for navigation charts, I use them for AIS plotting and again have good luck downloading charts for “US” waters (usually based on coast guard regions).

Plotting of an aprs report is different depending on which software. For international and maritime contacts, I have them as “objects” using garmin format.

It looks like the US Census does not create Tiger maps anymore.

We’ll have to find another public domain source of maps and implement an app that overlays APRS waypoints onto a map. Those maps would be part of what I would consider the more static data that would live in the file storage micro-SD.

–Konrad, WA4OSH

Try this map site. the download ftp works… but you have to learn what the file names are interpreted.

I use EDGES then look for the file my 2011 county is tl_2011_26089_edges.zip

where the 26 means Michigan
089 my specific county

they are sort-of by alphanumeric

So is this only for the last day? None of my messages sent on 5/4/2018 are in this JSON record. The time stamps are lost.

{“result”:“KE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\r\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\r\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\r\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\r\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\r\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\n”,“error”:false}

–Konrad, WA4OSH

@Abhishek

When I make this query to the APRS database directly (for example looking for my WA4OSH-5 call sign): You will need to substitute myAPRSkey with yours to use this API.

https://api.aprs.fi/api/get?name=WA4OSH-5&what=loc&apikey=(myAPRSkey)&format=json

I get a JSON record that looks like this:

{“command”:“get”,“result”:“ok”,“what”:“loc”,“found”:1,“entries”:[{“class”:“a”,“name”:“WA4OSH-5”,“type”:“l”,“time”:“1525470205”,“lasttime”:“1525470205”,“lat”:“46.86550”,“lng”:“-117.37767”,“altitude”:686.7144,“course”:246,“speed”:25.928,“symbol”:“/$”,“srccall”:“WA4OSH-5”,“dstcall”:“APDR14”,“comment”:“OUTNET”,“path”:“TCPIP*,qAC,T2GYOR”}]}

So when you use the Outernet API, are parameters available to search it?
APRS.fi API description

–Konrad, WA4OSH

I installed jq into my Linux laptop. Do you have some sample filters that you use to look at the JASON query?

–Konrad, WA4OSH

So here are some experiments on my Linux laptop reading the APRS JSON file with curl and piping it into jq

$ curl http://192.168.0.13/DIRECT/getAPRS | jq .

One problem. The JSON structure does not organize the messages so they can be searched.

{
“result”: “KE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\nKE7WWT-1>APMI01,TCPIP*,qAS,KE7WWT:OUTNET\n”,
“error”: false
}

Basically there’s two elements in one record

  1. .result, and
  2. .error

It’s really not that useful in that format. You have to build a parser for it anyway.

–Konrad, WA4OSH

In comparison, I can do a whole lot more with curl and jc operating on the status API

kr@aeon-Latitude-E6410 ~ $ curl -s http://192.168.0.13/DIRECT/getTunerStatus | jq .
{
“result”: {
“stream”: 0,
“td”: 96,
“bitrate”: 20078,
“packetrate”: 10.4,
“lock”: 1,
“freq”: 11902.14,
“snr”: -11.75,
“rssi”: -79,
“crc_ok”: 24621,
“crc_err”: 70,
“freq_offset”: 47246,
“freq_offset_uc”: 174,
“transfers”: [
{
“carousel_id”: 1,
“path”: “opaks/4209-gfs.2018050800_gfs.t00z.pgrb2.1p00.f072.grib2.tbz2”,
“hash”: “1ad2db4a2573b6b81ac19f0212a5097c31bfaef76d32b84101cf278779a663eb”,
“block_count”: 1431,
“block_received”: 23,
“complete”: 1
},
{}
]
},
“error”: false
}

For example, I can read my SNR
kr@aeon-Latitude-E6410 ~ $ curl -s http://192.168.0.13/DIRECT/getTunerStatus | jq .result.snr
-12.5

or look at my current frame-lock
kr@aeon-Latitude-E6410 ~ $ curl -s http://192.168.0.13/DIRECT/getTunerStatus | jq .result.lock
1

where to from here?
I want to know how to save some of my connection data over time… still playing with it. If someone is interested in automating the status, we can carry this to another thread.

The point I’m trying to make is … It would be much better if DreamCatcher did some of the formatting of the APRS JSON data so that it can easily be searched.

–Konrad, WA4OSH

1 Like

Can you extract the date / time (and time zone ). in the aprs json It seems embedded in the file name ??

Update: now that I look at it… it doesn’t have the lat/long fields.,

1 Like