Skip to content

Decoder for Oregon Scientific v1 protocol wireless temperature sensors with RTL-SDR and GNU Radio.

Notifications You must be signed in to change notification settings

kevinmehall/rtlsdr-433m-sensor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

Decoding Oregon Scientific wireless sensor data with RTL-SDR and GNU Radio

Kevin Mehall
http://kevinmehall.net

This script decodes the packets that Oregon Scientific remote thermometers (like the one pictured below) send to the display unit. It also serves as example code for accessing rtl-sdr / GNU Radio samples live from Python.

Picture of sensor

Each sensor transmits every 30 seconds on 433.9MHz. The packet is repeated twice. Modulation is On-off keying, and the 32 data bits are manchester encoded. Alexander Yerezeyev implemeted a decoder for AVR microcontrollers, and wrote up a description of the protocol.

My sensors use the V1 protocol, but if you have newer sensors, take a look at JeeLabs' description of the V2 protocol. It would probably be simple to adapt my code.

The GNU Radio osmosdr block captures from the device. It's tuned slightly to the side to avoid the DC noise at the local oscillator frequency. A freq_xlating_fir_filter_ccc block selects and downsamples the correct region of the captured frequency range. Then it AM demodulates that band, and uses a message sink and queue to bring the samples into Python. (see gr_queue.py). A Python state machine detects the preamble, manchester-decodes the bits, and then parses the packet.

You can also (with the -a flag) play the AM audio to your speakers. The sensor packets sound like beeps, and you can hear other devices transmitting on the ISM band.

About

Decoder for Oregon Scientific v1 protocol wireless temperature sensors with RTL-SDR and GNU Radio.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages