Skip to content

Commit

Permalink
Merge pull request #511 from projecthorus/testing
Browse files Browse the repository at this point in the history
v1.5.3 Release - New Historical View
  • Loading branch information
darksidelemm authored May 23, 2021
2 parents 21ba420 + 663b954 commit e680221
Show file tree
Hide file tree
Showing 31 changed files with 2,624 additions and 102 deletions.
5 changes: 5 additions & 0 deletions .devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"build": { "dockerfile": "Dockerfile.dev" },
"forwardPorts": [ 5000 ],
"runArgs": [ "--hostname=radiosonde_auto_rx", "--network=host", "--privileged" ]
}
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@ venv
*.autosave
.scannerwork


# Custom config file
auto_rx/config/station.cfg
auto_rx/station.cfg
auto_rx/log/

auto_rx/log_power.csv
Expand Down
33 changes: 33 additions & 0 deletions Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
FROM python:3.7-buster

EXPOSE 5000/tcp

# Upgrade base packages and install dependencies.
RUN case $(uname -m) in \
"armv6l") extra_packages="libatlas3-base libgfortran5" ;; \
"armv7l") extra_packages="libatlas3-base libgfortran5" ;; \
esac && \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
libatomic1 \
rng-tools \
rtl-sdr \
sox \
tini \
usbutils \
${extra_packages} && \
rm -rf /var/lib/apt/lists/*

# Copy in requirements.txt.
COPY auto_rx/requirements.txt \
/tmp/requirements.txt

# Install Python packages.
RUN pip3 --no-cache-dir install \
--extra-index-url https://www.piwheels.org/simple \
-r /tmp/requirements.txt

# Run bash.
WORKDIR /root
CMD ["/bin/bash"]
79 changes: 29 additions & 50 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,75 +3,54 @@

**Please refer to the [auto_rx wiki](https://github.com/projecthorus/radiosonde_auto_rx/wiki) for the latest information.**

This fork of [rs1279's RS](https://github.com/rs1729/RS) codebase
provides a set of utilities ('auto_rx') to allow automatic reception
and uploading of
[Radiosonde](https://en.wikipedia.org/wiki/Radiosonde) telemetry to
multiple services, including:
This fork of [rs1279's RS](https://github.com/rs1729/RS) codebase provides a set of utilities ('auto_rx') to allow automatic reception and uploading of [Radiosonde](https://en.wikipedia.org/wiki/Radiosonde) positions to multiple services, including:

* The [SondeHub Radiosonde Tracker](https://tracker.sondehub.org) - a tracking website specifically designed for tracking radiosondes!

* APRS-IS (for display on sites such as [radiosondy.info](https://radiosondy.info) and [aprs.fi](https://aprs.fi)

* [ChaseMapper](https://github.com/projecthorus/chasemapper) for mobile
radiosonde chasing.

There is also a web interface available on http://localhost:5000 ,
allowing display of station status and basic tracking of the sonde
position.
Auto-RX's [Web Interface](https://github.com/projecthorus/radiosonde_auto_rx/wiki/Web-Interface-Guide) provides a way of seeing the live status of your station, and also a means of reviewing and analysing previous radiosonde flights. Collected meteorological data can be plotted in the common 'Skew-T' format.

Currently we support the following radiosonde types:
* Vaisala RS92
* Vaisala RS41
* Graw DFM06/DFM09/DFM17/PS-15
* Meteomodem M10 & M20
* Intermet iMet-4 (and 'narrowband' iMet-1 sondes)
* Intermet iMet-54
* Lockheed Martin LMS6 (400 MHz and 1680 MHz variants, including the new 'LMS-X' unreleased type)
* Meisei iMS-100
* Meteo-Radiy MRZ (400 MHz versions)
### Radiosonde Support Matrix

Support for other radiosondes may be added as required (please send us
sondes to test with!)
Manufacturer | Model | Position | Temperature | Humidity | Pressure
-------------|-------|----------|-------------|----------|----------
Vaisala | RS92-SGP/NGP | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark:
Vaisala | RS41-SG/SGP/SGM | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: (for -SGP)
Graw | DFM06/09/17 | :heavy_check_mark: | :heavy_check_mark: | :x: | :x:
Meteomodem | M10 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Not Sent
Meteomodem | M20 | :heavy_check_mark: | :x: | :x: | Not Sent
Intermet Systems | iMet-4 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Not Sent
Intermet Systems | iMet-54 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Not Sent
Lockheed Martin | LMS6-400/1680 | :heavy_check_mark: | :x: | :x: | :x:
Meisei | iMS-100 | :heavy_check_mark: | :x: | :x: | :x:
Meteo-Radiy | MRZ (400 MHz) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x:

This software performs the following steps:
Support for other radiosondes may be added as required - please send us sondes to test with! If you have any information about telemetry formats, we'd love to hear from you (see our contact details below).

1. Use rtl_power to scan across a user-defined frequency range, and
detect peaks in the spectrum.
Improvements from the upstream RS codebase will be merged into this codebase when/where appropriate. A big thanks to rs1729 for continuing to develop and improve these decoders, and working with us to make auto_rx decode *all* the radiosondes!

2. For each detected peak frequency, run the rs_detect utility, which
determines if a radiosonde signal is present, and what type it is.
### Updates

3. If a radiosonde signal is found, start demodulating it, and upload
data to various internet services.
**This software is under regular development. Please [update regularly](https://github.com/projecthorus/radiosonde_auto_rx/wiki/Performing-Updates) to get bug-fixes and improvements!**

4. If no peaks are found, or if no packets are heard from the
radiosonde in a given amount of time (2 minutes by default), go back
to step 1.
Please consider joining the Google Group to receive updates on new software features:
https://groups.google.com/forum/#!forum/radiosonde_auto_rx

The latest version can make use of multiple RTLSDRs to allow for
tracking of many radiosondes simultaneously. The number of
simultaneous radiosondes you can track is limited only by the number
of RTLSDRs you have setup!
## Presentations
* Linux.conf.au 2019 - https://www.youtube.com/watch?v=YBy-bXEWZeM
* UKHAS Conference 2019 - [Presented via Skype](https://youtu.be/azDJmMywBgw?t=643) which had some audio issues at the start. Slides [here](https://rfhead.net/sondes/auto_rx_presentation_UKHAS2019.pdf).

Refer to the wiki for the [latest updates, and installation/setup
instructions](https://github.com/projecthorus/radiosonde_auto_rx/wiki).
## Contacts
* [Mark Jessop](https://github.com/darksidelemm) - vk5qi@rfhead.net
* [Michaela Wheeler](https://github.com/TheSkorm) - radiosonde@michaela.lgbt

**This software is under regular development. Please [update
regularly](https://github.com/projecthorus/radiosonde_auto_rx/wiki/Performing-Updates)
to get bug-fixes and improvements!**

### Licensing Information
## Licensing Information
All software within this repository is licensed under the GNU General Public License v3. Refer this repositories LICENSE file for the full license text.

Radiosonde telemetry data captured via this software and uploaded into the [Sondehub](https://sondehub.org/) Database system is licensed under [Creative Commons BY-SA v2.0](https://creativecommons.org/licenses/by-sa/2.0/).
Telemetry data uploaded into the APRS-IS network is generally considered to be released into the public domain.

By uploading data into these systems (by enabling the relevant uploaders within the `station.cfg` file) you as the user agree for your data to be made available under these licenses. Note that uploading to Sondehub and Habitat is enabled by default.

### Contacts
* [Mark Jessop](https://github.com/darksidelemm) - vk5qi@rfhead.net
* [Michaela Wheeler](https://github.com/TheSkorm) - radiosonde@michaela.lgbt

You can often find us in the #highaltitude IRC Channel on
[Freenode](https://webchat.freenode.net/).
By uploading data into these systems (by enabling the relevant uploaders within the `station.cfg` file) you as the user agree for your data to be made available under these licenses. Note that uploading to Sondehub is enabled by default.
4 changes: 4 additions & 0 deletions auto_rx/auto_rx.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ def start_scanner():
min_distance=config["min_distance"],
quantization=config["quantization"],
scan_dwell_time=config["scan_dwell_time"],
scan_delay=config["scan_delay"],
detect_dwell_time=config["detect_dwell_time"],
max_peaks=config["max_peaks"],
rs_path=RS_PATH,
Expand Down Expand Up @@ -721,6 +722,9 @@ def main():
# Using print because logging may not be established yet
print("Invalid logging path, using default. Does the folder exist?")

# Update Global logging path, used by other modules.
autorx.logging_path = logging_path

# Configure logging
_log_suffix = datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S_system.log")
_log_path = os.path.join(logging_path, _log_suffix)
Expand Down
5 changes: 4 additions & 1 deletion auto_rx/autorx/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
# MINOR - New sonde type support, other fairly big changes that may result in telemetry or config file incompatability issus.
# PATCH - Small changes, or minor feature additions.

__version__ = "1.5.2"
__version__ = "1.5.3"


# Global Variables
Expand Down Expand Up @@ -49,3 +49,6 @@
scan_results = Queue()
# Global scan inhibit flag, used by web interface.
scan_inhibit = False

# Logging Directory
logging_path = "./log/"
1 change: 1 addition & 0 deletions auto_rx/autorx/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"snr_threshold": 10,
"station_lat": 0.0,
"station_lon": 0.0,
"station_alt": 0.0,
}

# Web interface credentials
Expand Down
7 changes: 5 additions & 2 deletions auto_rx/autorx/email_notification.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def __init__(
# Dictionary to track sonde IDs
self.sondes = {}

self.max_age = 3600*2 # Only store telemetry for 2 hours
self.max_age = 3600 * 2 # Only store telemetry for 2 hours

# Input Queue.
self.input_queue = Queue()
Expand Down Expand Up @@ -261,7 +261,10 @@ def process_telemetry(self, telemetry):

msg += "\n"
msg += "https://sondehub.org/%s\n" % strip_sonde_serial(_id)
msg += "https://sondehub.org/card/%s\n" % strip_sonde_serial(_id)
msg += (
"https://sondehub.org/card/%s\n"
% strip_sonde_serial(_id)
)

_subject = "Nearby Radiosonde Landing Detected - %s" % _id

Expand Down
5 changes: 4 additions & 1 deletion auto_rx/autorx/geometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from .utils import position_info


def getDensity(altitude):
def getDensity(altitude, get_pressure=False):
"""
Calculate the atmospheric density for a given altitude in metres.
This is a direct port of the oziplotter Atmosphere class
Expand Down Expand Up @@ -75,6 +75,9 @@ def getDensity(altitude):
# Finally, work out the density...
speedOfSound = math.sqrt(gamma * R * temperature)
pressure = pressureRel * pressureSL
if get_pressure:
return pressure

density = densitySL * pressureRel * temperatureSL / temperature

return density
Expand Down
Loading

0 comments on commit e680221

Please sign in to comment.