zorruno wikki: Using an SDR and RTL_433 in docker with MQTT

Using an SDR and RTL_433 in docker with MQTT


Summary

Mainly to grab weather station data, but also useful for other 433MHz data, this is the setup I use in Docker. It uses a cheap Realtek USB SDR, and pushes data received straight to an MQTT server.

For the weather station it is proving a lot more reliable than using my USB Fineoffset weather station receiver. I'd like to build it back in to weewx though, as software like weewx does a lot of nice summaries/calcs that are necessary, whereas a setup like this just shows live data such as a rain count that is just a total cumulative number of mm.

You can pass the setup parameters to the container as env variables, but I found it more structured to set up a conf file for rtl_433 and tweak that to suit.

Hardware

This is the USB SDR I have
https://www.adafruit.com/product/1497
I suspect anything with the Realtek RTL2832 chipset in it would be fine however (or others if supported by RTL_433)

Docker Compose

docker-compose.yml
version: '3.3'

services:
    rtl-433tomqtt:
        image: 'bademux/rtl_433tomqtt:latest'
        hostname: rtl-433tomqtt
        container_name: rtl-433tomqtt
        restart: unless-stopped
        volumes:
            - /dockervolumes/rtl-433tomqtt/rtl_433.conf:/etc/rtl_433/rtl_433.conf:ro
            - /etc/localtime:/etc/localtime:ro
            - /etc/timezone:/etc/timezone:ro
        devices:
            - /dev/bus/usb:/dev/bus/usb
#         - /dev/bus/usb/001/002:/dev/bus/usb/001/002

USB device and UDEV

rtl_433 looks for the SDR device in /dev/bus/usb/xxx/xxx . This location can change if you unplug/replug the USB device or move USB ports (or reboot)
I set up a UDEV rule to set the owner of the device (based on it's vendor ID) and let the rtl_433 software just look for it under /dev/bus/usb . It is probably better not to expose all the usb devices this way to the container, but this works.

Note also, the Symlink below is created, and Debian also creates a /dev/swradio0 - neither of which rtl_433 looks for.

This is the UDEV rule and it sits at /etc/udev/rules.d/99-rtl_sdr.rules
99-rtl_sdr.rules
# RTL SDR
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE="0666", GROUP="plugdev", SYMLINK+="rtl_sdr"

rtl_433 conf file

the main thing to change in the conf file is the mqtt server address, and change the mqtt topic too if you wish (I'm using rtl_433 as the topic). The data will be pushed to mqtt under this topic, then protocol number then channel number.
output mqtt://192.168.1.10:1883,retain=0,devices=rtl_433/P[protocol:255]/C[channel:0]

rtl_433.conf
# 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 0

# 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
#gain   25

# 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
#register_all true

# 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:iso
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
output mqtt://192.168.1.10:1883,retain=0,devices=rtl_433/P[protocol:255]/C[channel:0]

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

# 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 temperature/humidity sensor
  protocol 20  # Ambient Weather 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
  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 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, 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
#  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 sensor
##  protocol 159 # Insteon
##  protocol 160 # Interval Data Message (IDM)
##  protocol 161 # 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

## Flex devices (command line option "-X")

# Some general decoder definitions for various devices, enable as needed.
#
# For details about decoder definition run "rtl_433 -X help"
#

# If you enable these decoders you'll likely want to add ",match=<YOUR-DEVICE-ID>"

# Elro DB270 - wireless doorbell
#
# Device information and test files:
# https://github.com/merbanan/rtl_433_tests/tree/master/tests/elro/db270/01
#
# Output sample:
# {"time" : "2018-02-14 19:11:16", "model" : "Elro_DB270", "count" : 4, "num_rows" : 4,
#  "rows" : [{"len" : 25, "data" : "ebeaaa8"}, {"len" : 25, "data" : "ebeaaa8"},
#            {"len" : 25, "data" : "ebeaaa8"}, {"len" : 25, "data" : "ebeaaa8"}]}
#
#decoder n=Elro_DB270,m=OOK_PWM,s=300,l=930,r=11000,g=1500,repeats>=4,bits=25

# Euroster 3000TX - programmable room thermostat
#
# Device information and test files:
# https://github.com/merbanan/rtl_433_tests/tree/master/tests/euroster/3000tx/01
#
# Output sample:
# {"time" : "2018-02-14 19:20:20", "model" : "Euroster_3000TX", "count" : 1, "num_rows" : 1,
#  "rows" : [{"len" : 32, "data" : "41150515"}]}
#
#decoder n=Euroster_3000TX,m=OOK_MC_ZEROBIT,s=1000,r=4800,bits=32

# Byron BY series door bell
#
# Device information and test files:
# https://github.com/merbanan/rtl_433_tests/tree/master/tests/Byron-BY101 and Byron-BY34
#
# Output sample:
# {"time" : "@1.572864s", "model" : "doorbell#1", "count" : 25, "num_rows" : 25, "rows" : [{"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}, {"len" : 21, "data" : "e768c8"}]}
#decoder n=Byron_BY_Doorbell,m=OOK_PWM,s=500,l=1000,r=3300,g=1200,repeats>=4,bits=21,match={2}0x3

# Kerui alarm system (PIR and door sensors)
#  short is 333 us
#  long is 972 us
#  packet gap 11000 us
#decoder n=Kerui,m=OOK_PWM,s=333,l=972,r=11000,g=1100,bits=25,invert,get={20}:state,get=@20:{4}:event:[10:pir 14:open 7:close 11:tamper 15:battery_low]

# Golden Security GS-WDS07 door and window sensor
#  short is 476 us + 1344 us
#  long is 1364 us + 448 us
#  packet gap 13972 us
#decoder n=gswds07,m=OOK_PWM,s=476,l=1364,r=15000,g=1600,bits>=24,bits<=25,invert

# Generic SCV2260 4-button remote (see rtl_433_tests/tests/generic_remote/01)
#  short is 472 us + 1412 us
#  long is 1428 us + 472 us
#decoder n=generic_remote_01,m=OOK_PWM,s=472,l=1428,r=1800,g=1600,bits=25,invert,match=13cd,get=@16:{8}:event:[192:arm 12:disarm 3:home 48:sos]

# Generic PT2260 PIR (see rtl_433_tests/tests/PT2262/01)
#  short is 440 us + 1536 us
#  long is 1428 us + 548 us
#  packet gap 15348 us
#decoder n=pt2260_pir,m=OOK_PWM,s=440,l=1428,r=16000,g=1700,bits=25,invert,match=755555,countonly


RTL_433 Github https://github.com/merbanan/rtl_433
Plugin for Weewx to use an SDR to gather data https://github.com/matthewwall/weewx-sdr
Github for this docker build https://github.com/bademux/rtl_433toMQTT
Dockerfile for this build https://github.com/bademux/rtl_433toMQTT/blob/master/Dockerfile

Notes

I was getting errors after enabling more than about 148 protocols in the rtl_433 conf file. Not sure why and haven't investigated further.

This is how to determine which /dev/usb/bus ID the device is on. It might be better to pass this as an env variable and expose this device only.
vidPid="0bda:2838"
devPath="/dev/bus/usb/$(lsusb -d $vidPid | sed 's/^.*Bus\s\([0-9]\+\)\sDevice\s\([0-9]\+\).*$/\1\/\2/g')"
chown $USER $devPath 


--
CategoryDocker
CategoryWeather
CategoryMQTT
CategoryHomeAutomation