[Модуль] Tuya

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

Модератор: immortal

Daniral
Сообщения: 82
Зарегистрирован: Чт мар 05, 2020 5:11 pm
Благодарил (а): 18 раз
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение Daniral » Сб авг 07, 2021 8:29 am

fandaymon писал(а):
Пт авг 06, 2021 1:44 pm
Daniral писал(а):
Пт авг 06, 2021 1:10 pm
fandaymon писал(а):
Пт авг 06, 2021 10:39 am
Daniral писал(а):
Пт авг 06, 2021 9:12 am
Получил я свой пульт. Добавил его в приложение. Настроил управление Телеком.в модуле мддм тоже нашелся. Локал Кей сам прописался. Вписал только айпи. Онлайн горит зелёным. В закладке пульты есть пульт к телеку. Вот только при нажатии на команды ничего не происходит
Если есть доступ к phpmyadmin, то проверить правильный ли размер у полей

tuircommand: COMPRESSPULSE varchar(150) NOT NULL DEFAULT ''
tuircommand: EXTS varchar(150) NOT NULL DEFAULT ''
tuircommand: CPULSE_ALT varchar(300) NOT NULL DEFAULT ''

в какой-то момент оказалось, что коды бывают очень большие и я их увеличил, к сожалению инсталяшка модулей на изменение размера полей не смотрит
Ещё в таблице tudevices надо найти по TITLE свой пульт и посмотреть записано ли у него что-то в поле MESH_ID, по идее там должен быть DEV ID ИК-пульта
Ну вроде все сделал. Все равно не работает
Безымянный.png
Т.е. были другие размеры? Тогда надо перейти на вкладку пульты, удалить все, перейти на главную вкладку и ещё раз на пульты, чтобы они скачались заново

И убедится что в mesh id пульта в таблице стоит правильный mesh id - по этому полю модуль определят через какое физическое устройство работает пульт, если там ничего нету или mesh id неправильный, то ничего не будет происходить
Меш айди стоит правильный.
Удалил пульты. Опять не работает
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] Tuya

Сообщение fandaymon » Сб авг 07, 2021 1:20 pm

Daniral писал(а):
Сб авг 07, 2021 8:29 am

Меш айди стоит правильный.
Удалил пульты. Опять не работает
Пульты удалил из пультов?
Локальный ip ИК-пульта точно правильный? Кнопка Сканировать его находит?
Если добавить сцену которая нажимает на кнопку пульта и запустить её из Сцен модуля, кнопка срабатывает?
Daniral
Сообщения: 82
Зарегистрирован: Чт мар 05, 2020 5:11 pm
Благодарил (а): 18 раз
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение Daniral » Сб авг 07, 2021 1:39 pm

fandaymon писал(а):
Сб авг 07, 2021 1:20 pm
Daniral писал(а):
Сб авг 07, 2021 8:29 am

Меш айди стоит правильный.
Удалил пульты. Опять не работает
Пульты удалил из пультов?
Локальный ip ИК-пульта точно правильный? Кнопка Сканировать его находит?
Если добавить сцену которая нажимает на кнопку пульта и запустить её из Сцен модуля, кнопка срабатывает?
А из вкладки пульты не должно работать?
А как сделать сцену которая нажимает на кнопку?
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] Tuya

Сообщение fandaymon » Сб авг 07, 2021 1:48 pm

Daniral писал(а):
Сб авг 07, 2021 1:39 pm
fandaymon писал(а):
Сб авг 07, 2021 1:20 pm
Daniral писал(а):
Сб авг 07, 2021 8:29 am

Меш айди стоит правильный.
Удалил пульты. Опять не работает
Пульты удалил из пультов?
Локальный ip ИК-пульта точно правильный? Кнопка Сканировать его находит?
Если добавить сцену которая нажимает на кнопку пульта и запустить её из Сцен модуля, кнопка срабатывает?
А из вкладки пульты не должно работать?
А как сделать сцену которая нажимает на кнопку?
Должно, но только если всё правильно настроено (правильный Ip и локальный ключ у ИК-пульта, правильный MESH ID у пульта и правильный код у кнопки). Если в ИК-пульте есть локальный ключ и ip, то модуль пытается послать сигнал на ИК-пульт локально, если какого-то параметра нет, то пытается отправить сигнал через облако

Зайти в приложение, Смартсцены - Добавить - Добавить действие - Устройство - Пульт - кнопку
Daniral
Сообщения: 82
Зарегистрирован: Чт мар 05, 2020 5:11 pm
Благодарил (а): 18 раз
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение Daniral » Сб авг 07, 2021 3:14 pm

fandaymon писал(а):
Сб авг 07, 2021 1:48 pm
Daniral писал(а):
Сб авг 07, 2021 1:39 pm
fandaymon писал(а):
Сб авг 07, 2021 1:20 pm
Daniral писал(а):
Сб авг 07, 2021 8:29 am

Меш айди стоит правильный.
Удалил пульты. Опять не работает
Пульты удалил из пультов?
Локальный ip ИК-пульта точно правильный? Кнопка Сканировать его находит?
Если добавить сцену которая нажимает на кнопку пульта и запустить её из Сцен модуля, кнопка срабатывает?
А из вкладки пульты не должно работать?
А как сделать сцену которая нажимает на кнопку?
Должно, но только если всё правильно настроено (правильный Ip и локальный ключ у ИК-пульта, правильный MESH ID у пульта и правильный код у кнопки). Если в ИК-пульте есть локальный ключ и ip, то модуль пытается послать сигнал на ИК-пульт локально, если какого-то параметра нет, то пытается отправить сигнал через облако

Зайти в приложение, Смартсцены - Добавить - Добавить действие - Устройство - Пульт - кнопку
Так что для каждой кнопки надо добавлять смарсцену? Так работает. Наконец-то. Спасибо
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] Tuya

Сообщение fandaymon » Сб авг 07, 2021 4:22 pm

Daniral писал(а):
Сб авг 07, 2021 3:14 pm
fandaymon писал(а):
Сб авг 07, 2021 1:48 pm
Daniral писал(а):
Сб авг 07, 2021 1:39 pm
fandaymon писал(а):
Сб авг 07, 2021 1:20 pm
Daniral писал(а):
Сб авг 07, 2021 8:29 am

Меш айди стоит правильный.
Удалил пульты. Опять не работает
Пульты удалил из пультов?
Локальный ip ИК-пульта точно правильный? Кнопка Сканировать его находит?
Если добавить сцену которая нажимает на кнопку пульта и запустить её из Сцен модуля, кнопка срабатывает?
А из вкладки пульты не должно работать?
А как сделать сцену которая нажимает на кнопку?
Должно, но только если всё правильно настроено (правильный Ip и локальный ключ у ИК-пульта, правильный MESH ID у пульта и правильный код у кнопки). Если в ИК-пульте есть локальный ключ и ip, то модуль пытается послать сигнал на ИК-пульт локально, если какого-то параметра нет, то пытается отправить сигнал через облако

Зайти в приложение, Смартсцены - Добавить - Добавить действие - Устройство - Пульт - кнопку
Так что для каждой кнопки надо добавлять смарсцену? Так работает. Наконец-то. Спасибо
Можно так, можно всё-таки разобраться в том, почему пульты не работают как надо (скажем у меня они работают и у нескольких отписавшихся - тоже)

Вот такой код вставленный в сценарий выведет что именно делает сцена

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

include_once(DIR_MODULES . 'tuya/tuya.class.php');
$tuya_module = new tuya();


$apiResult = $tuya_module->TuyaWebRequest(['action'=> 'tuya.m.location.list',
                                          'requiresSID'=> 1]);

	$result=json_decode($apiResult , true);
	$gid= $result['result'][0] ['groupId'];


$action = "tuya.m.linkage.rule.query";

	$apiResult = $tuya_module->TuyaWebRequest(['action'=>$action,
                                         'gid'=>$gid,
                                          'requiresSID'=> 1]);
	$result=json_decode($apiResult , true);

foreach($result['result'] as $res) {
//var_dump($res);
 echo $res['name'].'<BR>';
 var_dump( $res['actions']);
 echo '<BR>----------------<BR>';
}
Что-то типа такого
"TV"power
array(1) { [0]=> array(13) { ["actionDisplayNew"]=> array(1) { [1]=> array(2) { [0]=> string(5) "power" [1]=> string(0) "" } } ["actionStrategy"]=> string(6) "repeat" ["extraProperty"]=> array(6) { ["keyName"]=> string(0) "" ["keyId"]=> string(1) "1" ["gwId"]=> string(20) "xxxxx" ["vender"]=> string(1) "3" ["devTypeId"]=> string(1) "2" ["remoteId"]=> string(4) "2397" } ["actionExecutor"]=> string(10) "irIssueVii" ["orderNum"]=> int(1) ["entityId"]=> string(22) "bf1e20d14191edcf7ckni5" ["devDelMark"]=> bool(false) ["executorProperty"]=> array(5) { [1]=> string(7) "send_ir" [13]=> int(0) [3]=> string(46) "010ecb00000000000700150040015a005600ad062d0e74" [4]=> string(22) "01$^002020DF10EF@&$%@*" [10]=> int(300) } ["entityName"]=> string(2) "TV" ["uiid"]=> string(105) "{"ios_pre":"0.0.1","ios_online":"0.0.1","id":"00000003ov","android_pre":"0.0.1","android_online":"0.0.1"}" ["attribute"]=> int(0) ["id"]=> string(20) "yHquqamqSaMlVBeEKBVx" ["ruleId"]=> string(16) "cAn3KWCA5PSjfTPu" } }
----------------
Сценарий

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

$dev_id = 'bf1e20d14191edcf7ckni5'; // Тут нужно указать свой ID пульта, он же есть в entityId вверху
$command = 'power'; // надпись на кнопке пульта - в моём случае это power

$dev_info = SQLSelectOne("SELECT * FROM tudevices WHERE DEV_ID='" . $dev_id . "';");
$code = SQLSelectOne("SELECT * FROM tuircommand WHERE DEVICE_ID=" . $dev_info['ID'] . " AND TITLE='" . $command ."';");
if ($code['CPULSE_ALT_FLAG']) {
	$dps='{"1":"study_key","13":3,"3":"","7":"'. $code['CPULSE_ALT'] . '","10":300}';
} else {	
	$dps='{"1":"send_ir","13":0,"3":"'.$code['EXTS'].'","4":"'. $code['COMPRESSPULSE'] . '","10":300}';
}

echo $dps;
вытащит что посылает модуль на ИК-пульт

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

{"1":"send_ir","13":0,"3":"010ecb00000000000700150040015a005600ad062d0e74","4":"01$^002020DF10EF@&$%@*","10":300}
И далее просто сравниваем то что посылает сцена и что посылает модуль
В моём случае всё одинаково, поэтому пульты работают
Daniral
Сообщения: 82
Зарегистрирован: Чт мар 05, 2020 5:11 pm
Благодарил (а): 18 раз
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение Daniral » Сб авг 07, 2021 5:06 pm

fandaymon писал(а):
Сб авг 07, 2021 4:22 pm
Daniral писал(а):
Сб авг 07, 2021 3:14 pm
fandaymon писал(а):
Сб авг 07, 2021 1:48 pm
Daniral писал(а):
Сб авг 07, 2021 1:39 pm
fandaymon писал(а):
Сб авг 07, 2021 1:20 pm
Daniral писал(а):
Сб авг 07, 2021 8:29 am

Меш айди стоит правильный.
Удалил пульты. Опять не работает
Пульты удалил из пультов?
Локальный ip ИК-пульта точно правильный? Кнопка Сканировать его находит?
Если добавить сцену которая нажимает на кнопку пульта и запустить её из Сцен модуля, кнопка срабатывает?
А из вкладки пульты не должно работать?
А как сделать сцену которая нажимает на кнопку?
Должно, но только если всё правильно настроено (правильный Ip и локальный ключ у ИК-пульта, правильный MESH ID у пульта и правильный код у кнопки). Если в ИК-пульте есть локальный ключ и ip, то модуль пытается послать сигнал на ИК-пульт локально, если какого-то параметра нет, то пытается отправить сигнал через облако

Зайти в приложение, Смартсцены - Добавить - Добавить действие - Устройство - Пульт - кнопку
Так что для каждой кнопки надо добавлять смарсцену? Так работает. Наконец-то. Спасибо
Можно так, можно всё-таки разобраться в том, почему пульты не работают как надо (скажем у меня они работают и у нескольких отписавшихся - тоже)

Вот такой код вставленный в сценарий выведет что именно делает сцена

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

include_once(DIR_MODULES . 'tuya/tuya.class.php');
$tuya_module = new tuya();


$apiResult = $tuya_module->TuyaWebRequest(['action'=> 'tuya.m.location.list',
                                          'requiresSID'=> 1]);

	$result=json_decode($apiResult , true);
	$gid= $result['result'][0] ['groupId'];


$action = "tuya.m.linkage.rule.query";

	$apiResult = $tuya_module->TuyaWebRequest(['action'=>$action,
                                         'gid'=>$gid,
                                          'requiresSID'=> 1]);
	$result=json_decode($apiResult , true);

foreach($result['result'] as $res) {
//var_dump($res);
 echo $res['name'].'<BR>';
 var_dump( $res['actions']);
 echo '<BR>----------------<BR>';
}
Что-то типа такого
"TV"power
array(1) { [0]=> array(13) { ["actionDisplayNew"]=> array(1) { [1]=> array(2) { [0]=> string(5) "power" [1]=> string(0) "" } } ["actionStrategy"]=> string(6) "repeat" ["extraProperty"]=> array(6) { ["keyName"]=> string(0) "" ["keyId"]=> string(1) "1" ["gwId"]=> string(20) "xxxxx" ["vender"]=> string(1) "3" ["devTypeId"]=> string(1) "2" ["remoteId"]=> string(4) "2397" } ["actionExecutor"]=> string(10) "irIssueVii" ["orderNum"]=> int(1) ["entityId"]=> string(22) "bf1e20d14191edcf7ckni5" ["devDelMark"]=> bool(false) ["executorProperty"]=> array(5) { [1]=> string(7) "send_ir" [13]=> int(0) [3]=> string(46) "010ecb00000000000700150040015a005600ad062d0e74" [4]=> string(22) "01$^002020DF10EF@&$%@*" [10]=> int(300) } ["entityName"]=> string(2) "TV" ["uiid"]=> string(105) "{"ios_pre":"0.0.1","ios_online":"0.0.1","id":"00000003ov","android_pre":"0.0.1","android_online":"0.0.1"}" ["attribute"]=> int(0) ["id"]=> string(20) "yHquqamqSaMlVBeEKBVx" ["ruleId"]=> string(16) "cAn3KWCA5PSjfTPu" } }
----------------
Сценарий

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

$dev_id = 'bf1e20d14191edcf7ckni5'; // Тут нужно указать свой ID пульта, он же есть в entityId вверху
$command = 'power'; // надпись на кнопке пульта - в моём случае это power

$dev_info = SQLSelectOne("SELECT * FROM tudevices WHERE DEV_ID='" . $dev_id . "';");
$code = SQLSelectOne("SELECT * FROM tuircommand WHERE DEVICE_ID=" . $dev_info['ID'] . " AND TITLE='" . $command ."';");
if ($code['CPULSE_ALT_FLAG']) {
	$dps='{"1":"study_key","13":3,"3":"","7":"'. $code['CPULSE_ALT'] . '","10":300}';
} else {	
	$dps='{"1":"send_ir","13":0,"3":"'.$code['EXTS'].'","4":"'. $code['COMPRESSPULSE'] . '","10":300}';
}

echo $dps;
вытащит что посылает модуль на ИК-пульт

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

{"1":"send_ir","13":0,"3":"010ecb00000000000700150040015a005600ad062d0e74","4":"01$^002020DF10EF@&$%@*","10":300}
И далее просто сравниваем то что посылает сцена и что посылает модуль
В моём случае всё одинаково, поэтому пульты работают

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

LG TV Switch
array(1) { [0]=> array(13) { ["actionDisplayNew"]=> array(1) { [1]=> array(2) { [0]=> string(5) "power" [1]=> string(0) "" } } ["actionStrategy"]=> string(6) "repeat" ["extraProperty"]=> array(6) { ["keyName"]=> string(5) "power" ["keyId"]=> string(1) "1" ["gwId"]=> string(22) "6ce76a64ac6952d815h1gv" ["vender"]=> string(1) "3" ["devTypeId"]=> string(1) "2" ["remoteId"]=> string(4) "2397" } ["actionExecutor"]=> string(10) "irIssueVii" ["orderNum"]=> int(1) ["entityId"]=> string(22) "6c10c9af8068643ed3l1cc" ["devDelMark"]=> bool(false) ["executorProperty"]=> array(1) { [201]=> string(131) "{"control":"send_ir","head":"010ecb00000000000700150040015a005600ad062d0e74","key1":"001$^002020DF10EF@&$%@*","type":0,"delay":300}" } ["entityName"]=> string(5) "LG TV" ["uiid"]=> string(105) "{"ios_pre":"0.0.2","ios_online":"0.0.2","id":"00000014t8","android_pre":"0.0.2","android_online":"0.0.2"}" ["attribute"]=> int(0) ["id"]=> string(20) "ChHDoW0jRG42N8eLvAjS" ["ruleId"]=> string(16) "7g2CGZXXAOzbB1p1" } }

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

{"1":"send_ir","13":0,"3":"010ecb00000000000700150040015a005600ad062d0e74","4":"01$^002020DF10EF@&$%@*","10":300}
Daniral
Сообщения: 82
Зарегистрирован: Чт мар 05, 2020 5:11 pm
Благодарил (а): 18 раз
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение Daniral » Сб авг 07, 2021 5:14 pm

Разное по ходу
И сильно тормозит. От 3 и больше секунд берет пока команда дойдет до телевизора. Очень замахаешся звук убавлять и прибавлять
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] Tuya

Сообщение fandaymon » Сб авг 07, 2021 6:04 pm

Daniral писал(а):
Сб авг 07, 2021 5:14 pm
Разное по ходу
И сильно тормозит. От 3 и больше секунд берет пока команда дойдет до телевизора. Очень замахаешся звук убавлять и прибавлять
Ну дык пришли ЛСкой, что выводит и один и другой сценарий, попробую исправить
3 секунды для сценария это нормально, сценарий всегда работает через облако. Локально отрабатывает практически мгновенно - меньше секунды
Daniral
Сообщения: 82
Зарегистрирован: Чт мар 05, 2020 5:11 pm
Благодарил (а): 18 раз
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение Daniral » Сб авг 07, 2021 6:59 pm

fandaymon писал(а):
Сб авг 07, 2021 6:04 pm
Daniral писал(а):
Сб авг 07, 2021 5:14 pm
Разное по ходу
И сильно тормозит. От 3 и больше секунд берет пока команда дойдет до телевизора. Очень замахаешся звук убавлять и прибавлять
Ну дык пришли ЛСкой, что выводит и один и другой сценарий, попробую исправить
3 секунды для сценария это нормально, сценарий всегда работает через облако. Локально отрабатывает практически мгновенно - меньше секунды
Может в телегу?
Ответить