[Разработка нового модуля] Tuya Smart

Модератор: immortal

Аватара пользователя
Divan
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение Divan » Сб сен 28, 2019 3:15 am

Вот так я все прописал
СпойлерПоказать
Снимок2.jpg
Снимок2.jpg (70.59 КБ) 1646 просмотров
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение Divan » Сб сен 28, 2019 3:20 am

Могу предполагать, что само устройство не 100% поддерживается Tuya, но если это было бы так, то устройство не управлялось бы через Tuya Smart. Может быть в этом дело? И какой у вас регион выбран? Давайте я попробую выбрать такой же регион как и у вас, посмотрим что выйдет.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
fandaymon
Сообщения: 1347
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 37 раз
Поблагодарили: 505 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение fandaymon » Сб сен 28, 2019 3:34 am

И кнопку Обновить нажал?

Странно. А если попробовать сделать сценарий и скопировать туда такой код?

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

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);
А потом запустить - что выдаст?
fandaymon
Сообщения: 1347
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 37 раз
Поблагодарили: 505 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение fandaymon » Сб сен 28, 2019 3:37 am

Divan писал(а):
Сб сен 28, 2019 3:20 am
Могу предполагать, что само устройство не 100% поддерживается Tuya, но если это было бы так, то устройство не управлялось бы через Tuya Smart. Может быть в этом дело? И какой у вас регион выбран? Давайте я попробую выбрать такой же регион как и у вас, посмотрим что выйдет.
У меня выбрана Латвия. Но вряд ли в этом дело
Аватара пользователя
Divan
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение Divan » Сб сен 28, 2019 3:52 am

Буду пробовать Латвию :D. Создал сценарии и при запуске было сообщение 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
fandaymon
Сообщения: 1347
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 37 раз
Поблагодарили: 505 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение fandaymon » Сб сен 28, 2019 3:57 am

Divan писал(а):
Сб сен 28, 2019 3:52 am
Буду пробовать Латвию :D. Создал сценарии и при запуске было сообщение 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
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение Divan » Сб сен 28, 2019 4:18 am

Скопировал ваш код как есть, не прокатило. Буду пробовать Латвию - днем проверю. А что если добавить устройство вручную? Можно сделать так? Создать дополнительную кнопку, добавить устройство и указать:
IP и MAC устройства
ID устройства

Этот ID нужно брать?
СпойлерПоказать
20190928_041621.jpg
20190928_041621.jpg (148.24 КБ) 1642 просмотра
Приложил логи
СпойлерПоказать
Screenshot_20190928-041000_Samsung Internet.jpg
Screenshot_20190928-041000_Samsung Internet.jpg (304.09 КБ) 1642 просмотра
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
fandaymon
Сообщения: 1347
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 37 раз
Поблагодарили: 505 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение fandaymon » Сб сен 28, 2019 4:36 am

Divan писал(а):
Сб сен 28, 2019 4:18 am
Скопировал ваш код как есть, не прокатило.
Не прокатило с каким результатом? Null?
А если после строчки
$token=json_decode($tuya_module->getToken($tuya_username,$tuya_passwd));
написать var_dump($token);
По идее должен вывести или токены или то что параметры не правильные...
Аватара пользователя
Divan
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение Divan » Сб сен 28, 2019 10:42 am

Когда запускаю сценарии с этим кодом, то появляется сообщение 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);
Когда запускаю сценарии с дополнительным кодом 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));
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
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

Re: [Разработка нового модуля] Tuya Smart

Сообщение Divan » Сб сен 28, 2019 11:08 am

Выбрал регион Latvia и сетевой фильтр сразу же подтянулся.
СпойлерПоказать
Снимок3.jpg
Снимок3.jpg (59.13 КБ) 1618 просмотров
Если выбран регион Латвия, то мы видим успешную регистрацию
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
Ответить