explaingit

merbanan/rtl_433

7,448CAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

Turns a cheap USB radio dongle into a decoder for hundreds of wireless home devices, weather stations, temperature sensors, rain gauges, and remote controls, outputting data you can pipe into home automation systems.

Mindmap

mindmap
  root((rtl_433))
    What it does
      Decodes wireless signals
      Hundreds of protocols
      Multiple frequency bands
    Hardware needed
      USB RTL2832 dongle
      Antenna optional
    Output formats
      Plain text
      JSON CSV
      MQTT InfluxDB
    Platforms
      Linux macOS Windows
      Raspberry Pi embedded
    Devices supported
      Weather stations
      Sensors remotes
      Energy monitors
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Capture temperature and humidity readings from your wireless outdoor sensor and log them to InfluxDB for long-term charting.

USE CASE 2

Feed decoded sensor data into a home automation system like Home Assistant via MQTT without replacing any existing wireless hardware.

USE CASE 3

Decode signals from a wireless rain gauge or energy monitor and export them as JSON for custom processing.

USE CASE 4

Run a always-on listener on a Raspberry Pi that records all nearby wireless device broadcasts to a file.

Tech stack

CMQTTInfluxDBLinuxRaspberry Pi

Getting it running

Difficulty · moderate Time to first run · 30min

Requires an RTL2832-based USB dongle and installation of the rtl-sdr driver before rtl_433 will detect any hardware.

In plain English

rtl_433 is a program that turns a cheap USB radio receiver into a listener for the wireless signals broadcast by hundreds of common household and outdoor devices. Weather stations, temperature and humidity sensors, rain gauges, energy monitors, door and window contacts, remote controls, and oil tank monitors are among the things it can decode. Despite the name suggesting only 433 MHz, it works across several frequency bands used by these kinds of devices in different countries. The hardware needed is an inexpensive USB dongle based on the Realtek RTL2832 chip, the same type of dongle sold for watching digital TV, which can be repurposed as a software-defined radio. A software-defined radio means the signal processing that would normally happen in hardware is instead done by software on your computer. rtl_433 handles that processing and knows how to interpret the specific bit patterns that hundreds of different devices broadcast. Once running, the program listens on the configured frequency and prints out decoded readings as they arrive: a temperature reading from your garden sensor, a button press from a remote control, a rainfall count from a weather station. Output can be formatted as plain text, JSON, or CSV, and can be forwarded to data systems like MQTT or InfluxDB, which makes it popular for home automation and monitoring setups. The software runs on Linux, macOS, FreeBSD, and Windows. It is written in C and intentionally kept lightweight so it can run on small embedded devices like a Raspberry Pi. Installation is available through standard package managers on most platforms. Support for individual devices is implemented as decoders in the codebase, and the README lists several hundred supported protocols covering products from brands like Acurite, LaCrosse, Oregon Scientific, Fine Offset, and many others. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
Set up rtl_433 on a Raspberry Pi to capture my Acurite outdoor temperature sensor and publish readings to an MQTT broker every minute.
Prompt 2
How do I configure rtl_433 to output JSON and pipe it into InfluxDB so I can chart my sensor data in Grafana?
Prompt 3
I have a USB RTL2832 dongle and a LaCrosse weather station, show me the rtl_433 command to start capturing its broadcasts on the right frequency.
Prompt 4
List the rtl_433 output fields for a typical temperature sensor so I can parse them in a Python script.
Prompt 5
rtl_433 is showing garbled output for my device, how do I find the correct protocol number and frequency to use?
Open on GitHub → Explain another repo

← merbanan on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.