Skip to main content
Home AutomationTechnology

Home Assistant – 433mhz Automation

By January 25, 2021January 7th, 20237 Comments

Objective

The object of this article, is to provide simple instructions on how to get started with 433mhz based automation and sensors.

This article will provide basic steps for the integration of a 433mhz based temp sensor, and remote control.

Hardware utilized in this article

  1. RTL_SDR Radio – Around 30-40$
    1. RTL-SDR v3
    2. Note- there are many options to choose from. If you watch to search yourself- look for “RTL-SDR”
    3. Note- make sure it comes with an antenna! Otherwise, you will need to pick up one!
  2. AcuRite Temp and Humidity Sensor
  3. SONOFF RM433 Remote Controller
    1. Directly from iTead
  4. SOMETHING to run docker containers on. I personally use unraid to run my containers. However- you can also run docker containers from home assistant with the portainer addon.

To note- this is the exact radio I purchased. However- it is now unavailable.

Disclaimer- Amazon affiliate links are used in this article. For this site, I choose to not pesture my audience with annoying advertisements, and instead, only rely on affiliate links to support this hobby. By using the affiliate link, you will pay the same price on Amazon, as you would otherwise pay, however, a small percentage will be given to me.. To note- I DID buy all of the seen products with my own money, and did not receive any incentive to feature or utilize them.

Implementation

To note- I started writing this post 3 months ago. My original implementation was based on a d1 mini, using ESP Home, with a RXB6 receiver. With my testing- I was unable to get consistent results utilizing the Remote Receiver component. Thus- I dropped the project until a few days ago.

After acquiring the new RTL-SDR radio, I mounted the rabbit-ears antenna in my server closet, and plugged the device into an available usb socket on my unraid server.

From here- I did a bit of research, and determined the best route to take, involved utilizing the rtl_433 github repository. Out of the box- it already supported all of the 433mhz devices I had laying around… so- the first step, was to determine how to get it running.

Step 1. Running RTL_433 via Docker

Over on unraid, I configured a new docker container, with the following settings:

  1. Name: rtl_433_mqtt (This part, can be whatever you wish to identify it as…)
  2. Repository: hertzg/rtl_433
  3. Post Arguments: -Fmqtt://mqtt.xtremeownage.com:1883 (Replace this, with the DNS/IP:PORT of your MQTT server.
  4. I mapped device /dev/bus/usb/005/002 to this container. To find the path to your device, you can utilize “lsusb”. Note- in the below screenshot- bus 005, Device 002. Notice in the path above- 005/002.
LSUSB output showing the USB RTL-SDR device

5. I mapped /etc/rtl_433 to /mnt/user/appdata/rtl_433 on my host, to allow me to customize the configuration.

For more information on how to configure the docker container, please visit its home page HERE.

Next up- by default, the configuration for the RM433 remote, is not enabled by default.

Assuming you followed my steps above, and mapped your containers /etc/rtl_433 to a shared path-

Visit https://github.com/merbanan/rtl_433/tree/master/conf, and download sonoff_rm433.conf and place this into your configuration directory for rtl_433.

Also- we will need a configuration file telling the software to load this module. For this, I downloaded rtl_433.example.conf, and placed into my configuration directory. I had to comment out a few of the protocols, and add a line to the bottom, telling the software to load the rm_433 module.

MANY other configuration parameters, and guides/resources for rtl_433, can be found on it’s github page HERE, OR, their website HERE If you run into any issues, I would look there first!

Below are my exact configuration files, and contents of my configuration directory.

# config for rtl_433

# A valid config line is a keyword followed by an argument to the end of line.
# Whitespace around the keyword is ignored, whitespace is space and tab
# Comments start with a hash sign, no inline comments, empty lines are ok.
#
# Boolean options can be true/false, yes/no, on/off, enable/disable, or 1/0
#
# All options will be applied in the order given, overwritting previous values
#
# Config files can be nested/stacked (use multiple -c and config_file = ).
#
# If no -c option is given the first found of this list will be loaded:
# - ./rtl_433.conf
# - ~/.config/rtl_433/rtl_433.conf
# - /usr/local/etc/rtl_433.conf
# - /etc/rtl_433.conf

## General options

# as command line option:
#   [-v] Increase verbosity (can be used multiple times).
#        -v : verbose, -vv : verbose decoders, -vvv : debug decoders, -vvvv : trace decoding).
# 0 = normal, 1 = verbose, 2 = verbose decoders, 3 = debug decoders, 4 = trace decoding
#verbose

# as command line option:
#   [-c <path>] Read config options from a file
#config_file

## Tuner options

# as command line option:
#   [-d <RTL-SDR USB device index>] (default: 0)
#   [-d :<RTL-SDR USB device serial (can be set with rtl_eeprom -s)>]
#   [-d "" Open default SoapySDR device
#   [-d driver=rtlsdr Open e.g. specific SoapySDR device
# default is "0" (RTL-SDR) or "" (SoapySDR)
device        0

# as command line option:
#   [-g <gain>] (default: 0 for auto)
# For RTL-SDR: gain in tenths of dB ("0" is auto).
# For SoapySDR: gain in dB for automatic distribution ("" is auto), or string of gain elements.
# E.g. "LNA=20,TIA=8,PGA=2" for LimeSDR.
gain          0

# as command line option:
#   [-t <settings>] apply a list of keyword=value settings for SoapySDR devices
# E.g. "antenna=A,bandwidth=4.5M,rfnotch_ctrl=false"
#settings      antenna=A,bandwidth=4.5M

# as command line option:
#   [-f <frequency>] [-f...] Receive frequency(s) (default: 433920000 Hz)
# default is "433.92M", other resonable values are 315M, 345M, 915M and 868M
frequency     433.92M

# as command line option:
#   [-H <seconds>] Hop interval for polling of multiple frequencies (default: 600 seconds)
# default is "600" seconds, only used when multiple frequencies are given
hop_interval  600

# as command line option:
#   [-p <ppm_error] Correct rtl-sdr tuner frequency offset error (default: 0)
# default is "0"
ppm_error     0

# as command line option:
#   [-s <sample rate>] Set sample rate (default: 250000 Hz)
# default is "250k", other valid settings are 1024k, 2048k, 3200k
sample_rate   250k

## Demodulator options

# as command line option:
#   [-R <device>] Enable only the specified device decoding protocol (can be used multiple times)
# see "protocol" section below.

# as command line option:
#   [-G] Enable blacklisted device decoding protocols, for testing only.
#register_all false

# as command line option:
#   [-X <spec> | help] Add a general purpose decoder (prepend -R 0 to disable all decoders)
# see "decoder" section below.

# as command line option:
#   [-Y level=<dB level>] Manual detection level used to determine pulses (-1.0 to -30.0) (0=auto)
#pulse_detect level=0

# as command line option:
#   [-Y auto | classic | minmax] FSK pulse detector mode.
#pulse_detect auto

# as command line option:
#   [-n <value>] Specify number of samples to take (each sample is 2 bytes: 1 each of I & Q)
samples_to_read 0

## Analyze/Debug options

# as command line option:
#   [-a] Analyze mode. Print a textual description of the signal. Disables decoding
#analyze false

# as command line option:
#   [-A] Pulse Analyzer. Enable pulse analysis and decode attempt
analyze_pulses false

# as command line option:
#   [-b] Out block size: 262144 (default)
#out_block_size

# as command line option:
#   [-M time[:<options>]|protocol|level|stats|bits|oldmodel] Add various metadata to every output line.
# Use "time" to add current date and time meta data (preset for live inputs).
# Use "time:rel" to add sample position meta data (preset for read-file and stdin).
# Use "time:unix" to show the seconds since unix epoch as time meta data.
# Use "time:iso" to show the time with ISO-8601 format (YYYY-MM-DD"T"hh:mm:ss).
# Use "time:off" to remove time meta data.
# Use "time:usec" to add microseconds to date time meta data.
# Use "time:utc" to output time in UTC.
#   (this may also be accomplished by invocation with TZ environment variable set).
#   "usec" and "utc" can be combined with other options, eg. "time:unix:utc:usec".
# Use "protocol" / "noprotocol" to output the decoder protocol number meta data.
# Use "level" to add Modulation, Frequency, RSSI, SNR, and Noise meta data.
# Use "stats[:[<level>][:<interval>]]" to report statistics (default: 600 seconds).
#   level 0: no report, 1: report successful devices, 2: report active devices, 3: report all
# Use "oldmodel" to use to old model keys. This will be removed shortly.
report_meta level
report_meta stats
report_meta time:usec
report_meta protocol

# as command line option:
#   [-y <code>] Verify decoding of demodulated test data (e.g. "{25}fb2dd58") with enabled devices
#test_data {25}fb2dd58

## File I/O options

# as command line option:
#   [-S none|all|unknown|known] Signal auto save. Creates one file per signal.
#     Note: Saves raw I/Q samples (uint8 pcm, 2 channel). Preferred mode for generating test files.
signal_grabber none

# as command line option:
#   [-r <filename>] Read data from input file instead of a receiver
#read_file FILENAME.cu8

# as command line option:
#   [-w <filename>] Save data stream to output file (a '-' dumps samples to stdout)
#write_file FILENAME.cu8

# as command line option:
#   [-W <filename>] Save data stream to output file, overwrite existing file
#overwrite_file FILENAME.cu8

## Data output options

# as command line option:
#   [-F kv|json|csv|mqtt|syslog|null] Produce decoded output in given format.
#     Without this option the default is KV output. Use "-F null" to remove the default.
#     Append output to file with :<filename> (e.g. -F csv:log.csv), defaults to stdout.
#     Specify MQTT server with e.g. -F mqtt://localhost:1883
#     Add MQTT options with e.g. -F "mqtt://host:1883,opt=arg"
#     MQTT options are: user=foo, pass=bar, retain[=0|1], <format>[=topic]
#     Supported MQTT formats: (default is all)
#       events: posts JSON event data
#       states: posts JSON state data
#       devices: posts device and sensor info in nested topics
#     The topic string will expand keys like [/model]
#     E.g. -F "mqtt://localhost:1883,user=USERNAME,pass=PASSWORD,retain=0,devices=rtl_433[/id]"
#     Specify host/port for syslog with e.g. -F syslog:127.0.0.1:1514
# default is "kv", multiple outputs can be used.
output json

# as command line option:
#   [-C] native|si|customary Convert units in decoded output.
# default is "native"
convert si

# as command line option:
#   [-T] specify number of seconds to run
#duration 0

# as command line option:
#   [-E] Stop after outputting successful event(s)
stop_after_successful_events false

## Protocols to enable (command line option "-R")

  protocol 1   # Silvercrest Remote Control
  protocol 2   # Rubicson Temperature Sensor
  protocol 3   # Prologue, FreeTec NC-7104, NC-7159-675 temperature sensor
  protocol 4   # Waveman Switch Transmitter
# protocol 6   # ELV EM 1000
# protocol 7   # ELV WS 2000
  protocol 8   # LaCrosse TX Temperature / Humidity Sensor
# protocol 10  # Acurite 896 Rain Gauge
  protocol 11  # Acurite 609TXC Temperature and Humidity Sensor
  protocol 12  # Oregon Scientific Weather Sensor
# protocol 13  # Mebus 433
# protocol 14  # Intertechno 433
  protocol 15  # KlikAanKlikUit Wireless Switch
  protocol 16  # AlectoV1 Weather Sensor (Alecto WS3500 WS4500 Ventus W155/W044 Oregon)
  protocol 17  # Cardin S466-TX2
  protocol 18  # Fine Offset Electronics, WH2, WH5, Telldus Temperature/Humidity/Rain Sensor
  protocol 19  # Nexus, FreeTec NC-7345, NX-3980, Solight TE82S, TFA 30.3209 temperature/humidity sensor
  protocol 20  # Ambient Weather, TFA 30.3208.02 temperature sensor
  protocol 21  # Calibeur RF-104 Sensor
# protocol 22  # X10 RF
  protocol 23  # DSC Security Contact
# protocol 24  # Brennenstuhl RCS 2044
  protocol 25  # Globaltronics GT-WT-02 Sensor
  protocol 26  # Danfoss CFR Thermostat
  protocol 29  # Chuango Security Technology
  protocol 30  # Generic Remote SC226x EV1527
  protocol 31  # TFA-Twin-Plus-30.3049, Conrad KW9010, Ea2 BL999
  protocol 32  # Fine Offset Electronics WH1080/WH3080 Weather Station
  protocol 33  # WT450, WT260H, WT405H
  protocol 34  # LaCrosse WS-2310 / WS-3600 Weather Station
  protocol 35  # Esperanza EWS
  protocol 36  # Efergy e2 classic
# protocol 37  # Inovalley kw9015b, TFA Dostmann 30.3161 (Rain and temperature sensor)
  protocol 38  # Generic temperature sensor 1
  protocol 39  # WG-PB12V1 Temperature Sensor
  protocol 40  # Acurite 592TXR Temp/Humidity, 5n1 Weather Station, 6045 Lightning, 3N1, Atlas
  protocol 41  # Acurite 986 Refrigerator / Freezer Thermometer
  protocol 42  # HIDEKI TS04 Temperature, Humidity, Wind and Rain Sensor
  protocol 43  # Watchman Sonic / Apollo Ultrasonic / Beckett Rocket oil tank monitor
  protocol 44  # CurrentCost Current Sensor
  protocol 45  # emonTx OpenEnergyMonitor
  protocol 46  # HT680 Remote control
  protocol 47  # Conrad S3318P, FreeTec NC-5849-913 temperature humidity sensor
  protocol 48  # Akhan 100F14 remote keyless entry
  protocol 49  # Quhwa
  protocol 50  # OSv1 Temperature Sensor
  protocol 51  # Proove / Nexa / KlikAanKlikUit Wireless Switch
  protocol 52  # Bresser Thermo-/Hygro-Sensor 3CH
  protocol 53  # Springfield Temperature and Soil Moisture
  protocol 54  # Oregon Scientific SL109H Remote Thermal Hygro Sensor
  protocol 55  # Acurite 606TX Temperature Sensor
  protocol 56  # TFA pool temperature sensor
  protocol 57  # Kedsum Temperature & Humidity Sensor, Pearl NC-7415
  protocol 58  # Blyss DC5-UK-WH
  protocol 59  # Steelmate TPMS
  protocol 60  # Schrader TPMS
# protocol 61  # LightwaveRF
# protocol 62  # Elro DB286A Doorbell
  protocol 63  # Efergy Optical
# protocol 64  # Honda Car Key
  protocol 67  # Radiohead ASK
  protocol 68  # Kerui PIR / Contact Sensor
  protocol 69  # Fine Offset WH1050 Weather Station
  protocol 70  # Honeywell Door/Window Sensor, 2Gig DW10/DW11, RE208 repeater
  protocol 71  # Maverick ET-732/733 BBQ Sensor
# protocol 72  # RF-tech
  protocol 73  # LaCrosse TX141-Bv2, TX141TH-Bv2, TX141-Bv3, TX141W, TX145wsdth sensor
  protocol 74  # Acurite 00275rm,00276rm Temp/Humidity with optional probe
  protocol 75  # LaCrosse TX35DTH-IT, TFA Dostmann 30.3155 Temperature/Humidity sensor
  protocol 76  # LaCrosse TX29IT, TFA Dostmann 30.3159.IT Temperature sensor
  protocol 77  # Vaillant calorMatic VRT340f Central Heating Control
  protocol 78  # Fine Offset Electronics, WH25, WH32B, WH24, WH65B, HP1000 Temperature/Humidity/Pressure Sensor
  protocol 79  # Fine Offset Electronics, WH0530 Temperature/Rain Sensor
  protocol 80  # IBIS beacon
  protocol 81  # Oil Ultrasonic STANDARD FSK
  protocol 82  # Citroen TPMS
  protocol 83  # Oil Ultrasonic STANDARD ASK
  protocol 84  # Thermopro TP11 Thermometer
  protocol 85  # Solight TE44/TE66, EMOS E0107T, NX-6876-917
  protocol 86  # Wireless Smoke and Heat Detector GS 558
  protocol 87  # Generic wireless motion sensor
  protocol 88  # Toyota TPMS
  protocol 89  # Ford TPMS
  protocol 90  # Renault TPMS
  protocol 91  # inFactory, nor-tec, FreeTec NC-3982-913 temperature humidity sensor
  protocol 92  # FT-004-B Temperature Sensor
  protocol 93  # Ford Car Key
  protocol 94  # Philips outdoor temperature sensor (type AJ3650)
  protocol 95  # Schrader TPMS EG53MA4, PA66GF35
  protocol 96  # Nexa
  protocol 97  # Thermopro TP08/TP12/TP20 thermometer
  protocol 98  # GE Color Effects
  protocol 99  # X10 Security
  protocol 100 # Interlogix GE UTC Security Devices
# protocol 101 # Dish remote 6.3
  protocol 102 # SimpliSafe Home Security System (May require disabling automatic gain for KeyPad decodes)
  protocol 103 # Sensible Living Mini-Plant Moisture Sensor
  protocol 104 # Wireless M-Bus, Mode C&T, 100kbps (-f 868950000 -s 1200000)
  protocol 105 # Wireless M-Bus, Mode S, 32.768kbps (-f 868300000 -s 1000000)
# protocol 106 # Wireless M-Bus, Mode R, 4.8kbps (-f 868330000)
# protocol 107 # Wireless M-Bus, Mode F, 2.4kbps
  protocol 108 # Hyundai WS SENZOR Remote Temperature Sensor
  protocol 109 # WT0124 Pool Thermometer
  protocol 110 # PMV-107J (Toyota) TPMS
  protocol 111 # Emos TTX201 Temperature Sensor
  protocol 112 # Ambient Weather TX-8300 Temperature/Humidity Sensor
  protocol 113 # Ambient Weather WH31E Thermo-Hygrometer Sensor, EcoWitt WH40 rain gauge
  protocol 114 # Maverick et73
  protocol 115 # Honeywell ActivLink, Wireless Doorbell
  protocol 116 # Honeywell ActivLink, Wireless Doorbell (FSK)
# protocol 117 # ESA1000 / ESA2000 Energy Monitor
# protocol 118 # Biltema rain gauge
  protocol 119 # Bresser Weather Center 5-in-1
# protocol 120 # Digitech XC-0324 temperature sensor
  protocol 121 # Opus/Imagintronix XT300 Soil Moisture
# protocol 122 # FS20
# protocol 123 # Jansite TPMS Model TY02S
  protocol 124 # LaCrosse/ELV/Conrad WS7000/WS2500 weather sensors
  protocol 125 # TS-FT002 Wireless Ultrasonic Tank Liquid Level Meter With Temperature Sensor
  protocol 126 # Companion WTR001 Temperature Sensor
  protocol 127 # Ecowitt Wireless Outdoor Thermometer WH53/WH0280/WH0281A
  protocol 128 # DirecTV RC66RX Remote Control
# protocol 129 # Eurochron temperature and humidity sensor
  protocol 130 # IKEA Sparsnas Energy Meter Monitor
  protocol 131 # Microchip HCS200 KeeLoq Hopping Encoder based remotes
  protocol 132 # TFA Dostmann 30.3196 T/H outdoor sensor
  protocol 133 # Rubicson 48659 Thermometer
  protocol 134 # Holman Industries iWeather WS5029 weather station (newer PCM)
  protocol 135 # Philips outdoor temperature sensor (type AJ7010)
  protocol 136 # ESIC EMT7110 power meter
  protocol 137 # Globaltronics QUIGG GT-TMBBQ-05
  protocol 138 # Globaltronics GT-WT-03 Sensor
  protocol 139 # Norgo NGE101
  protocol 140 # Elantra2012 TPMS
  protocol 141 # Auriol HG02832, HG05124A-DCF, Rubicson 48957 temperature/humidity sensor
  protocol 142 # Fine Offset Electronics/ECOWITT WH51 Soil Moisture Sensor
  protocol 143 # Holman Industries iWeather WS5029 weather station (older PWM)
  protocol 144 # TBH weather sensor
  protocol 145 # WS2032 weather station
  protocol 146 # Auriol AFW2A1 temperature/humidity sensor
  protocol 147 # TFA Drop Rain Gauge 30.3233.01
  protocol 148 # DSC Security Contact (WS4945)
  protocol 149 # ERT Standard Consumption Message (SCM)
# protocol 150 # Klimalogg
  protocol 151 # Visonic powercode
  protocol 152 # Eurochron EFTH-800 temperature and humidity sensor
  protocol 153 # Cotech 36-7959 wireless weather station with USB
  protocol 154 # Standard Consumption Message Plus (SCMplus)
  protocol 155 # Fine Offset Electronics WH1080/WH3080 Weather Station (FSK)
  protocol 156 # Abarth 124 Spider TPMS
  protocol 157 # Missil ML0757 weather station
  protocol 158 # Sharp SPC775 weather station
  protocol 159 # Insteon
  protocol 160 # ERT Interval Data Message (IDM)
  protocol 161 # ERT Interval Data Message (IDM) for Net Meters
# protocol 162 # ThermoPro-TX2 temperature sensor
  protocol 163 # Acurite 590TX Temperature with optional Humidity
  protocol 164 # Security+ 2.0 (Keyfob)
  protocol 165 # TFA Dostmann 30.3221.02 T/H Outdoor Sensor
  protocol 166 # LaCrosse Technology View LTV-WSDTH01 Breeze Pro Wind Sensor
  protocol 167 # Somfy RTS
  protocol 168 # Schrader TPMS SMD3MA4 (Subaru)
# protocol 169 # Nice Flor-s remote control for gates
  protocol 170 # LaCrosse Technology View LTV-WR1 Multi Sensor
  protocol 171 # LaCrosse Technology View LTV-TH Thermo/Hygro Sensor
  protocol 172 # Bresser Weather Center 6-in-1, 7-in-1 indoor, new 5-in-1, 3-in-1 wind gauge, Froggit WH6000, Ventus C8488A
  protocol 173 # Bresser Weather Center 7-in-1
  protocol 174 # EcoDHOME Smart Socket and MCEE Solar monitor
  protocol 175 # LaCrosse Technology View LTV-R1 Rainfall Gauge
#  protocol 176 # BlueLine Power Monitor
#  protocol 177 # Burnhard BBQ thermometer


#sonoff RM433
decoder n=Sonoff-RM433,m=OOK_PWM,s=260,l=744,r=8000,g=800,t=50,bits>=24,invert,[email protected]:{4}:button:[8:A 12:B 4:C 9:D 2:E 5:F 1:G 3:H],unique
# Sonoff RM433 remote controller
# https://www.itead.cc/sonoff-rm433-remote-controller-base.html

# map the 8 buttons to A->H
# Each remote controller has its own ID (2 first bytes)

decoder {
    name=Sonoff-RM433,
    modulation=OOK_PWM,
    short=260,
    long=744,
    reset=8000,
    gap=800,
    tolerance=50,
    bits>=24,
    invert,
    [email protected]:{20}:id,
    [email protected]:{4}:button:[8:A 12:B 4:C 9:D 2:E 5:F 1:G 3:H],
    unique
}

After this step- I was able to turn on the container, and validate it was starting properly by viewing the container’s logs.

Step 2. Integrate the MQTT data with Home Assistant

From this moment, I utilized MQTT Explorer to view the messages in my MQTT broker.

The next step- was to configure MQTT sensors in Home Assistant.

To do this- I just added this to my configuration.yaml

sensor:
  - platform: mqtt
    state_topic: "rtl_433/+/devices/Acurite-Tower/A/6731/temperature_C"
    device_class: temperature
    unique_id: 6731_temp
    name: back_porch_temp
    unit_of_measurement: '°C'
  - platform: mqtt
    state_topic: "rtl_433/+/devices/Acurite-Tower/A/6731/humidity"
    device_class: humidity
    unique_id: 6731_humidity
    name: back_porch_humidity
    unit_of_measurement: '%'

After validating my configuration, and restarting Home Assistant- I made a simple dashboard to show the values being collected on the sensor.

Simple dashboard plotting the current, and historical values coming from MQTT.

With this simple integration complete, I moved my focus over to the Sonoff RM433.

Step 4. Tackling the RM433 remote via Node-Red

While, this automation can be done reasonably easily using Home Assistant, I decided to instead, utilize node-red for this first try.

Here is an image of my workflow.

Node-red workflow, for handling RM433 input.

The first step- receives MQTT messages from rtl_433/+/devices/Sonoff-RM433/button. The + is in the path- because rtl_433 seems to generate a new ID every time it starts.

MQTT node configuration

Next- I use a switch statement to choose an action from the 8 possible input buttons. Quite simply- it just choose the output path, from the msg.payload (which contains the button pressed.)

The last part- is connecting your home assistant services, to each of the branches. Do note- I do not currently have button E & F mapped. In the future, I will add a “Netflix & Chill” button.. lol.

While- I am not very artistic- (Please don’t make fun of it too much!) I did leverage my label printer to print a few labels….

ASSUMING, you don’t have massive sausage fingers like myself- theoretically you can actually properly align the labels… and it would look decent.

My horribly aligned labels, for the sonoff RM433.

Notes

The MQTT path name can be easily adjusted to suit your needs.

https://triq.org/rtl_433/OPERATION.html#mqtt-format-strings

After writing this article, I did adjust my parameters to instead be:

-Fmqtt://mqtt.xtremeownage.com:1883,events=rtl_433[/model][/id]

With this change- rtl_433 will instead, submit json objects to the above topic. You will need to compensate with your configurations if you choose to do this.

Summary

Overall- with a minor amount of technical knowledge- it was quite easy to integrate 433mhz using a RTL-SDR USB stick.

I am actually quite surprised at the update interval from the Acurite temp/humidity sensor- especially since I have not changed its batteries in over a year. It…. sends updates multiple times per minute. While, I cannot attest to its accuracy- I will say, for my outside weather, it is more accurate then the news/google/weather.

For the RM433, overall, it is nice having a physical button I can press to turn lights on/off, turn on the fireplace, or activate scenes. With the current configuration as seen above- there is around a one second delay from press, to action. This may be due to my configuration, which will be updated in the future.

I will note- this is my first second swing at 433mhz, and is subject to change, and improvements. In the event, I can greatly improve this service, I will link it at the bottom of this post, and create a new post with the updated details.

Likewise- if you have any tips for how I can improve this setup, please let me know in the comments below!

Future ideas-
Implement this script for auto-discovery of entities into Home Assistant.

Join the discussion 7 Comments

  • steve says:

    what nodes are you using in NodeRed to read the MQTT messages? which -contrib- are you using?

  • wonderslug says:

    Make the decoder command in the config file like this

    decoder n=Sonoff-RM433,m=OOK_PWM,s=260,l=744,r=8000,g=800,t=50,bits>=24,invert,[email protected]:{20}:id,[email protected]:{4}:button:[8:A 12:B 4:C 9:D 2:E 5:F 1:G 3:H],unique

    It will add an ID to the mqtt output and allow you do multiple RM433 remotes.

  • Anthony says:

    I recently setup a rm433 button through your guide, thank you for the write up! I was wondering if there is a way to add more then one remote with your method? My rtl_433 mqtt is setup using the format -Fmqtt://mqtt.xtremeownage.com:1883,events=rtl_433[/model][/id] but the rm433 units don’t seem to have an id that I can use to filter each remote. Am I missing something in the sonoff rm433.conf that would send out this id?

    • XO says:

      I know it does have an ID in the MQTT path. but, If I recall, it was not consistent. So- there is likely some way to get each remote to send a static ID, but, I am not aware of it.