[Разработка нового модуля] Tuya Smart
Модератор: immortal
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: [Разработка нового модуля] Tuya Smart
Вот так я все прописал
СпойлерПоказать
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: [Разработка нового модуля] Tuya Smart
Могу предполагать, что само устройство не 100% поддерживается Tuya, но если это было бы так, то устройство не управлялось бы через Tuya Smart. Может быть в этом дело? И какой у вас регион выбран? Давайте я попробую выбрать такой же регион как и у вас, посмотрим что выйдет.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
-
- Сообщения: 1555
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Разработка нового модуля] Tuya Smart
И кнопку Обновить нажал?
Странно. А если попробовать сделать сценарий и скопировать туда такой код?
А потом запустить - что выдаст?
Странно. А если попробовать сделать сценарий и скопировать туда такой код?
Код: Выделить всё
include_once(DIR_MODULES . 'tuya/tuya.class.php');
$tuya_module = new tuya();
$tuya_module->getConfig();
$tuya_username =$tuya_module->config['TUYA_USERNAME'];
$tuya_passwd = $tuya_module->config['TUYA_PASSWD'];
$token=json_decode($tuya_module->getToken($tuya_username,$tuya_passwd));
$sURL = 'https://px1.tuyaeu.com/homeassistant/skill';
$header = [
'name' => 'Discovery',
'namespace' => 'discovery',
'payloadVersion' => 1,
];
$payload['accessToken'] = $token->access_token;
$data = [
'header' => $header,
'payload' => $payload,
];
$aHTTP = array(
'http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode($data, JSON_FORCE_OBJECT)
)
);
$context = stream_context_create($aHTTP);
$contents = file_get_contents($sURL, false, $context);
$result=json_decode($contents);
var_dump( $result);
-
- Сообщения: 1555
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Разработка нового модуля] Tuya Smart
У меня выбрана Латвия. Но вряд ли в этом делоDivan писал(а): ↑Сб сен 28, 2019 3:20 amМогу предполагать, что само устройство не 100% поддерживается Tuya, но если это было бы так, то устройство не управлялось бы через Tuya Smart. Может быть в этом дело? И какой у вас регион выбран? Давайте я попробую выбрать такой же регион как и у вас, посмотрим что выйдет.
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: [Разработка нового модуля] Tuya Smart
Буду пробовать Латвию . Создал сценарии и при запуске было сообщение NULL. Ниже я показал куда я вписал логин, пароль и ID устройства. ID я скопировал с программы Tuya Smart, где информация об устройстве. Их тут нужно было вписывать? На кнопку обновить я нажимаю.
Код: Выделить всё
include_once(DIR_MODULES . 'tuya/tuya.class.php'); $tuya_module = new tuya(); $tuya_module->getConfig(); $tuya_username =$tuya_module->config['TUYA_USERNAME - тут я указал логин']; $tuya_passwd = $tuya_module->config['TUYA_PASSWD - туь я указал пароль']; $token=json_decode($tuya_module->getToken($tuya_username,$tuya_passwd)); $sURL = 'https://px1.tuyaeu.com/homeassistant/skill'; $header = [ 'name' => 'Discovery', 'namespace' => 'discovery', 'payloadVersion' => 1, ]; $payload['accessToken - здесь я указал токен'] = $token->access_token; $data = [ 'header' => $header, 'payload' => $payload, ]; $aHTTP = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => json_encode($data, JSON_FORCE_OBJECT) ) ); $context = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $context); $result=json_decode($contents); var_dump( $result);
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
-
- Сообщения: 1555
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Разработка нового модуля] Tuya Smart
Нет - там не надо было ничего вписывать. Просто скопировать как есть. Юзера и пароль сценарий возьмёт из настроек. А токен сгенерирует по юзеру и паролюDivan писал(а): ↑Сб сен 28, 2019 3:52 amБуду пробовать Латвию . Создал сценарии и при запуске было сообщение NULL. Ниже я показал куда я вписал логин, пароль и ID устройства. ID я скопировал с программы Tuya Smart, где информация об устройстве. Их тут нужно было вписывать? На кнопку обновить я нажимаю.
Код: Выделить всё
include_once(DIR_MODULES . 'tuya/tuya.class.php'); $tuya_module = new tuya(); $tuya_module->getConfig(); $tuya_username =$tuya_module->config['TUYA_USERNAME - тут я указал логин']; $tuya_passwd = $tuya_module->config['TUYA_PASSWD - туь я указал пароль']; $token=json_decode($tuya_module->getToken($tuya_username,$tuya_passwd)); $sURL = 'https://px1.tuyaeu.com/homeassistant/skill'; $header = [ 'name' => 'Discovery', 'namespace' => 'discovery', 'payloadVersion' => 1, ]; $payload['accessToken - здесь я указал токен'] = $token->access_token; $data = [ 'header' => $header, 'payload' => $payload, ]; $aHTTP = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => json_encode($data, JSON_FORCE_OBJECT) ) ); $context = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $context); $result=json_decode($contents); var_dump( $result);
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: [Разработка нового модуля] Tuya Smart
Скопировал ваш код как есть, не прокатило. Буду пробовать Латвию - днем проверю. А что если добавить устройство вручную? Можно сделать так? Создать дополнительную кнопку, добавить устройство и указать:
IP и MAC устройства
ID устройства
Этот ID нужно брать?
Приложил логи
IP и MAC устройства
ID устройства
Этот ID нужно брать?
СпойлерПоказать
СпойлерПоказать
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
-
- Сообщения: 1555
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Разработка нового модуля] Tuya Smart
Не прокатило с каким результатом? Null?
А если после строчки
$token=json_decode($tuya_module->getToken($tuya_username,$tuya_passwd));
написать var_dump($token);
По идее должен вывести или токены или то что параметры не правильные...
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: [Разработка нового модуля] Tuya Smart
Когда запускаю сценарии с этим кодом, то появляется сообщение NULL
Когда запускаю сценарии с дополнительным кодом var_dump($token);, то выходит такое сообщение
object(stdClass)#11 (2) { ["responseStatus"]=> string(5) "error" ["errorMsg"]=> string(51) "Get accesstoken failed. Username or password error!" } NULL
Код: Выделить всё
include_once(DIR_MODULES . 'tuya/tuya.class.php');
$tuya_module = new tuya();
$tuya_module->getConfig();
$tuya_username =$tuya_module->config['TUYA_USERNAME'];
$tuya_passwd = $tuya_module->config['TUYA_PASSWD'];
$token=json_decode($tuya_module->getToken($tuya_username,$tuya_passwd));
$sURL = 'https://px1.tuyaeu.com/homeassistant/skill';
$header = [
'name' => 'Discovery',
'namespace' => 'discovery',
'payloadVersion' => 1,
];
$payload['accessToken'] = $token->access_token;
$data = [
'header' => $header,
'payload' => $payload,
];
$aHTTP = array(
'http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode($data, JSON_FORCE_OBJECT)
)
);
$context = stream_context_create($aHTTP);
$contents = file_get_contents($sURL, false, $context);
$result=json_decode($contents);
var_dump( $result);
object(stdClass)#11 (2) { ["responseStatus"]=> string(5) "error" ["errorMsg"]=> string(51) "Get accesstoken failed. Username or password error!" } NULL
Код: Выделить всё
include_once(DIR_MODULES . 'tuya/tuya.class.php');
$tuya_module = new tuya();
$tuya_module->getConfig();
$tuya_username =$tuya_module->config['TUYA_USERNAME'];
$tuya_passwd = $tuya_module->config['TUYA_PASSWD'];
$token=json_decode($tuya_module->getToken($tuya_username,$tuya_passwd));
var_dump($token); - ВОТ ТУТ Я ДОБАВИЛ КОД
$sURL = 'https://px1.tuyaeu.com/homeassistant/skill';
$header = [
'name' => 'Discovery',
'namespace' => 'discovery',
'payloadVersion' => 1,
];
$payload['accessToken'] = $token->access_token;
$data = [
'header' => $header,
'payload' => $payload,
];
$aHTTP = array(
'http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode($data, JSON_FORCE_OBJECT)
)
);
$context = stream_context_create($aHTTP);
$contents = file_get_contents($sURL, false, $context);
$result=json_decode($contents);
var_dump( $result);
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: [Разработка нового модуля] Tuya Smart
Выбрал регион Latvia и сетевой фильтр сразу же подтянулся.
Если выбран регион Латвия, то мы видим успешную регистрацию
СпойлерПоказать
Если выбран регион Германия, то мы видим проблему с авторизациейobject(stdClass)#11 (4) { ["access_token"]=> string(33) "EUheu1111111111111AAAAAAAAAAAAAAA" ["refresh_token"]=> string(33) "EUheu1111111111111AAAAAAAAAAAAAAA" ["token_type"]=> string(6) "bearer" ["expires_in"]=> int(864000) } object(stdClass)#13 (2) { ["payload"]=> object(stdClass)#12 (2) { ["devices"]=> array(0) { } ["scenes"]=> array(0) { } } ["header"]=> object(stdClass)#14 (2) { ["code"]=> string(7) "SUCCESS" ["payloadVersion"]=> int(1) } }
object(stdClass)#11 (2) { ["responseStatus"]=> string(5) "error" ["errorMsg"]=> string(51) "Get accesstoken failed. Username or password error!" } NULL
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB