Home Assistant, 433 MHz and listening to (others) sensors

MQTT, Home Assistant, 433MHz, SDR, YAML

I like cheap (but good enough) things, like 433 MHz based temperature sensors. I like them even more as I can listen to all my neighbours wireless temperature sensors using some fairly cheap equipment!

I actually have two (three, really…) setups for listening to 433 MHz – an old RFXTRX USB receiver/transciever, and one RTL-SDR RTL2832U receiver unit. One allows me to send and listen with limited range, and one allows me to listen to all the things. I’m using the RTL-SDR device together with a Raspberry Pi Zero W and MQTT, so it’s not hard on resources either.

I recently discovered that some of the sensors I have within range (including my own) are using Fahrenheit, and not Celcius. Typically this isn’t a problem with Home Assistant, you select your measurement system (metric or imperial) and all sensors will be translated into that. But my cheap sensors would report Fahrenheit, but not translate it into Celcius.

The fix was quite simple, just make sure the device_type is set, otherwise Home Assistant won’t know it’s supposed to translate these units:

  # From my MQTT configuration section
  - name: "Temperature outdoors"
    state_topic: "rtl_433/rtlsdr/devices/Bresser-3CH/1/60/temperature_F"
    device_class: "temperature"
    unit_of_measurement: "°F"

A complete list of available device_class are available in the Home Assistant documentation.

In case this software defined radio sounds fun, here’s a installation guide from the Internets.