SQL に似た文を実行してデバイスをクエリします。この操作は、SQL に似た文で指定した条件を満たすデバイスを返します。
説明
- Enterprise Edition インスタンス上のデバイスは、中国 (上海) リージョンと 日本 (東京) リージョンでのみクエリできます。
- QueryDeviceBySQL 操作は、操作を呼び出すたびに最大 10,000 台のデバイスを返すことができます。詳細については、このトピックの「
LIMIT 句の構文」セクションをご参照ください。
QPS 制限
この API 操作は、アカウントごとに 1 秒あたり最大 10 回呼び出すことができます。
デバッグ
リクエストパラメーター
| パラメーター | タイプ | 必須 | 例 | 説明 |
| Action | String | はい | QueryDeviceBySQL | 実行する操作。値を QueryDeviceBySQL に設定します。 |
| SQL | String | はい | SELECT * FROM device where product_key = "a1*********" limit 100, 20 | デバイスをクエリするために実行する SQL に似た文。具体的な要件と例については、次のセクションをご参照ください。 |
| IotInstanceId | String | いいえ | iot-cn-0pp1n8t**** | インスタンスの ID。IoT Platform コンソールの [インスタンスの概要] ページでインスタンスの [ID] を表示できます。 重要
詳細については、「概要」をご参照ください。 |
QueryDeviceBySQL 操作を呼び出してデバイスをクエリする場合、SQL に似た文を指定する必要があります。 SQL に似た文には、SELECT 句と WHERE 句が含まれている必要があります。文には、ORDER BY 句と LIMIT 句を含めることもできます。各文の長さは 400 文字を超えることはできません。
例:
SELECT * FROM device WHERE product_key = "a1*********" order by active_time limit 0,10SQL 句 | 説明 |
SELECT 句 | SELECT [フィールド]/[count(*)] FROM deviceフィールドパラメーターは、取得するフィールドを指定します。次の表でフィールドについて説明します。すべてのフィールドを取得する場合は、アスタリスク (*) を指定します。 指定した条件に一致する行数を取得する場合は、count(*) を指定します。 |
WHERE 句 | WHERE [条件 1] AND [条件 2]最大 5 つの条件を指定できます。ネストはサポートされていません。次の表で、フィールドと演算子について説明します。 AND または OR 論理演算子を使用して条件を接続できます。最大 5 つの論理演算子を使用できます。 |
ORDER BY 句 (オプション) | ORDER BY 句は、フィールドをソートするために使用されます。ソートできるフィールドは、gmt_create、gmt_modified、および active_time です。 この句はオプションです。この句を指定しない場合、結果はランダムにソートされます。 |
LIMIT 句 (オプション) | LIMIT 句は、各ページで返す最大行数と返す合計行数を指定します。詳細については、このトピックの「LIMIT 句の構文」セクションをご参照ください。 LIMIT 句を指定しない場合、デフォルトで limit 20 が指定されます。 |
LIMIT 句の構文
構文 | 説明 |
limit k | k の値は 50 以下である必要があり、各ページで返す行数が 50 を超えることができないことを指定します。例: SELECT * FROM device WHERE product_key = "a1*****" limit 10 |
limit n,k | n と k の値の合計は 10,000 以下で、k の値は 50 以下である必要があります。これは、返す合計行数が 10,000 を超えることができず、各ページで返す最大行数が 50 を超えることができないことを指定します。例: SELECT * FROM device WHERE product_key = "a1*****" limit 40,10 |
フィールド | タイプ | 説明 |
product_key | text | デバイスが属するプロダクトの ProductKey。 |
iot_id | text | デバイスの ID。デフォルトでは、iot_id が返されます。 |
name | text | デバイスの名前。 |
active_time | date | デバイスがアクティブ化された時刻。時刻は yyyy-MM-dd HH:mm:ss.SSS 形式で、ミリ秒単位まで正確です。 |
nickname | text | デバイスのエイリアス。 |
gmt_create | date | デバイスが作成された時刻。時刻は yyyy-MM-dd HH:mm:ss.SSS 形式で、ミリ秒単位まで正確です。 |
gmt_modified | date | デバイス情報が最後に更新された時刻。時刻は yyyy-MM-dd HH:mm:ss.SSS 形式で、ミリ秒単位まで正確です。 |
status | text | デバイスのステータス。有効な値: ONLINE:デバイスはオンラインです。 OFFLINE:デバイスはオフラインです。 UNACTIVE:デバイスはアクティブ化されていません。 DISABLE:デバイスは無効になっています。 |
group.group_id | text | デバイスグループの ID。 |
tag.tag_name | text | デバイスのタグキー。 |
tag.tag_value | text | デバイスのタグ値。 |
ota_module.name | text | 無線 (OTA) モジュールの名前。 このフィールドは、ota_module.version フィールドと組み合わせて使用して、デバイスの現在の OTA バージョン番号に対応する OTA モジュールを指定することをお勧めします。 ota_module.version フィールドを設定しない場合、OTA モジュール名でデバイスをクエリすることはできません。 |
ota_module.version | text | OTA モジュールのファームウェアバージョン。 |
演算子 | サポートされているデータ型 |
= | 数値、日付、およびテキスト |
!= | 数値、日付、およびテキスト |
> | 数値と日付 |
< | 数値と日付 |
LIKE | text |
説明:
- = および !=:これらの演算子を使用する場合、クエリするフィールドの値は null にすることができます。
LIKE:この演算子を使用する場合、プレフィックス一致のみがサポートされます。プレフィックスは 4 文字以上で、バックスラッシュ (\)、スラッシュ (/)、アンパサンド (&)、プラス記号 (+)、ハイフン (-)、感嘆符 (!)、括弧 ()、コロン (:)、チルダ (~)、中括弧 {}、アスタリスク (*)、疑問符 (?) などの特殊文字を含めることはできません。プレフィックスはパーセント記号 (
%) で終わる必要があります。例:
SELECT * FROM device where product_key = "a1*********" and name LIKE "test%" limit 10。
上記の操作固有のリクエストパラメーターに加えて、この操作を呼び出すときは共通リクエストパラメーターを設定する必要があります。共通リクエストパラメーターの詳細については、「共通パラメーター」をご参照ください。
レスポンスパラメーター
| パラメーター | タイプ | 例 | 説明 |
| Code | String | iot.system.SystemException | 呼び出しが失敗した場合に返されるエラーコード。詳細については、「エラーコード」をご参照ください。 |
| Data | SimpleDeviceSearchInfo の配列 | 呼び出しが成功した場合に返されるデバイス情報。 | |
| ActiveTime | String | 2020-04-04 16:38:18.607 | デバイスがアクティブ化された時刻。時刻は GMT 形式です。 |
| DeviceName | String | light | デバイスの名前。 |
| GmtCreate | String | 2020-04-04 16:38:17.000 | デバイスが作成された時刻。時刻は GMT 形式です。 |
| GmtModified | String | 2020-04-04 16:38:19.000 | デバイス情報が最後に更新された時刻。時刻は GMT 形式です。 |
| Groups | SimpleDeviceGroupInfo の配列 | デバイスが属するグループに関する情報。 | |
| GroupId | String | a1d21d2fas | グループの ID。 |
| IotId | String | Q7uOhVRdZRRlDnTLv****00100 | デバイスの ID。 ID は、IoT Platform がデバイスに発行する一意の識別子です。 |
| Nickname | String | Smart light | デバイスのエイリアス。 |
| OTAModules | OTAModuleInfo の配列 | 各デバイスモジュールのファームウェアに関する情報。 | |
| FirmwareVersion | String | a1-dads2-dad2 | 各 OTA モジュールのバージョン番号。 |
| ModuleName | String | SomeSampleModule | OTA モジュールの名前。 |
| ProductKey | String | a1BwAGV**** | デバイスが属するプロダクトの [ProductKey]。 |
| Status | String | ONLINE | デバイスのステータス。有効な値:
|
| Tags | TagInfo の配列 | デバイスタグに関する情報。 | |
| TagName | String | Color | タグキー。 |
| TagValue | String | Red | タグ値。 |
| ErrorMessage | String | システム例外が発生しました。 | 呼び出しが失敗した場合に返されるエラーメッセージ。 |
| RequestId | String | E55E50B7-40EE-4B6B-8BBE-D3ED55CCF565 | リクエストの ID。 |
| TotalCount | Long | 100 | SQL に似た文で |
| Success | Boolean | true | 呼び出しが成功したかどうかを示します。有効な値:
|
例
リクエストの例
https://iot.cn-shanghai.aliyuncs.com/?Action=QueryDeviceBySQL
&IotInstanceId=iot-cn-0pp1n8t****
&SQL=SELECT * FROM device where product_key = "a1*********" limit 100, 20
&<共通リクエストパラメーター>成功レスポンスの例
XML 形式
<QueryDeviceBySQLResponse>
<RequestId>501CFABA-2C48-468D-B88C-3AA8E3B3A8F3</RequestId>
<Data>
<Status>OFFLINE</Status>
<IotId>ii1*******</IotId>
<GmtCreate>2020-04-04 16:38:17.000</GmtCreate>
<ActiveTime>2020-04-04 16:38:18.607</ActiveTime>
<GmtModified>2020-04-04 16:38:19.000</GmtModified>
<ProductKey>a1*********</ProductKey>
<DeviceName>testDevcieae7f3a</DeviceName>
</Data>
<Data>
<Status>UNACTIVE</Status>
<IotId>5wt*******</IotId>
<GmtCreate>2020-04-04 16:37:32.000</GmtCreate>
<Groups>
<GroupId>Ix4*******</GroupId>
</Groups>
<Groups>
<GroupId>Xrn*******</GroupId>
</Groups>
<Groups>
<GroupId>J9l*******</GroupId>
</Groups>
<OTAModules>
<ModuleName>SomeSampleModule</ModuleName>
<FirmwareVersion>a1-dads2-dad2</FirmwareVersion>
</OTAModules>
<OTAModules>
<ModuleName>SampleModule</ModuleName>
<FirmwareVersion>a1-dads2-dad1</FirmwareVersion>
</OTAModules>
<GmtModified>2020-04-04 16:37:32.000</GmtModified>
<ProductKey>a1*********</ProductKey>
<DeviceName>testDevcie676a22</DeviceName>
</Data>
<Success>true</Success>
</QueryDeviceBySQLResponse>JSON 形式
{
"RequestId": "501CFABA-2C48-468D-B88C-3AA8E3B3A8F3",
"Data": [
{
"Status": "OFFLINE",
"IotId": "ii1*******",
"GmtCreate": "2020-04-04 16:38:17.000",
"ActiveTime": "2020-04-04 16:38:18.607",
"GmtModified": "2020-04-04 16:38:19.000",
"ProductKey": "a1*********",
"DeviceName": "testDevcieae7f3a"
},
{
"Status": "UNACTIVE",
"IotId": "5wt*******",
"GmtCreate": "2020-04-04 16:37:32.000",
"Groups": [
{
"GroupId": "Ix4*******"
},
{
"GroupId": "Xrn*******"
},
{
"GroupId": "J9l*******"
}
],
"OTAModules": [
{
"ModuleName": "SomeSampleModule",
"FirmwareVersion": "a1-dads2-dad2"
},
{
"ModuleName": "SampleModule",
"FirmwareVersion": "a1-dads2-dad1"
}
],
"GmtModified": "2020-04-04 16:37:32.000",
"ProductKey": "a1*********",
"DeviceName": "testDevcie676a22"
}
],
"Success": true
}エラーコード
エラーコードのリストについては、「サービスエラーコード」をご参照ください。