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

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

Модератор: immortal

Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Пн июл 10, 2017 2:58 pm

Проблема: Не определяются автоматически (через сканирование устройств) устройства в сети.

Причина: Особенности строения каждой сети.
Немного технических подробностей (как это вижу я...могу немного путаться в терминах, поправьте если что)...не буду далеко отходить от темы - скажу сразу, что связано с IP широковещательного адреса сети. В каждой отдельно взятой сети бродкаст, как правило висит на 255 октете (например для сети 192.168.1.* бродкаст будет 192.168.1.255). Есть универсальный бродкаст 255.255.255.255, распознав который роутер по идее должен перенаправить широковещательный пакет во внутреннюю сеть. Но по каким-то причинам этого не происходит...либо роутер не поддерживает этот адрес, либо фаервол не пропускает данный пакет, либо ещё что-то...но в общем если пакет не попадает в сеть - отклика от устройств, естественно нет. Если кто знает, как исправить проблему - отпишитесь.

Решение 1: Найдите в файле /modules/dev_broadlink/broadlink.class.php строку с адресом 255.255.255.255, и замените этот IP на <первые 3 цифры в вашей сети>.255 (как приводился пример выше). По-идее сканирование должно заработать.

Решение 2: Можете просто добавить устройство вручную, зная IP и MAC. Марку устройства можете подглядеть в том же файле (/modules/dev_broadlink/broadlink.class.php).

Примечание: Делать это лучше через notepad++ или любой другой редактор, желательно предназначенный для кода. Встроенный блокнот Windows крайне не рекомендую, он может покоцать файл.
Решение 1 проживёт до очередного обновления, но я думаю, этого хватит, чтобы добавить устройства. Добавленные устройства будут нормально работать.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия
Благодарил (а): 3 раза
Поблагодарили: 154 раза

Re: Модуль Broadlink

Сообщение Aven » Пн июл 10, 2017 7:36 pm

Надо в файле broadlink.class.php заменить строку:

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

        socket_sendto($cs, self::byte($packet), sizeof($packet), 0, '255.255.255.255', 80); 
на:

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

        $brd_address = $address[0] . '.' . $address[1] . '.' . $address[2] . '.255';
        socket_sendto($cs, self::byte($packet), sizeof($packet), 0, $brd_address, 80); 
Поиск начинает работать, но добавление криво происходит, как будто модуль писался не имея оборудования для теста :)
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Пн июл 10, 2017 7:51 pm

А $address[0] 1,2 он откуда брать должен?? Сомневаюсь, что это какая-то глобальная переменная...он случайно не на нули это в итоге заменяет?

А в чем добавление криво происходит? Можно подробнее?
Модуль на самом деле писался не имея на руках практически ни одного девайса =D...но на основе библиотеки, которая была написана другим человеком....большинство таких "проблемок" поддтянуто оттуда...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия
Благодарил (а): 3 раза
Поблагодарили: 154 раза

Re: Модуль Broadlink

Сообщение Aven » Пн июл 10, 2017 9:08 pm

А там выше он определяется, используется для формирования Discovery пакета.
Видимо по этому адресу (адресу сервера) устройство потом ответ шлет.

Кстати насчет определения локального адреса, я считаю, что это плохая идея, т.к. у сервера может быть несколько интерфейсов и определиться может неверный.

Вот что насканировало:
1.png
1.png (84.52 КБ) 8061 просмотр
Вот что хочет добавить:
2.png
2.png (105.53 КБ) 8061 просмотр
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Пн июл 10, 2017 9:11 pm

Ну IP, марка и MAC правильные =D с названием только лажа какая-то)) проверю.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия
Благодарил (а): 3 раза
Поблагодарили: 154 раза

Re: Модуль Broadlink

Сообщение Aven » Пн июл 10, 2017 10:05 pm

Тип еще.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Пн июл 10, 2017 10:11 pm

Aven писал(а):Тип еще.
А тип - да...его ток в ручную...всё руки никак не доходят =D
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Пн июл 10, 2017 10:25 pm

dmw...ты один в проге капался)) нашел где-нить типы устройств доступных? Или это в библиотеку забито? Я шарюсь пока по файлам, но их сильно много в приложении))
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Модуль Broadlink

Сообщение dmw » Вт июл 11, 2017 8:08 am

nick7zmail писал(а):dmw...ты один в проге капался)) нашел где-нить типы устройств доступных? Или это в библиотеку забито? Я шарюсь пока по файлам, но их сильно много в приложении))
Да, конечно, это вот сейчас сдернул из e-control v3.8.1, но RM3 Mini там нет, может она как то по другому называется?:
СпойлерПоказать
.class public Lcom/broadlink/rmt/data/DeviceType;
.super Ljava/lang/Object;
# static fields
.field public static final A1:I = 0x2714
.field public static final A1_SR1:I = 0x27a3
.field public static final CAMERA:I = 0x2721
.field public static final DEYE_HUMIDIFIER:I = 0x42
.field public static final DEYE_HUMIDIFIER_V2:I = 0x4e62
.field public static final DOOYA_CURTAIN:I = 0x2d
.field public static final DOOYA_CURTAIN_NEW:I = 0x4f42
.field public static final DOOYA_CURTAIN_V2:I = 0x4e4d
.field public static final HONYAR_MS3:I = 0x2723
.field public static final HONYAR_MS4:I = 0x4eb5
.field public static final HONYAR_NEW_MS4:I = 0x4eda
.field public static final HONYAR_SL_MAIN_D480:I = 0x2727
.field public static final HONYAR_SL_MAIN_D800:I = 0x2726
.field public static final HONYAR_SL_SCENE_A:I = 0x2724
.field public static final HONYAR_SL_SCENE_B:I = 0x2725
.field public static final HONYAR_SP2_10A:I = 0x2719
.field public static final HONYAR_SP2_10A_2:I = 0x7919
.field public static final HONYAR_SP2_16A:I = 0x271a
.field public static final HONYAR_SP2_16A_2:I = 0x791a
.field public static final HONYAR_SWITCH1:I = 0x271b
.field public static final HONYAR_SWITCH2:I = 0x271c
.field public static final LIGHTMATES_A:I = 0x4e69
.field public static final M1:I = 0x271f
.field public static final MAX_AP_TYPE:I = 0x2774
.field public static final MAX_OEM_V2_TYPE:I = 0x7530
.field public static final MFRESH_AIR:I = 0x4c
.field public static final MFRESH_AIR_V2:I = 0x4e6c
.field public static final MIN_AP_TYPE:I = 0x2742
.field public static final MIN_OEM_V2_TYPE:I = 0x4e20
.field public static final NEW_SWITCH1:I = 0x4ee6
.field public static final NEW_SWITCH2:I = 0x4eee
.field public static final NEW_SWITCH3:I = 0x4eef
.field public static final PLC:I = 0x271e
.field public static final PLCV2:I = 0x2746
.field public static final RM1:I = 0x2710
.field public static final RM2:I = 0x2712
.field public static final RM2_HOME_PLUS:I = 0x2783
.field public static final RM2_HOME_PLUS_GDT:I = 0x277c
.field public static final RM2_PRO_PLUS:I = 0x272a
.field public static final RM2_PRO_PLUS2:I = 0x2787
.field public static final RM2_PRO_PLUS3:I = 0x279d
.field public static final RM2_PRO_PLUS_BL:I = 0x278b
.field public static final RM2_PRO_PLUS_HYC:I = 0x2797
.field public static final RM2_PRO_PLUS_R1:I = 0x27a1
.field public static final RM_315:I = 0x13b
.field public static final RM_433:I = 0x1b1
.field public static final RM_IR:I = 0x26
.field public static final RM_MINI:I = 0x2737
.field public static final RM_MINI_R2:I = 0x27a2
.field public static final RM_MINI_SHATE:I = 0x278f
.field public static final RM_PRO_PHICOMM:I = 0x273d
.field public static final S1:I = 0x2722
.field public static final S1_PHICOMM:I = 0x273c
.field public static final SCENE_EDIT:I = -0x1
.field public static final SMART_LIGHT:I = 0xf
.field public static final SP1:I = 0x0
.field public static final SP2:I = 0x2711
.field public static final SP3:I = 0x753e
.field public static final SP3S_EU:I = 0x947a
.field public static final SP3S_US:I = 0x9479
.field public static final SP_MINI:I = 0x2720
.field public static final SP_MINI2_CHINA_MOBILE:I = 0x7549
.field public static final SP_MINI2_OEM_MAX:I = 0x7918
.field public static final SP_MINI2_OEM_MIN:I = 0x7530
.field public static final SP_MINI2_WIFI_BOX:I = 0x7547
.field public static final SP_MINI_CC:I = 0x2733
.field public static final SP_MINI_HAIBEI:I = 0x7539
.field public static final SP_MINI_HYC:I = 0x754e
.field public static final SP_MINI_KPL:I = 0x753d
.field public static final SP_MINI_NEO:I = 0x7536
.field public static final SP_MINI_PHICOMM:I = 0x273e
.field public static final SP_MINI_PLUS:I = 0x2736
.field public static final SP_MINI_PLUS2:I = 0x947c
.field public static final SP_MINI_V2:I = 0x2728
.field public static final SUPER_AC:Ljava/lang/String; = "0"
.field public static final SUPER_EAIR:Ljava/lang/String; = "1"
.field public static final SUPER_WATER_HEATER:Ljava/lang/String; = "3"
.field public static final SUPER_WATER_PURIFIER:Ljava/lang/String; = "2"
.field public static final TCL_AIR:I = 0x7
.field public static final TEMP_AC:I = 0x0
.field public static final TEMP_CST:I = 0x6
.field public static final TEMP_CST2:I = 0x7
.field public static final TEMP_CST_AC:I = 0x5
.field public static final TEMP_CST_LEARN_JP:I = 0x18
.field public static final TEMP_CURTAIN:I = 0x12
.field public static final TEMP_DISH:I = 0xa
.field public static final TEMP_DOOR:I = 0x15
.field public static final TEMP_GESTURE:I = 0x1
.field public static final TEMP_ITV:I = 0x9
.field public static final TEMP_JBL:I = 0x4
.field public static final TEMP_LAMP:I = 0x14
.field public static final TEMP_LIGHT_JP:I = 0x17
.field public static final TEMP_MI:I = 0x8
.field public static final TEMP_RCS:I = 0x11
.field public static final TEMP_RF:I = 0xb
.field public static final TEMP_SWITCH:I = 0x13
.field public static final TEMP_TC1:I = 0x2
.field public static final TEMP_TC1_ONE:I = 0xc
.field public static final TEMP_TC1_THREE:I = 0xd
.field public static final TEMP_TC2_ONE:I = 0xe
.field public static final TEMP_TC2_THREE:I = 0x10
.field public static final TEMP_TC2_TWO:I = 0xf
.field public static final TEMP_TV:I = 0x3
.field public static final TW2_1:I = 0x4f34
.field public static final TW2_2:I = 0x4f35
.field public static final TW2_3:I = 0x4f36
.field public static final TW_ROUTER:I = 0x271e
.field public static final UN_ACTIVATE:I = 0x2
.field public static final V1:I = 0x2710
# direct methods
.method public constructor <init>()V
.locals 0
.prologue
.line 3
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль Broadlink

Сообщение nick7zmail » Вт июл 11, 2017 8:12 am

Да rm3mini то давно добавлен 0x2737 или 0x278f...
меня больше другие девайсы интересовали...типа новых SC1, TW2 вон там вижу...надо будет попробовать докинуть их)) хотя бы в автообнаружение.
И остальные проверить...

upd: ахах)) оказывается sc1 назван SP_MINI2_WIFI_BOX
Нашел RM, которого нет...видимо из нового что-то 0x279d 0x27a2
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить