From 6738fba42d76e7e6cd881d13d86f2bf5af430d3e Mon Sep 17 00:00:00 2001
From: James Smith
Date: Fri, 19 Dec 2025 15:25:48 +0000
Subject: [PATCH] Add rtl_433 sensor decoding and UI improvements
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Features:
- Add 433MHz sensor decoding via rtl_433 integration
- Add mode tabs to switch between Pager and 433MHz modes
- Add sensor data display with device model, readings
- Add separate stats for sensors (readings count, unique devices)
- Add favicon
- Add audio alerts, export (CSV/JSON), signal meter, waterfall display
- Add auto-restart on frequency change
- Add relative timestamps
UI:
- Add author credit (smittix) to header
- Fix tool status alignment with grid layout
- Update stats display to switch with mode tabs
Docs:
- Update README with rtl_433 installation and usage
- Add "What is INTERCEPT?" section explaining front-end purpose
- Add author section and badge
- Update LICENSE copyright
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5
---
LICENSE | 2 +-
README.md | 92 ++++++--
favicon.svg | 8 +
intercept.py | 643 +++++++++++++++++++++++++++++++++++++++++++++------
4 files changed, 662 insertions(+), 83 deletions(-)
create mode 100644 favicon.svg
diff --git a/LICENSE b/LICENSE
index 844ff64..ff8c02d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2025
+Copyright (c) 2025 smittix
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 3575746..52a162c 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,7 @@
+
@@ -11,8 +12,8 @@
- A sleek, modern web-based pager decoder using RTL-SDR and multimon-ng.
- Decode POCSAG and FLEX pager signals with a futuristic SpaceX-inspired interface.
+ A sleek, modern web-based front-end for RTL-SDR signal decoding tools.
+ Provides a unified interface for multimon-ng (POCSAG/FLEX) and rtl_433 (433MHz sensors).
## Screenshot
@@ -20,15 +21,40 @@
---
+## What is INTERCEPT?
+
+INTERCEPT is a **web-based front-end** that provides a unified, modern interface for popular RTL-SDR signal decoding tools:
+
+- **rtl_fm + multimon-ng** - For decoding POCSAG and FLEX pager signals
+- **rtl_433** - For decoding 433MHz ISM band devices (weather stations, sensors, etc.)
+
+Instead of running command-line tools manually, INTERCEPT handles the process management, output parsing, and presents decoded data in a clean, real-time web interface.
+
+---
+
## Features
+### Pager Decoding
- **Real-time decoding** of POCSAG (512/1200/2400) and FLEX protocols
+- **Customizable frequency presets** stored in browser
+- **Auto-restart** on frequency change while decoding
+
+### 433MHz Sensor Decoding
+- **200+ device protocols** supported via rtl_433
+- **Weather stations** - temperature, humidity, wind, rain
+- **TPMS** - Tire pressure monitoring sensors
+- **Doorbells, remotes, and IoT devices**
+- **Smart meters** and utility monitors
+
+### General
- **Web-based interface** - no desktop app needed
- **Live message streaming** via Server-Sent Events (SSE)
+- **Audio alerts** with mute toggle
+- **Message export** to CSV/JSON
+- **Signal activity meter** and waterfall display
- **Message logging** to file with timestamps
-- **Customizable frequency presets** stored in browser
- **RTL-SDR device detection** and selection
-- **Configurable gain, squelch, and PPM correction**
+- **Configurable gain and PPM correction**
## Requirements
@@ -40,7 +66,8 @@
- Python 3.7+
- Flask
- rtl-sdr tools (`rtl_fm`)
-- multimon-ng
+- multimon-ng (for pager decoding)
+- rtl_433 (for 433MHz sensor decoding)
## Installation
@@ -75,7 +102,7 @@ sudo apt-get install multimon-ng
**From source:**
```bash
-git clone https://github.com/EliasOewortal/multimon-ng.git
+git clone https://github.com/EliasOenal/multimon-ng.git
cd multimon-ng
mkdir build && cd build
cmake ..
@@ -83,13 +110,35 @@ make
sudo make install
```
-### 3. Install Python dependencies
+### 3. Install rtl_433 (optional, for 433MHz sensors)
+
+**macOS (Homebrew):**
+```bash
+brew install rtl_433
+```
+
+**Ubuntu/Debian:**
+```bash
+sudo apt-get install rtl-433
+```
+
+**From source:**
+```bash
+git clone https://github.com/merbanan/rtl_433.git
+cd rtl_433
+mkdir build && cd build
+cmake ..
+make
+sudo make install
+```
+
+### 4. Install Python dependencies
```bash
pip install -r requirements.txt
```
-### 4. Clone and run
+### 5. Clone and run
```bash
git clone https://github.com/yourusername/intercept.git
@@ -119,12 +168,19 @@ Open your browser to `http://localhost:5050`
Enable logging in the Logging section to save decoded messages to a file. Messages are saved with timestamp, protocol, address, and content.
-## Default Frequencies (UK)
+## Default Frequencies
+### Pager (UK)
- **153.350 MHz** - UK pager frequency
- **153.025 MHz** - UK pager frequency
-You can customize these presets in the web interface.
+### 433MHz Sensors
+- **433.92 MHz** - EU/UK ISM band (most common)
+- **315.00 MHz** - US ISM band
+- **868.00 MHz** - EU ISM band
+- **915.00 MHz** - US ISM band
+
+You can customize pager presets in the web interface.
## API Endpoints
@@ -132,10 +188,13 @@ You can customize these presets in the web interface.
|----------|--------|-------------|
| `/` | GET | Main web interface |
| `/devices` | GET | List RTL-SDR devices |
-| `/start` | POST | Start decoding |
-| `/stop` | POST | Stop decoding |
+| `/start` | POST | Start pager decoding |
+| `/stop` | POST | Stop pager decoding |
+| `/start_sensor` | POST | Start 433MHz sensor listening |
+| `/stop_sensor` | POST | Stop 433MHz sensor listening |
| `/status` | GET | Get decoder status |
-| `/stream` | GET | SSE stream for messages |
+| `/stream` | GET | SSE stream for pager messages |
+| `/stream_sensor` | GET | SSE stream for sensor data |
| `/logging` | POST | Toggle message logging |
| `/killall` | POST | Kill all decoder processes |
@@ -160,10 +219,15 @@ You can customize these presets in the web interface.
MIT License - see [LICENSE](LICENSE) for details.
+## Author
+
+Created by **smittix** - [GitHub](https://github.com/smittix)
+
## Acknowledgments
- [rtl-sdr](https://osmocom.org/projects/rtl-sdr/wiki) - RTL-SDR drivers
-- [multimon-ng](https://github.com/EliasOenal/multimon-ng) - Multi-protocol decoder
+- [multimon-ng](https://github.com/EliasOenal/multimon-ng) - Multi-protocol pager decoder
+- [rtl_433](https://github.com/merbanan/rtl_433) - 433MHz sensor decoder
- Inspired by the SpaceX mission control aesthetic
## Disclaimer
diff --git a/favicon.svg b/favicon.svg
new file mode 100644
index 0000000..81b4829
--- /dev/null
+++ b/favicon.svg
@@ -0,0 +1,8 @@
+
diff --git a/intercept.py b/intercept.py
index e662956..bcf49f3 100755
--- a/intercept.py
+++ b/intercept.py
@@ -11,14 +11,17 @@ import queue
import pty
import os
import select
-from flask import Flask, render_template_string, jsonify, request, Response
+from flask import Flask, render_template_string, jsonify, request, Response, send_file
app = Flask(__name__)
# Global process management
current_process = None
+sensor_process = None
output_queue = queue.Queue()
+sensor_queue = queue.Queue()
process_lock = threading.Lock()
+sensor_lock = threading.Lock()
# Logging settings
logging_enabled = False
@@ -32,6 +35,7 @@ HTML_TEMPLATE = '''
INTERCEPT // Signal Intelligence
+