[Модуль] Broadlink (dev_broadlink)
Модератор: immortal
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
Проблема: Не определяются автоматически (через сканирование устройств) устройства в сети.
Причина: Особенности строения каждой сети.
Немного технических подробностей (как это вижу я...могу немного путаться в терминах, поправьте если что)...не буду далеко отходить от темы - скажу сразу, что связано с 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 проживёт до очередного обновления, но я думаю, этого хватит, чтобы добавить устройства. Добавленные устройства будут нормально работать.
Причина: Особенности строения каждой сети.
Немного технических подробностей (как это вижу я...могу немного путаться в терминах, поправьте если что)...не буду далеко отходить от темы - скажу сразу, что связано с 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
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 529
- Зарегистрирован: Сб мар 12, 2016 6:33 pm
- Откуда: Ухта, Россия
- Благодарил (а): 3 раза
- Поблагодарили: 154 раза
Re: Модуль Broadlink
Надо в файле 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
А $address[0] 1,2 он откуда брать должен?? Сомневаюсь, что это какая-то глобальная переменная...он случайно не на нули это в итоге заменяет?
А в чем добавление криво происходит? Можно подробнее?
Модуль на самом деле писался не имея на руках практически ни одного девайса =D...но на основе библиотеки, которая была написана другим человеком....большинство таких "проблемок" поддтянуто оттуда...
А в чем добавление криво происходит? Можно подробнее?
Модуль на самом деле писался не имея на руках практически ни одного девайса =D...но на основе библиотеки, которая была написана другим человеком....большинство таких "проблемок" поддтянуто оттуда...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 529
- Зарегистрирован: Сб мар 12, 2016 6:33 pm
- Откуда: Ухта, Россия
- Благодарил (а): 3 раза
- Поблагодарили: 154 раза
Re: Модуль Broadlink
А там выше он определяется, используется для формирования Discovery пакета.
Видимо по этому адресу (адресу сервера) устройство потом ответ шлет.
Кстати насчет определения локального адреса, я считаю, что это плохая идея, т.к. у сервера может быть несколько интерфейсов и определиться может неверный.
Вот что насканировало: Вот что хочет добавить:
Видимо по этому адресу (адресу сервера) устройство потом ответ шлет.
Кстати насчет определения локального адреса, я считаю, что это плохая идея, т.к. у сервера может быть несколько интерфейсов и определиться может неверный.
Вот что насканировало: Вот что хочет добавить:
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
Ну IP, марка и MAC правильные =D с названием только лажа какая-то)) проверю.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
А тип - да...его ток в ручную...всё руки никак не доходят =DAven писал(а):Тип еще.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль Broadlink
dmw...ты один в проге капался)) нашел где-нить типы устройств доступных? Или это в библиотеку забито? Я шарюсь пока по файлам, но их сильно много в приложении))
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: Модуль Broadlink
Да, конечно, это вот сейчас сдернул из e-control v3.8.1, но RM3 Mini там нет, может она как то по другому называется?:nick7zmail писал(а):dmw...ты один в проге капался)) нашел где-нить типы устройств доступных? Или это в библиотеку забито? Я шарюсь пока по файлам, но их сильно много в приложении))
СпойлерПоказать
.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
.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
Да rm3mini то давно добавлен 0x2737 или 0x278f...
меня больше другие девайсы интересовали...типа новых SC1, TW2 вон там вижу...надо будет попробовать докинуть их)) хотя бы в автообнаружение.
И остальные проверить...
upd: ахах)) оказывается sc1 назван SP_MINI2_WIFI_BOX
Нашел RM, которого нет...видимо из нового что-то 0x279d 0x27a2
меня больше другие девайсы интересовали...типа новых SC1, TW2 вон там вижу...надо будет попробовать докинуть их)) хотя бы в автообнаружение.
И остальные проверить...
upd: ахах)) оказывается sc1 назван SP_MINI2_WIFI_BOX
Нашел RM, которого нет...видимо из нового что-то 0x279d 0x27a2
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<