RF Surveillance Node
====================
.. start-badges see https://shields.io/badges and collection see https://github.com/inttter/md-badges
| |build| |release_version| |wheel|
| |docs| |pylint| |supported_versions|
| |ruff| |gh-lic| |commits_since_specific_tag_on_main|
Radio Frequency Surveillance Node
---------------------------------
Different nodes sends signal based on pre-configured required power strength. Each node
can have unlimited antenna scanners; each antenna is given a range of frequency slice to scan and report
the power which exceed the given threshold. Threshold is defined in a setting file.
The antenna sends the signal data into a transmitter device found in the node.
The sent data consist of a central frequency in MHz , the power in dBm, IQ sample (imaginary number) where the sample size is configured.
The sample size can be in hundred thousands. The sample rate is 1.24 millions samples per second; it can be configured to tens of millions per second.
The node works in a plug and play. High quality SDR devices (RTL-SDR, USRP, BladeRF, HackRF etc..) can be attached to sample on much higher rate.
|rf_node|
| RF data with two RTL-SDR connected devices
|rf_node_console|
Change Log
==========
`Change Log <https://github.com/alanmehio/rf-surveillance-node/blob/main/CHANGELOG.rst>`_.
Quickstart
==========
| `Usage <https://github.com/alanmehio/rf-surveillance-node/blob/main/docs/source/contents/usage.rst>`_.
License
=======
* `GNU Affero General Public License v3.0`_
License
=======
* Free software: GNU Affero General Public License v3.0
.. LINKS
.. _GNU Affero General Public License v3.0: https://github.com/alanmehio/rf-surveillance-node/blob/main/LICENSE
.. BADGE ALIASES
.. Build Status
.. Github Actions: Test Workflow Status for specific branch <branch>
.. |build| image:: https://github.com/alanmehio/rf-surveillance-node/actions/workflows/ci_cd.yaml/badge.svg
:alt: GitHub Workflow Status (branch)
:target: https://github.com/alanmehio/rf-surveillance-node/actions
.. Documentation
.. |docs| image:: https://img.shields.io/readthedocs/rf-surveillance-node/latest?logo=readthedocs&logoColor=lightblue
:alt: Read the Docs (version)
:target: https://rf-surveillance-node.readthedocs.io/en/latest/
.. PyLint
.. |pylint| image:: https://img.shields.io/badge/linting-pylint-yellowgreen
:target: https://github.com/pylint-dev/pylint
.. PyPI
.. |release_version| image:: https://img.shields.io/pypi/v/rfnode
:alt: Production Version
:target: https://pypi.org/project/rfnode/
.. |wheel| image:: https://img.shields.io/pypi/wheel/rfnode?color=green&label=wheel
:alt: PyPI - Wheel
:target: https://pypi.org/project/rfnode
.. |supported_versions| image:: https://img.shields.io/pypi/pyversions/rfnode?color=blue&label=python&logo=python&logoColor=%23ccccff
:alt: Supported Python versions
:target: https://pypi.org/project/rfnode
.. Github Releases & Tags
.. |commits_since_specific_tag_on_main| image:: https://img.shields.io/github/commits-since/alanmehio/rf-surveillance-node/release-1.0.0/main?color=blue&logo=github
:alt: GitHub commits since tagged version (branch)
:target: https://github.com/alanmehio/rf-surveillance-node/compare/release-1.0.0..main
.. |commits_since_latest_github_release| image:: https://img.shields.io/github/commits-since/alanmehio/rf-surveillance-node/latest?color=blue&logo=semver&sort=semver
:alt: GitHub commits since latest release (by SemVer)
.. LICENSE (eg AGPL, MIT)
.. Github License
.. |gh-lic| image:: https://img.shields.io/badge/license-GNU_Affero-orange
:alt: GitHub
:target: https://github.com/alanmehio/rf-surveillance-node/blob/main/LICENSE
.. Ruff linter for Fast Python Linting
.. |ruff| image:: https://img.shields.io/badge/codestyle-ruff-000000.svg
:alt: Ruff
:target: https://docs.astral.sh/ruff/
.. Local linux command: CTRL+Shift+Alt+R key
.. Local Image as link
.. |rf_node| image:: https://raw.githubusercontent.com/alanmehio/rf-surveillance-node/main/media/rf-node.png
:alt: RF Surveillance Node
.. |rf_node_console| image:: https://raw.githubusercontent.com/alanmehio/rf-surveillance-node/main/media/screen/rf-node-console.gif
:alt: RF Surveillance Node Console Display for two RTL-SDR devices
Raw data
{
"_id": null,
"home_page": null,
"name": "rfnode",
"maintainer": "Iso",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "Radio Frequency, RF, Node",
"author": "Iso",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/98/df/46b315f8bd4e0225eb5903b17037ffb0f290ca7c0cfd26fe220a68ebc497/rfnode-1.0.1.tar.gz",
"platform": null,
"description": "RF Surveillance Node\n====================\n\n.. start-badges see https://shields.io/badges and collection see https://github.com/inttter/md-badges\n\n| |build| |release_version| |wheel|\n| |docs| |pylint| |supported_versions|\n| |ruff| |gh-lic| |commits_since_specific_tag_on_main|\n\n\nRadio Frequency Surveillance Node\n---------------------------------\nDifferent nodes sends signal based on pre-configured required power strength. Each node\ncan have unlimited antenna scanners; each antenna is given a range of frequency slice to scan and report\nthe power which exceed the given threshold. Threshold is defined in a setting file.\nThe antenna sends the signal data into a transmitter device found in the node.\nThe sent data consist of a central frequency in MHz , the power in dBm, IQ sample (imaginary number) where the sample size is configured.\nThe sample size can be in hundred thousands. The sample rate is 1.24 millions samples per second; it can be configured to tens of millions per second.\nThe node works in a plug and play. High quality SDR devices (RTL-SDR, USRP, BladeRF, HackRF etc..) can be attached to sample on much higher rate.\n\n|rf_node|\n\n| RF data with two RTL-SDR connected devices \n\n|rf_node_console|\n\n\n\n\nChange Log\n==========\n `Change Log <https://github.com/alanmehio/rf-surveillance-node/blob/main/CHANGELOG.rst>`_.\n\nQuickstart\n==========\n| `Usage <https://github.com/alanmehio/rf-surveillance-node/blob/main/docs/source/contents/usage.rst>`_.\n\n\nLicense\n=======\n\n\n* `GNU Affero General Public License v3.0`_\n\n\nLicense\n=======\n\n* Free software: GNU Affero General Public License v3.0\n\n\n\n.. LINKS\n\n.. _GNU Affero General Public License v3.0: https://github.com/alanmehio/rf-surveillance-node/blob/main/LICENSE\n\n\n\n.. BADGE ALIASES\n\n.. Build Status\n.. Github Actions: Test Workflow Status for specific branch <branch>\n\n.. |build| image:: https://github.com/alanmehio/rf-surveillance-node/actions/workflows/ci_cd.yaml/badge.svg\n :alt: GitHub Workflow Status (branch)\n :target: https://github.com/alanmehio/rf-surveillance-node/actions\n\n\n.. Documentation\n\n.. |docs| image:: https://img.shields.io/readthedocs/rf-surveillance-node/latest?logo=readthedocs&logoColor=lightblue\n :alt: Read the Docs (version)\n :target: https://rf-surveillance-node.readthedocs.io/en/latest/\n\n.. PyLint\n\n.. |pylint| image:: https://img.shields.io/badge/linting-pylint-yellowgreen\n :target: https://github.com/pylint-dev/pylint\n\n.. PyPI\n\n.. |release_version| image:: https://img.shields.io/pypi/v/rfnode\n :alt: Production Version\n :target: https://pypi.org/project/rfnode/\n\n.. |wheel| image:: https://img.shields.io/pypi/wheel/rfnode?color=green&label=wheel\n :alt: PyPI - Wheel\n :target: https://pypi.org/project/rfnode\n\n.. |supported_versions| image:: https://img.shields.io/pypi/pyversions/rfnode?color=blue&label=python&logo=python&logoColor=%23ccccff\n :alt: Supported Python versions\n :target: https://pypi.org/project/rfnode\n\n.. Github Releases & Tags\n\n.. |commits_since_specific_tag_on_main| image:: https://img.shields.io/github/commits-since/alanmehio/rf-surveillance-node/release-1.0.0/main?color=blue&logo=github\n :alt: GitHub commits since tagged version (branch)\n :target: https://github.com/alanmehio/rf-surveillance-node/compare/release-1.0.0..main\n\n.. |commits_since_latest_github_release| image:: https://img.shields.io/github/commits-since/alanmehio/rf-surveillance-node/latest?color=blue&logo=semver&sort=semver\n :alt: GitHub commits since latest release (by SemVer)\n\n.. LICENSE (eg AGPL, MIT)\n.. Github License\n\n.. |gh-lic| image:: https://img.shields.io/badge/license-GNU_Affero-orange\n :alt: GitHub\n :target: https://github.com/alanmehio/rf-surveillance-node/blob/main/LICENSE\n\n\n.. Ruff linter for Fast Python Linting\n\n.. |ruff| image:: https://img.shields.io/badge/codestyle-ruff-000000.svg\n :alt: Ruff\n :target: https://docs.astral.sh/ruff/\n\n\n.. Local linux command: CTRL+Shift+Alt+R key\n\n\n.. Local Image as link\n\n\n.. |rf_node| image:: https://raw.githubusercontent.com/alanmehio/rf-surveillance-node/main/media/rf-node.png\n :alt: RF Surveillance Node\n\n.. |rf_node_console| image:: https://raw.githubusercontent.com/alanmehio/rf-surveillance-node/main/media/screen/rf-node-console.gif\n :alt: RF Surveillance Node Console Display for two RTL-SDR devices\n\n\n\n",
"bugtrack_url": null,
"license": "AGPL-3.0-only",
"summary": "Radio Frequency Surveillance Node",
"version": "1.0.1",
"project_urls": {
"Bug Tracker": "https://github.com/alanmehio/rf-surveillance-node/issues",
"CI: Github Actions": "https://github.com/alanmehio/rf-surveillance-node/actions",
"Changelog": "https://github.com/alanmehio/rf-surveillance-node/blob/master/CHANGELOG.rst",
"Documentation": "https://rf-surveillance-node.readthedocs.io/",
"Source Code": "https://github.com/alanmehio/rf-surveillance-node"
},
"split_keywords": [
"radio frequency",
" rf",
" node"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "43ad31a1d62f01852aa0d32e5f8b445062620770d31f26db26cd6455e0ca17c4",
"md5": "853f6426d1a1f30945380b4f0c74f5a7",
"sha256": "dbf36a8378d714bf9a9c2a34f62f4fccc60ed2268dcef67a4d29efd7677143ce"
},
"downloads": -1,
"filename": "rfnode-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "853f6426d1a1f30945380b4f0c74f5a7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 26559,
"upload_time": "2025-08-24T09:32:26",
"upload_time_iso_8601": "2025-08-24T09:32:26.628458Z",
"url": "https://files.pythonhosted.org/packages/43/ad/31a1d62f01852aa0d32e5f8b445062620770d31f26db26cd6455e0ca17c4/rfnode-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "98df46b315f8bd4e0225eb5903b17037ffb0f290ca7c0cfd26fe220a68ebc497",
"md5": "5f8acd06ad70e1ca8e2b7a1d395df02d",
"sha256": "90609d889dfd9b986a96c1c36d0262bd5b67926fc036ee2086daaed5c9744989"
},
"downloads": -1,
"filename": "rfnode-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "5f8acd06ad70e1ca8e2b7a1d395df02d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 28577,
"upload_time": "2025-08-24T09:32:28",
"upload_time_iso_8601": "2025-08-24T09:32:28.216695Z",
"url": "https://files.pythonhosted.org/packages/98/df/46b315f8bd4e0225eb5903b17037ffb0f290ca7c0cfd26fe220a68ebc497/rfnode-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-24 09:32:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "alanmehio",
"github_project": "rf-surveillance-node",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [
{
"name": "pyrtlsdr",
"specs": [
[
">=",
"0.3.0"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"2.3.2"
]
]
},
{
"name": "pyserial",
"specs": [
[
">=",
"3.5"
]
]
}
],
"tox": true,
"lcname": "rfnode"
}