天天看點

手把手學IOT服務端API程式設計[9、批量擷取裝置狀态]|MVP講堂

作者:阿裡雲MVP洵雲 上節回顧: 手把手學IOT服務端API程式設計[8、按裝置名查資訊]|MVP講堂

上節介紹按裝置名查資訊後,隻能查詢一個裝置的資訊,實際使用過程中,如果使用者打算一次查詢多個裝置的狀态,服務端的API接口也提供了相應的功能,

這一節就來介紹一下這個接口的使用,這個接口需要提供兩個參數,一個是産品的key值,一個是裝置的名稱清單;

接下來我們看一下具體實作;

1、腳本實作:

我們按照接口的要求,在架構頁面上,提供産品的key值和裝置名稱清單這兩個個輸入參數框給使用者輸入,其中名稱清單,我們要求使用者通過逗号分隔符的形式,

輸入一行裝置名稱清單,通過逗号來分割各個裝置名稱;

産品KEY:        <input type="text"

name="pkey9">

裝置名稱:       

<input type="text" name="devnames9">

而在實際的實作代碼中,我們隻需要使用get函數提取這個變量就可以了,其中我們調用了explode函數來講裝置名稱清單從字元串分割成名稱清單的數組:

$pkey = $_GET["pkey9"];

$devnames = $_GET["devnames9"];

接着引用查詢裝置清單的接口:

$request = new

Iot\BatchGetDeviceStateRequest();

通過檢視BatchGetDeviceStateRequest.php檔案,可以知道我們需要調用setProductKey和setDeviceNames兩個函數,來給服務端傳送産品key值和裝置名稱;

$request->setProductKey($pkey);

$devnames_array=explode(',',$devnames);

$request->setDeviceNames($devnames_array);

調用通用的網絡查詢操作後,最後對傳回資訊進行分析;首先顯示常用的requestid和success這兩個通用的資訊:

echo 'RequestId :'.$response->RequestId.'<br>';

echo 'Success :'.$response->Success.'<hr>';

然後通過一個for循環依次顯示每個裝置的狀态,名稱等相關資訊:

echo '裝置狀态 :'.$response->DeviceStatusList->DeviceStatus[$x]->Status.'<br>';

echo '裝置Id :'.$response->DeviceStatusList->DeviceStatus[$x]->DeviceId.'<br>';

echo '裝置名稱 :'.$response->DeviceStatusList->DeviceStatus[$x]->DeviceName.'<br>';

echo '裝置最近線上時間 :'.$response->DeviceStatusList->DeviceStatus[$x]->LastOnlineTime.'<hr>';

2、實際測試:

打開浏覽器,轉到我們架構腳本頁面,這裡輸入我們從控制台得到的産品key值和裝置名稱清單,運作送出按鈕後,可以得到我們要查詢裝置清單的資訊,

和控制台上的資訊是完全一緻的;

具體向關截圖如下:

timelapse:

www.xunyun17.xyz/ioto/step9-BatchGetDeviceStateRequest.mp4

繼續閱讀