[Модуль] Broadlink (dev_broadlink)
Модератор: immortal
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
Я хз...эт МД чет чудит...в модуле точно нету функции/переменной cmp
У себя проверил - падений не замечено...
У себя проверил - падений не замечено...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- vitt76
- Сообщения: 372
- Зарегистрирован: Вс апр 09, 2017 2:36 pm
- Благодарил (а): 101 раз
- Поблагодарили: 51 раз
Re: Модуль Broadlink
nick7zmail, и что же, с этим никак не побороться? у меня лог скоро все свободное место сожрет
UPD опытным путем выяснено, что это S1 "спамит", убрал обновление - прекратилось.
UPD опытным путем выяснено, что это S1 "спамит", убрал обновление - прекратилось.
Broadlink + Orange Pi PC ARMBIAN 5.31
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
Ну вот видимо потому что у меня нет s1- и не наблюдается такое)))Если выяснится причина - хорошо будет)) поправим.
Отправлено с моего Xperia Z через Tapatalk
Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 366
- Зарегистрирован: Пт июл 26, 2013 4:11 pm
- Благодарил (а): 71 раз
- Поблагодарили: 18 раз
Re: Модуль Broadlink
подскажите пункт "Обновлять каждые: none, 5s.. " должны ли обновляться данные (температура) в RM pro? удалил обновление через
думал будет теперь обновляться, но оно не обновляет (((
Код: Выделить всё
include_once(DIR_MODULES."dev_broadlink/dev_broadlink.class.php");
$dev_broadlink=new dev_broadlink();
$dev_broadlink->check_params();
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
Должно работать...проверьте цикл бродлинка...если не запущен - запустите.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 76
- Зарегистрирован: Пт июн 02, 2017 11:02 am
- Благодарил (а): 10 раз
- Поблагодарили: 1 раз
Re: Модуль Broadlink
помогите пожалуйста создать кнопку "+" или"-" поесть чтобы при каждом нажатии рм-про посылал код для громкости или изменения температуры на кондиционере
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
ну блин...я раз 5 это описывал уже...поиск то для чего
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
viewtopic.php?p=38425#p38425
Вот например 1 из моих ответов...только вместо getUrl используйте brLinkCommand('команда');, ибо там вариант для rm-bridge был
Вот например 1 из моих ответов...только вместо getUrl используйте brLinkCommand('команда');, ибо там вариант для rm-bridge был
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 366
- Зарегистрирован: Пт июл 26, 2013 4:11 pm
- Благодарил (а): 71 раз
- Поблагодарили: 18 раз
Re: Модуль Broadlink
Цикл работал.nick7zmail писал(а):Должно работать...проверьте цикл бродлинка...если не запущен - запустите.
Отправлено с моего SM-G7508Q через Tapatalk
- VooDooN
- Сообщения: 307
- Зарегистрирован: Сб июн 11, 2016 12:02 am
- Благодарил (а): 170 раз
- Поблагодарили: 64 раза
Re: Модуль Broadlink
Подебажил я модуль давеча...
Наставил в нескольких местах запись значений разных переменных в лог с отметками времени и стал ждать, когда настройки сбросятся на 0 у S1C. Часов через 6 отловил (кстати, почти всю ночь нормально проработал, а вот днем относительно часто ловится проблема, видимо это зависит от активности использования соседских wi-fi, которые могут засорять эфир). Потом я экспериментировал и еще несколько раз отловил проблему. Не буду пока аттачить скрины и логи, чтобы долго не объяснять в каких местах записывал в лог. Начну с секции
в файле dev_broadlink_check.inc.php.
Если все нормально, то она полностью отрабатывает в течении секунды. Но в какой-то момент что-то происходит и S1C не отвечает в течении 10 секунд и дальше по таймауту закрывается коннекшин и все настройки превращаются в 0.
Посмотрим внутрь Check_Status() с моими комментариями:
Возвращаемся в секцию
на строке
А дальше идет проверка
которая не защищает от пустого массива и происходят всякие гадости, что превращается в сброс на 0 статуса охраны и настроек.
И если проверку сделать так
То прекращается сброс настроек (звука в том числе) и статуса охраны. Я уже отловил несколько молчаний S1C и настройки не сбросились.
Я заметил, что такая проверка
встречается во многих местах и она не защищает от молчания опрашиваемого девайса. Я думаю, что именно по этой причине MP1 и SP3 иногда выключаются при плохой связи. И A1 записывает 0 градусов и 0 влажность при плохой связи, как я уже давно писал, так как там тоже (в Check_sensors) создается пустой массив, во время обработки иногда что-то валится и возвращается пустой массив, который не проверяется со всеми последствиями.
Может я что-то не так объяснил, ногами не пинайте. Я не программист, а просто QA со стажем. Код читаю, но редко пишу.
Наставил в нескольких местах запись значений разных переменных в лог с отметками времени и стал ждать, когда настройки сбросятся на 0 у S1C. Часов через 6 отловил (кстати, почти всю ночь нормально проработал, а вот днем относительно часто ловится проблема, видимо это зависит от активности использования соседских wi-fi, которые могут засорять эфир). Потом я экспериментировал и еще несколько раз отловил проблему. Не буду пока аттачить скрины и логи, чтобы долго не объяснять в каких местах записывал в лог. Начну с секции
Код: Выделить всё
if ($rec['TYPE']=='s1') {
в файле dev_broadlink_check.inc.php.
Если все нормально, то она полностью отрабатывает в течении секунды. Но в какой-то момент что-то происходит и S1C не отвечает в течении 10 секунд и дальше по таймауту закрывается коннекшин и все настройки превращаются в 0.
Посмотрим внутрь Check_Status() с моими комментариями:
Код: Выделить всё
public function Check_Status(){
$data = array(); //Создается переменная $data в виде массива, запомним этот момент!
$packet = self::bytearray(16);
$packet[0] = 0x12;
$response = $this->send_packet(0x6a, $packet); // Когда S1C не отвечает в течении 10 секунд, то $response пустой!
$err = hexdec(sprintf("%x%x", $response[0x23], $response[0x22])); // $err всегда 0, даже когда S1C не ответил (я ожидал не 0).
if($err == 0){ //наверное, условие не защищает от проблемы молчания S1C и дальше идет работа с пустым $response
$enc_payload = array_slice($response, 0x38);
if(count($enc_payload) > 0){ //тут не проверил, но я так понимаю, что дальше уже не заходит обработчик
$payload = $this->byte2array(aes128_cbc_decrypt($this->key(), $this->byte($enc_payload), $this->iv()));
$data['status'] = $payload[0x04];
$data['delay_time_m'] = $payload[0x08];
$data['delay_time_s'] = $payload[0x09];
$data['alarm_buzzing'] = $payload[0x0a];
$data['alarm_buzzing_duration'] = $payload[0x0b];
$data['beep_mute'] = $payload[0x0d];
$data['alarm_detector'] = $payload[0x28];
switch ($data['status']) {
case 0x00:
$data['status_val'] = constant('LANG_BRS1_DISARM');
break;
case 0x01:
$data['status_val'] = constant('LANG_BRS1_PART');
break;
case 0x02:
$data['status_val'] = constant('LANG_BRS1_FULL');
break;
default:
$data['status'] = constant('LANG_BRS1_UNKNOWN').$data['status'];
}
}
}
return $data; // и в результате нам возвращают пустой массив $data, не "" и не NULL, а просто Array.
}
Код: Выделить всё
if ($rec['TYPE']=='s1') {
на строке
мы получаем $response, как пустой массив.$response = $rm->Check_Status();
А дальше идет проверка
Код: Выделить всё
if(isset($response) && $response!='') {
И если проверку сделать так
Код: Выделить всё
if(isset($response) && $response!='' && !empty($response)) {
Я заметил, что такая проверка
Код: Выделить всё
if(isset($response) && $response!='') {
Может я что-то не так объяснил, ногами не пинайте. Я не программист, а просто QA со стажем. Код читаю, но редко пишу.
- За это сообщение автора VooDooN поблагодарил:
- nick7zmail (Ср июн 28, 2017 9:08 pm)
- Рейтинг: 1.16%