开发者社区 问答 正文

手把手学IOT服务端API编程[9、批量获取设备状态][step by step ALI-IOT-SERVER-API]


上节介绍按设备名查信息后,只能查询一个设备的信息,实际使用过程中,如果用户打算一次查询多个设备的状态,服务端的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















展开
收起
洵云 2018-05-19 20:24:11 3382 分享 版权
阿里云 AI 助理回答

您介绍的是如何使用阿里云物联网平台的API接口BatchGetDeviceState来批量查询设备状态的过程。这个过程涉及前端用户界面的构建、后端脚本处理以及最终的测试验证,下面我将根据您的描述进行总结和补充说明。

用户界面设计

  • 输入参数: 在网页或应用界面上,为用户提供两个输入框:一个用于输入产品的Key值(ProductKey),另一个用于输入设备名称列表。设备名称列表要求用户以逗号分隔每个设备名称。

后端脚本实现

  1. 获取输入参数:

    • 使用$_GET超全局变量从HTTP请求中提取用户提交的产品Key(pkey)和设备名称列表(devnames)。
  2. 处理设备名称列表:

    • 通过PHP的explode函数将设备名称字符串分割成数组,以便于传递给API请求。
  3. 构造请求对象:

    • 实例化Iot\BatchGetDeviceStateRequest对象,这是调用阿里云物联网平台API所需的请求类。
  4. 设置请求参数:

    • 调用setProductKey方法设置产品Key。
    • 调用setDeviceNames方法设置设备名称数组。
  5. 发送请求并处理响应:

    • 发送请求到阿里云物联网平台,并接收响应。
    • 解析响应,首先展示通用信息如RequestIdSuccess
    • 使用循环遍历DeviceStatusList中的每个DeviceStatus,输出设备的状态、ID、名称及最近在线时间等详细信息。

测试与验证

  • 实际测试:
    • 输入有效的产品Key和设备名称列表,点击提交后,页面应显示与阿里云物联网控制台一致的设备状态信息。
    • 提供了一个视频附件(timelapse: www.xunyun17.xyz/ioto/step9-BatchGetDeviceStateRequest.mp4)作为操作演示,帮助用户直观理解整个操作流程。

注意事项

  • 确保在实际部署中对用户输入进行验证和清理,防止注入攻击或其他安全风险。
  • 阿里云物联网平台API调用可能需要身份验证(如AccessKey ID和AccessKey Secret),确保这些敏感信息在传输过程中加密且不在前端暴露。
  • 检查API调用频率限制,避免因频繁调用而触发平台的访问限制。

通过上述步骤,您可以有效地集成阿里云物联网平台的批量查询设备状态功能到您的应用中,提升管理大量设备的效率。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: