Страница 358 из 376
Re: Модуль Broadlink
Добавлено: Чт июн 18, 2020 10:54 pm
Stor
nick7zmail писал(а): Пн июн 15, 2020 7:04 am
Stor писал(а): Вс июн 14, 2020 10:59 pm
Я нашел пакеты 5a a5 aa 55 5a a5 aa 55. Но программа BroadlinkCommand, я так понял, под видну, а под линукс есть?
И подскажите где искать ключи в е-контроле - попробую найти по аналогии в BroadLink - универсальный пульт. И что потом с этими ключами делать?
В е-контроле ключи лежат где-то там /data/data/com.broadlink.rmt/databases/rmt.db (это база данных, открывается, вроде, при помощи SQLStudio или как то так прога называлась). Далее в модуле (/modules/dev_broadlink) есть файл broadlink_debug_scr.php. Его прямо открываете и вписываете ключики ($key, $iv) туда. Ваш пакет скармливаете этому файлику (примеры там так же есть)
https://github.com/nick7zmail/MajorDoMo ... ug_scr.php и запускаете его из браузера что то формата ip_сервера/modules/dev_broadlink/broadlink_debug_scr.php?mode=decrypt...и тогда увидите расшифрованный файл...по-расшифровывайте несколько файлов. Если первые 2-4 байта совпадают - тогда всё делаете правильно. На самом деле я сам подзабыл как этим всем пользоваться)) но вроде как то так)))
1) Мне удалось вытащить publicKey и перевести его из HEX - получился ключ:
Код: Выделить всё
sqlite> select hex( publicKey ) from deviceTable;
--------------------------------
B9D49940BCA7C0472078E8..........
2)В
примере $key представлен в каком формате? Можно ли его получить из HEX формата?
Вы пишите "ключики", но в моей базе был только один публичный ключ.
3) Не понял откуда брать $iv?
4) Переменная $wireshark только одна, но через Pocket Capture я поймал пакеты начинающиеся на 5a a5 aa 55 5a a5 aa 55, но потом у всех продолжение разное - как их всех в файле указать (и надо?)?
5) "Ваш пакет скармливаете этому файлику" - это как я понял, нужно каждый перехваченный пакет из Pocket Capture так прогнать?
6) У меня в файле /modules/dev_broadlink/broadlink_debug_scr.php уже есть заполненные $wireshark, $key и $iv - их нужно удалить или оставить (может они при добавлении RM4 PRO через web интерфейс добавились)?
7) Кнопка "Generate from bin" - можно как-то это использовать в моем случае?
Re: [Модуль] Broadlink (dev_broadlink)
Добавлено: Чт июн 18, 2020 11:35 pm
Stor
nick7zmail писал(а): Ср апр 29, 2020 10:21 pm
Мне нужна последовательность байт, которая отправляется в девайс для перевода в режим обучения хотя бы...
Пытаюсь ее получить - если во время обучения включен перехват пакетов, то обучени яне происходит и приложение жалуется что нет доступа в сеть, при этом рассылает кучу пакетов по IP:
224.0.0.251:80
255.255.255.255:80
Также во время обучения отослал один пакет пульту и получил от него ответ.
Re: Модуль Broadlink
Добавлено: Ср июн 24, 2020 7:51 am
nick7zmail
Stor писал(а): Вс июн 14, 2020 10:59 pm
Я нашел пакеты 5a a5 aa 55 5a a5 aa 55. Но программа BroadlinkCommand, я так понял, под видну, а под линукс есть?
И подскажите где искать ключи в е-контроле - попробую найти по аналогии в BroadLink - универсальный пульт. И что потом с этими ключами делать?
Откатимся немного назад...по ходу это таки расшифрованный пакет...нужно за ним понаблюдать...сейчас, на сколько я помню модулем отправляется что то типа
Код: Выделить всё
$packet[0x00] = 0x5a;
$packet[0x01] = 0xa5;
$packet[0x02] = 0xaa;
$packet[0x03] = 0x55;
$packet[0x04] = 0x5a;
$packet[0x05] = 0xa5;
$packet[0x06] = 0xaa;
$packet[0x07] = 0x55;
$packet[0x24] = 0x2a;
$packet[0x25] = 0x27;
Потом команда для RM
А для RM 4 специальные байты добавлены
Код: Выделить всё
$packet[0] = 0xd0;
$packet[1] = 0x00;
$packet[2] = 0x02;
и только потом сама команда.
Понаблюдайте что приложение вашему РМ засылает...надо выловить постоянную часть
ну и ещё в пакете где то должен быть мак, айпи и чексумма.
Код: Выделить всё
$packet[0x28] = $this->count & 0xff;
$packet[0x29] = $this->count >> 8;
$packet[0x2a] = $this->mac[0];
$packet[0x2b] = $this->mac[1];
$packet[0x2c] = $this->mac[2];
$packet[0x2d] = $this->mac[3];
$packet[0x2e] = $this->mac[4];
$packet[0x2f] = $this->mac[5];
$packet[0x30] = $this->id[0];
$packet[0x31] = $this->id[1];
$packet[0x32] = $this->id[2];
$packet[0x33] = $this->id[3];
$packet[0x34] = $checksum & 0xff;
$packet[0x35] = $checksum >> 8;
$packet[0x20] = $checksum & 0xff;
$packet[0x21] = $checksum >> 8;
Возможно где то что то поменяли, и что то лишнее отправляется или чего то не хватает.
Re: [Модуль] Broadlink (dev_broadlink)
Добавлено: Чт июл 09, 2020 2:33 pm
Denis_k
Приветствую, коллеги, пытаюсь подружить кондиционеры (без wifi) с пультами brodlink, ессно столкнулся с необходимостью использовать облако для импорта команд. Когда то давно пользовался для первичного подключения устройств приложением e-control, но в этот раз ни в каком режиме это приложение нужные устройства не увидело, соответственно скачал более свежее приложение broadlink, в котором с n-ой попытки добавил нужный пульт и сделал его backup, но вот авторизоваться из модуля с этими данными не получилось.
Re: [Модуль] Broadlink (dev_broadlink)
Добавлено: Чт июл 09, 2020 3:34 pm
nick7zmail
Denis_k писал(а):Приветствую, коллеги, пытаюсь подружить кондиционеры (без wifi) с пультами brodlink, ессно столкнулся с необходимостью использовать облако для импорта команд. Когда то давно пользовался для первичного подключения устройств приложением e-control, но в этот раз ни в каком режиме это приложение нужные устройства не увидело, соответственно скачал более свежее приложение broadlink, в котором с n-ой попытки добавил нужный пульт и сделал его backup, но вот авторизоваться из модуля с этими данными не получилось.
Авторизацию модуль поддерживает только с облаком e-control. С другими приложениями не работает.
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Re: Модуль Broadlink
Добавлено: Чт июл 23, 2020 10:48 pm
Stor
nick7zmail писал(а): Ср июн 24, 2020 7:51 am
Stor писал(а): Вс июн 14, 2020 10:59 pm
Я нашел пакеты 5a a5 aa 55 5a a5 aa 55. Но программа BroadlinkCommand, я так понял, под видну, а под линукс есть?
И подскажите где искать ключи в е-контроле - попробую найти по аналогии в BroadLink - универсальный пульт. И что потом с этими ключами делать?
Откатимся немного назад...по ходу это таки расшифрованный пакет...нужно за ним понаблюдать...сейчас, на сколько я помню модулем отправляется что то типа
Код: Выделить всё
$packet[0x00] = 0x5a;
$packet[0x01] = 0xa5;
$packet[0x02] = 0xaa;
$packet[0x03] = 0x55;
$packet[0x04] = 0x5a;
$packet[0x05] = 0xa5;
$packet[0x06] = 0xaa;
$packet[0x07] = 0x55;
$packet[0x24] = 0x2a;
$packet[0x25] = 0x27;
Потом команда для RM
А для RM 4 специальные байты добавлены
Код: Выделить всё
$packet[0] = 0xd0;
$packet[1] = 0x00;
$packet[2] = 0x02;
и только потом сама команда.
Понаблюдайте что приложение вашему РМ засылает...надо выловить постоянную часть
ну и ещё в пакете где то должен быть мак, айпи и чексумма.
Код: Выделить всё
$packet[0x28] = $this->count & 0xff;
$packet[0x29] = $this->count >> 8;
$packet[0x2a] = $this->mac[0];
$packet[0x2b] = $this->mac[1];
$packet[0x2c] = $this->mac[2];
$packet[0x2d] = $this->mac[3];
$packet[0x2e] = $this->mac[4];
$packet[0x2f] = $this->mac[5];
$packet[0x30] = $this->id[0];
$packet[0x31] = $this->id[1];
$packet[0x32] = $this->id[2];
$packet[0x33] = $this->id[3];
$packet[0x34] = $checksum & 0xff;
$packet[0x35] = $checksum >> 8;
$packet[0x20] = $checksum & 0xff;
$packet[0x21] = $checksum >> 8;
Возможно где то что то поменяли, и что то лишнее отправляется или чего то не хватает.
Нашел программу, которая умеет доставать любые пакеты из пультов -
https://github.com/t0mer/broadlinkmanager-docker
С помощью нее всего за пару минут достал все мне нужные RF и IR коды команд в открытом виде (то есть не надо ничего перехватывать и расшифровывать).
Re: [Модуль] Broadlink (dev_broadlink)
Добавлено: Пт июл 24, 2020 9:57 am
nick7zmail
А толку? Это не добавит неработающие RM в модуль так, чтоб они работали...
Вопрос то, как я понял в неподдерживаемых моделях RM?
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Re: [Модуль] Broadlink (dev_broadlink)
Добавлено: Чт июл 30, 2020 3:32 pm
Natrix
nick7zmail писал(а): Пт июл 24, 2020 9:57 am
Вопрос то, как я понял в неподдерживаемых моделях RM?
Долго маялся с mini 0x5f36. Оказалось, что по крайней мере мой экземпляр, работает либо с приложением либо с majordomo.
Сейчас заработал и стал записывать и отправлять сигналы. Делал по следующей схеме:
Для начала заменил код на указанный ранее.
class RM extends Broadlink{
function __construct($h = "", $m = "", $p = 80, $d = 0x2712) {
parent::__construct($h, $m, $p, $d);
}
public function Enter_learning(){
$packet = self::bytearray(16);
$packet[0] = 0x04;
$packet[1] = 0x00;
$packet[2] = 0x03;
$this->send_packet(0x6a, $packet);
}
public function Send_data($data){
$packet = self::bytearray(4);
$packet[0] = 0xd0;
$packet[1] = 0x00;
$packet[2] = 0x02;
if(is_array($data)){
$packet = array_merge($packet, $data);
}
else{
for($i = 0 ; $i < strlen($data) ; $i+=2){
array_push($packet, hexdec(substr($data, $i, 2)));
}
}
$this->send_packet(0x6a, $packet);
}
public function Check_data(){
$code = array();
$packet = self::bytearray(16);
$packet[0] = 0x04;
$packet[1] = 0x00;
$packet[2] = 0x04;
$response = $this->send_packet(0x6a, $packet);
if (empty($response))
return false;
$err = hexdec(sprintf("%x%x", $response[0x23], $response[0x22]));
if($err == 0){
$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()));
$code = array_slice($payload, 0x04);
}
}
return $code;
}
public function Check_temperature(){
$temp = false;
$packet = $this->bytearray(16);
$packet[0] = 0x01;
$response = $this->send_packet(0x6a, $packet);
if (empty($response))
return false;
$err = hexdec(sprintf("%x%x", $response[0x23], $response[0x22]));
if($err == 0){
$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()));
$temp = ($payload[0x4] * 10 + $payload[0x5]) / 10.0;
}
}
return $temp;
}
}
Далее удалил из приложения все пульты и девайсы.
Сбросил mini (reset 6 sec.)
Через приложение прописал wifi в mini и на этом все. Сам mini в приложение не добавлял. После этого все заработало.
Re: [Модуль] Broadlink (dev_broadlink)
Добавлено: Ср авг 05, 2020 9:05 am
korikutkin
Natrix писал(а): Чт июл 30, 2020 3:32 pm
nick7zmail писал(а): Пт июл 24, 2020 9:57 am
Вопрос то, как я понял в неподдерживаемых моделях RM?
Долго маялся с mini 0x5f36. Оказалось, что по крайней мере мой экземпляр, работает либо с приложением либо с majordomo.
Сейчас заработал и стал записывать и отправлять сигналы. Делал по следующей схеме:
Для начала заменил код на указанный ранее.
class RM extends Broadlink{
function __construct($h = "", $m = "", $p = 80, $d = 0x2712) {
parent::__construct($h, $m, $p, $d);
}
.........
}
Далее удалил из приложения все пульты и девайсы.
Сбросил mini (reset 6 sec.)
Через приложение прописал wifi в mini и на этом все. Сам mini в приложение не добавлял. После этого все заработало.
Можно по подробней, как и где заменили код? У меня тоже девайс mini 0x5f36.
Re: [Модуль] Broadlink (dev_broadlink)
Добавлено: Ср авг 05, 2020 3:03 pm
korikutkin
korikutkin писал(а): Ср авг 05, 2020 9:05 am
Natrix писал(а): Чт июл 30, 2020 3:32 pm
nick7zmail писал(а): Пт июл 24, 2020 9:57 am
Вопрос то, как я понял в неподдерживаемых моделях RM?
Долго маялся с mini 0x5f36. Оказалось, что по крайней мере мой экземпляр, работает либо с приложением либо с majordomo.
Сейчас заработал и стал записывать и отправлять сигналы. Делал по следующей схеме:
Для начала заменил код на указанный ранее.
class RM extends Broadlink{
function __construct($h = "", $m = "", $p = 80, $d = 0x2712) {
parent::__construct($h, $m, $p, $d);
}
.........
}
Далее удалил из приложения все пульты и девайсы.
Сбросил mini (reset 6 sec.)
Через приложение прописал wifi в mini и на этом все. Сам mini в приложение не добавлял. После этого все заработало.
Можно по подробней, как и где заменили код? У меня тоже девайс mini 0x5f36.
УРА Всё заработало, после ваших действий!!!!! Большое спасибо!!!!!!!!!!!!