如何使用华为云 IoT 平台实现远程控制无人机,资深物联网从业者手把书一步一步教你!

我目前从事的行业是无人机应用开发,每天都是跟物联网打交道,所以看到了华为云推出的关于物联网相关的技术就来了兴趣。在我的研究领域中,物模型已经是一个非常基础、非常常见的模型了。
如果没有物模型,那么最直接的,各种物体结合开发的时候就难以区分和归类,最终就是一团糟,所谓物模型,其实就是将某个物体进行建模,本文我将利用无人机领域的物联网技术阐述一下物模型相关的技术点,并使用一下华为云 IoT 平台,给出使用体验。
物模型
什么是物模型?
正如文章开头所说,物模型就是将某个物体进行建模,是对设备在云端的功能描述,主要包含设备的属性、服务和事件。这个怎么理解呢?
比如我现在研究的无人机领域,一般分为三种物体:
飞机
遥控器
机场
每种物体都有自己的物模型,飞机有自己的设备属性、服务和事件,遥控器也有自己的设备属性、服务和事件。
比如飞机有飞机状态、飞机电池、飞行速度、飞行经纬度、飞行高度等设备属性。
飞机还会有云台旋转、拍照、录像等事件。
每个事件和服务都会通过命令上报的形式进行传递,一般使用的协议就是 MQTT,消息体格式为 JSON。
比如拍照功能,会朝无人机发送相关指令:
当然了,在我们研究的工作中,肯定不止传这些参数,这里我只是提炼了一下。
以上就是理论方面的普及,下面我们直接试用一下华为云的 IoT 平台。
华为云 IoT 平台实战
在开始之前,我们先简单的介绍一下华为云 IoT 平台。
华为云 IoT 平台是基于华为云底座的物联网平台,可以让接入的设备进行上云,将设备进行云化,可以更好的管理以及资源分配。
体验地址为:https://www.huaweicloud.com/product/iothub.html
下面我们正式体验一下华为云 IoT 平台:
创建产品-无人机
1、访问网址https://www.huaweicloud.com/product/iothub.html
,点击【管理控制台】:

进入控制台界面:

2、在控制台界面,点击【快速体验】:

选择第二个,点击【使用虚拟设备体验】:

在此页面,我们看到:

官方是以智慧路灯作为例子,一共有三端:
应用端
云 IoT 端
设备端
其过程大概就是:
应用端朝云 IoT 端下发指令
云 IoT 端朝设备端下发指令
设备端返回信息至云 IoT 端
在该页往下翻,找到【管理控制台】,点击它进入管理控制台页面:

3、在管“理控制台”页面,点击左侧的【产品】,再点击右上角的【创建产品】

4、创建产品,我这边创建的是无人机领域的,所以设备类型我选择了【无人机】:

点击【确定】:

创建产品模型
点击我刚刚创建的产品【无人机】:

我们需要给无人机这个产品进行建模,也就是设置一些属性、动作等等。
官方给的例子是水表,我们是无人机,所以需要自定义,点击【自定义模型】:

填写一下服务的相关信息:

在真实的业务场景种,服务 ID 一般都是 uuid 或者其他自定义的字符串,而且每个产品不可能只有一个服务,这里便于我演示,我就创建一个无人机的基础服务。
点击【确定】后,在服务列表就能看到我们刚刚创建的服务了:

服务创建好了,接下来就是为这个服务创建一系列的属性,比如这里我们创建的是无人机的基础服务,那么无人机的基础服务会有哪些属性呢?在文章开头我们也说了,一般会有飞机状态、飞机电池、飞行速度、飞行经纬度、飞行高度等设备属性,真实业务场景会有 100 多个,我们这边就以飞机电池电量举例吧。

首先选择我们刚刚创建的服务,点击【添加属性】,在新增属性弹框中,我们输入属性名称:uav_battery,代表的是无人机的电池,属性描述中简单说明一下这是无人机电池电量,取值范围我们取 0-100,电量一般都是 0-100.
点击【确定】后,就看到我们创建的属性了:

接下来,我们还要创建一个命令,一个属性必定会对应一个或者多个命令,不然这个属性就没有意义了,比如这里我们创建的电池电量的属性,你不对它操作,那这个属性会变得多余,比如,我们新增一个查看电量的命令。因为无人机在起飞前,我们都需要保证无人机的电量够跑完某趟航线才行,所以查看电池电量这个命令非常重要。
点击【添加命令】:

如图,我们新增了一个”show_power“的命令,用来查看电池电量。
产品模型创建好了,下面就进入到测试阶段了,在测试前,我们需要先新增一下测试的设备。
新增测试设备
点击【在线调试】,然后点击【新增测试设备】:

为了方便演示,这里我们选择虚拟设备:

创建好后,我们就看到了设备列表中新增了我们刚刚创建的设备,点击【调试】进入调试界面:

调试

在调试页面,我们可以清晰看到设备之间的交互图。
还是分为三端:
应用模拟器
IoT 平台
设备模拟器
应用模拟器相当于我们客户使用的界面,这个界面有好多控制按钮,IoT 平台就是华为云的 IoT 平台,设备模拟器就相当于是上云的实体设备,这里相当于就是无人机了。
应用层想要跟设备端进行通信,必须经过中间的 IoT 平台,下面我们就来演示一下用户想要查看无人机的电量的流程:
1、应用模拟器进行【命令下发】:

2、设备模拟器进行【属性上报】:

发送成功后,我们注意到应用模拟器端有数据进行接收了:
此时用户就能拿到无人机的电池电量 10 了。
整体流程大概就是这样。
总结
我自己研究的领域中,物联网平台没有用到云 IoT,但是今天体验华为云 IoT 后,我觉得也是非常不错的,省去了中间层很多麻烦的事情,包括部署、运维等等,希望本文手把书的教程,能够让您对华为云 IoT 有所了解,如果感兴趣的话,可以去实战看看哦。
版权声明: 本文为 InfoQ 作者【wljslmz】的原创文章。
原文链接:【http://xie.infoq.cn/article/8b0bcef68c57c15e0e6384386】。未经作者许可,禁止转载。
评论