阿里云物联网批量获取设备的在线离线状态

一、背景

      我们在做物联网的时候,除了控制设备进行一些操作之外。设备的在线离线显示也是很重要的。如果设备离线的话,此时用户操作设备,设备并不会做出反应。对用户而言,操作体验当然是非常不好的。

      这边我们可以通过阿里给出的接口,批量获取设备的状态。然后显示在APP上,此时我们可以不让用户点击离线的设备等。用户体验比较好。

二、批量获取设备的状态

1、首先,我们是要使用阿里的物联网的。并且需要引入阿里给出的phpSDK。具体的,大家可以看我之前写的关于阿里物联网的文章。

阿里物联网套件在laravel中的使用

2、批量获取设备状态的接口:BatchGetDeviceStateRequest()

之所以写这篇文章,也是因为阿里在文档中,并没有直接给出这个函数。我自己也是找了很久才找到。所以这边记录一下。这里假定大家已经把阿里的SDK成功引入到项目中:

 $accessKeyId    = "你的账号";
      $accessSecret   = "你的密码";
      //实例化对象
      $iClientProfile = \DefaultProfile::getProfile("cn-shanghai", $accessKeyId, $accessSecret);
      $client         = new \DefaultAcsClient($iClientProfile);
      //调用阿里批量获取设备状态的接口
      $request        = new Iot\BatchGetDeviceStateRequest();
      $request->setProductKey('你的productkey');
      //这里的arr指的是设备的唯一编号。大家自己在把设备放到物联网上的时候,都需要定义独一无二的标识
      $arr = array(
        0=>'code',
        1=>'code'
      );
      $request->setDeviceNames($arr);
      $response = $client->getAcsResponse($request);
      //这里就能获取到返回结果
      $deviceStatusList = $response->DeviceStatusList;
     $deviceStatus = $deviceStatusList->DeviceStatus;
     $status = [];
     foreach($deviceStatus as $v)
     {
       $status[] = $v->Status;
     }
      print_r($status);

结果打印:
这里写图片描述

解释:
1、大部分解释,代码的注释里面都有
2、注意,因为是批量查询,所以我们要把查询的设备编号组成数组,当做参数传过去
3、返回的是对象数组,所以要单独拿出来状态的话,需要通过foreach循环拿出来
4、设备一共有三种状态。OFFLINE代表离线。ONLINE代表在线。还有一个状态是未激活状态,代表设备还没有接入阿里物联网。

OK,这样,我们就拿到了设备的在线离线操作,接下来可以根据自己的逻辑进行操作。

end

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值