Re: [Разработка нового модуля] Tuya Smart
Добавлено: Сб сен 28, 2019 3:15 am
Вот так я все прописал
SPOILERSPOILER_SHOW
Код: Выделить всё
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 писал(а): Сб сен 28, 2019 3:20 am Могу предполагать, что само устройство не 100% поддерживается Tuya, но если это было бы так, то устройство не управлялось бы через 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 писал(а): Сб сен 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);
Не прокатило с каким результатом? 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);Код: Выделить всё
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);Если выбран регион Германия, то мы видим проблему с авторизацией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