Installazione di RTL_433 su Raspberry Pi
1 min readPre-requisito: rtl-sdr installato
Questo semplice programma permette di decodificare le trasmissioni dei vari dispositivi che lavorano alla frequenza di 433 Mhz.
Io ci decodifico vari sensori di temperatura e un musuratore di energia OWL CM160 USB.
sudo apt-get install libtool libusb-1.0.0-dev librtlsdr-dev rtl-sdr build-essential autoconf cmake pkg-config git clone https://github.com/merbanan/rtl_433
Se Git non è installato, lo installate con questo comando:
sudo apt-get install git
A questo punto si inizia con la compilazione
cd rtl_433/ mkdir build cd build cmake ../ make sudo make install
Â
Avviate il programma con:
rtl_433 -G -q
rtl_433 -h Usage: = Tuner options = [-d <RTL-SDR USB device index>] (default: 0) [-d :<RTL-SDR USB device serial (can be set with rtl_eeprom -s)>] [-g <gain>] (default: 0 for auto) [-f <frequency>] [-f...] Receive frequency(s) (default: 433920000 Hz) [-H <seconds>] Hop interval for polling of multiple frequencies (default: 600 seconds) [-p <ppm_error] Correct rtl-sdr tuner frequency offset error (default: 0) [-s <sample rate>] Set sample rate (default: 250000 Hz) [-S] Force sync output (default: async) = Demodulator options = [-R <device>] Enable only the specified device decoding protocol (can be used multiple times) [-G] Enable all device protocols, included those disabled by default [-X <spec> | help] Add a general purpose decoder (-R 0 to disable all other decoders) [-l <level>] Change detection level used to determine pulses [0-16384] (0 = auto) (default: 0) [-z <value>] Override short value in data decoder [-x <value>] Override long value in data decoder [-n <value>] Specify number of samples to take (each sample is 2 bytes: 1 each of I & Q) = Analyze/Debug options = [-a] Analyze mode. Print a textual description of the signal. Disables decoding [-A] Pulse Analyzer. Enable pulse analysis and decode attempt [-I] Include only: 0 = all (default), 1 = unknown devices, 2 = known devices [-D] Print debug info on event (repeat for more info) [-q] Quiet mode, suppress non-data messages [-W] Overwrite mode, disable checks to prevent files from being overwritten [-y <code>] Verify decoding of demodulated test data (e.g. "{25}fb2dd58") with enabled devices = File I/O options = [-t] Test signal auto save. Use it together with analyze mode (-a -t). Creates one file per signal Note: Saves raw I/Q samples (uint8 pcm, 2 channel). Preferred mode for generating test files [-r <filename>] Read data from input file instead of a receiver [-m <mode>] Data file mode for input / output file (default: 0) 0 = Raw I/Q samples (uint8, 2 channel) 1 = AM demodulated samples (int16 pcm, 1 channel) 2 = FM demodulated samples (int16) (output only) 3 = Raw I/Q samples (cf32, 2 channel) 4 = Raw I/Q samples (cs16, 2 channel) [-F] kv|json|csv|syslog Produce decoded output in given format. Not yet supported by all drivers. append output to file with :<filename> (e.g. -F csv:log.csv), defaults to stdout. specify host/port for syslog with e.g. -F syslog:127.0.0.1:1514 [-C] native|si|customary Convert units in decoded output. [-T] specify number of seconds to run [-U] Print timestamps in UTC (this may also be accomplished by invocation with TZ environment variable set). [-E] Stop after outputting successful event(s) [-V] Output the version string and exit [-h] Output this usage help and exit [<filename>] Save data stream to output file (a '-' dumps samples to stdout) Supported device protocols: [01] Silvercrest Remote Control [02] Rubicson Temperature Sensor [03] Prologue Temperature Sensor [04] Waveman Switch Transmitter [05]* Steffen Switch Transmitter [06]* ELV EM 1000 [07]* ELV WS 2000 [08] LaCrosse TX Temperature / Humidity Sensor [09]* Template decoder [10]* Acurite 896 Rain Gauge [11] Acurite 609TXC Temperature and Humidity Sensor [12] Oregon Scientific Weather Sensor [13]* Mebus 433 [14]* Intertechno 433 [15] KlikAanKlikUit Wireless Switch [16] AlectoV1 Weather Sensor (Alecto WS3500 WS4500 Ventus W155/W044 Oregon) [17] Cardin S466-TX2 [18] Fine Offset Electronics, WH2, WH5, Telldus Temperature/Humidity/Rain Sensor [19] Nexus Temperature & Humidity Sensor [20] Ambient Weather Temperature Sensor [21] Calibeur RF-104 Sensor [22]* X10 RF [23] DSC Security Contact [24]* Brennenstuhl RCS 2044 [25] GT-WT-02 Sensor [26] Danfoss CFR Thermostat [27]* Energy Count 3000 (868.3 MHz) [28]* Valeo Car Key [29] Chuango Security Technology [30] Generic Remote SC226x EV1527 [31] TFA-Twin-Plus-30.3049 and Ea2 BL999 [32] Fine Offset Electronics WH1080/WH3080 Weather Station [33] WT450 [34] LaCrosse WS-2310 Weather Station [35] Esperanza EWS [36] Efergy e2 classic [37]* Inovalley kw9015b, TFA Dostmann 30.3161 (Rain and temperature sensor) [38] Generic temperature sensor 1 [39] WG-PB12V1 [40] Acurite 592TXR Temp/Humidity, 5n1 Weather Station, 6045 Lightning [41] Acurite 986 Refrigerator / Freezer Thermometer [42] HIDEKI TS04 Temperature, Humidity, Wind and Rain Sensor [43] Watchman Sonic / Apollo Ultrasonic / Beckett Rocket oil tank monitor [44] CurrentCost Current Sensor [45] emonTx OpenEnergyMonitor [46] HT680 Remote control [47] S3318P Temperature & Humidity Sensor [48] Akhan 100F14 remote keyless entry [49] Quhwa [50] OSv1 Temperature Sensor [51] Proove [52] Bresser Thermo-/Hygro-Sensor 3CH [53] Springfield Temperature and Soil Moisture [54] Oregon Scientific SL109H Remote Thermal Hygro Sensor [55] Acurite 606TX Temperature Sensor [56] TFA pool temperature sensor [57] Kedsum Temperature & Humidity Sensor [58] blyss DC5-UK-WH (433.92 MHz) [59] Steelmate TPMS [60] Schrader TPMS [61]* LightwaveRF [62] Elro DB286A Doorbell [63] Efergy Optical [64] Honda Car Key [65]* Template decoder [66]* Template decoder [67] Radiohead ASK [68] Kerui PIR Sensor [69] Fine Offset WH1050 Weather Station [70] Honeywell Door/Window Sensor [71] Maverick ET-732/733 BBQ Sensor [72]* RF-tech [73] LaCrosse TX141-Bv2/TX141TH-Bv2 sensor [74] Acurite 00275rm,00276rm Temp/Humidity with optional probe [75] LaCrosse TX35DTH-IT, TFA Dostmann 30.3155 Temperature/Humidity sensor [76] LaCrosse TX29IT Temperature sensor [77] Vaillant calorMatic 340f Central Heating Control [78] Fine Offset Electronics, WH25, WH24, HP1000 Temperature/Humidity/Pressure Sensor [79] Fine Offset Electronics, WH0530 Temperature/Rain Sensor [80] IBIS beacon [81] Oil Ultrasonic STANDARD FSK [82] Citroen TPMS [83] Oil Ultrasonic STANDARD ASK [84] Thermopro TP11 Thermometer [85] Solight TE44 [86] Wireless Smoke and Heat Detector GS 558 [87] Generic wireless motion sensor [88] Toyota TPMS [89] Ford TPMS [90] Renault TPMS [91]* inFactory [92] FT-004-B Temperature Sensor [93] Ford Car Key [94] Philips outdoor temperature sensor [95] Schrader TPMS EG53MA4 [96] Nexa [97] Thermopro TP08/TP12 thermometer [98] GE Color Effects [99] X10 Security [100] Interlogix GE UTC Security Devices [101]* Dish remote 6.3 [102]* SimpliSafe Home Security System (May require disabling automatic gain for KeyPad decodes) [103] Sensible Living Mini-Plant Moisture Sensor [104]* Wireless M-Bus, Mode C&T, 100kbps (-f 868950000 -s 1200000) [105]* Wireless M-Bus, Mode S, 32.768kbps (-f 868300000 -s 1000000) [106]* Wireless M-Bus, Mode R, 4.8kbps (-f 868330000) [107]* Wireless M-Bus, Mode F, 2.4kbps [108] WS Temperature Sensor [109] WT0124 Pool Thermometer * Disabled by default, use -R n or -G
Comando | Descrizione |
---|---|
rtl_433 -G |
Tenta di decodificare tutti i dispositivi |
rtl_433 -F json -U | mosquitto_pub -t home/rtl_433 -l |
Invia i risultati della decodifica in formato JSON ad un broker MQTT . |
Con l’ultimo comando è possibile inviare in formato JSON il risultato decodificato di quanto ricevuto, per esempio:
mosquitto_sub -h localhost -p 1883 -v -t "sensors/#"
Per avviare automaticamente come servizio:
sudo nano /etc/systemd/system/rtl_433-mqtt.service
e inserire il seguente testo:
[Unit]
Description=rtl_433 to MQTT publisher
After=network.target
[Service]
ExecStart=/bin/bash -c "/usr/local/bin/rtl_433 -q -F json |/usr/bin/mosquitto_pub -h localhost -i RTL_433 -l -t RTL_433/JSON"
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Quindi:
sudo systemctl daemon-reload
sudo systemctl enable rtl_433-mqtt
sudo systemctl start rtl_433-mqtt.service
Per vedere se tutto funziona regolarmente:
mosquitto_sub -h localhost -t RTL_433/JSON
Se tutto funziona bene si dovrebbe avere un output tipo questo:
{"time" : "2018-09-18 20:18:42", "brand" : "OS", "model" : "CM160", "id" : 13, "power_W" : 96}
Nota bene: Potrebbe essere necessario installare la libreria SoapySDR in caso di errori durante la complatione.
git clone https://github.com/pothosware/SoapySDR.git
cd SoapySDR
mkdir build
cd build
cmake ..
make -j4
sudo make install
sudo ldconfig