February 21, 2023

Receive temperature, 433 MHz sensors, with RTL-SDR

In my underfloor heating project, using Node-RED, I have to have one sensing thermometer per room/zone, seems to be 8 in total, so therefore it would be nice with a wireless battery sourced device with good resolution and frequent updates.

During the test phase I used a Z-way device but the resolution was pretty bad. Another device mentioned is the Ruuvi tag but since it's a bluetooth device the transmitting range could be better.

After some googling I went for 433 MHz devices.

Intro
Thermometer
For some years ago I used a Tellstick for home automation and also had some ESIC WT450(WT) thermometers. They where still working so how to receive their data sent over 433 MHz ?

RTL-SDR
Another project have been receiving AIS data with a RTL-SDR so after some search I found an amazing package, rtl_433decoding over 150 device protocols including my WT.

Antenna
In the beginning of the tests I had some problem receiving data from the sensors due to that I used an antenna from the mentioned Tellstik device. When I built my own dipol antenna, check picture, it worked much better.

I built the dipol from a cut SMA coaxial cable and 2 wires from a ordinary 230 VAC cable. Please note that the length should be changed from 49 cm to 16,5 cm. I soldered the connections, instead of the choc block, and used heat shrink tubing to isolate.

Installing
Installing on Raspberry Pi(RPi), with OS Bullseye, it's easy since there is a ready package

sudo apt install rtl-433

For other versions check the help or compile the latest version yourself.
Just a note that the "cmake" command line should be "cmake ../".

Test
Start with just checking the command help

rtl_433 -h

and then check your environment with 

sudo rtl_433 

Probably you will discover that also your neighbors have 433 devices.

Checking the device list, in the help command, I saw that my WT device had id "33". So with the command 

sudo rtl_433 -R 33 

I filtered out everything except my own device.

For other command use just check the fantastic documentation.

Node-RED
The application for the underfloor heating project is using Node-Red(NR) so the first idea I got was to use the "exec" node, executing "sudo rtl_433 -R 33 -F json" and then use the output to retrieve the temperature.

But I found the "node-red-contrib-rtl_433" node which have a nice interface and will output the temperature as

"msg.payload.temperature_C"

Wrap up
Sensor resolution
The resolution for my WT devices where good enough but the accuracy could be better. I used a referens thermometer and then applied an offset to the measured value.

Compact install
sudo apt install librtlsdr-dev cmake
wget https://github.com/merbanan/rtl_433/archive/refs/heads/master.zip
unzip master.zip && mv rtl_433-master rtl_433
mkdir build
cd build
cmake -DENABLE_SOAPYSDR=OFF ../
make
sudo make install
 
 

No comments:

Post a Comment

Feel free to leave a comment ! ... but due to a lot of spam comments I have to moderate them. Will reply ASAP !