Connecting Commercial 433 MHz Sensors To MQTT And Home Assistant With RTL-SDR

When [Elixir of Progress] was looking at setting up environmental sensors around their home to keep track of temperature, humidity and such, the obvious ideas of using WiFi-connected sensors didn’t work due to lack of WiFi range. Although Zigbee (Z-wave) sensors have longer range than WiFi, they are decidedly more expensive, proprietary and require a special transceiver hub. That’s where 433 MHz sensors for weather stations come into the picture.

The idea is simple: virtually all of those sensors – many of them rated for outdoor use – use the unlicensed 433 MHz spectrum that can easily be captured using cheap RTL-SDR (software defined radio) USB dongles. With the data stream from these sensors captured, the open source rtl_433 project enables automatic decoding of these data streams for a wide range of supported sensors.

While Realtek RTL2832-based and other RTL-SDRs can be found for quite cheap, it should be noted that these can run quite hot. Rather than heatsinking the IC, for this project it was elected to only listen sporadically and allow the RTL-SDR receiver to cool down in between listening sessions.

Getting the data from there into Home Assistant, InfluxDB or similar is easy, as rtl_433 can output the decoded data directly to an Influx database, MQTT broker as well as other formats. In this case, the data was sent via MQTT with the Home Assistant instance configured to treat these MQTT topics as sensors. With each sensor’s location carefully registered, this allows for setting up a dense, very low-power network of 433 MHz sensors for monitoring and home automation purposes.

37 thoughts on “Connecting Commercial 433 MHz Sensors To MQTT And Home Assistant With RTL-SDR

      1. If you want to penetrate concrete or operate below ground level, you would first select a lower frequency like 915MHz (868MHz if in Europe) or 433MHz. Next you need to realize that to handle major signal attenuation through dense materials you either need to transmit at a higher power, or increase your sensitivity. For TX at a higher power, XBEE modules can get into the 1 Watt range. That’s 30dBm output power. Every 6 dBm you double the range if the pathway was free space. So if you are using a 17dBm module, you can get quite a bit more distance by using a 1 watt version. FYI, going from 915MHz to 433MHz also doubles the free space range and the opposite is true (going from 433 to 915 cuts the maximum free space range in half.)

        I would have gone with a LoRa module.

    1. I originally wrote this tutorial because while I could find mentions of the idea on Reddit, I couldn’t find a clear 1 stop tutorial for how to do everything with only YAML editing.

      Also, even those zigbee 915Mhz sensors are way more expensive than these cheapo outdoor 433mhz sensors I’ve been picking up. A zigbee USB stick in the US costs $1-$5 USD more than the complete RTL-SDR kit with external antennas as well. So even compared to zigbee and z-wave, this approach has merit as a cost-cutting alternative or for environments that wreck hardware (heat and humidity in my case).

      1. 433 will also give you far better battery life 5-15 years vs months on ZigBee or ~year in zwave). 433 is king for things that only need simple one way communication and PoE isn’t feasible.

    1. One of the fun parts of living on the edge of a dramatic microclimate is that my weather can differ from the local city sensors by 15% or more, particularly in windspeed and humidity. Cliff edges by the ocean can have dramatic effects on local weather.

      So for me, it was just a quest to find an inexpensive way to instrument a very hostile environment.

  1. the 433MHz connected electrical cable power sensing clamp (Efergy) that I have doesn’t send the same ID number after battery replacement which is frustrating. But now I know it does that can edit HomeAssistant sensor yaml file to change the MQTT topic to match.
    AND is very pleasing to be able to easily link up open and free software in this way, big thanks to all who make that possible.

  2. I use about 8 or 10 Acurite sensors in my HA system using this exact technique. Batteries last forever (and they’re mostly just rechargeable AA’s anyway) and they’re _so_ much cheaper than Z-wave sensors (which I do use a few of as well, mostly where I want a motion sensor too), but $40 for 1 sensor vs $15 for a 3-pack of Acurite’s…). I do use Energizer Lithium non-rechargeable’s for fridge/2 freezers/outside sensors though.

    1. 2’nd where are you finding 3 sensor for $15. I am seeing on aliexpress a “weather station 433mhz” for $4.98 but not outdoor rated and definitely not rated for outside or refrigerator/freezer use

  3. I use ZigBee for motion and am slowly switching bulbs to it because it seems to be a lot more stable than wifi. It also ends up having better range because new devices on the perimeter expand the range. All of my temp/humidity sensors are passive Bluetooth that’s sniffed by the esp32s that I use when I need to build a custom sensor. While the aqara fp1 sensor works perfectly for the living room and kitchen occupancy, it’s far too expensive to put in each room. I bought a few 24ghz occupancy boards and paired them with esp32s and they seem good enough for detecting humans and ignoring cats that all the other rooms will get them eventually.

    1. Exactly! Cool project however 433 MHz ASK receiver modules abound for $1 or $2 and they work fine with AcuRite sensors, no need for a DC-to-GHz SDR and CPU board that costs 20x more. I have tested that with my weather station sensors and decoding the data bursts on an equally cheap Arduino MCU was a fun hack. Actually, some newer modules are as low as $0.73 + free shipping on EB, they may work just as well. There is a MQTT lib for Arduino or ESP8266, ESP32 etc.. as well (just don’t use TLS with the Arduino Ethernet shield unless you have a beefy Arduino).

  4. Regarding the mentioned thermal problems: I did manage to burn out one cheap RTL-SDR and cripple another (only works at 250k now).
    My findings are that sample rate affects the temperature. At 250k there are no problems at all. Even 1M works fine. At 2M I would opt for adding a heat sink or use the NooElec ones with metal casing.
    All my faults occured at 3M sample rate — which I would discourage without proper heat-sinking.

  5. I do a very similar thing to pull my electric meter into HA using the rtlamr project and an rtl-sdr dongle. I grab the meter info out of the air using rtlamr, publish it to mqtt and have HA read the info to an appropriate entity. That is then fed into the energy dashboard. Works very well and I don’t have to touch my electric utility or breaker box to get an actual real time reading. Obviously this requires a meter that broadcasts the usage readings.

    1. The entire point is to use pre-existing sensor devices that can be bought cheap. They don’t use Lora! You can’t convert them to use Lora! It’s a waste of time and money to even try!

    2. I can buy 3 of these cheap old 433Mhz sensors *and* see several others from nearby neighbors for less than the cost of a single LoRA sensor probe with no receiver, and receiving it with an SDR is somewhat involved.

      LoRA is very cool, but has yet to match the price point of 15 year old hardware. That hardware cannot be reasonably upconverted.

  6. Why not just use Aqara ZigBee sensors, which record temperature, pressure, and humidity, and connect directly to Home Assistant via ZHA (no hub required)? They’re also not expensive at around £20 each, and you can pick them up for as cheap as £14 each on deals.

    1. I have one of those, and I also have some accurate sensors which I use receive with and SDR. Other than cost, the update frequently is much higher on the accurite sensors vs the Aqara ZigBee sensors. My Aqara sensor seems unpredictable in how frequently it updates. It’s been 16 minutes since it last sent an update right now, where that accurite sensors seem to send an update every 10-15 seconds.

Leave a Reply to dr. cryognCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.