This document provides detailed information on using the LoRa APRS API to retrieve ingested data.
https://lora.link9.net/api/
The API is unauthenticated.
Some end points employ authorisation.
/messages
is a generic multipurpose endpoint for retrieving messages, allowing for filtering on parameters.
GET
If no parameters are provided it will return all most recent records.
Parameter | Description |
---|---|
source_ip | Filter records by source IP address of the iGate. Use the special value me to restrict to your current public IP address. |
rx_callsign | Filter records by the receiver (iGate) callsign. |
tx_callsign | Filter records by the transmitter (Tracker) callsign. |
start_time | Start of the date range for received_at . |
end_time | End of the date range for received_at . |
page | Page number for pagination. |
limit | Number of records per page. |
raw | Return the raw message contents. Default is False. |
Additional parameters are available when specified with a comparison operator.
Parameter | Description |
---|---|
distance | Distance between iGate and Tracker. |
signal_strength | Signal Strength in dBm. |
signal_quality | Signal Quality (SNR) in dB. |
Parameter | Values |
---|---|
distance_op | lt, gt, eq |
signal_strength_op | lt, gt, eq |
signal_quality_op | lt, gt, eq |
The endpoint has the following limits.
Type | Limit | Default |
---|---|---|
Total Records | 1000 | 1000 |
Records per Page | 100 | 10 |
The response will be in JSON format, including an array of messages and pagination details.
Get raw syslog messages for current public IP address.
curl "https://lora.link9.net/api/messages?source_ip=me&raw=true"
{
"page": 1,
"limit": 10,
"total_records": 8,
"total_pages": 1,
"raw_messages": [
"<165>1 - MM3NDH-10 CA2RXU_LoRa_iGate_1.3 - - - Tx \/ MM3NDH-10>APLRG1,WIDE1-1:!L206OM[e?a xGLoRa APRS 439.9125 MHz",
"Additional records..."
]
}
Get the first page of records for iGate MM3NDH-10
with 10 records per page.
curl "https://lora.link9.net/api/messages?rx_callsign=MM3NDH-10&page=1&limit=10"
{
"page": 1,
"limit": 10,
"total_records": 320,
"total_pages": 32,
"results": [
{
"received_at": "2023-09-12 14:22:35",
"rx_callsign": "MM3NDH-10",
"tx_callsign": "MM3NDH-11",
"signal_strength": "-120",
"signal_quality": "6",
"distance": "25",
"latitude": "40.7128",
"longitude": "-74.0060",
"path": "WIDE1-1",
"destination": "APLRT1"
},
{
// Additional records...
}
]
}
You can add an entity to Home Assistant as a REST sensor and show it on a Map and Entities Card.
Note: Also check the GeoJSON endpoint in the Help section.
- platform: rest
name: mm3ndh_11_lora_location
resource: 'https://lora.link9.net/api/messages?tx_callsign=MM3NDH-11&limit=1'
scan_interval: 60
value_template: "{{ value_json.value }}"
json_attributes_path: $.results[0]
json_attributes:
- distance
- rx_callsign
- signal_quality
- signal_strength
- latitude
- longitude
type: map
entities:
- entity: sensor.mm3ndh_11_lora_location
name: MM3NDH-11
theme_mode: auto
hours_to_show: 24
title: LoRa APRS
type: entities
entities:
- type: attribute
entity: sensor.mm3ndh_11_lora_location
attribute: signal_strength
name: Signal Strength
suffix: dBm
- type: attribute
entity: sensor.mm3ndh_11_lora_location
attribute: signal_quality
name: Signal Quality
suffix: dB
- type: attribute
entity: sensor.mm3ndh_11_lora_location
attribute: distance
name: Distance
suffix: km
- type: attribute
entity: sensor.mm3ndh_11_lora_location
attribute: rx_callsign
name: iGate
secondary_info: last-updated