IoT Platform は、Python 用の SDK を提供しています。このトピックでは、IoT Platform SDK for Python をインストールおよび構成する方法について説明します。また、SDK を使用して IoT Platform の API 操作を呼び出す方法のサンプルコードも提供します。
IoT Platform SDK for Python のインストール
Python 開発環境をインストールします。
Python 公式 Web サイトから Python インストールパッケージをダウンロードして、Python をインストールします。SDK for Python には、Python 3.6 以降が必要です。
Python パッケージを管理するために pip をインストールします。pip をインストール済みの場合は、この手順をスキップします。
pip 公式 Web サイトから pip インストールパッケージをダウンロードして、pip をインストールします。
IoT Platform SDK for Python をインストールします。
管理者として次のコマンドを実行して、IoT Platform SDK for Python をインストールします。SDK の使用方法の詳細については、「alibabacloud-python-sdk」をご参照ください。
pip3 install alibabacloud_tea_openapi # IoT Platform SDK for Python の最新バージョンをインストールします。 pip3 install alibabacloud_iot20180120 # IoT Platform SDK for Python の特定のバージョンをインストールします。この例では、IoT Platform SDK for Python バージョン 3.0.9 がインストールされています。 pip3 install alibabacloud_iot20180120==3.0.9IoT Platform コンソールにログを表示するために、alibabacloud-tea-console パッケージをインストールします。
管理者として次のコマンドを実行します。
pip3 install alibabacloud-tea-consoleIoT Platform SDK for Python に関連するファイルを Python ファイルにインポートします。
from Tea.core import TeaCore from alibabacloud_iot20180120.client import Client as IotClient from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_iot20180120 import models as iot_models from alibabacloud_tea_console.client import Client as ConsoleClient from alibabacloud_tea_util.client import Client as UtilClient ...
IoT Platform SDK for Python の初期化
config オブジェクトを作成して、アクセスキー ID、アクセスキー シークレット、リージョン ID などの SDK 初期化情報を格納します。
クライアント インスタンスを作成し、
IotClient(config)メソッドを呼び出して、SDK 情報を config オブジェクトからロードします。その後、SDK が初期化されます。
たとえば、中国 (上海) リージョンで SDK を使用する場合は、次のコードを使用して SDK を初期化できます。本番環境では、IoT Platform がアクティブ化されているリージョンを選択する必要があります。
config = open_api_models.Config()
# アクセスキー ID。
config.access_key_id = os.environ.get('ALICLOUD_ACCESS_KEY_ID')
# アクセスキーシークレット。
config.access_key_secret = os.environ.get('ALICLOUD_ACCESS_KEY_SECRET')
# リージョン ID。
config.region_id = 'cn-shanghai'
client = IotClient(config)パラメーター | 説明 |
region_id | IoT Platform インスタンスが存在するリージョンの ID。リージョン ID は、サービスアクセス用のエンドポイントで使用されます。エンドポイントは iot.${RegionId}.aliyuncs.com 形式です。 IoT Platform コンソールの左上隅にリージョンが表示されます。 リージョン ID の形式の詳細については、「サポートされているリージョン」をご参照ください。 |
リクエストの開始
SDK は、API 操作ごとにクラスをカプセル化します。クラス名は ${API名}+"Request" 形式です。このクラスを使用して、API リクエストを開始できます。
手順
SDK を初期化します。詳細については、「SDK の初期化」をご参照ください。
リクエスト インスタンスを生成することで API リクエストを作成します。インスタンスのクラス名は
${API 名}+"Request"フォーマットです。"set"+${リクエスト パラメーター}メソッドを リクエスト インスタンスで呼び出して、リクエスト パラメーターを指定します。${アンダースコアで接続された単語を含む API 名}(リクエスト)client インスタンスの${単語がアンダースコアで接続された API 名}(request)メソッドを呼び出して、レスポンスを取得します。名前が . で終わるメソッドは、非同期メソッドを示します例:
invoke_things_service(request)およびinvoke_things_service_async(request)。
IoT Platform の API 操作の詳細については、「関数別の操作リスト」をご参照ください。各 API 操作のリクエストパラメーターとレスポンスパラメーターの詳細については、API リファレンスをご参照ください。
次の例は、Pub 操作を呼び出して、トピックにメッセージをパブリッシュする方法を示しています。リクエストパラメーターの詳細については、「Pub」をご参照ください。
次のサンプルコードでは、${iotInstanceId} はインスタンスの ID を指定します。IoT Platform コンソールの [概要] ページでインスタンスの ID を表示できます。
インスタンスに ID がある場合は、このパラメーターに ID を指定する必要があります。指定しないと、呼び出しは失敗します。
インスタンスに [概要] ページまたは ID が生成されていない場合は、このパラメーターを設定する必要はありません。IotInstanceId パラメーターに関連するリクエストコードを削除するか、パラメーターに空の文字列 (
"") を指定する必要があります。指定しないと、呼び出しは失敗します。
IoT Platform インスタンスの詳細については、「概要」をご参照ください。インスタンスの購入方法の詳細については、「Enterprise Edition インスタンスの購入」をご参照ください。詳細については、「IoT Platform インスタンスに関するよくある質問」をご参照ください。
request = iot_models.PubRequest(
# IoT Platform インスタンスの ID。
iot_instance_id='${iotInstanceId}',
# プロダクトの ProductKey。
product_key='${productKey}',
# 送信するメッセージ本文。"hello world" を Base64 で文字列としてエンコードします。
message_content='aGVsbG8gd29ybGQ=',
# デバイスがメッセージを受信するために使用するカスタムトピックの名前。
topic_full_name='/${productKey}/${deviceName}/user/get',
# メッセージのサービス品質 (QoS) レベル。QoS 0 および QoS 1 メッセージがサポートされています。
qos=0
)
response = client.pub(request)
print('response : ' + response)完全なサンプルコード
ビジネスシナリオに基づいて、上記のパラメーターの値を実際の値に置き換えることができます。
# -*- coding: utf-8 -*-
import sys
from typing import List
from Tea.core import TeaCore
from alibabacloud_iot20180120.client import Client as IotClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_iot20180120 import models as iot_models
from alibabacloud_tea_console.client import Client as ConsoleClient
from alibabacloud_tea_util.client import Client as UtilClient
access_key_id = os.environ.get('ACCESS_KEY_ID')
access_key_secret = os.environ.get('ACCESS_KEY_SECRET')
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> IotClient:
"""
アクセスキー ID とアクセスキーシークレットを使用してクライアントを初期化します。
"""
# アクセスキー ID とアクセスキーシークレットを使用してクライアントを初期化します。
# @param access_key_id:
# @param access_key_secret:
# @return: Client
# @throws Exception
config = open_api_models.Config()
# アクセスキー ID。
config.access_key_id = os.environ.get('ALICLOUD_ACCESS_KEY_ID')
# アクセスキーシークレット。
config.access_key_secret = os.environ.get('ALICLOUD_ACCESS_KEY_SECRET')
# リージョン ID。
config.region_id = 'cn-shanghai'
return Iot20180120Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
"""
同期呼び出し
"""
try:
client = Sample.create_client('${accessKey}', '${accessKeySecret}')
request = iot_models.PubRequest(
# IoT Platform インスタンスの ID。
iot_instance_id='${iotInstanceId}',
# プロダクトの ProductKey。
product_key='${productKey}',
# 送信するメッセージ本文。"hello world" を Base64 で文字列としてエンコードします。
message_content='eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=',
# メッセージをパブリッシュするために使用するカスタムトピック。
topic_full_name='/${productKey}/${deviceName}/user/get',
# メッセージの QoS レベル。QoS 0 および QoS 1 メッセージがサポートされています。
qos=0
)
response = client.pub(request)
ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(response)))
except Exception as error:
ConsoleClient.log(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
"""
非同期呼び出し
"""
try:
client = Sample.create_client('${accessKey}', '${accessKeySecret}')
request = iot_models.PubRequest(
# IoT Platform インスタンスの ID。
iot_instance_id='${iotInstanceId}',
# プロダクトの ProductKey。
product_key='${productKey}',
# 送信するメッセージ本文。"hello world" を Base64 で文字列としてエンコードします。
message_content='eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=',
# メッセージをパブリッシュするために使用するカスタムトピック。
topic_full_name='/${productKey}/${deviceName}/user/get',
# メッセージの QoS レベル。QoS 0 および QoS 1 メッセージがサポートされています。
qos=0
)
response = await client.pub_async(request)
ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(response)))
except Exception as error:
ConsoleClient.log(error.message)
if __name__ == '__main__':
Sample.main(sys.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 形式のレスポンスを表示できます。