Package Exports
- sbs1
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sbs1) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
node-sbs1
This is a node.js module that parses ASCII messages containing Mode S ADS-B aircraft data that is in "SBS-1 BaseStation port 30003" format. This format has become a semi-standard way of sending ADS-B data.
SBS-1 messages are in a simple comma-delimited format. Here are some examples of the messages this module parses:
SEL,,496,2286,4CA4E5,27215,2010/02/19,18:06:07.710,2010/02/19,18:06:07.710,RYR1427
ID,,496,7162,405637,27928,2010/02/19,18:06:07.115,2010/02/19,18:06:07.115,EZY691A
AIR,,496,5906,400F01,27931,2010/02/19,18:06:07.128,2010/02/19,18:06:07.128
STA,,5,179,400AE7,10103,2008/11/28,14:58:51.153,2008/11/28,14:58:51.153,RM
CLK,,496,-1,,-1,2010/02/19,18:18:19.036,2010/02/19,18:18:19.036
MSG,1,145,256,7404F2,11267,2008/11/28,23:48:18.611,2008/11/28,23:53:19.161,RJA1118,,,,,,,,,,,
MSG,2,496,603,400CB6,13168,2008/10/13,12:24:32.414,2008/10/13,12:28:52.074,,,0,76.4,258.3,54.05735,-4.38826,,,,,,0
MSG,3,496,211,4CA2D6,10057,2008/11/28,14:53:50.594,2008/11/28,14:58:51.153,,37000,,,51.45735,-1.02826,,,0,0,0,0
MSG,4,496,469,4CA767,27854,2010/02/19,17:58:13.039,2010/02/19,17:58:13.368,,,288.6,103.2,,,-832,,,,,
MSG,5,496,329,394A65,27868,2010/02/19,17:58:12.644,2010/02/19,17:58:13.368,,10000,,,,,,,0,,0,0
MSG,6,496,237,4CA215,27864,2010/02/19,17:58:12.846,2010/02/19,17:58:13.368,,33325,,,,,,0271,0,0,0,0
MSG,7,496,742,51106E,27929,2011/03/06,07:57:36.523,2011/03/06,07:57:37.054,,3775,,,,,,,,,,0
MSG,8,496,194,405F4E,27884,2010/02/19,17:58:13.244,2010/02/19,17:58:13.368,,,,,,,,,,,,0There's some documentation of the message format at http://woodair.net/SBS/Article/Barebones42_Socket_Data.htm
Here are some examples of using the module:
// Parse a string containing an SBS1 message.
var sbs1 = require('sbs1');
var s = 'MSG,3,496,211,4CA2D6,10057,2008/11/28,14:53:50.594,2008/11/28,14:58:51.153,,37000,,,51.45735,-1.02826,,,0,0,0,0';
var msg = sbs1.parseSbs1Message(s);
if (msg.message_type === sbs1.MessageType.TRANSMISSION &&
msg.transmission_type === sbs1.TransmissionType.ES_AIRBORNE_POS) {
console.log('coords: ' + msg.lat + ', ' + msg.lon);
}// Connect to a server at localhost:30003 that is sending messages in SBS1
// format. You can pass an options object containing host and port to
// createClient to connect to a different server/port.
var sbs1 = require('sbs1');
var client = sbs1.createClient();
client.on('message', function(msg) {
if (msg.message_type === sbs1.MessageType.TRANSMISSION &&
msg.transmission_type === sbs1.TransmissionType.ES_AIRBORNE_POS) {
console.log('coords: ' + msg.lat + ', ' + msg.lon);
}
});Parsed messages
Parsed messages have the following fields:
| Field | Description |
|---|---|
| message_type | See MessageType. |
| transmission_type | See TransmissionType. |
| session_id | String. Database session record number. |
| aircraft_id | String. Database aircraft record number. |
| hex_ident | String. 24-bit ICACO ID, in hex. |
| flight_id | String. Database flight record number. |
| generated_date | String. Date the message was generated. |
| generated_time | String. Time the message was generated. |
| logged_date | String. Date the message was logged. |
| logged_time | String. Time the message was logged. |
| callsign | String. Eight character flight ID or callsign. |
| altitude | Integer. [Mode C] 1 Altitude relative to 1013 mb (29.92" Hg). |
| ground_speed | Integer. Speed over ground. |
| track | Integer. Ground track angle. |
| lat | Float. Latitude. |
| lon | Float. Longitude |
| vertical_rate | Integer. Climb rate. |
| squawk | String. Assigned [Mode A] 1 squawk code. |
| alert | Boolean. Flag to indicate that squawk has changed. |
| emergency | Boolean. Flag to indicate emergency code has been set. |
| spi | Boolean. Flag to indicate Special Position Indicator has been set. |
| is_on_ground | Boolean. Flag to indicate ground squat switch is active. |
Not all message/transmission types will have values for all fields.
Missing values will be represented by null or undefined (an empty
comma-delimited value is null).
Parsed messages have generated_timestamp() and logged_timestamp()
methods that parse the corresponding date and time fields and return
Date objects.
MessageType
There are 6 types of SBS-1 messages represented by the MessageType enum:
| Enum | Value |
|---|---|
SELECTION_CHANGE |
"SEL" |
NEW_ID |
"ID" |
NEW_AIRCRAFT |
"AIR" |
STATUS_AIRCRAFT |
"STA" |
CLICK |
"CLK" |
TRANSMISSION |
"MSG" |
SELECTION_CHANGE, NEW_ID, NEW_AIRCRAFT, STATUS_CHANGE, and
CLK indicate changes in the state of the SBS-1 software and aren't
typically used by other systems.
TRANSMISSION messages contain information sent by aircraft.
TransmissionType
There are 8 subtypes of transmission messages, specified by the
TransmissionType enum:
| Enum | Value | Description | Spec |
|---|---|---|---|
ES_IDENT_AND_CATEGORY |
1 |
ES identification and category | DF17 BDS 0,8 |
ES_SURFACE_POS |
2 |
ES surface position message | DF17 BDS 0,6 |
ES_AIRBORNE_POS |
3 |
ES airborne position message | DF17 BDS 0,5 |
ES_AIRBORNE_VEL |
4 |
ES airborne velocity message | DF17 BDS 0,9 |
SURVEILLANCE_ALT |
5 |
Surveillance alt message | DF4, DF20 |
SURVEILLANCE_ID |
6 |
Surveillance ID message | DF5, DF21 |
AIR_TO_AIR |
7 |
Air-to-air message | DF16 |
ALL_CALL_REPLY |
8 |
All call reply | DF11 |
Only ES_SURFACE_POS and ES_AIRBORNE_POS transmissions will have
position (latitude and longitude) information.
