全部產品
Search
文件中心

IoT Platform:PHP SDK使用說明

更新時間:Sep 10, 2024

物聯網平台提供PHP語言的雲端SDK供開發人員使用。本文介紹雲端PHP SDK的安裝和配置,及使用PHP SDK調用雲端API的樣本。

物聯網平台雲端PHP語言的升級版SDK中包含了介面參數處理,請求格式組裝及傳回值處理等OpenAPI請求的主要邏輯,脫離了對SDK Core的依賴,開發人員依賴物聯網平台雲端SDK包開發即可。升級版SDK和原版SDK的詳細資料,請參見SDK資訊中心

安裝SDK

  1. 安裝PHP開發環境。您需安裝PHP 5.6或更高版本。

    訪問PHP官網下載PHP安裝包,並完成安裝。

  2. 安裝Composer。

    通過Composer管理IoT PHP SDK(推薦),因此需在系統中安裝Composer。

  3. 安裝SDK核心庫OpenAPI。

    如果已在系統上全域安裝Composer(具體內容,請參見全域安裝Composer),請直接在專案目錄中運行以下命令安裝Alibaba Cloud SDK for PHP作為依賴項:

    composer require alibabacloud/darabonba-openapi
    重要

    執行以上命令安裝SDK的PHP運行版本要小於或等於實際運行時的PHP版本。

    例如,在PHP 7.2環境下安裝SDK後產生vendor目錄,只能在PHP 7.2或以上版本使用,如果拷貝到PHP 5.6環境下使用,會出現依賴版本不相容問題。

  4. 添加以下依賴,安裝IoT PHP SDK。

    composer require alibabacloud/iot-20180120

    升級版SDK的命名方式為alibabacloud/${產品名}-${OpenAPI版本號碼}。PHP SDK詳情和使用指導,請參見alibabacloud-php-sdk/iot-20180120/

初始化SDK

  1. 建立對象$config,存放SDK初始化資訊(AccessKey IDAccessKey Secret、地區ID等)。

  2. 建立Iot對象執行個體$client,通過Iot($iClientProfile)方法,載入SDK資訊,完成SDK用戶端初始化。

以華東2(上海)地區及其服務接入地址為例,初始代碼如下。實際情境設定中,需使用您的物聯網平台服務所在地區。

use AlibabaCloud\SDK\Iot\V20180120\Iot;
use AlibabaCloud\Tea\Config;

$config = new Config([]);
// 您的AccessKey ID。
$config->accessKeyId = getenv('ACCESS_KEY_ID');
// 您的AccessKey Secret。
$config->accessKeySecret = getenv('ACCESS_KEY_SECRET');
// 您的可用性區域ID。
$config->regionId = "cn-shanghai";
$client = new Iot($config);

參數

說明

accessKeyId

您阿里雲帳號的AccessKey ID

您可在阿里雲官網控制台AccessKey管理中建立或查看您的AccessKey。

accessKeySecret

您阿里雲帳號的AccessKey Secret

regionId

您的物聯網平台服務的地區ID,用於拼接服務接入地址,格式為:iot.${RegionId}.aliyuncs.com。

您可在物聯網平台控制台左上方,查看當前服務所在地區。

地區ID的表達方法,請參見地區和可用性區域

發起調用

物聯網平台雲端SDK為每個API封裝了一個類,命名為${API名稱}+"Request",用於API的調用請求。

調用步驟

  1. 已完成SDK用戶端初始化。具體內容,請參見初始化SDK

  2. 建立對應API的調用請求,產生${API名稱}+"Request"類對象執行個體$request

  3. 通過對象執行個體$request,使用"set"+${請求參數的名稱}方法,設定API所需的請求參數值。

  4. 通過初始化SDK的對象執行個體$client,使用${API名稱}($request)方法,返回API調用結果。

物聯網平台雲端API,請參見API列表。有關request中請求參數說明,及response中返回參數說明,請參見對應API文檔。

本文以調用Pub介面發布訊息到Topic為例。請求參數資訊,請參見Pub

重要

以下代碼中iotInstanceId為執行個體ID。執行個體的詳細說明,請參見執行個體概述

購買執行個體方法,請參見購買企業版執行個體

$request = new PubRequest([
  // 物聯網平台執行個體ID。
  "iotInstanceId" => "${iotInstanceId}",
  // 產品ProductKey。
  "productKey" => "${productKey}",
  // 要發送的訊息主體,hello world Base64 String。
  "messageContent" => "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
  // 要接收訊息的裝置的自訂Topic。
  "topicFullName" => "/${productKey}/${deviceName}/user/get",
  // 指定訊息的發送方式,支援QoS0和QoS1。
  "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 {

    /**
     * 使用AK&SK初始化Client
     */
    public static function createClient() {
    $config = new Config([]);
    // 您的AccessKey ID。
    $config->accessKeyId = getenv('ACCESS_KEY_ID');
    // 您的AccessKey Secret。
    $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([
                // 物聯網平台執行個體ID。
                "iotInstanceId" => "${iotInstanceId}",
                // 產品ProductKey。
                "productKey" => "${productKey}",
                // 要發送的訊息主體,hello world Base64 String。
                "messageContent" => "eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=",
                // 要接收訊息的裝置的自訂Topic。
                "topicFullName" => "/${productKey}/${deviceName}/user/get",
                // 指定訊息的發送方式,支援QoS0和QoS1。
                "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));

附錄:範例程式碼

前往物聯網平台雲端SDK樣本中心查看或下載API調用的範例程式碼。範例程式碼中包含Java、Python、PHP、Node.js、Go、C++和.NET等版本SDK樣本。

阿里雲OpenAPI開發人員門戶提供API線上調試工具。在API調試頁面,您可以快速檢索和體驗調用API。系統會根據您輸入的參數同步產生各語言SDK的程式碼範例。各語言SDK程式碼範例顯示在頁面右側SDK樣本頁簽下供您參考。在調用結果頁簽下,可查看API調用的真實請求URL和JSON格式的返回結果。