IoT Platform は、PHP 用の SDK を提供しています。このトピックでは、IoT Platform SDK for PHP をインストールおよび設定する方法について説明します。また、SDK を使用して IoT Platform の API 操作を呼び出す方法のサンプルコードも提供します。
アップグレードされた IoT Platform SDK for PHP を使用すると、コアライブラリに依存する代わりに IoT Platform SDK のみをインストールすることで、API リクエストを行うことができます。アップグレードされた SDK は、パラメータの処理、指定されたフォーマットでのリクエストのアセンブル、および戻り値の処理に使用できます。アップグレードされた SDK と元の SDK の詳細については、SDK 情報センターをご覧ください。
SDK のインストール
PHP 開発環境をインストールします。PHP 5.6 以降をインストールする必要があります。
PHP 公式 Web サイトから PHP インストールパッケージをダウンロードし、PHP をインストールします。
Composer をインストールします。
Composer を使用して IoT Platform SDK for PHP を管理することをお勧めします。この場合、Composer をインストールする必要があります。
Windows マシンの場合、getcomposer.org Web サイトから Composer-Setup.exe プログラムをダウンロードして、Composer をインストールできます。
次の curl コマンドを実行して、Composer をインストールすることもできます。
curl -sS https://getcomposer.org/installer | php説明ネットワークの例外が原因でインストールが失敗した場合は、Alibaba Cloud Composer のフルイメージを使用できます。
Alibaba Cloud SDK for PHP をインストールします。
システムでグローバルアクセス用に Composer がインストールされている場合は、プロジェクトディレクトリで次のコマンドを直接実行して、Alibaba Cloud SDK for PHP を依存関係としてインストールします。Composer をグローバルアクセス用にインストールする方法の詳細については、「Globally」をご参照ください。
composer require alibabacloud/darabonba-openapi重要SDK のインストールに使用される PHP のバージョンは、SDK の実行に使用される PHP の実際のバージョン以下である必要があります。
たとえば、PHP 7.2 を使用して SDK をインストールし、vendor ディレクトリを生成する場合、PHP 7.2 以降で SDK を使用する必要があります。PHP 5.6 で SDK を使用すると、互換性の問題が発生します。
次の依存関係を追加して、IoT Platform SDK for PHP をインストールします。
composer require alibabacloud/iot-20180120アップグレードされた SDK の名前は、alibabacloud/${サービス名}-${API バージョン番号} の形式です。PHP 用 SDK とユーザーガイドの詳細については、alibabacloud-php-sdk/iot- 20180120/ をご覧ください。
SDK の初期化
AccessKey ID、AccessKey シークレット、リージョン ID など、SDK 初期化情報を格納する $config オブジェクトを作成します。
$client インスタンスを作成します。
Iot($iClientProfile)メソッドを呼び出して、SDK 初期化情報をロードします。
たとえば、中国 (上海) リージョンで SDK を使用する場合、次のコードを使用して SDK を初期化できます。本番環境では、IoT Platform がアクティブ化されているリージョンを選択する必要があります。
use AlibabaCloud\SDK\Iot\V20180120\Iot;
use AlibabaCloud\Tea\Config;
$config = new Config([]);
// AccessKey ID。
$config->accessKeyId = getenv('ACCESS_KEY_ID');
// AccessKey シークレット。
$config->accessKeySecret = getenv('ACCESS_KEY_SECRET');
// リージョン ID。
$config->regionId = "cn-shanghai";
$client = new Iot($config);
パラメータ | 説明 |
accessKeyId | Alibaba Cloud アカウントの AccessKey ID。 Alibaba Cloud 管理コンソールの AccessKey ペア ページにアクセスして、AccessKey ペアを作成または表示できます。 |
accessKeySecret | Alibaba Cloud アカウントの AccessKey シークレット。 |
regionId | IoT Platform インスタンスが存在するリージョンの ID。リージョン ID は、サービスアクセス用のエンドポイントで使用されます。エンドポイントは iot.${RegionId}.aliyuncs.com 形式です。 IoT Platform コンソールの左上隅にリージョンが表示されます。 リージョン ID の形式の詳細については、「サポートされているリージョン」をご参照ください。 |
リクエストの開始
SDK は、各 API 操作のクラスをカプセル化します。クラス名は ${API 名}+"Request" 形式です。クラスを使用して API リクエストを開始できます。
手順
SDK を初期化します。詳細については、このトピックの「SDK の初期化」セクションをご参照ください。
$request
${API 操作名}+"Request"クラスの インスタンスを生成して、API リクエストを作成します。$request インスタンスの "set"+${リクエストパラメータ} メソッドを呼び出して、リクエストパラメータを指定します。
$client インスタンスの ${API 操作名}($request) メソッドを呼び出して、レスポンスを取得します。
IoT Platform の API 操作の詳細については、「関数別の操作リスト」をご参照ください。各 API 操作のリクエストパラメータとレスポンスパラメータの詳細については、API リファレンスをご参照ください。
次の例は、Pub 操作を呼び出して Topic にメッセージをパブリッシュする方法を示しています。リクエストパラメータの詳細については、「Pub」をご参照ください。
次のサンプルコードでは、${iotInstanceId} はインスタンスの ID を指定します。IoT Platform コンソールの [概要] ページでインスタンスの ID を表示できます。
インスタンスに ID がある場合は、このパラメータに ID を指定する必要があります。指定しないと、呼び出しは失敗します。
インスタンスに [概要] ページまたは ID が生成されていない場合は、このパラメータを設定する必要はありません。IotInstanceId パラメータに関連するリクエストコードを削除するか、パラメータに空の文字列 (
"") を指定する必要があります。指定しないと、呼び出しは失敗します。
IoT Platform インスタンスの詳細については、「概要」をご参照ください。インスタンスの購入方法の詳細については、「Enterprise Edition インスタンスの購入」をご参照ください。詳細については、「IoT Platform インスタンスに関するよくある質問」をご参照ください。
$request = new PubRequest([
// IoT Platform インスタンスの ID。
"iotInstanceId" => "${iotInstanceId}",
// プロダクトの ProductKey。
"productKey" => "${productKey}",
// 送信するメッセージの内容。"hello world" を Base64 で文字列としてエンコードします。
"messageContent" => "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
// メッセージをパブリッシュするために使用されるカスタム Topic。
"topicFullName" => "/${productKey}/${deviceName}/user/get",
// メッセージ送信モード。IoT Platform SDK は QoS 0 と QoS 1 をサポートしています。
"qos" => 0
]);
// Pub 操作を呼び出します。
$response = $client->pub($request);
print_r($response);サンプルコード
ビジネスシナリオに基づいて、上記のパラメータの値を実際の値に置き換えることができます。
<?php
namespace AlibabaCloud\SDK\Sample;
use AlibabaCloud\SDK\Iot\V20180120\Iot;
use AlibabaCloud\Tea\Tea;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Iot\V20180120\Models\PubRequest;
class Sample {
/**
* AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。
*/
public static function createClient() {
$config = new Config([]);
// AccessKey ID。
$config->accessKeyId = getenv('ACCESS_KEY_ID');
// AccessKey シークレット。
$config->accessKeySecret = getenv('ACCESS_KEY_SECRET');
// リージョン ID。
$config->regionId = "cn-shanghai";
return new Iot($config);
}
/**
* @param string[] $args
* @return void
*/
public static function main($args){
try {
$client = self::createClient("${accessKey}", "${accessKeySecret}");
$request = new PubRequest([
// IoT Platform インスタンスの ID。
"iotInstanceId" => "${iotInstanceId}",
// プロダクトの ProductKey。
"productKey" => "${productKey}",
// 送信するメッセージの内容。"hello world" を Base64 で文字列としてエンコードします。
"messageContent" => "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
// メッセージをパブリッシュするために使用されるカスタム Topic。
"topicFullName" => "/${productKey}/${deviceName}/user/get",
// メッセージ送信モード。IoT Platform SDK は QoS 0 と QoS 1 をサポートしています。
"qos" => 0
]);
$response = $client->pub($request);
Console::log(Utils::toJSONString(Tea::merge($response)));
}
catch (Exception $error) {
if (!($error instanceof TeaError)) {
$error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
}
Console::log($error->message);
}
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
Sample::main(array_slice($argv, 1));付録: サンプルコード
IoT Platform SDK サンプルセンターで、API 操作のサンプルコードを表示またはダウンロードできます。Java、Python、PHP、Node.js、Go、C++、.NET 用の SDK のサンプルコードが提供されています。
Alibaba Cloud OpenAPI Explorer は、API 操作のオンラインデバッグツールを提供します。[ API デバッグ ] ページで、API 操作を検索し、API 操作を呼び出し、さまざまな SDK の API 操作のサンプルコードを生成できます。ページの右側にある [ サンプルコード ] タブで、SDK のサンプルコードを表示できます。[ デバッグ結果 ] タブで、実際の URL リクエストと JSON 形式のレスポンスを表示できます。API デバッグサンプルコードデバッグ結果