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

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

Модератор: immortal

dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Модуль Broadlink

Сообщение dmw » Пт июн 16, 2017 12:55 am

Там ещё есть момент, десковери работает отправляя широковещалку на 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
Благодарил (а): 10 раз
Поблагодарили: 10 раз

Re: Модуль Broadlink

Сообщение Rad81 » Пт июн 16, 2017 7:25 am

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
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Модуль Broadlink

Сообщение dmw » Пт июн 16, 2017 8:20 am

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

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

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
Благодарил (а): 10 раз
Поблагодарили: 10 раз

Re: Модуль Broadlink

Сообщение Rad81 » Пт июн 16, 2017 8:27 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 в локалке
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
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Модуль Broadlink

Сообщение dmw » Пт июн 16, 2017 8:41 am

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

Re: Модуль Broadlink

Сообщение Rad81 » Пт июн 16, 2017 8:45 am

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

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


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

Re: Модуль Broadlink

Сообщение Rad81 » Пт июн 16, 2017 9:11 am

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
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Пт июн 16, 2017 9:32 am

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

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

На счет ошибки - посмотрите внимательнее - правильно ли указаны 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
Благодарил (а): 10 раз
Поблагодарили: 10 раз

Re: Модуль Broadlink

Сообщение Rad81 » Пт июн 16, 2017 9:41 am

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

Re: Модуль Broadlink

Сообщение Rad81 » Пт июн 16, 2017 9:43 am

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