Skip to content

Commit

Permalink
2024 Updates Checkpoint
Browse files Browse the repository at this point in the history
- Documentation Updates.
- Fixes #17. Added ReadTheDocs site.
- Fixes #18: Deprecate ADSBX_URL in favor of FEED_URL akin to adsbcot.
  • Loading branch information
ampledata committed Jan 11, 2024
1 parent a5ce316 commit 6585308
Show file tree
Hide file tree
Showing 24 changed files with 232 additions and 148 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,5 @@ redis-server.log
redis-server/
__pycache__
.ipynb_checkpoints/
.python-version
config.ini
17 changes: 17 additions & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

version: 2

build:
os: ubuntu-22.04
tools:
python: "3.11"

mkdocs:
configuration: mkdocs.yml

python:
install:
- requirements: docs/requirements.txt
10 changes: 5 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright 2022 Greg Albrecht <[email protected]>
# Copyright Sensors & Signals LLC https://www.snstac.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -13,10 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author:: Greg Albrecht W2GMD <[email protected]>
# Copyright:: Copyright 2022 Greg Albrecht
# License:: Apache License, Version 2.0
#

this_app = adsbxcot
.DEFAULT_GOAL := all
Expand Down Expand Up @@ -76,3 +72,7 @@ test_cov:

black:
black .

mkdocs:
pip install -r docs/requirements.txt
mkdocs serve
116 changes: 9 additions & 107 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,123 +1,25 @@
ADSBExchange.com ADS-B to Cursor-On-Target Gateway.
***************************************************

.. image:: https://raw.githubusercontent.com/ampledata/adsbxcot/main/docs/Screenshot_20201026-142037_ATAK-25p.jpg
:alt: Screenshot of ADS-B PLI in ATAK.
:target: https://github.com/ampledata/adsbxcot/blob/main/docs/Screenshot_20201026-142037_ATAK.jpg

Display Aircraft in TAK
***********************

The ADSBXCOT ADS-B to Cursor-On-Target Gateway transforms Automatic
Dependent Surveillance-Broadcast (ADS-B) aircraft position information into
Cursor-On-Target (COT) Position Location Information for display on
Situational Awareness applications such as the Android Team Awareness Kit
(ATAK), WinTAK, RaptorX, TAKX, iTAK, et al. ADS-B data is provided by
ADSBExchange.com and requires an `API key <https://www.adsbexchange.com/data/>`_ from that service.

For more information on the TAK suite of tools, see: https://www.tak.gov/

.. image:: https://raw.githubusercontent.com/ampledata/adsbxcot/main/docs/adsbxcot_concept.png
:alt: ADSBXCOT Concept.
:target: https://github.com/ampledata/adsbxcot/blob/main/docs/adsbxcot_concept.png


Support Development
===================

**Tech Support**: Email [email protected] or Signal/WhatsApp: +1-310-621-9598

This tool has been developed for the Disaster Response, Public Safety and
Frontline Healthcare community. This software is currently provided at no-cost
to users. Any contribution you can make to further this project's development
efforts is greatly appreciated.

.. image:: https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png
:target: https://www.buymeacoffee.com/ampledata
:alt: Support Development: Buy me a coffee!


Installation
============

ADSBXCOT's functionality provided by a command-line program called `adsbxcot`.

Installing as a Debian / Ubuntu Package [Recommended]::

$ sudo apt update
$ wget https://github.com/ampledata/aircot/releases/latest/download/python3-aircot_latest_all.deb
$ sudo apt install -f ./python3-aircot_latest_all.deb
$ wget https://github.com/ampledata/pytak/releases/latest/download/python3-pytak_latest_all.deb
$ sudo apt install -f ./python3-pytak_latest_all.deb
$ wget https://github.com/ampledata/adsbxcot/releases/latest/download/python3-adsbxcot_latest_all.deb
$ sudo apt install -f ./python3-adsbxcot_latest_all.deb


Install from the Python Package Index (PyPI) [Advanced Users]::

$ pip install adsbxcot


Install from this source tree [Developers]::

$ git clone https://github.com/ampledata/adsbxcot.git
$ cd adsbxcot/
$ python setup.py install


Usage
=====

The `adsbxcot` command-line program has 2 runtime arguments::

usage: adsbxcot [-h] [-c CONFIG_FILE]

optional arguments:
-h, --help show this help message and exit
-c CONFIG_FILE, --CONFIG_FILE CONFIG_FILE. Default: config.ini


Configuration
=============
Configuration parameters can be specified either via environment variables or in
a INI-stile configuration file.

Parameters:

* **ADSBX_URL**: ADSBExchange.com API or Rapid API URL.
* **COT_URL**: (*optional*) Destination for Cursor-On-Target messages. See `PyTAK <https://github.com/ampledata/pytak#configuration-parameters>`_ for options.
* **POLL_INTERVAL**: (*optional*) Period in seconds to poll API. Default: 30
* **KNOWN_CRAFT**: (*optional*) CSV-style aircraft hints file for overriding callsign, icon, COT Type, etc.
* **INCLUDE_TISB**: (*optional*) If set, will also including TIS-B identified aircraft.
* **INCLUDE_ALL_CRAFT**: (*optional*) If set & KNOWN_CRAFT is set, will include aircraft not in KNOWN_CRAFT.

There are other configuration parameters available via `PyTAK <https://github.com/ampledata/pytak#configuration-parameters>`_.

Configuration parameters are imported in the following priority order:

1. ``config.ini`` (if exists) or ``-c <filename>`` (if specified).
2. Environment Variables (if set).
3. Defaults.


Source
======
ADSBXCOT source can be found on Github: https://github.com/ampledata/adsbxcot

ADSBXCOT is a PyTAK gateway for displaying aircraft tracks from ADS-B Aggregators (ADSBExchange, adsb.fi, et al.) in `TAK Products <https://tak.gov>`_ (ATAK, WinTAK, iTAK, TAK Server, TAKX).

Author
======
ADSBXCOT is written and maintained by Greg Albrecht W2GMD [email protected]
ADSBXCOT converts ADS-B messages from aircraft into Cursor on Target (CoT), as spoken by TAK Products like ATAK. ADS-B messages are read from global ADS-B data aggregators, such as ADSBExchange.com or adsb.fi. ADS-B data sent to TAK Products retains many of the aircraft's track, course & speed parameters, but also metadata about the aircraft, including Flight, Tail, Category, and more.

https://ampledata.org/
ADSBXCOT runs in any Python 3.6+ environment, on both Windows & Linux.

N.B.: Almost all ADS-B Aggreators require pre-authorization before allowing access to ADS-B data. This pre-authorization is often in the form of an API key. Many of these services provide these API keys for free, provided you feed data from your local ADS-B receiver into their cloud-service. Otherwise, they charge a fee for access to ADS-B data. Your organization should reach out to these ADS-B data aggregator services directly to negotiate terms for your use.

Copyright
=========
ADSBXCOT is Copyright 2022 Greg Albrecht
`Documentation is available here. <https://adsbxcot.rtfd.io>`_

Have your own ADS-B receiver? Check out `ADSBCOT <https://adsbcot.rtfd.io>`_.

License
=======
Copyright 2022 Greg Albrecht <[email protected]>
Copyright Sensors & Signals LLC https://www.snstac.com

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
17 changes: 7 additions & 10 deletions adsbxcot/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright 2022 Greg Albrecht <[email protected]>
# Copyright Sensors & Signals LLC https://www.snstac.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -13,17 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author:: Greg Albrecht W2GMD <[email protected]>
#

"""
ADS-B Exchange Cursor-on-Target Gateway.
~~~~
Display Aircraft in TAK.
:author: Greg Albrecht W2GMD <[email protected]>
:copyright: Copyright 2022 Greg Albrecht
:author: Greg Albrecht <[email protected]>
:copyright: Copyright Sensors & Signals LLC https://www.snstac.com
:license: Apache License, Version 2.0
:source: <https://github.com/ampledata/adsbxcot>
:source: <https://github.com/snstac/adsbxcot>
"""

from .constants import DEFAULT_POLL_INTERVAL, DEFAULT_LIGHT_COT # NOQA
Expand All @@ -32,6 +29,6 @@

from .classes import ADSBXWorker # NOQA

__author__ = "Greg Albrecht W2GMD <[email protected]>"
__copyright__ = "Copyright 2022 Greg Albrecht"
__author__ = "Greg Albrecht <[email protected]>"
__copyright__ = "Copyright Sensors & Signals LLC https://www.snstac.com"
__license__ = "Apache License, Version 2.0"
16 changes: 7 additions & 9 deletions adsbxcot/classes.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright 2022 Greg Albrecht <[email protected]>
# Copyright Sensors & Signals LLC https://www.snstac.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -13,8 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author:: Greg Albrecht W2GMD <[email protected]>
#

"""ADSBXCOT Class Definitions."""

Expand All @@ -30,14 +28,14 @@
import adsbxcot


__author__ = "Greg Albrecht W2GMD <[email protected]>"
__copyright__ = "Copyright 2022 Greg Albrecht"
__author__ = "Greg Albrecht <[email protected]>"
__copyright__ = "Copyright Sensors & Signals LLC https://www.snstac.com"
__license__ = "Apache License, Version 2.0"


class ADSBXWorker(pytak.QueueWorker):

"""Reads ADSBExchange.com ADS-B Data, renders to COT, and puts on Queue."""
"""Reads ADS-B Aggregator Data, renders to COT, and puts on Queue."""

def __init__(self, queue: asyncio.Queue, config: SectionProxy) -> None:
super().__init__(queue, config)
Expand Down Expand Up @@ -96,8 +94,8 @@ async def handle_data(self, data: list) -> None:

async def get_adsbx_feed(self, url: str) -> None:
"""
ADSBExchange.com ADS-B Feed API Client wrapper.
Connects to ADSBX API and passes messages to `self.handle_message()`.
ADS-B Aggregator API Client wrapper.
Connects to API and passes messages to `self.handle_message()`.
"""
api_key: str = self.config.get("API_KEY")

Expand Down Expand Up @@ -132,7 +130,7 @@ async def run(self, number_of_iterations=-1) -> None:
"""Runs this Thread, Reads from Pollers."""
self._logger.info("Running %s", self.__class__)

url: str = self.config.get("ADSBX_URL")
url: str = self.config.get("FEED_URL", self.config.get("ADSBX_URL"))
poll_interval: str = self.config.get(
"POLL_INTERVAL", adsbxcot.DEFAULT_POLL_INTERVAL
)
Expand Down
10 changes: 4 additions & 6 deletions adsbxcot/commands.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright 2022 Greg Albrecht <[email protected]>
# Copyright Sensors & Signals LLC https://www.snstac.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -13,15 +13,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author:: Greg Albrecht W2GMD <[email protected]>
#

"""PyTAK Command Line."""
"""ADSBXCOT Command Line."""

import pytak

__author__ = "Greg Albrecht W2GMD <[email protected]>"
__copyright__ = "Copyright 2022 Greg Albrecht"
__author__ = "Greg Albrecht <[email protected]>"
__copyright__ = "Copyright Sensors & Signals LLC https://www.snstac.com"
__license__ = "Apache License, Version 2.0"


Expand Down
8 changes: 3 additions & 5 deletions adsbxcot/constants.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright 2022 Greg Albrecht <[email protected]>
# Copyright Sensors & Signals LLC https://www.snstac.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -13,13 +13,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author:: Greg Albrecht W2GMD <[email protected]>
#

"""ADSBXCOT Constants."""

__author__ = "Greg Albrecht W2GMD <[email protected]>"
__copyright__ = "Copyright 2022 Greg Albrecht"
__author__ = "Greg Albrecht <[email protected]>"
__copyright__ = "Copyright Sensors & Signals LLC https://www.snstac.com"
__license__ = "Apache License, Version 2.0"


Expand Down
8 changes: 3 additions & 5 deletions adsbxcot/functions.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright 2022 Greg Albrecht <[email protected]>
# Copyright Sensors & Signals LLC https://www.snstac.com
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -13,8 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author:: Greg Albrecht W2GMD <[email protected]>
#

"""ADSBXCOT Functions."""

Expand All @@ -27,8 +25,8 @@
import aircot
import adsbxcot # pylint: disable=cyclic-import

__author__ = "Greg Albrecht W2GMD <[email protected]>"
__copyright__ = "Copyright 2022 Greg Albrecht"
__author__ = "Greg Albrecht <[email protected]>"
__copyright__ = "Copyright Sensors & Signals LLC https://www.snstac.com"
__license__ = "Apache License, Version 2.0"


Expand Down
Binary file added docs/ADSBXCOT_CONOP/ADSBXCOT_CONOP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/ADSBXCOT_CONOP/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/ADSBXCOT_CONOP/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/adsbxcot concept.graffle
Binary file not shown.
Binary file removed docs/adsbxcot-conop.png
Binary file not shown.
Binary file removed docs/adsbxcot_concept.png
Binary file not shown.
Binary file added docs/atak_screenshot_with_pytak_logo-x25.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/atak_screenshot_with_pytak_logo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/conop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Concept of Operations (CONOP)

[![ADSBXCOT Concept of Operations (CONOP)](ADSBXCOT_CONOP/[email protected])](ADSBXCOT_CONOP/[email protected])
15 changes: 15 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
![ATAK Screenshot with ADSBXCOT aircraft tracks.](atak_screenshot_with_pytak_logo-x25.jpg)

# Display Aircraft in TAK

ADSBXCOT is a PyTAK gateway for displaying aircraft tracks from ADS-B Aggregators (ADSBExchange, adsb.fi, et al.) in [TAK Products](https://tak.gov>) (ATAK, WinTAK, iTAK, TAK Server, TAKX).

ADSBXCOT converts ADS-B messages from aircraft into Cursor on Target (CoT), as spoken by TAK Products like ATAK. ADS-B messages are read from global ADS-B data aggregators, such as ADSBExchange.com or adsb.fi. ADS-B data sent to TAK Products retains many of the aircraft's track, course & speed parameters, but also metadata about the aircraft, including Flight, Tail, Category, and more.

ADSBXCOT runs in any Python 3.6+ environment, on both Windows & Linux.

N.B.: Almost all ADS-B Aggreators require pre-authorization before allowing access to ADS-B data. This pre-authorization is often in the form of an API key. Many of these services provide these API keys for free, provided you feed data from your local ADS-B receiver into their cloud-service. Otherwise, they charge a fee for access to ADS-B data. Your organization should reach out to these ADS-B data aggregator services directly to negotiate terms for your use.

[Documentation is available here.](https://adsbxcot.rtfd.io)

Have your own ADS-B receiver? Check out [ADSBCOT](https://adsbcot.rtfd.io).
Loading

0 comments on commit 6585308

Please sign in to comment.