Страница 103 из 376

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 12:55 am
dmw
Там ещё есть момент, десковери работает отправляя широковещалку на 255.255.255.255, а на роутере в настройках dhcp broadcast может быть другой.
В broadlink.class.php я менял в function descovery() адрес на 192.168.1.255 (у меня сеть 192.168.1.x) и тогда все ок.
Там в этой функции в идеале нужно как-то этот адрес не жёстко указать, а брать из текущих сетевых настроек автоматически.

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 7:25 am
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);
}

Тут где то что то надо поменять или как ???

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 8:20 am
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 в локалке

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 8:27 am
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");

тут или ??

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 8:41 am
dmw
Ну вас в самом деле..
Нажмите Ctrl+F и найдите: 255.255.255.255

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 8:45 am
Rad81
dmw писал(а):Ну вас в самом деле..
Нажмите Ctrl+F и найдите: 255.255.255.255
:D :D

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


Опишу свою проблему

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 9:11 am
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

естественно не работает обратный связь по кнопку

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 9:32 am
nick7zmail
А физически то розетка включается??

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

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

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

Задержка, кстати, тоже может быть из-за частых запросов к розетке...у меня, вроде, срабатывает в пределах 1-2 секунд.

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 9:41 am
Rad81
сканирование ip адресов
7.1.168.192

Re: Модуль Broadlink

Добавлено: Пт июн 16, 2017 9:43 am
Rad81
работает ...
толка обратный связь нема