directman

<<< Back

Установка и подключение rtl usb донгла для чтения датчиков температуры и кнопок 433 мгц

Это заготовка статьи. Код проверен на arm (raspbian, orange pi), x86 (openmediavault)

Установка необходимых библиотек:
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/zuckschwerdt/rtl_433.git rtl_433_rcswitch
cd rtl_433_rcswitch
mkdir build
cd build
cmake ..
make
make install

сценарий meteo2mqtt

$cmd='sudo modprobe -r dvb_usb_rtl28xxu';
$answ=shell_exec($cmd);
echo $answ;

$fname="/home/pi/433_".time().".log";

$cmd='killall rtl_433 ';
$answ=shell_exec($cmd);
echo $answ;

$cmd='killall rtl_sdr ';
$answ=shell_exec($cmd);
echo $answ;

//$cmd='/home/pi/rtl_433_rcswitch/build/src/rtl_433 -f 433920000 -s 250000 -F json | mosquitto_pub -h localhost -t home/rtl_433 -l >'.$fname.' 2>&1';
//$cmd='/home/pi/rtl_433_rcswitch/build/src/rtl_433 -f 433920000 -s 250000 -F json | mosquitto_pub -h localhost -t /home/rtl_433 -l';
//$cmd='dir|mosquitto_pub -h localhost -t home/rtl_433 -l ';
//md='date|mosquitto_pub -h localhost -t home/rtl_433 -l ';
//$cmd='date|mosquitto_pub -h localhost -t /home/rtl_433 -l';
//$cmd='date>'.$fname.' 2>&1|mosquitto_pub -h localhost -t /home/rtl_433 -l';
$cmd='/home/pi/rtl_433_rcswitch/build/src/rtl_433 -f 433920000 -s 250000 -F json|mosquitto_pub -h localhost -t /home/rtl_433 -l';
$answ=shell_exec($cmd);
echo $answ;

сценарий rtl_433_state (запускаем раз в минуту)

$cmd='ps -A|grep 433';
//$cmd='ps -A';
$answ=shell_exec($cmd);
//echo $answ;
$rez=substr_count ($answ,'433' );
echo $rez;
if ($rez=="1" ){sg('mysdr.statecolor','green');} 
else {sg('mysdr.statecolor','red');
if (gg('mysdr.autorestart')==1) {RunScript('meteo2mqtt'); }
}

создаем классы rtl_objects и sdr

метод класса sdr onChange

$jsonanswer=$this->getProperty('value');
//$jsonanswer='"{"time" : "2017-05-21 20:44:57", "model" : "Akhan 100F14 remote keyless entry", "id" : 595913, "data" : "0x8 (Alarm)"}';
//say($jsonanswer,1);
$data=json_decode($jsonanswer,true);
$objn=$data['model'].' '.$data['id'];
addClassObject('rtl_objects',$objn);
sg( $objn.'.json',$jsonanswer);
foreach ($data as $key=> $value ) {
sg( $objn.'.'.$key,$value);
}

ссылка на форум https://majordomo.smartliving.ru/forum/viewtopic.php?f=8&t=3504&start=20#p53024

Discuss (0) (0)

Екатеринбург, Россия

На форуме: directman66