手把手学IOT服务端API编程[16、查询设备影子]|MVP讲堂

简介: 本教程旨在介绍服务器端的API编程接口,基于php脚本的sdk,希望对物联网服务器端有编程需求的有所帮助。阿里云MVP手把手教你!有演示视频,千万别错过!

作者:阿里云MVP洵云

10节回顾:手把手学IOT服务端API编程[10、保存设备属性]|MVP讲堂

11节回顾:手把手学IOT服务端API编程[11、查询设备属性列表]

12节回顾:手把手学IOT服务端API编程[12、删除设备属性]

13节回顾:手把手学IOT服务端API编程[13、发布消息到Topic]

14节回顾:手把手学IOT服务端API编程[14、发消息给设备并同步返回响应]

15节回顾:手把手学IOT服务端API编程[15、发布广播消息]



上节介绍从服务端给设备发送广播消息后,实际使用过程中,往往存在网络信号不好,质量不稳定的状况,这时就需要服务端保存一份设备端最后一次状态的信息,用来做后续的相关分析,这份信息又被称为设备影子,服务端的API接口也提供了相应的功能,
这一节就来介绍一下如何使用设备影子这个功能,这个接口需要提供两个参数,一个是产品的key值,一个是设备名称;
接下来我们看一下具体实现;


1、脚本实现:
我们按照接口的要求,在框架页面上,提供产品的key值和设备名称,这两个输入参数框给用户输入,
产品KEY:        <input type="text" name="pkey16">
设备名称:        <input type="text" name="devname16">


而在实际的实现代码中,我们只需要使用get函数提取这个变量就可以了:
$pkey = $_GET["pkey16"];
$devname = $_GET["devname16"];


接着引用查询设备列表的接口:
$request = new Iot\GetDeviceShadowRequest();


通过查看GetDeviceShadowRequest文件,可以知道我们需要调用setProductKey和setDeviceName 两个函数,来从服务端传送查询设备影子的信息;这两个参数的意思分别是配置产品key,配置设备名称.


$request->setProductKey($pkey); 


$request->setDeviceName($devname); 


调用通用的网络查询操作后,将操作的返回结果和影子信息显示在网页上:


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


2、设备端模拟:
默认设备初始状态是不存在设备影子的,由于只有设备有上线记录后,这一节也需要设备的模拟,下载开发包的命令和上节类似,这里只介绍发送设备消息例子的部分:
2.1 修改shadow-example.c文件,改为我们己的设备名称:
vi iotkit-embedded-master/iotkit-embedded-master/sample/device-shadow/shadow-example.c
2.2 修改后,保存退出,重新编译源码;
cd iotkit-embedded-master/iotkit-embedded-master/
make clean
sudo make all
2.3 编译结束后,运行编译后的例子文件:
output/release/bin/shadow-example


        
3、实际测试:
先运行模拟设备,然后打开浏览器,转到我们框架脚本页面,这里输入我们从控制台得到的产品key值和设备名称,运行提交按钮后,可以得到要查询的设备影子信息:
具体向关截图如下:

395_1939185177035471_ccf0473a77dafc6.png

395_1939185177035471_12395290bc65fc0.png


timelapse:
http://www.xunyun17.xyz/ioto/step16-GetDeviceShadowRequest.mp4

目录
相关文章
|
22天前
|
Java API
掌握Java 8 Stream API的艺术:详解流式编程(三)
掌握Java 8 Stream API的艺术:详解流式编程
16 2
|
2月前
|
算法 Linux API
【Linux系统编程】Linux下删除文件的 API方式以及文件删除机制差异
【Linux系统编程】Linux下删除文件的 API方式以及文件删除机制差异
40 0
|
5月前
|
传感器 物联网 网络架构
ENS、IoT设备、X86、ARM
ENS(Enterprise Name Service)是企业名称服务,是一种为物联网设备提供命名和寻址服务的技术。ENS通过为物联网设备分配唯一的名称和地址,使得物联网设备可以被网络中的其他设备和服务所识别和访问。 IoT设备(Internet of Things device)是连接到互联网的物理设备,可以收集和共享数据,用于监测、控制和优化各种业务流程和操作。IoT设备包括各种传感器、执行器、网关和路由器等。
40 2
|
4月前
|
API C++
socket编程之常用api介绍与socket、select、poll、epoll高并发服务器模型代码实现(1)
前言   本文旨在学习socket网络编程这一块的内容,epoll是重中之重,后续文章写reactor模型是建立在epoll之上的。
36 0
|
3月前
|
网络协议 物联网 5G
K3S 系列文章 -5G IoT 网关设备 POD 访问报错 DNS 'i/o timeout' 分析与解决
K3S 系列文章 -5G IoT 网关设备 POD 访问报错 DNS 'i/o timeout' 分析与解决
|
4月前
|
监控 安全 Linux
socket编程之常用api介绍与socket、select、poll、epoll高并发服务器模型代码实现(3)
高并发服务器模型-poll poll介绍   poll跟select类似, 监控多路IO, 但poll不能跨平台。其实poll就是把select三个文件描述符集合变成一个集合了。
38 0
|
9天前
|
存储 SQL Java
Java8 Stream API 详解:流式编程进行数据处理
Java8 Stream API 详解:流式编程进行数据处理
|
22天前
|
存储 Java BI
掌握Java 8 Stream API的艺术:详解流式编程(二)
掌握Java 8 Stream API的艺术:详解流式编程
26 1
|
22天前
|
存储 Java 关系型数据库
掌握Java 8 Stream API的艺术:详解流式编程(一)
掌握Java 8 Stream API的艺术:详解流式编程
49 1
|
2月前
|
Java API
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(三)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
24 0