This is the antenna performance plotted from tinyGS reception data.

Overview

tinyGS-antenna-map

This is the antenna performance plotted from tinyGS reception data. See their repository.

The code produces a plot that provides Azimuth and Elevation information showing the location in the sky, based on the observer/station, where the satellite reception is successful and packets are uploaded to TinyGS.

My four active stations show very different reception patterns. These are a 433Mhz vertical 1/4 wave antenna, a 433Mhz vertical dipole, a 433Mhz horizontal dipole, and a 1/4 wave 915 Mhz antenna (that has received nothing useful as there aren't any satellites presently transmitting). All are on the East side of the house and somewhat blocked towards the West.

W6LHI

Darker quadrants mean more reception. Individual packets received are the black dots. Packets received with CRC Errors are shown as red dots.

The center of the circle is exactly vertical from the observer/station. The edge of the circle is the horizon (well, kinda!).

For example, if you operate with a simple horizontal dipole, then you would see a bias in the data towards the higher reception direction (90 degrees from the dipole length). If you have a Al/Ez tracking antenna then you should see a very broad reception map.

The program will display the plot on the desktop if it is run in that environment. If you want a CLI process, then look at the -o flag below. The program uses Matplotlib and the install instructions are included - follow them carefully. All instructions are for Debian (and tested on a R.Pi). This code should work on other systems. Any problems? - please use GitHub issues.

Install

Download and install code from GitHub

The best copy of this code is always on GitHub. If you need the git command (and you will) do this part first:

$ sudo apt-get install -y git
...
$

Grab the code via this:

$ git clone https://github.com/mahtin/tinyGS-antenna-map.git
...
$ cd tinyGS-antenna-map
$

Installing required packages (i.e Matplotlib)

Please read and follow the INSTALL-MATPLOTLIB page. Then return here after that is finished.

Install continued

Once Matplotlib is install cleanly the code requires some additional packages/libraries:

$ sudo python3 -m pip install -U -r requirements.txt
...
$

Now the install is finished. Congratulations.

Setting up your user-id

To plot your own graphs from your own stations, you need to know what your own user-id on TinyGS is. The first option is to save it away in a file for all the code to use.

Storing your user-id

Your user-is can be found via various methods.

Assuming you are logged into TinyGS, you can visit https://tinygs.com and click on the User Console icon and then look at the resulting station URL (it will be something like: https://tinygs.com/user/20000007). The same user-id number can be seen in the URL for the per-station page.

user-id

Or, you can use your Telegram TinyGS Personal Bot channel to find your user-id. It's the last number from the passwordless login link you get with the /weblogin command.

user-id

The user-id is the URL provided (see example image).

Copy the number seens and use it to create a .user_id file via the following command:

$ echo '20000007' > .user_id
$

Your number will be different.

Specifying user for each run

If you choose, you specify your user-id manually on each command run. See the -u option below.

Plotting your antenna map

All your stations will be plotted on a single page. Make the displayed page larger if you need.

$ ./tinygs_antenna_map.py

This assumes that you are on a machine with a display. If you are headless, then the following will be useful:

$ ./tinygs_antenna_map.py -o > pretty-graph.png
$ scp pretty-graph.png somewhere-else.example.com:

If Matplotlib sends out warning messages about Connection Refused or Gdk-CRITICAL, it's because you can't connect to the display (even if you are trying to write an image file). This still produces an image. You can fix this by setting the MPLBACKEND environment variable (see Matplotlib builtin backends instructions):

$ MPLBACKEND=Agg ./tinygs_antenna_map.py -o > pretty-graph.png
...
$

tinygs_antenna_map.py options

The tinygs_antenna_map.py program takes various arguments.

tinygs_antenna_map [-v|--verbose] [-h|--help] [-r|--refresh] [-s|--station[,station...]] [-u|--user] user-id]
  • [-v|--verbose] - provide some information on each of the packets being processed/displayed.
  • [-h|--help] - this message.
  • [-r|--refresh] - presently unused; but will pull data from TinyGS site on demand.
  • [-s|--station[,station...]] - list the station or stations to plot. Use comma-seperated (i.e. A,B,C) for more than one station.
  • [-u|--user] user-id] - define the user-id vs using the .user_id file.
  • [-o|--output] - produce a PNG file on stdout (use: tinygs_antenna_map.py -o > diagram.png for example`).

Specifying the station or user-id

To produce a plot for a specific user (for example 20000007):

$ ./tinygs_antenna_map.py -u 20000007

Your number will be different.

To produce a plot for one of your specific stations, use the station name:

$ ./tinygs_antenna_map.py -s W6LHI_433Mhz

To produce a plot for someone else station (and I'm not judging you in anyway):

$ ./tinygs_antenna_map.py -s MALAONE -u 0

(No idea who MALAONE is). Note the -u 0 argument. This overtides your .user_id file if it exists (as this station is a different user).

Data refresh

The program can be run many times; however it will only collect new data from TinyGS API no-and-again. This is to reduce the load on their servers.

  • Packet data is updated at-best every twelve hours
  • Station data is updated at-best every five days
  • TLE data is updated at-best every two days

Should you want to force a data refresh, then use the -r flag. Don't blame me if you get banned from the site.

$ ./tinygs_antenna_map.py -r

I don't recommend using that flag.

Adding antenna direction graphics to the plot(s)

If you want to superimpose an antenna direction on the graphs; use the following examples:

An simple antenna direction for all ploted stations:

$ ./tinygs_antenna_map.py -a 220

An antenna direction for a specific ploted station:

$ ./tinygs_antenna_map.py -a [email protected]_433Mhz

An antenna direction for more than one ploted station:

$ ./tinygs_antenna_map.py -a [email protected]_433Mhz,[email protected]_433Mhz_2

The numbers are in degress and the comma seperated list must contain valid station names.

Owner
Martin J. Levy
Roaming the planet; one packet at a time! PGP: 7EA1 39C4 0C1C 842F 9D41 AAF9 4A34 925D 0517 2859 Ham operator: W6lHI/G8LHI
Martin J. Levy
LicenseLocation - License Location With Python

LicenseLocation Hi,everyone! โค ๐Ÿงก ๐Ÿ’› ๐Ÿ’š ๐Ÿ’™ ๐Ÿ’œ This is my first project! โœ” Actual

The Bin 1 Jan 25, 2022
Implementation of Trajectory classes and functions built on top of GeoPandas

MovingPandas MovingPandas implements a Trajectory class and corresponding methods based on GeoPandas. Visit movingpandas.org for details! You can run

Anita Graser 897 Jan 01, 2023
A service to auto provision devices in Aruba Central based on the Geo-IP location

Location Based Provisioning Service for Aruba Central A service to auto provision devices in Aruba Central based on the Geo-IP location Geo-IP auto pr

Will Smith 3 Mar 22, 2022
Tool to display your current position and angle above your radar

๐Ÿ›  Tool to display your current position and angle above your radar. As a response to the CS:GO Update on 1.2.2022, which makes cl_showpos a cheat-pro

Miko 6 Jan 04, 2023
Open Data Cube analyses continental scale Earth Observation data through time

Open Data Cube Core Overview The Open Data Cube Core provides an integrated gridded data analysis environment for decades of analysis ready earth obse

Open Data Cube 410 Dec 13, 2022
Open GeoJSON data on geojson.io

geojsonio.py Open GeoJSON data on geojson.io from Python. geojsonio.py also contains a command line utility that is a Python port of geojsonio-cli. Us

Jacob Wasserman 114 Dec 21, 2022
A library to access OpenStreetMap related services

OSMPythonTools The python package OSMPythonTools provides easy access to OpenStreetMap (OSM) related services, among them an Overpass endpoint, Nomina

Franz-Benjamin Mocnik 342 Dec 31, 2022
leafmap - A Python package for geospatial analysis and interactive mapping in a Jupyter environment.

A Python package for geospatial analysis and interactive mapping with minimal coding in a Jupyter environment

Qiusheng Wu 1.4k Jan 02, 2023
iNaturalist observations along hiking trails

This tool reads the route of a hike and generates a table of iNaturalist observations along the trails. It also shows the observations and the route of the hike on a map. Moreover, it saves waypoints

7 Nov 11, 2022
Specification for storing geospatial vector data (point, line, polygon) in Parquet

GeoParquet About This repository defines how to store geospatial vector data (point, lines, polygons) in Apache Parquet, a popular columnar storage fo

Open Geospatial Consortium 449 Dec 27, 2022
This GUI app was created to show the detailed information about the weather in any city selected by user

WeatherApp Content Brief description Tools Features Hotkeys How it works Screenshots Ways to improve the project Installation Brief description This G

TheBugYouCantFix 5 Dec 30, 2022
ColoringMapAlgorithm-CSP- - Graphical Coloring of Countries with Condition Satisfaction Algorithm

ColoringMapAlgorithm-CSP- Condition Satisfaction Algorithm Output Condition

Kerem TAN 2 Jan 10, 2022
ProjPicker (projection picker) is a Python module that allows the user to select all coordinate reference systems (CRSs)

ProjPicker ProjPicker (projection picker) is a Python module that allows the user to select all coordinate reference systems (CRSs) whose extent compl

Huidae Cho 4 Feb 06, 2022
Python bindings and utilities for GeoJSON

geojson This Python library contains: Functions for encoding and decoding GeoJSON formatted data Classes for all GeoJSON Objects An implementation of

Jazzband 763 Dec 26, 2022
Expose a GDAL file as a HTTP accessible on-the-fly COG

cogserver Expose any GDAL recognized raster file as a HTTP accessible on-the-fly COG (Cloud Optimized GeoTIFF) The on-the-fly COG file is not material

Even Rouault 73 Aug 04, 2022
Tile Map Service and OGC Tiles API for QGIS Server

Tiles API Add tiles API to QGIS Server Tiles Map Service API OGC Tiles API Tile Map Service API - TMS The TMS API provides these URLs: /tms/? to get i

3Liz 6 Dec 01, 2021
A compilation of several single-beam bathymetry surveys of the Caribbean

Caribbean - Single-beam bathymetry This dataset is a compilation of several single-beam bathymetry surveys of the Caribbean ocean displaying a wide ra

Fatiando a Terra Datasets 0 Jan 20, 2022
EOReader is a multi-satellite reader allowing you to open optical and SAR data.

Remote-sensing opensource python library reading optical and SAR sensors, loading and stacking bands, clouds, DEM and index.

ICube-SERTIT 152 Dec 30, 2022
Digital Earth Australia notebooks and tools repository

Repository for Digital Earth Australia Jupyter Notebooks: tools and workflows for geospatial analysis with Open Data Cube and xarray

Geoscience Australia 335 Dec 24, 2022
gpdvega is a bridge between GeoPandas and Altair that allows to seamlessly chart geospatial data

gpdvega gpdvega is a bridge between GeoPandas a geospatial extension of Pandas and the declarative statistical visualization library Altair, which all

Ilia Timofeev 49 Jul 25, 2022