Страница 6 из 9
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Вт сен 11, 2018 3:23 pm
fandaymon
directman66 писал(а): Вт сен 11, 2018 3:06 pm
Кому интересно, начал писать модуль для работы с USB стиком RTL-SDR
https://github.com/directman66/majordomo-rtl433
Пока только линукс вариант. И наверное придется компилировать исходники rtl_433 после установки. Принимаю предлжения/возражения на тему, как это можно сделать без вмешательства пользователя (автоматически).
А зачем там целый модуль? Вполне хватает скрипта на питоне, который будет отправлять вывод rtl_433 в какой-нибудь объект, там по изменению свойства просто раскидываем по нужным объектам
Код: Выделить всё
$rfcode = $this->getProperty('RFCommand');
$rf=json_decode($rfcode);
if ($rf->{'model'}=='Nexus Temperature/Humidity') {
$name="RFNexus" . $rf->{'id'};
$obj=getObject($name);
if ($obj==0) {
addClassObject('RFSensors', $name);
sg($name . '.' . 'ID',$rf->{'id'});
say('Добавлен сенсор ' . $name);
}
setGlobal($name . '.TEMP' ,$rf->{'temperature_C'});
setGlobal($name . '.HUM' ,$rf->{'humidity'});
setGlobal($name . '.BAT' ,$rf->{'battery'});
setGlobal($name . '.Updated' ,$rf->{'time'});
}
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Вт сен 11, 2018 4:27 pm
directman66
Да я думаю можно обойтись и без питона) У меня есть куча разных сценариев, обработчиков данных и тд, хочется это все привести в божеский вид. Планирую вывод stdout от rtl_433 в формате json отправлять через geturl. Пока застрал на преобразовании json в urlencode на bash.
Хочется универсальное решение без установки допов.
echo "{"time" : "2018-09-08 15:16:31", "model" : "Nexus Temperature/Humidity", "id" : 82, "battery" : "LOW", "channel" : 3, "temperature_C" : 31.700, "humidity" : 37}" | sed 's/ /%20/g;s/!/%21/g;s/"/%22/g;s/#/%23/g;s/\$/%24/g;s/\&/%26/g;s/'\''/%27/g;s/(/%28/g;s/)/%29/g;s/:/%3A/g'|
Вроде преобразует в нужную кодировку, но чето не понял, как добавить строку URL в начале текста и отправить это потом в wget или curl.
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Вт сен 11, 2018 4:58 pm
fandaymon
directman66 писал(а): Вт сен 11, 2018 4:27 pm
Да я думаю можно обойтись и без питона) У меня есть куча разных сценариев, обработчиков данных и тд, хочется это все привести в божеский вид. Планирую вывод stdout от rtl_433 в формате json отправлять через geturl. Пока застрал на преобразовании json в urlencode на bash.
Хочется универсальное решение без установки допов.
echo "{"time" : "2018-09-08 15:16:31", "model" : "Nexus Temperature/Humidity", "id" : 82, "battery" : "LOW", "channel" : 3, "temperature_C" : 31.700, "humidity" : 37}" | sed 's/ /%20/g;s/!/%21/g;s/"/%22/g;s/#/%23/g;s/\$/%24/g;s/\&/%26/g;s/'\''/%27/g;s/(/%28/g;s/)/%29/g;s/:/%3A/g'|
Вроде преобразует в нужную кодировку, но чето не понял, как добавить строку URL в начале текста и отправить это потом в wget или curl.
Скрипт на питоне именно это и делает
Код: Выделить всё
import os, sys, io
import urllib
import subprocess
print("RTLSDR listening started")
proc = subprocess.Popen(["rtl_433 -q -C si -G -F json"], stdout=subprocess.PIPE, shell=True)
while True:
try:
line = proc.stdout.readline().encode('ascii','ignore')
proc.poll()
#data = json.loads(line)
print (line)
link='http://192.168.1.64/objects?op=set&object=RTL433&p=RFCommand&v='
link=link + line
f=urllib.urlopen(link)
except KeyboardInterrupt:
break
except:
pass
print("RTLSDR listening done")
Раз всё равно линукс вариант, то значит питон есть
По поводу баша - у меня RFLink подключен к рутеру под OPenWRT, на рутере получаю из USB строчку от RFLink в переменную LINE и передаю в МДМ её так
Код: Выделить всё
wget -q -T 5 -O - "http://192.168.1.64/objects/?op=set&object=RFLink&p=RFCommand&v=${LINE}"
Json можно не декодировать, а прям сразу передавать всю строку в МДМ, а там уже PHP прекрасно с json работает
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Вт сен 11, 2018 9:39 pm
directman66
Не не факт, что есть везде питон. Баш из php работает. Проблема в том, что у меня JSON-ответ содержит внутри символ "
Такая команда естественно не проходит.
Код: Выделить всё
wget "http://192.168.1.39/rtl433.php?json='{"time" : "2018-09-08 15:16:31", "model" : "Nexus Temperature/Humidity", "id" : 82, "battery" : "LOW", "channel" : 3, "temperature_C" : 31.700, "humidity" : 37}"
зы: оказавается можно вот так
Код: Выделить всё
echo "{"time" : "2018-09-08 15:16:31", "model" : "Nexus Temperature/Humidity", "id" : 82, "battery" : "LOW", "channel" : 3, "temperature_C" : 31.700, "humidity" : 37}" | sed 's/ /%20/g;s/!/%21/g;s/"/%22/g;s/#/%23/g;s/\$/%24/g;s/\&/%26/g;s/'\''/%27/g;s/(/%28/g;s/)/%29/g;s/:/%3A/g;'s,^,http://@192.168.1.39/rtl433.php?json=,
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Вт сен 11, 2018 11:53 pm
fandaymon
directman66 писал(а): Вт сен 11, 2018 9:39 pm
Не не факт, что есть везде питон. Баш из php работает. Проблема в том, что у меня JSON-ответ содержит внутри символ "
Ммм... Может и бывает такое, но лично я не сталкивался

Разве что OPenWRT, но там и rtl_433 не скомпилируется...
Если под "из php работает" понимать запуск при помощи exec, то работает и то и другое
Такая команда естественно не проходит.
Код: Выделить всё
wget "http://192.168.1.39/rtl433.php?json='{"time" : "2018-09-08 15:16:31", "model" : "Nexus Temperature/Humidity", "id" : 82, "battery" : "LOW", "channel" : 3, "temperature_C" : 31.700, "humidity" : 37}"
[/quote]
Если в var находится json полученный от rtl_433, то такая конструкция просто заменит все кавычки на знак равно
В php меняем равно на кавычки и раскодируем json
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Ср сен 12, 2018 12:07 am
directman66
Да нее ) в php передать кавычки сложнее без перекодировки.
В общем уже почти у цели, но чего-то не хватает
Код: Выделить всё
/home/pi/rtl_433_rcswitch/build/src/rtl_433 -R 19 -R 1 -R 30 -f 433920000 -s 250000 -F json| sed 's/ /%20/g;s/!/%21/g;s/"/%22/g;s/#/%23/g;s/\$/%24/g;s/\&/%26/g;s/'\''/%27/g;s/(/%28/g;s/)/%29/g;s/:/%3A/g;'s,^,http://192.168.1.39/rtl433.php?json=,|xargs wget
Все готово, прилетело!! Без пёрлов, php и питонов !
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Ср сен 12, 2018 12:44 am
fandaymon
directman66 писал(а): Ср сен 12, 2018 12:07 am
Да нее ) в php передать кавычки сложнее без перекодировки.
В общем уже почти у цели, но чего-то не хватает
Код: Выделить всё
/home/pi/rtl_433_rcswitch/build/src/rtl_433 -R 19 -R 1 -R 30 -f 433920000 -s 250000 -F json| sed 's/ /%20/g;s/!/%21/g;s/"/%22/g;s/#/%23/g;s/\$/%24/g;s/\&/%26/g;s/'\''/%27/g;s/(/%28/g;s/)/%29/g;s/:/%3A/g;'s,^,http://192.168.1.39/rtl433.php?json=,|xargs wget
Все готово, прилетело!! Без пёрлов, php и питонов !
Ммм.. использовать sed это какой-то запредельный мазохизм

Стесняюсь спросить - а зачем так сложно-то?!
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Ср сен 12, 2018 6:47 am
directman66
sed поставляется со всеми дистрибутивами linux и скорее всего уже установлен по умолчанию. Тут другая проблема нарисовалась: запускаю процесс в фоне через
процесс висит в фоне, но сама команда срабатывает только в момент прибития процесса. Видимо доходит только последнее сообщение.
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Ср сен 12, 2018 8:13 am
nick7zmail
Выводите через tail
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle
Добавлено: Вт окт 09, 2018 1:28 pm
directman66
Потихоньку модуль обрастает функционалом

- rtl2.png (38.79 КБ) 5243 просмотра

- rtl1.png (45.85 КБ) 5243 просмотра
Кстати, список поддерживаемых устройств впечатляет.
[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
Инструкций пока нет...