Metadata-Version: 2.1
Name: airtrackrelay
Version: 1.0.2
Summary: UDP GPS Tracker Relay
Author-email: Nathan Fraser <ndf-zz@6-v.org>
License: MIT
Project-URL: homepage, https://github.com/ndf-zz/airtrackrelay
Keywords: GPS,UDP,tracking
Classifier: Development Status :: 3 - Alpha
Classifier: Topic :: Other/Nonlisted Topic
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE

# airtrackrelay

UDP socket server to collect live tracking reports and
relay them to metarace telegraph as JSON encoded objects.

Supported tracking devices and messages:

   - Quectel GL300/320 "Air Interface"
      - +ACK : Command acknowledge, type: 'drdack'
      - +RESP, +BUFF:
      - GTFRI, GTRTL, GTSOS, GTLOC : Location report, type: 'drdpos'
      - GTINF : Information report, type: 'drdstat'
   - Beaker
      - AES128 Location, type 'drdpos'

Configuration is via metarace sysconf section 'airtrackrelay' with the
following keys:

key	|	(type) Description [default]
---	|	---
topic	|	(string) MQTT relay topic ['tracking/data']
port	|	(int) UDP listen port [1911]
k1	|	(string) Beaker K1, 128 bit hex string [null]
k2	|	(string) Beaker K2, 128 bit hex string [null]
uid	|	(int32) Beaker uid/config id [0x45670123]


Tracker imeis are read from the section 'tracking' under the
key 'devices', which is a map of device ids to a dict object:


key	|	(type) Description [default]
---	|	---
imei	|	(string) Device IMEI
type	|	(string) Device type

Example config:

	{
	 "airtrackrelay": {
	  "port": 12345,
	  "topic": "tracking/data",
          "key": "000102030405060708090a0b0c0d0e0f",
          "cbcsig": 1234567890
	 },
	 "tracking": {
	  "devices": {
	   "bob": { "imei": "012345678901234", "label": null,
	    "phone": "+12345678901", "type": null },
	   "gem": { "imei": "023456788901234", "label": null,
	    "phone": null, "type": null },
	  }
	 }
	}

Example Info Message:

	{"type": "drdstat", "drd": "bob", "devstate": "41", "rssi": "13",
	 "voltage": "4.08", "battery": "94", "charging": "0", "buffered": false,
	 "sendtime": "20220101023424" }

Example Ack Message:

	{"type": "drdack", "drd": "gem", "ctype": "GTFRI", "cid": "1A3D",
	 "sendtime": "20220101031607", "req": ""}

Example GL3xx Location Message:

	{"type": "drdpos", "fix": true, "lat": "-13.567891",
	 "lng": "101.367815", "elev": "22.6", "speed": "12.7",
	 "drd": "gem", "fixtime": "20220101022231",
	 "buffered": false, "battery": "94", "flags": 0}

Example Beaker Location Message:

	{"type": "drdpos", "fix": true, "lat": "-12.345666",
	 "lng": "101.123555", "speed": "0.0", "drd": "bob",
	 "fixtime": "2023-01-13T03:12:49.00Z", "battery": "100",
	 "buffered": false, "flags": 255}



## Requirements

   - metarace >=2.0


## Installation

	$ pip3 install airtrackrelay

