{"id":24563003,"url":"https://github.com/clemensv/signalstats1090","last_synced_at":"2025-04-19T17:43:21.992Z","repository":{"id":273241292,"uuid":"919085821","full_name":"clemensv/signalstats1090","owner":"clemensv","description":"signalstats1090: Live Dashboard for dump1090 signal optimization","archived":false,"fork":false,"pushed_at":"2025-01-21T22:07:04.000Z","size":801,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-12T21:22:59.128Z","etag":null,"topics":["adsb","adsbexchange","avgeek","aviation","dump1090","modes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clemensv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-19T17:10:24.000Z","updated_at":"2025-02-15T00:16:37.000Z","dependencies_parsed_at":"2025-01-19T18:24:46.938Z","dependency_job_id":"0cd34cde-69c6-46d7-936d-d3bccbc9966f","html_url":"https://github.com/clemensv/signalstats1090","commit_stats":null,"previous_names":["clemensv/signalstats1090"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemensv%2Fsignalstats1090","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemensv%2Fsignalstats1090/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemensv%2Fsignalstats1090/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemensv%2Fsignalstats1090/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clemensv","download_url":"https://codeload.github.com/clemensv/signalstats1090/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249048711,"owners_count":21204304,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adsb","adsbexchange","avgeek","aviation","dump1090","modes"],"created_at":"2025-01-23T09:19:55.367Z","updated_at":"2025-04-19T17:43:21.970Z","avatar_url":"https://github.com/clemensv.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dump1090 Real-Time Signal Statistics (signalstats1090)\n\n[![PyPI](https://img.shields.io/pypi/v/signalstats1090)](https://pypi.org/project/signalstats1090/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/signalstats1090)](https://pypi.org/project/signalstats1090/)\n[![PyPI - License](https://img.shields.io/pypi/l/signalstats1090)](https://github.com/clemensv/signalstats1090/blob/main/LICENSE.md)\n\nThis project provides a web application for real-time monitoring of ADS-B\nmessages using `dump1090` to help you with optimizing reception performance. The\napplication computes and displays message rates, signal strength, distance\nstatistics, and coverage statistics. It also provides a radar chart showing the\ndistribution of messages by distance and bearing.\n\n## How to use the dashboard\n\nOnce you've installed the dashboard application, you can access it by opening a\nweb browser and navigating to the URL where the application is running. The\ndefault URL is `http://localhost:8000` if you are running the application on the\nlocal machine. If you are running the application on a different machine,\nreplace `localhost` with the IP address or hostname of the machine where the\napplication is running, e.g. `http://mypiaware:8000`.\n\nUsing the dashboard you can tune the gain of your receiver to optimize the\nreception performance. The goal is to maximize the number of messages received\nwhile keeping the signal strength within a reasonable range. The radar chart\nshows the distribution of messages by distance and bearing, which can help you\nidentify areas with poor reception.\n[`dump109-fa`](https://github.com/flightaware/dump1090/blob/master/README.adaptive-gain.md)\nprovides a built-in feature to adjust the gain automatically, but you can also\nadjust it manually based on the statistics provided by the dashboard. Also try\nsetting the gain to zero. Once you've modified the gain, restart dump1090 to\napply the changes and then observe the statistics on the dashboard. Automatic\ngain adjustment can take several minutes to stabilize, so be patient.\n\n## Features\n\n- **Message Rate Statistics**: Computes and displays message rates over\n  different intervals (5s, 15s, 30s, 60s, 300s).\n- **Signal Strength Statistics**: Computes and displays minimum, maximum, and\n  average signal strength over 30 seconds.\n- **Distance Statistics**: Computes and displays minimum, maximum, and\n  percentile distances over 30 seconds.\n- **Coverage Statistics**: Displays coverage statistics in a radar chart,\n  showing the distribution of messages by distance and bearing.\n- **RSSI/Distance Ratio**: Displays the ratio of RSSI to distance for each\n  bearing segment.\n\n![Screenshot](https://github.com/clemensv/signalstats1090/blob/main/media/screenshot.jpeg?raw=true)\n\n## Getting Started\n\n### Prerequisites\n\n- `dump1090` running on the same machine or accessible via network.\n- Python 3.10+ installed on your machine. Note: Raspbian typically comes with\n  Python pre-installed. Also ensure that support for `venv` is installed (`sudo\n  apt-get install python3-venv`).\n- Find out the latitude and longitude of your antenna. You can use Google Maps\n  or similar services to find this information. Mode-S/ADS-B messages only\n  contain partial position information, so the application needs the antenna\n  location to compute the geo-coordinates of aircraft.\n\n### Installation\n\nThe app can be run on the same Raspberry Pi that runs `dump1090` or on a\ndifferent machine. If you are running `dump1090` on a different machine, you\nneed to specify the host and port of the `dump1090` server when running the\napplication.\n\nThere are three described options to install and run the application:\n\n- [Raspberry Pi Installation (as a service)](#raspberry-pi-installation-as-a-service)\n- [Raspberry Pi Installation (as an app)](#raspberry-pi-installation-as-an-app)\n- [Installation elsewhere](#installation-elsewhere)\n\n#### Raspberry Pi Installation (as a service)\n\nTo install and run the application as a service on Raspberry Pi, you can use the\nprovided setup script. First, ensure that the the [Prequisites](#prerequisites)\nare met. Then follow the steps below:\n\n##### 1. Download the setup script\n\n```bash\nwget -qO- https://raw.githubusercontent.com/clemensv/signalstats1090/main/setup.sh \u003e ~/signalstats1090_setup.sh\nchmod +x ~/signalstats1090_setup.sh\n```\n\n##### 2. Install and start the service\n\nCall the script with the required arguments and any optional arguments you want\nto set. The script will install the package and create a systemd service that\nstarts the web server automatically at boot.\n\n```bash\n~/signalstats1090_setup.sh install --antenna-lat \u003cantenna_lat\u003e --antenna-lon \u003cantenna_lon\u003e\n```\nReplace \u003cantenna_lat\u003e and \u003cantenna_lon\u003e with the coordinates of your receiver.  \nIf dump1090 is running on a remote host, adjust the --dump1090-host and --dump1090-port as needed.  \nThe script creates a systemd service that starts automatically at boot.\n\nAll arguments for the setup script\n\n- `--host`: Host to run the web server on (default: `0.0.0.0`).\n- `--port`: Port to run the web server on (default: `8000`).\n- `--antenna-lat`: Latitude of the antenna (required).\n- `--antenna-lon`: Longitude of the antenna (required).\n- `--dump1090-host`: Host running dump1090 (default: `localhost`).\n- `--dump1090-port`: Port for dump1090 (default: `30005`).\n\n##### 3. Start the service\n\nAfter the installation, you can start the service and verify that it's running\nusing the following commands:\n\n```bash\nsudo systemctl start signalstats1090\nsudo systemctl status signalstats1090\n```\n\n##### 4. Access the dashboard\n\nOpen a web browser and navigate to the URL where the application is running. The\ndefault URL is `http://localhost:8000` if you are running the application on the\nlocal machine. If you are running the application on a different machine, replace\n`localhost` with the IP address or hostname of the machine where the application\nis running, e.g. `http://mypiaware:8000`.\n\n##### 5. Update or uninstall the service\n\nYou can always update the service package to the latest version by running:\n\n```bash\n~/signalstats1090_setup.sh update\n```\n\nTo uninstall the service, run:\n\n```bash\n~/signalstats1090_setup.sh uninstall\n```\n\n#### Raspberry Pi Installation (as an app)\n\nOn Raspberry Pi, ensure Python 3 is installed (usually pre-installed on\nRaspbian). Then create a virtual environment in your home directory and install\nthe package into it:\n\n```bash\nsudo apt-get update\nsudo apt-get install python3-venv\npython3 -m venv ~/signalstats1090\nsource ~/signalstats1090/bin/activate\npip install signalstats1090\n```\n\nOnce installed, you can run the application using:\n\n```bash\nsignalstats1090 run --antenna-lat \u003cantenna_lat\u003e --antenna-lon \u003cantenna_lon\u003e\n```\n\nThe app supports the following commands and options:\n\nCommands:\n- `run`: Run the web server.\n- `config`: Set default values for command line arguments for the `run` command.\n\nOptions: \n\n- `--host`: Host to run the web server on (default: `0.0.0.0`).\n- `--port`: Port to run the web server on (default: `8000`).\n- `--antenna-lat`: Antenna latitude (required for running the server).\n- `--antenna-lon`: Antenna longitude (required for running the server).\n- `--dump1090-host`: Host running dump1090 (default: `localhost`).\n- `--dump1090-port`: Port for dump1090 (default: `30005`).\n\nWith the `config` command, you can permanently set the default values for the\ncommand line arguments. This way, you don't have to specify them every time you\n`run` the application:\n\n```bash\nsignalstats1090 config --antenna-lat \u003cantenna_lat\u003e --antenna-lon \u003cantenna_lon\u003e\n```\n\nThen you can run the application without specifying the `--antenna-lat` and\n`--antenna-lon` arguments:\n\n```bash\nsignalstats1090 run\n```\n\nWhen starting a new session, activate the virtual environment again before\nrunning the app.\n\n```bash\nsource ~/signalstats1090/bin/activate\n```\n\nTo uninstall the application, simply remove the directory:\n\n```bash\nrm -rf ~/signalstats1090\n```\n\n#### Installation Elsewhere\n\nIf you want to run the application on a Mac or PC or anywhere else you\nhave Python installed, you can follow these steps:\n\n##### 1. Install the package\n  \nWith all the [Prequisites](#prerequisites) met, you can install the package\nusing:\n\n```bash\npip install signalstats1090\n```\n\nIf you cloned the Git repository, and you want to play around with the code you\ncan install the package from the local directory as editable using `pip install\n-e .`.\n\n##### 2. Run the server\n  \nRun the server using the following command:\n\n```bash\nsignalstats1090 run --antenna-lat \u003cantenna_lat\u003e --antenna-lon \u003cantenna_lon\u003e --dump1090-host \u003cdump1090_host\u003e\n```\n\nThe `--antenna-lat` and `--antenna-lon` arguments are required. You can find\nthe latitude and longitude of your antenna using Google Maps or similar\nservices.\n\nIf `dump1090` is running on a different host, you can specify the `--dump1090-host`\nand `--dump1090-port` arguments. The default host is `localhost` and the default\nport is `30005` (the default port for Beast output).\n\nIf you need to run the web server on a different host or port, you can specify\nthe `--host` and `--port` arguments. The default host is `0.0.0.0` which listens\non all interfaces. The default port is `8000`.\n\n```bash\nsignalstats1090 run --host \u003chost\u003e --port \u003cport\u003e --antenna-lat \u003cantenna_lat\u003e --antenna-lon \u003cantenna_lon\u003e --dump1090-host \u003cdump1090_host\u003e --dump1090-port \u003cdump1090_port\u003e\n```\n\n##### 3. Access the dashboard\n\nOpen a web browser and navigate to the URL where the application is running. The\ndefault URL is `http://localhost:8000` if you are running the application on the\nlocal machine. If you are running the application on a different machine, replace\n`localhost` with the IP address or hostname of the machine where the application\nis running, e.g. `http://mypiaware:8000`.\n\n### Charts\n\n- **Message Rate Chart**: Displays message rates over different intervals (5s,\n  15s, 30s, 60s, 300s).\n- **Signal Strength Chart**: Displays minimum, average, and maximum signal\n  strength over 30 seconds.\n- **Distance Chart**: Displays minimum, maximum, and percentile distances over\n  30 seconds.\n- **Distance Histogram Chart**: Displays the count of position readings in 30km\n  buckets (up to 300km).\n- **Coverage Chart**: Displays coverage statistics in a radar chart, showing the\n  distribution of messages by distance and bearing.\n- **RSSI/Distance Ratio Chart**: Displays the ratio of RSSI to distance for each\n  bearing segment.\n\n## License\n\nThis project is licensed under the MIT License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclemensv%2Fsignalstats1090","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclemensv%2Fsignalstats1090","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclemensv%2Fsignalstats1090/lists"}