aprs-parser

    1.0.8 • Public • Published

    npm-aprs-parser

    JavaScript library for parsing APRS packets.

    Code Example

        const aprs = require("aprs-parser");
        
        const parser = new aprs.APRSParser();
    
        console.log(parser.parse("SQ7PFS-10>APRS,TCPIP*,qAC,T2SYDNEY:@085502h4903.50N/07201.75W-PHG5132Hello world/A=001234"));
        console.log();
        console.log(parser.parse("SQ7PFS-10>S32U6T,TCPIP*,qAC,T2SYDNEY:`(_fn\"Oj/>Hellov"));

    Output:

        APRSMessage {
          from: Callsign { ssid: '10', call: 'SQ7PFS' },
          to: Callsign { call: 'APRS' },
          via: 
           [ Callsign { call: 'TCPIP*' },
             Callsign { call: 'qAC' },
             Callsign { call: 'T2SYDNEY' } ],
          raw: 'SQ7PFS-10>APRS,TCPIP*,qAC,T2SYDNEY:@085502h4903.50N/07201.75W-PHG5132Hello world/A=001234',
          data: 
           Position {
             latitude: 49.05833333333333,
             longitude: -72.02916666666667,
             symbol: '/-',
             symbolIcon: 'Home',
             extension: PHG { heightFeet: 20, gaindB: 3, directivityDeg: 90, powerWatts: 25 },
             altitude: 376.1232,
             comment: 'Hello world',
             timestamp: Mon Feb 27 2017 09:55:02 GMT+0100 (CET),
             msgEnabled: true } }
        
        APRSMessage {
          from: Callsign { ssid: '10', call: 'SQ7PFS' },
          to: Callsign { call: 'S32U6T' },
          via: 
           [ Callsign { call: 'TCPIP*' },
             Callsign { call: 'qAC' },
             Callsign { call: 'T2SYDNEY' } ],
          raw: 'SQ7PFS-10>S32U6T,TCPIP*,qAC,T2SYDNEY:`(_fn"Oj/>Hellov',
          data: 
           MICEPosition {
             latitude: 33.42733333333334,
             longitude: -12.129,
             mice: 'returning',
             symbol: '/j',
             symbolIcon: 'Jeep',
             extension: CourseSpeed { courseDeg: 251, speedMPerS: 10.28888888 },
             radio: 'Kenwood TH-D7A Mobile',
             comment: 'Hello' } }
    
    

    Code Example - weather station support

        const aprs = require("aprs-parser");
        
        const parser = new aprs.APRSParser();
    
        console.log(parser.parse("FW7233>APRS,TCPXX*,qAX,CWOP-2:@231821z5150.13N/01913.68E_239/003g010t042r000p011P011b09969h83L000eMB51"));

    Output:

    APRSMessage {
      from: Callsign { call: 'FW7233' },
      to: Callsign { call: 'APRS' },
      via: [
        Callsign { call: 'TCPXX*' },
        Callsign { call: 'qAX' },
        Callsign { ssid: '2', call: 'CWOP' }
      ],
      raw: 'FW7233>APRS,TCPXX*,qAX,CWOP-2:@231821z5150.13N/01913.68E_239/003g010t042r000p011P011b09969h83L000eMB51',
      data: Position {
        latitude: 51.8355,
        longitude: 19.228,
        symbol: '/_',
        symbolIcon: 'WX Station',
        extension: CourseSpeed { courseDeg: 239, speedMPerS: 1.543333332 },
        weather: {
          windGust: 4.4704,
          temperature: 5.555555555555555,
          rain1h: 0,
          rain24h: 2.794,
          rainSinceMidnight: 2.794,
          pressure: 996.9,
          humidity: 83,
          luminosity: 0
        },
        comment: 'eMB51',
        timestamp: 2021-01-23T18:21:00.000Z,
        msgEnabled: true
      }
    

    For WX stations with position CourseSpeed extension is used to represent wind speed and direction. Units used in weather report:

    • rain1h, rain24h, rainSinceMidnight - millimeters
    • windGust - meters per second
    • temperature - Celcius
    • pressure - millibars
    • luminosity - watts per square meter
    • snow - centimeters
    • humidity - %

    Code Example - APRS Stream

    This library also supports connecting to the APRS "firehose". An amateur radio license is required to connect.

        const aprs = require("aprs-parser");
        const stream = new aprs.APRSISConnector;
        stream.connect('YOUR-AMATEUR-RADIO-CALLSIGN');
        
        stream.on('aprs', (event)=>{
            console.log(event)
        });

    Installation

    $ npm install aprs-parser --save
    

    Supported data types

    • Position
    • Objects
    • Current MIC-E
    • Telemetry
    • Messages
    • Status reports
    • Weather

    License

    Library is licensed under the GNU Lesser General Public License.

    Library by adriann0 with Kris Linquist as an additional contributor.

    Keywords

    Install

    npm i aprs-parser

    DownloadsWeekly Downloads

    13

    Version

    1.0.8

    License

    SEE LICENSE IN LICENSE

    Unpacked Size

    138 kB

    Total Files

    56

    Last publish

    Collaborators

    • klinquist
    • adriann