Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Temporarily deprecating DESIGN.md, since those features are now fully… #15

Merged
merged 1 commit into from
Oct 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 2 additions & 25 deletions DESIGN.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,5 @@
# Design Document

### Really, more of scratchpad of ideas right now
Tracking of upcoming features has moved to [issues](https://github.com/afourney/aprstastic/issues).

### Position Reports

**Basic position beacons (lat, lon, timestamp), are now supported**

Most APRS traffic consists of position beaconing. Meshtastic devices are well-suited to this. While the `aprstastic` Gateway currently operates via direct messages, it could watch for Meshtastic beacons on channels (e.g, `LongFast`), and gate them to APRS if their originator is in the `licensed_operator` list, and their call sign is known. Certainly some Meshtastic channels are intentionally private -- and even if public -- not all operators will desire this forwarding. Consider configuration options such as a setting in the licensed_operator record (e.g., `"!abc12345" = (call_sign="NOCALL", gate_positions=False)`). The Gateway configuration file could also include options for what channels to listen to, and we might opt to ignore channels with non-default keys.

### Weather Reports

Some Meshtastic devices have environment sensors. These have direct analogs on APRS and can be gated following a similar protocol to the above-mentioned position reports.

### Central Registry

**Over-the-air registration is now supported via the '!register' command, and registrations are optionally beaconed to [MESHID-01](https://aprs.fi/?c=message&call=MESHID-01)**

A limitation of the current design is that the `licensed_operator` list is part of the configuration, and must be set and updated by all gateway administrators. If there was a central registry maintaining this mapping, then gateways could subscribe or download it, allowing for roaming. To support this, new registrations are optionally beaconed to APRS-IS my message to call sign [MESHID-01](https://aprs.fi/?c=message&call=MESHID-01). The will be aggregated into central registrations file, which will be queried in a future update. This behavior can be disabled in the `config.yml` file.

### Discovery

**Most of this protocol is now supported**

Related to the above, how does one know if there is a gateway operating in range of their radio? I propose two options:

- Operators could send a query message to a channel (e.g., "aprs?" on LongFast), to which Gateways would reply
- If operators are already in the `licensed_operator` list, the gateway might send a direct message introducing itself the first time the Gateway observes _any_ message from the device (telemetry or otherwise), and then perhaps once a day afterward, until receiving _any_ direct text message from the device (e.g., "stop", or even any APRS-destined message)
This file is maintained to support prior direct links from social media.
14 changes: 2 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,15 @@
> Legal operation of this software requires an amateur radio license and a valid call sign.

> [!NOTE]
> Code contributions are welcomed and appreciated. See [CONTRIBUTING.md](https://github.com/afourney/aprstastic/blob/main/CONTRIBUTING.md) for details.
> Star this repo to follow our progress! This code is under active development, and contributions are both welcomed and appreciated. See [CONTRIBUTING.md](https://github.com/afourney/aprstastic/blob/main/CONTRIBUTING.md) for details.

## New!

:fire: 2-minute [YouTube demo](https://www.youtube.com/watch?v=qUvpZUwl-cY)

:fire: Basic position beacons now supported (lat, lon, timestamp)

:fire: Over-the-air discovery and registration now supported. See image below.

:fire: Registrations are now (optionally) beaconed to [MESHID-01](https://aprs.fi/?c=message&call=MESHID-01) to facilitate a global roaming profile.

:fire: Design doc and future plans: [DESIGN.md](https://github.com/afourney/aprstastic/blob/main/DESIGN.md)
:fire: Call sign registrations are now (optionally) beaconed to [MESHID-01](https://aprs.fi/?c=message&call=MESHID-01) to facilitate a global roaming profile.

## Introduction

Expand Down Expand Up @@ -90,12 +86,6 @@ aprstastic only allows messages to transit if they are found in the client devic

Instances of the aprstastic gateway identify themselves to the APRS-IS level 2 servers with the software version number `APZMAG`. In accordance to the [Protocol Reference](http://www.aprs.org/doc/APRS101.PDF), `APZ` designates an experimental application in development. In this case, `MAG` is short for 'Meshtastic-APRS Gateway'.

## Future Plans

The clear weakness of this gateway is the need to register devices in order for the call sign mapping to work. If every node administrator needs to manage this list, then the system will not scale (and maybe this is fine to control traffic). However, one compelling possibility is to create a central registry where, call signs can be registered to nodes, and the gateways could then subscribe to this list. This would allow a degree of roaming without much need for coordination. To support this, all dynamic registrations (`!register` command) are optionally beaconed to [APRS-IS](https://aprs.fi/?c=message&call=MESHID-01), to facilitate discovery. Such beacons are expected to be rare -- at most once per device.

For more details, and other upcoming features, see [DESIGN.md](https://github.com/afourney/aprstastic/blob/main/DESIGN.md)

## License

`aprstastic` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
Loading