The controller for local UniClOGS functions.
Project description
UniClOGS Pass Commander
This software controls the local functions of a UniClOGS for sending commands to the OreSat0 and OreSat0.5 CubeSats.
Major functions
- Tracks satellites using the excellent Skyfield
module
- Fetches fresh TLEs from celestrak.org
- Alternatively uses TLEs from a local Gpredict install
- Calibrates for atmospheric refraction with local temperature and pressure, fetched via API from OpenWeather
- Adapts tracking information to suit az/el rotator limits
- Interacts with Alfa Rot2Prog Controller via Rot2prog to command the antenna rotator
- Interacts with stationd to control amplifiers and station RF path
- Interacts with the OreSat GNURadio flowgraph to manage Doppler shifting and to send command packets
Installing
git clone https://github.com/uniclogs/uniclogs-pass-commander.git
sudo apt install python3-pip
pip3 install -e uniclogs-pass-commander[dev]
Running pass-commander --template will generate a
template configuration file. You should receive instructions for editing it. Go
do that now (see below for detailed description).
When your config is all set up, run with pass-commander. See the
--help flag for more options. For example pass-commander -s 60525 -m all -a dryrun.
Testing without rotctld, stationd and a running radio flowgraph is partially
supported. See the --mock flag, especially -m all.
Testing
To verify that the repo is set up correctly run the tests with pytest
Building
To produce a python package python -m build. The result, a wheel, will be in dist/.
Config file
It's TOML. There are four primary sections, each with a set of mandatory configuration keys:
[Main]
General operation settings.
satellite(String, optional) - Default satellite ID, either index into TleCache or NORAD ID.minimum-pass-elevation(Float or Integer, optional) - Minimum elevation thatsatellitemust rise above to be considered for a pass. Default: 15°owmid(String, optional) - An API key from OpenWeatherMap APIedl_port(int, optional) - Port to listen for EDL commands. Only open during a pass. Consult oresat-c3-software for more.txgain(Integer) - Gain for transmitting. Usually between 0 and 100.
[Hosts]
IP addresses for external components.
radio(String) - IP address or hostname of the flowgraph.station(String) - IP address or hostname of stationd.rotator(String) - IP address or hostname of rotctld.
[Observer]
Physical properties of the ground station.
lat(Float or Integer) - Station latitude in decimal notation. For best results use 3 - 4 decimal points. See here for more.lon(Float or Integer) - Station longitude in decimal notation.alt(Integer) - Station altitude in meters.name(String) - station name or callsign.temperature-limit(Float or Integer, optional) - Temperature in Celsius above which stops a pass from being run to protect the hardware. Default: 40°C
[TleCache]
Optional local cache of TLEs. Currently only 3 line TLEs are supported. Format is:
<name>: [
"<Satellite name>",
"<TLE line 1>",
"<TLE line 2>",
]
TLE cache entries may be repeated as long as <name> is unique. Select which
entry is active by passing <name> to the --satellite flag.
Release Process
Releases are managed through an automated workflow using Github Actions. The automation is triggered when a release is published on Github.
Creating a Release
- Navigate to this project's "Releases" page
- Click "Draft a new release"
- Click "Tag: Select tag" and click on the "Create new tag" button
- Add a tag following the SemVer standard
- e.g.
v1.2.3
- e.g.
- Ensure that Target button is pointing at the
mainbranch - Add all necessary details about the release under "Release notes"
- Once everything looks good, click the "Publish release" button
Step 7 will trigger the pypi.yml workflow and the new release will be
available on pypi.org.
Post-Release
Once a new release has been created and is available on pypi.org, smoke test the release to ensure it runs as expected.
pip install your-package==X.Y.Z
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uniclogs_pass_commander-1.0.1.tar.gz.
File metadata
- Download URL: uniclogs_pass_commander-1.0.1.tar.gz
- Upload date:
- Size: 51.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7bfdf88848111a8d7c0a16ce851a0fb850584444e09189914bfa73b809535c1
|
|
| MD5 |
bcc55d6b845a0671f0b32383aec4f174
|
|
| BLAKE2b-256 |
1c00ada4f96c34486ac9af00f54da27870f990033158b27575a02da64872e750
|
Provenance
The following attestation bundles were made for uniclogs_pass_commander-1.0.1.tar.gz:
Publisher:
pypi.yml on uniclogs/uniclogs-pass-commander
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uniclogs_pass_commander-1.0.1.tar.gz -
Subject digest:
a7bfdf88848111a8d7c0a16ce851a0fb850584444e09189914bfa73b809535c1 - Sigstore transparency entry: 762882791
- Sigstore integration time:
-
Permalink:
uniclogs/uniclogs-pass-commander@a9946e9fc4b2f24af9916dd6773f95fb62f5a8d5 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/uniclogs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@a9946e9fc4b2f24af9916dd6773f95fb62f5a8d5 -
Trigger Event:
release
-
Statement type:
File details
Details for the file uniclogs_pass_commander-1.0.1-py3-none-any.whl.
File metadata
- Download URL: uniclogs_pass_commander-1.0.1-py3-none-any.whl
- Upload date:
- Size: 44.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
848a02e8533a8efddfb94561ff06ae1d52bbab243e7ce739afe1807bddc44ad5
|
|
| MD5 |
cf607ade0cd7c7166a025f737062798b
|
|
| BLAKE2b-256 |
111c9dbb3c532f9e44b76d3df232124eeb6f0d8436b5101752820e40d16cf5db
|
Provenance
The following attestation bundles were made for uniclogs_pass_commander-1.0.1-py3-none-any.whl:
Publisher:
pypi.yml on uniclogs/uniclogs-pass-commander
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uniclogs_pass_commander-1.0.1-py3-none-any.whl -
Subject digest:
848a02e8533a8efddfb94561ff06ae1d52bbab243e7ce739afe1807bddc44ad5 - Sigstore transparency entry: 762882810
- Sigstore integration time:
-
Permalink:
uniclogs/uniclogs-pass-commander@a9946e9fc4b2f24af9916dd6773f95fb62f5a8d5 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/uniclogs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@a9946e9fc4b2f24af9916dd6773f95fb62f5a8d5 -
Trigger Event:
release
-
Statement type: