Затрудняюсь сказать как на чистом JS это реализовать.

dnk пишет:
vanich пишет:

К стати. Вот еще универсальный вариант для сервера на PHP:

$ip = 'udp://192.168.1.20:80';
if($socket = stream_socket_client($ip, $errno, $errormsg)){
    $data = file_get_contents($file_name);
    fputs($socket, $data);
    fclose($socket);   
}

А можно привести пример данного кода на JavaScript (js), если не сложно. К сожалению правила на устройстве умного дома обрабатываются на этом языке и очень помог бы данный пример на JS.

Да, конечно. Я так и сделал. Только надо не к broadlink обращаться, а к самой розетке - $ip = 'udp://IP_розетки'

cher908 пишет:
vanich пишет:

В общем решение на удивление простое) нашел в соседней ветке тут https://broadlink.ru/forum/post/1505/#p1505
Там ести программа под windows с исходниками. Но мне намного удобнее под PHP тоже самое запилить.
1) Установить Packet Capture
2) Выйти в e-Control из облака (так будет меньше пакетов)
2) Запустить capture
3) Несколько раз возпроизвести в e-Control нужную команду
4) Остановить capture, и открыть список переваченых пакетов
5) Найти пакет приложения unknown, с адресом в локальной сети, портом 80 и типом UDP
6) Открыть пакет, переключиться в HEX, убедиться что upstream (<---) начинается с 5a a5 aa 55 5a a5 aa 55
7) Сохранить только upstream (<---)
8) Повторить с пункта 5

К стати. Вот еще универсальный вариант для сервера на PHP:
$ip = 'udp://192.168.1.20:80';
if($socket = stream_socket_client($ip, $errno, $errormsg)){
    $data = file_get_contents($file_name);
    fputs($socket, $data);
    fclose($socket);   
}

Не знаю почему но 2 раза подряд одна и та же команда не выполняется. Поэтому просто записал несуществующий код и отправляю сразу после реальных данных.


Вопрос к Вам.
Используя описанный метод, можно ли снять все команды розетки SP, чтобы попробовать перепрограммировать розетку Sonoff и сделать ее программным клоном ?

В общем решение на удивление простое) нашел в соседней ветке тут https://broadlink.ru/forum/post/1505/#p1505
Там ести программа под windows с исходниками. Но мне намного удобнее под PHP тоже самое запилить.
1) Установить Packet Capture
2) Выйти в e-Control из облака (так будет меньше пакетов)
2) Запустить capture
3) Несколько раз возпроизвести в e-Control нужную команду
4) Остановить capture, и открыть список переваченых пакетов
5) Найти пакет приложения unknown, с адресом в локальной сети, портом 80 и типом UDP
6) Открыть пакет, переключиться в HEX, убедиться что upstream (<---) начинается с 5a a5 aa 55 5a a5 aa 55
7) Сохранить только upstream (<---)
8) Повторить с пункта 5

К стати. Вот еще универсальный вариант для сервера на PHP:
$ip = 'udp://192.168.1.20:80';
if($socket = stream_socket_client($ip, $errno, $errormsg)){
    $data = file_get_contents($file_name);
    fputs($socket, $data);
    fclose($socket);   
}

Не знаю почему но 2 раза подряд одна и та же команда не выполняется. Поэтому просто записал несуществующий код и отправляю сразу после реальных данных.

К стати. Вот еще универсальный вариант для сервера на PHP:
$ip = 'udp://192.168.1.20:80';
if($socket = stream_socket_client($ip, $errno, $errormsg)){
    $data = file_get_contents($file_name);
    fputs($socket, $data);
    fclose($socket);   
}

Не знаю почему но 2 раза подряд одна и та же команда не выполняется. Поэтому просто записал несуществующий код и отправляю сразу после реальных данных.
Еще бы расковырять формат ответа, а то данные по температуре и статусу устройства не получить...

Ultron пишет:
vanich пишет:

На ARC Welder не работает ни RMBridge ни blhttрbridge. Просто не выдается IP (null). Может есть какие то тонкости? Потому что в эмуляторах я тоже не смог нормально завести ни одно из приложений из за кривой работы с сетью самих эмуляторов.

Не знаю как там в RMBridge, но BroadLinkHTTPBridge у меня без проблем работает (IP также не отображается при запуске с помощью ARC Welder). Т.е. то, что в приложении запущенном через ARC Welder не показывается IP, никак не влияет на его работу. IP адрес устройства, на котором вы все это запускаете, вы и сами, я думаю, знаете - просто используете его и выбранный порт.


Ну да. Доступ по IP есть, но даже не смотря на то что я залил данные с телефона из папки BLHTTPBridge на виртуальную SDCard он не видит ни одного устройства (RM Code List видно), кеш тоже скопировал...

На ARC Welder не работает ни RMBridge ни blhttрbridge. Просто не выдается IP (null). Может есть какие то тонкости? Потому что в эмуляторах я тоже не смог нормально завести ни одно из приложений из за кривой работы с сетью самих эмуляторов.

https://ivan.sknt.ru/arc.jpg

Подскажите где почитать документацию на библиотеки под андроид, ну и скачать их собственно (исходников как я понимаю нету а формат .pl и .pat - загадка).
Хотелось бы получить взаимодействие сервер (raspberry) -> RM-Pro без посредников.
Взаимодействие с устройствами идет по UDP? Т.е. теоретически если просто записать исходящие пакеты (если нет каких то контрольных данных), можно управлять устройствами откуда угодно. Понятно что не так гибко, но зато будет работать везде.

Привет, а есть ли какие то подвижки в управлении RM-Pro без Bridge и e-control? Постоянно включенный телефон или эмулятор андроида на винде не радуют... Вроде ж изначально api обещалось?

Привет, а есть ли какие то подвижки в управлении RM-Pro без Bridge в связке с e-control? Постоянно включенный телефон не радует... Вроде ж изначально api обещалось?