基于ActorCloud构建IoT应用程序

概述

多数IoT应用程序由三部分组成:IoT终端设备、查看和管理IoT终端设备的应用程序、以及连接、数据收集和分析的平台:ActorCloud作为物联网设备管理平台,可将终端设备和应用程序之间建立连接:

基于ActorCloud构建IoT应用程序_第1张图片

以下以车辆GPS定位器为例,构建一个IoT Connect 应用程序的流程,包含以下三个部分:

  • 车辆GPS模拟器(Python脚本仿真器)
  • 应用程序(Postman)
  • ActorCloud设备管理平台

以上组成部分使用与 MQTT 协议进行实时的发布/订阅消息传递,将测试以下场景:

  • 模拟的车辆频繁地发布遥测数据,APP应用程序通过API获取来自ActorCloud的数据;
  • 模拟车辆从应用程序侧订阅一个主题,APP应用程序命令对车辆发布控制指令(比如开启超速报警功能)。

准备工作

  • 注册免费试用ActorCloud账户,账户创建完成后,在ActorClound创建“车辆GPS”的产品,具体查看产品创建文档。
  • Python编码模拟车辆发布数据
  • Postman软件工具(用于模拟应用程序请求API)

注册设备

添加能使用 MQTT协议且具备连接该服务实例的设备,对于设备客户端,ActorCloud会分配主机名、用户名和密码,用于连接到服务实例,在设备管理->设备列表->设备详情->编码信息中,可查看详情。如下图:

基于ActorCloud构建IoT应用程序_第2张图片

更多设备注册详情,请参阅: 设备注册

设备连接

对于真实的设备连接,需确保固件是使用MQTT模块构建,在设备连接时,需将ActorCloud注册设备时分配的设备编号和访问令牌给IoT设备。现基于Python语言模拟设备连接,用Python语言模拟设备连接需要的参数:

服务器名称:mqtt.actorcloud.io
服务器端口:1883
客户端标识符:客户端标识符既为设备编号“61502”
设备用户名和密钥:*******/********

如图将参数指定给模拟设备:


基于ActorCloud构建IoT应用程序_第3张图片

执行此脚本,该设备连接到ActorCloud平台,从ActorCloud可查看该设备的连接状态,在设备管理->设备列表中可见该设备状态为在线:


基于ActorCloud构建IoT应用程序_第4张图片

模拟车辆发布数据

用Python语言编码模拟车辆发布遥测数据(ActorCloud提供测试中心),将MQTT服务器地址、设备编号、连接用户名、设备密钥:

host_name = "mqtt.actorcloud.io"
host_port = 1883
client_id="61502"
username = "******"
password = "******"

设置到仿真模拟器里,编码python脚本,发送数据:


基于ActorCloud构建IoT应用程序_第5张图片

不同的事件类型可发布到不同的主题,对于此设备,将信息发布到主题device_event,每3秒上报一次数据:


基于ActorCloud构建IoT应用程序_第6张图片

返回到ActorCloud平台的设备事件,可以看到终端设备发布的数据,如下图:
基于ActorCloud构建IoT应用程序_第7张图片

ActorCloud平台生成API的密钥

模拟车辆终端将数据发布到ActorCloud。设备上报的数据,在被应用程序使用之前,需确保应用程序可访问ActorCloud,以下为应用程序生成 API 密钥:

  • 登录的ActorCloud平台,为产品创建角色为“超用应用”的应用,点击完成后。
  • ActorCloud会为该应用生成API 密钥和身份验证令牌:


    基于ActorCloud构建IoT应用程序_第8张图片

应用程序调用ActorCloud平台所有API,都需要使用应用 ID 与应用密钥,更多细节,请参阅应用管理。
以下是使用Python语言基于Basic Auth 认证调用ActorCloud 的API编码示例:

基于ActorCloud构建IoT应用程序_第9张图片

执行该脚本,可查看到调用API返回为Json格式的数据,如图:
基于ActorCloud构建IoT应用程序_第10张图片

APP应用程序中使用来自ActorCloud数据

通过API获取模拟车辆发布的数据,以下是简单的 GET 示例,调用该API,需要基于ActorCloud平台生成的API密钥和密码进行Basic Auth认证,该示例允许我们的应用程序发送 GET 请求。在此API 中,返回了我们在前面步骤中模拟车辆发布的数据。


基于ActorCloud构建IoT应用程序_第11张图片

APP应用程序获取这些数据后,可解析Payload的数据,对其分析,如果上报数据值增幅太大,可猜测到的事件是车辆处于加速状态,应用程序可对模拟车辆设备发布指令(比如安全提示信息的指令)。

对车辆发布指令(ActorCloud下发、APP下发)

APP通过API对车辆下发指令

Postman模拟应用程序对车辆发布指令,车辆模拟器订阅用于接收应用程序或者平台下发的指令的主题,需要以下准备:

  • 模拟车辆从应用程序侧订阅主题,主题和APP应用程序确定好,这里模拟车辆订阅主题为:‘livestream/278eac2510d04c0eb473df4478def376’
  • 用APP应用程序对设备发送地标信息的指令


    基于ActorCloud构建IoT应用程序_第12张图片

模拟车辆侧,收到APP下发指令数据:


基于ActorCloud构建IoT应用程序_第13张图片

在真实场景中,设备收到下发数据,设备可执行对应的操作,并进行对应的响应。

ActorCloud对车辆下发指令

对于平台下发的指令,在设备管理->设备列表->设备详情->设备控制->添加指令中,ActorCloud对于登录设备会代理订阅‘devices/设备id/inbox'的主题,用户只需要编码Paylaod的json串:


基于ActorCloud构建IoT应用程序_第14张图片

车辆模拟设备,收到ActorCloud下发的指令数据:


总结

如本文演示的场景,ActorCloud不仅可从连网设备接收数据,还可以通过平台或者API形式将数据或者指令发布到设备,设备可以对下发数据执行计算,显示提醒或执行其他操作,还可将设备上报的数据通过API形式给APP。用户可根据自己业务使用ActorCloud,更多关于设备管理平台,详情了解:https://www.actorcloud.io/


更多信息请访问我们的官网 emqx.io,或关注我们的开源项目 github.com/emqx/emqx ,详细文档请访问 官方文档。

你可能感兴趣的:(基于ActorCloud构建IoT应用程序)