Python library and command line tool to get Information about a Radio Frequency
Project description
rf-info
Command line & Python library for obtaining details about a radio frequency
- Free software: MIT license
- Documentation: https://rf-info.readthedocs.io.
- Python 3.5, 3.6, 3.7, 3.8 & pypy3 tested. Not compatible with Python 2.x
- Linux & Windows with color, json output, and interactive terminal support
Features
Returns information about a radio frequency.
- “Radio Display” format (Dotted notaton)
- hz, khz, Mhz and Ghz representations of the frequency
- Frequency Wavelength
- ITU Band Description
- ITU Band Abbreviation
- ITU Band Number
- ISM Band Type & Description
- IEEE Band Name
- NATO Band Name
- Waveguide Band Name
- Microwave Band Name & Description
- Fixed Station & Mobile Station Designations
- IEEE Primary Band Allocations
- IEEE Secondary Band Allocations
- Detailed IEEE footnotes for each band allocation
- All active & upcomming satellite frequencys & details (406 Satellites as of 1/18/20)
- Amateur Radio Modes, License Class, Max Power (US Only)
- Broadcasting Band Number & Details (US Only)
- WIFI Frequency Details (US Only)
- Other Services CB, GMRS, Aircraft Band, Etc (US Only)
Currently supported band allocations for countries: United States (US), Canada (CA), Brazil (BR), Spain (ES), United Kingdom (GB), Russian Federation (RU), Ukraine (UA), Japan (JP), India (IN), Korea, Republic of (KR), Thailand (TH), Switzerland (CH), Chile (CL), Denmark (DK), Finland (FI), France (FR), Hungary (HU), Indonesia (ID), Iceland (IS), Italy (IT), Mexico (MX), Netherlands (NL), New Zealand (NZ), Norway (NO), Poland (PL), South Africa (ZA), Sweden (SE), Venezuela (VE), Australia (AU), Slovenia (SI), Ireland (IE), Belgium (BE), Austria (AT), Argentina (AR), Israel (IL), Romania (RO), China (CN), Uruguay (UY), Greece (GR), Panama (PA), Peru (PE)
I can easily add support for more countries upon request
Includes man pages and texinfo documentation
Install
$ pip install rf-info
Command Line Usage
$ rf-info <frequency> [<units>] [<country>]
Frequency format examples:
$ rf-info 89910000 $ rf-info 23,450,000 $ rf-info 12,634.534 $ rf-info 12_000_000 $ rf-info 344_500.100
Also supports “Radio Display” frequency representation (Dotted notation):
$ rf-info 124.125.000 $ rf-info 1.500.125.000 $ rf-info 000.012.500
Unit examples: hz, khz, Mhz, Ghz (Case Insensitive):
$ rf-info 123.100 mhz $ rf-info 4.5 ghz
Country examples (2 digit abbriviation, 3 digit abbriviation, 3 digit number, or full name) US, USA, 040, JPN, Spain (Case Insensitive):
$ rf-info 144.400.000 hz US $ rf-info 88 mhz JPN
Python Library Usage
>>> from rf_info import Frequency >>> freq = Frequency('144.890.000') >>> freq.details()
Returns a dictionary:
>>> {'display': '144.890.000', 'units': {'hz': 144890000, 'khz': 144890.0, 'mhz': 144.89, 'ghz': 0.14489}, 'wavelength': '2m', 'itu': {'number': 8, 'band': 'Very High Frequency', 'abbr': 'VHF'}, 'ieee': {'band': 'VHF', 'description': 'Very High Frequency'}, 'nato': {'band': 'A'}, 'ism': {'band': None, 'description': None}, 'waveguide': {'band': None}, 'microwave': {'band': None, 'allocation': None}, 'country': {'name': 'United States of America', 'abbr': 'US'}, 'broadcasting': {'allocated': False, 'details': ()}, 'wifi': {'allocated': False, 'details': None}, 'amateur': {'allocated': True, 'modes': 'CW, Phone, Image, RTTY/Data', 'license': 'Tech, General, Extra', 'power': 'MAX'}, 'satellite': {'allocated': False, 'name': None, 'sat-id': None, 'link': None, 'modes': None, 'callsign': None, 'status': None}, 'services': None, 'station': {'fixed': False, 'mobile': False}, 'ieee_allocation': {'primary': ('Amateur', 'Amateur-Satellite'), 'secondary': (), 'notes': ('[5.216]: Additional allocation: in China, the band 144-146 MHz is also allocated to the aeronautical mobile (OR) service on a secondary basis.',)}}
Or you can get individual items directly:
>>> freq.itu >>> freq.itu['band'] >>> freq.wavelength >>> freq.ieee_allocation['primary']
Also supports adding and subtracting frequencies. Either a frequency object, int, or string representation of a frequency, returns a new frequency object:
>>> new_freq_object = Frequency('001.123.000') + Frequency('7', 'khz') # Adds 7 khz to 1.123 mhz >>> new_freq_object = Frequency('1', 'mhz') + 15000 # Adds 15 khz to 1 mhz >>> new_freq_object = Frequency('123,000') - '000.007.000' # Subtracts 7 khz from 123 khz
Output Example
$ rf-info 435.890.000 hz US Display: 435.890.000 Hz: 435,890,000 Khz: 435,890 Mhz: 435.89 Ghz: 0.43589 Wavelength: 68cm ITU Band: 9 - UHF (Ultra High Frequency) IEEE Band: UHF (Ultra High Frequency) NATO Band: B Waveguide Band: None Microwave Band: None Country: United States of America (US) Broadcasting: False Wifi: False Amateur: True Modes: Satellite only uplink/downlink License: Tech, General, Extra Power: MAX Satellite: True Name: JAS-2 (FO-29) [24278] Link: Downlink Modes: SSB CW (DigiTalker) Status: Active Fixed Station: False Mobile Station: False Primary Allocation: - Radiolocation Secondary Allocation: - Amateur - Earth Exploration-Satellite (Active) [5.279A] Allocation Notes: - [5.279A]: The use of the frequency band 432-438 MHz by sensors in the Earth exploration-satellite service (active) shall be in accordance with Recommendation ITU-R RS.1260-1. Additionally, the Earth exploration-satellite service (active) in the frequency band 432-438 MHz shall not cause harmful interference to the aeronautical radionavigation service in China. The provisions of this footnote in no way diminish the obligation of the Earth exploration-satellite service (active) to operate as a secondary service in accordance with Nos. 5.29 and 5.30. (WRC-15)
Todo
- Add interactive terminal mode
Credits
M. Ian Perry (ianperry99@gmail.com) AD8DL
History
0.7.1b (2020-01-23)
- First Stable Pre-release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size rf_info-0.8.0-py2.py3-none-any.whl (238.8 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
Filename, size rf_info-0.8.0.tar.gz (249.9 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for rf_info-0.8.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f2fc524d04e2413c365d03a067ba16cc387d5a36cbd99a4636606ee3b354253 |
|
MD5 | fc8d740c04209d84a3dc20695ce5ca72 |
|
BLAKE2-256 | 185de98bffa9804df03aea7f7d3b2c626b71bbe035dd30e83d64be380206666c |