связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение fandaymon » Вт сен 11, 2018 3:23 pm

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'});
   
} 
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение 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.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение fandaymon » Вт сен 11, 2018 4:58 pm

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")
Раз всё равно линукс вариант, то значит питон есть 8-)

По поводу баша - у меня 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 работает
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение directman66 » Вт сен 11, 2018 9:39 pm

Не не факт, что есть везде питон. Баш из 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=,
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение fandaymon » Вт сен 11, 2018 11:53 pm

directman66 писал(а):
Вт сен 11, 2018 9:39 pm
Не не факт, что есть везде питон. Баш из php работает. Проблема в том, что у меня JSON-ответ содержит внутри символ "
Ммм... Может и бывает такое, но лично я не сталкивался 8-) Разве что 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, то такая конструкция просто заменит все кавычки на знак равно

Код: Выделить всё

var=${var//'"'/=}
В php меняем равно на кавычки и раскодируем json
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение 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 и питонов !
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение fandaymon » Ср сен 12, 2018 12:44 am

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 это какой-то запредельный мазохизм 8-) Стесняюсь спросить - а зачем так сложно-то?!
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение directman66 » Ср сен 12, 2018 6:47 am

sed поставляется со всеми дистрибутивами linux и скорее всего уже установлен по умолчанию. Тут другая проблема нарисовалась: запускаю процесс в фоне через

Код: Выделить всё

$answ=exec($cmd ." > /dev/null 2>&1 &");
процесс висит в фоне, но сама команда срабатывает только в момент прибития процесса. Видимо доходит только последнее сообщение.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение nick7zmail » Ср сен 12, 2018 8:13 am

Выводите через tail

Отправлено с моего Xperia XZ1 Compact через Tapatalk

Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: связь с уст-ми по ir и 433 через broadlink и usb tv dongle

Сообщение directman66 » Вт окт 09, 2018 1:28 pm

Потихоньку модуль обрастает функционалом
СпойлерПоказать
rtl2.png
rtl2.png (38.79 КБ) 3935 просмотров
rtl1.png
rtl1.png (45.85 КБ) 3935 просмотров
Кстати, список поддерживаемых устройств впечатляет.
СпойлерПоказать
[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
Инструкций пока нет...
За это сообщение автора directman66 поблагодарил:
VooDooN (Вт окт 09, 2018 1:32 pm)
Рейтинг: 1.16%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить