[Модуль] Broadlink (dev_broadlink)
Модератор: immortal
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: Модуль Broadlink
Там ещё есть момент, десковери работает отправляя широковещалку на 255.255.255.255, а на роутере в настройках dhcp broadcast может быть другой.
В broadlink.class.php я менял в function descovery() адрес на 192.168.1.255 (у меня сеть 192.168.1.x) и тогда все ок.
Там в этой функции в идеале нужно как-то этот адрес не жёстко указать, а брать из текущих сетевых настроек автоматически.
В broadlink.class.php я менял в function descovery() адрес на 192.168.1.255 (у меня сеть 192.168.1.x) и тогда все ок.
Там в этой функции в идеале нужно как-то этот адрес не жёстко указать, а брать из текущих сетевых настроек автоматически.
-
- Сообщения: 193
- Зарегистрирован: Пт апр 01, 2016 2:42 pm
- Благодарил (а): 10 раз
- Поблагодарили: 10 раз
Re: Модуль Broadlink
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);
}
Тут где то что то надо поменять или как ???
$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);
}
Тут где то что то надо поменять или как ???
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: Модуль Broadlink
это не конец функции, листайте чуть ниже..
наили какой там у вас broadcast в локалке
Код: Выделить всё
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);
-
- Сообщения: 193
- Зарегистрирован: Пт апр 01, 2016 2:42 pm
- Благодарил (а): 10 раз
- Поблагодарили: 10 раз
Re: Модуль Broadlink
public static function Discover(){dmw писал(а):это не конец функции, листайте чуть ниже..наКод: Выделить всё
socket_sendto($cs, self::byte($packet), sizeof($packet), 0, "255.255.255.255", 80);
или какой там у вас broadcast в локалкеКод: Выделить всё
socket_sendto($cs, self::byte($packet), sizeof($packet), 0, "192.168.1.255", 80);
$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");
тут или ??
-
- Сообщения: 193
- Зарегистрирован: Пт апр 01, 2016 2:42 pm
- Благодарил (а): 10 раз
- Поблагодарили: 10 раз
Re: Модуль Broadlink
dmw писал(а):Ну вас в самом деле..
Нажмите Ctrl+F и найдите: 255.255.255.255


Да поменял смотрим что будет спс
Опишу свою проблему
- Вложения
-
- Если же нажимаю тут сработка за 5-6 сек происходит
- мен уп сп.jpg (23.28 КБ) 6388 просмотров
-
- Если же нажимаю тут сработка за миллисекунду происходит
- sp mini.jpg (44.23 КБ) 6389 просмотров
-
- Сообщения: 193
- Зарегистрирован: Пт апр 01, 2016 2:42 pm
- Благодарил (а): 10 раз
- Поблагодарили: 10 раз
Re: Модуль Broadlink
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
естественно не работает обратный связь по кнопку
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
А физически то розетка включается??
Обведенная вами кнопка - только для теста связи))...
Не помню, пишется ли в эту таблицу значение при изменении через свойства объекта, но в любом случае - при очередной синхронизации оно должно соответствовать реальному...
На счет ошибки - посмотрите внимательнее - правильно ли указаны IP (при автоматическом сканировании IP иногда перевернут, это зависит от производителя розетки), и другие параметры (тип устройства, марка устройства, мак адрес, в общем всё, что есть доступное для изменения)...
И да - крайне не советую опрашивать каждую секунду...весь процесс запроса (пинг, запрос ключа, его выдача, авторизация, выполнение запроса, и запись ответа в базу) занимает около 2-3 секунд для каждого устройства (иногда быстрее, в пределах 0,1 мс, иногда медленнее - до 4 секунд бывает)...соответственно если у вас больше устройств - умножайте на кол-во устройств...устройство просто не успевает отвечать, а вы шлёте уже следующий запрос...не надо так =D
Задержка, кстати, тоже может быть из-за частых запросов к розетке...у меня, вроде, срабатывает в пределах 1-2 секунд.
Обведенная вами кнопка - только для теста связи))...
Не помню, пишется ли в эту таблицу значение при изменении через свойства объекта, но в любом случае - при очередной синхронизации оно должно соответствовать реальному...
На счет ошибки - посмотрите внимательнее - правильно ли указаны IP (при автоматическом сканировании IP иногда перевернут, это зависит от производителя розетки), и другие параметры (тип устройства, марка устройства, мак адрес, в общем всё, что есть доступное для изменения)...
И да - крайне не советую опрашивать каждую секунду...весь процесс запроса (пинг, запрос ключа, его выдача, авторизация, выполнение запроса, и запись ответа в базу) занимает около 2-3 секунд для каждого устройства (иногда быстрее, в пределах 0,1 мс, иногда медленнее - до 4 секунд бывает)...соответственно если у вас больше устройств - умножайте на кол-во устройств...устройство просто не успевает отвечать, а вы шлёте уже следующий запрос...не надо так =D
Задержка, кстати, тоже может быть из-за частых запросов к розетке...у меня, вроде, срабатывает в пределах 1-2 секунд.
Последний раз редактировалось nick7zmail Пт июн 16, 2017 9:42 am, всего редактировалось 1 раз.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<