[Модуль] Broadlink (dev_broadlink)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am

Re: Модуль Broadlink

Сообщение dmw »

Там ещё есть момент, десковери работает отправляя широковещалку на 255.255.255.255, а на роутере в настройках dhcp broadcast может быть другой.
В broadlink.class.php я менял в function descovery() адрес на 192.168.1.255 (у меня сеть 192.168.1.x) и тогда все ок.
Там в этой функции в идеале нужно как-то этот адрес не жёстко указать, а брать из текущих сетевых настроек автоматически.
Rad81
Сообщения: 193
Зарегистрирован: Пт апр 01, 2016 2:42 pm

Re: Модуль Broadlink

Сообщение Rad81 »

public static function Discover(){

$devices = array();

$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_connect($s ,'8.8.8.8', 53); // connecting to a UDP address doesn't send packets
socket_getsockname($s, $local_ip_address, $port);
socket_close($s);

$cs = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

if($cs){
socket_set_option($cs, SOL_SOCKET, SO_REUSEADDR, 1);
socket_set_option($cs, SOL_SOCKET, SO_BROADCAST, 1);
socket_set_option($cs, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>1, 'usec'=>0));
socket_bind($cs, 0, 0);
}

Тут где то что то надо поменять или как ???
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am

Re: Модуль Broadlink

Сообщение dmw »

это не конец функции, листайте чуть ниже..

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

socket_sendto($cs, self::byte($packet), sizeof($packet), 0, "255.255.255.255", 80); 
на

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

socket_sendto($cs, self::byte($packet), sizeof($packet), 0, "192.168.1.255", 80); 
или какой там у вас broadcast в локалке
Rad81
Сообщения: 193
Зарегистрирован: Пт апр 01, 2016 2:42 pm

Re: Модуль Broadlink

Сообщение Rad81 »

dmw писал(а):это не конец функции, листайте чуть ниже..

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

socket_sendto($cs, self::byte($packet), sizeof($packet), 0, "255.255.255.255", 80);
на

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

socket_sendto($cs, self::byte($packet), sizeof($packet), 0, "192.168.1.255", 80);
или какой там у вас broadcast в локалке
public static function Discover(){

$devices = array();

$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_connect($s ,'8.8.8.8', 53); // connecting to a UDP address doesn't send packets
socket_getsockname($s, $local_ip_address, $port);
socket_close($s);

$cs = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

if($cs){
socket_set_option($cs, SOL_SOCKET, SO_REUSEADDR, 1);
socket_set_option($cs, SOL_SOCKET, SO_BROADCAST, 1);
socket_set_option($cs, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>1, 'usec'=>0));
socket_bind($cs, 0, 0);
}

$address = explode('.', $local_ip_address);
$packet = self::bytearray(0x30);

$timezone = (int)intval(date("Z"))/-3600;
$year = date("Y");

тут или ??
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am

Re: Модуль Broadlink

Сообщение dmw »

Ну вас в самом деле..
Нажмите Ctrl+F и найдите: 255.255.255.255
Rad81
Сообщения: 193
Зарегистрирован: Пт апр 01, 2016 2:42 pm

Re: Модуль Broadlink

Сообщение Rad81 »

dmw писал(а):Ну вас в самом деле..
Нажмите Ctrl+F и найдите: 255.255.255.255
:D :D

Да поменял смотрим что будет спс


Опишу свою проблему
Вложения
Если же нажимаю тут сработка за 5-6 сек происходит
Если же нажимаю тут сработка за 5-6 сек происходит
мен уп сп.jpg (23.28 КБ) 6680 просмотров
Если же нажимаю тут сработка за миллисекунду происходит
Если же нажимаю тут сработка за миллисекунду происходит
sp mini.jpg (44.23 КБ) 6681 просмотр
Rad81
Сообщения: 193
Зарегистрирован: Пт апр 01, 2016 2:42 pm

Re: Модуль Broadlink

Сообщение Rad81 »

refreshBroadlink

include_once(DIR_MODULES."dev_broadlink/dev_broadlink.class.php");
$dev_broadlink=new dev_broadlink();
$dev_broadlink->check_params();

timer_1s

setTimeOut("timer_1s_timeout", "runScript('timer_1s');", 1);
runScript('refreshBroadlink');


ошибка

Warning: socket_sendto(): Host lookup failed [-10004]: No address associated with name in /var/www/modules/dev_broadlink/broadlink.class.php on line 482

естественно не работает обратный связь по кнопку
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Модуль Broadlink

Сообщение nick7zmail »

А физически то розетка включается??

Обведенная вами кнопка - только для теста связи))...
Не помню, пишется ли в эту таблицу значение при изменении через свойства объекта, но в любом случае - при очередной синхронизации оно должно соответствовать реальному...

На счет ошибки - посмотрите внимательнее - правильно ли указаны IP (при автоматическом сканировании IP иногда перевернут, это зависит от производителя розетки), и другие параметры (тип устройства, марка устройства, мак адрес, в общем всё, что есть доступное для изменения)...

И да - крайне не советую опрашивать каждую секунду...весь процесс запроса (пинг, запрос ключа, его выдача, авторизация, выполнение запроса, и запись ответа в базу) занимает около 2-3 секунд для каждого устройства (иногда быстрее, в пределах 0,1 мс, иногда медленнее - до 4 секунд бывает)...соответственно если у вас больше устройств - умножайте на кол-во устройств...устройство просто не успевает отвечать, а вы шлёте уже следующий запрос...не надо так =D

Задержка, кстати, тоже может быть из-за частых запросов к розетке...у меня, вроде, срабатывает в пределах 1-2 секунд.
Последний раз редактировалось nick7zmail Пт июн 16, 2017 9:42 am, всего редактировалось 1 раз.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Rad81
Сообщения: 193
Зарегистрирован: Пт апр 01, 2016 2:42 pm

Re: Модуль Broadlink

Сообщение Rad81 »

сканирование ip адресов
7.1.168.192
Rad81
Сообщения: 193
Зарегистрирован: Пт апр 01, 2016 2:42 pm

Re: Модуль Broadlink

Сообщение Rad81 »

работает ...
толка обратный связь нема
Ответить