使用物联网平台远程管理运维设备

简介: 本实验提供在阿里云物联网平台使用试用企业版实例,将设备接入物联网平台并收发消息。

使用物联网平台远程管理运维设备

1. 选择实验资源

本实验支持开通免费试用、个人账户资源两种实验资源方式。

在实验开始前,请您选择其中一种实验资源,单击确认开启实验

  • 如果您选择的是开通免费试用,下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。

说明:试用云产品开通在您的个人账号下,并占用您的试用权益如试用超出免费试用额度,可能会产生一定费用。

阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心


2. 创建实验资源

本步骤指导您如何创建开通开通创建物联网实例。

如果您已创建开通创建物联网实例,请您选择个人账户资源,并跳过本小节,直接进行实验操作即可。

本步骤仅作为参考使用,您可以根据需求自行选择配置。

如果您选择的是开通免费试用,参考以下步骤开通创建物联网实例。

  1. 在本实验页面下方卡片会展示本实验支持的试用规格,选择试用规格,单击立即试用。

  1. 物联网平台试用开通页面,根据页面引导进行开通物联网实例。本实验提供的试用实例为企业实例标准版部署在华东2(上海)地域。

说明:试用实例为企业实例标准版,各类型实例中功能区别请参考文档

如果您选择的是个人账户资源,参考以下步骤开通创建物联网实例。

  1. 创建物联网实例
  1. 前往物联网平台开通当前服务,在实例概览页面,单击创建实例

说明:开通后平台会提供一个免费的公共实例进行体验,您可根据实际需求选择创建实例类型。实例计费规则请参考文档


3. 准备环境和资源

  1. 准备Node.js语言开发环境。教程中设备端开发是在Windows 10(64位)下,使用阿里云提供的Node.js语言SDK进行开发;教程中服务端下发指令,使用物联网平台的云端Node.js语言SDK,调用接口Pub。
  2. 准备Java开发环境。教程中服务端接收设备消息,使用Java语言的AMQP SDK。

使用Java开发环境如下:

  1. 操作系统:Windows 10 64位
  2. JDK版本:JDK8
  3. 集成开发环境:IntelliJ IDEA社区版
  4. 登陆物联网平台控制台
  5. 在控制台左上方,选择物联网平台所在地域华东2(上海)

说明:本实验示例地域为华东2(上海),实际地域请根据实际实例所在地域进行选择。


4. 创建产品和设备

使用物联网平台接入设备前,您需在物联网平台控制台创建产品和对应设备,获取设备证书(ProductKey、DeviceName和DeviceSecret)。

  1. 实例概览页面,单击试用版实例ID或备注名称。

  1. 在左侧导航栏,选择设备管理>产品,单击创建产品

  1. 新建产品页面,配置参数后,单击确认

产品名称:家庭温控器,所属品类为自定义品类,其他参数使用默认值,如下图所示。

  1. 在创建产品页面,单击前往定义物模型

  1. 为产品定义物模型,将实际产品抽象成由属性、服务、事件所组成的数据模型,便于物联网平台管理和数据交互。

功能定义页签,单击编辑草稿,按照以下步骤,为家庭温控器产品定义温度temperature)和湿度humidity)属性。

默认模块下,单击添加自定义功能,如下图所示,分别配置温度湿度

  • 温度temperature)配置信息:

  • 湿度humidity)配置信息:

  1. 单击功能定义的编辑草稿页面左下方的发布上线。控制台页面会弹出发布物模型上线对话框。

  1. 选中确认已查看当前版本与线上版本的比对结果前复选框。单击确定,完成物模型的发布。

  1. 产品详情页面,单击前往管理

  1. 设备列表页签,单击添加设备,在弹出对话框中,输入设备名称(例如Device1),单击确认

  1. 创建设备成功后,在弹出的添加完成对话框,单击一键复制设备证书获取设备证书。

  1. 您也可单击前往查看,在设备详情页面。

单击DeviceSecret右侧查看,获取设备证书

  1. 设备证书包含ProductKey、DeviceName和DeviceSecret,是设备与物联网平台进行通信的重要身份认证。

说明:后续设备接入,需设置此信息,请复制后妥善保管。

参数

说明

ProductKey

设备所属产品的ProductKey,即物联网平台为产品颁发的全局唯一标识符。

DeviceName

设备在产品内的唯一标识符。DeviceName与设备所属产品的ProductKey组合,作为设备标识,用来与物联网平台进行连接认证和通信。

DeviceSecret

物联网平台为设备颁发的设备密钥,用于认证加密。需与DeviceName成对使用。


5. 设备接入和上报数据

获取设备证书(ProductKey、DeviceName和DeviceSecret)后,通过MQTT协议将设备接⼊企业版实例。

  1. 在Windows系统或Linux系统下载并安装Node.js。教程以Windows 10(64位)系统为例,下载安装包node-v14.15.1-x64.msi。
  2. 安装成功后,打开CMD窗口,通过以下命令查看node版本。
node --version

显示版本号,表示安装成功。

  1. 在本地计算机创建一个JavaScript文件(例如iot_device.js),用来存放Node.js示例代码。

Node.js示例代码如下所示:

const mqtt = require('aliyun-iot-mqtt');
// 1. 设备身份信息
var options = {
    productKey: "g18l***",
    deviceName: "Device1",
    deviceSecret: "b2e6e4f102458d84***",
    host: "iot-cn-***.mqtt.iothub.aliyuncs.com"
};
// 2. 建立MQTT连接
const client = mqtt.getAliyunIotMqttClient(options);
//订阅云端指令Topic
client.subscribe(`/${options.productKey}/${options.deviceName}/user/get`)
client.subscribe(`/sys/${options.productKey}/${options.deviceName}/thing/event/property/post_reply`)
client.on('message', function(topic, message) {
    console.log("topic " + topic)
    console.log("message " + message)
})
setInterval(function() {
    // 3.定时上报温湿度数据
    client.publish(`/sys/${options.productKey}/${options.deviceName}/thing/event/property/post`, getPostData(), { qos: 0 });
}, 5 * 1000);
function getPostData() {
    const payloadJson = {
        id: Date.now(),
        version: "1.0",
        params: {
            temperature: Math.floor((Math.random() * 20) + 10),
            humidity: Math.floor((Math.random() * 20) + 10)
        },
        method: "thing.event.property.post"
    }
    console.log("payloadJson " + JSON.stringify(payloadJson))
    return JSON.stringify(payloadJson);
}

注意:以下参数仅为示例值,需要替换为实际环境中真实值。

参数

示例

说明

productKey

g18l***

您添加设备后,保存的设备证书信息。您可在控制台中设备Device1的设备详情页面查看。

deviceName

Device1

deviceSecret

b2e6e4f102458d84***

host

iot-cn-***.mqtt.iothub.aliyuncs.com

MQTT设备接入域名。

您可在控制台中实例的实例详情页面,单击查看开发配置,查看MQTT的信息。

  1. 打开CMD窗口,使用cd命令找到iot_device.js文件所在路径,在该路径下使用npm命令下载阿里云IoT的MQTT库。下载后的MQTT库文件如下图所示。
npm install aliyun-iot-mqtt -S

  1. MQTT库下载完成后,在CMD窗口输入如下命令,运行iot_device.js代码,启动设备。
node iot_device.js

返回如下信息,表示设备接入成功,并上报数据。

payloadJson {"id":161848***,"version":"1.0","params":{"temperature":16,"humidity":21},"method":"thing.event.property.post"}
topic /sys/g18l***/Device1/thing/event/property/post_reply
message {"code":200,"data":{},"id":"16184848***","message":"success","method":"thing.event.property.post","version":"1.0"}


6. 服务端订阅设备消息

设备连接物联网平台后,数据直接上报至物联网平台,平台上的数据可以通过AMQP通道流转至您的服务器。本文为您介绍通过配置AMQP服务端订阅,实现企业服务器通过接入AMQP客户端,接收路灯设备数据的完整流程。

  1. 为消息消费端配置消费组身份,用于企业服务器通过消费组获取转发的消息。
  1. 在左侧导航栏,选择消息转发>服务端订阅,单击消费组列表页签,点击创建消费组

  1. 在创建消费组对话框中,设置消费组名称为温控器数据接收,单击确认

  1. 创建消费组成功后,查看消费组ID。您需复制并保存消费组ID值,用于AMQP客户端接入。

  1. 为家庭温控器产品配置服务端订阅,用于您的服务器直接订阅产品下多种类型的消息。
  1. 在左侧导航栏,选择消息转发>服务端订阅,单击创建订阅,设置参数后单击确认。

参数

说明

产品

选择家庭温控器。

订阅类型

选择AMQP。

消费组

选择上一步创建的温控器数据接收。

推送消息类型

选择设备上报消息和物模型历史数据上报。更多消息类型,请参见设置订阅。

  1. 您也可以通过云产品流转规则,将数据转发至AMQP订阅的消费组,使用AMQP客户端接收消息。

例如,将流转规则温控器数据流转中已处理的物模型数据上报内容,转发到AMQP订阅的消费组温控器数据接收中。

  1. 在左侧导航栏,选择消息转发 > 云产品流转

注意:若当前页面显示新版功能,先单击右上角返回旧版,进入旧版功能页面,再单击创建规则。

  1. 云产品流转页面,单击创建规则

  1. 在创建云产品流转规则对话框,输入规则名称为温控器数据流转,数据格式为JSON,单击确认。

  1. 规则创建成功后,进入数据流转规则页面,参照以下操作,编辑处理消息数据的SQL,单击编写SQL
  2. 在弹出对话框中,输入SELECT的字段,并选择Topic的数据类型为物模型数据上报、产品为家庭温控器、设备为Device1、物模型模块为默认模块、Topic为thing/event/property/post,单击确认

本示例SELECT的字段如下:

items.temperature.value as temperature, items.humidity.value as humidity,deviceName() as deviceName,timestamp() as time

SQL编写更多信息,请参见SQL表达式函数列表

  1. 单击转发数据一栏对应的添加操作。在添加操作对话框中,选择操作为发布到AMQP服务端订阅消费组,消费组为温控器数据接收,单击确认

  1. 下载Demo代码包,并解压。
  2. 打开IntelliJ IDEA,导入Demo包中的示例工程amqp-demo

示例使用Java开发语言,推荐使用Apache Qpid JMS客户端,在pom.xml文件中,已添加相关Maven依赖。

  1. 右击工程的pom.xml文件中,单击Maven>Reload project图标,完成Qpid JMS客户端等依赖包下载。

  1. src/main/java/com.aliyun.iotx.demo目录下AmqpClient.java文件中,参照下表,修改JMS客户端接入物联网平台代码中的参数值。

注意:

  • 本Demo代码中,添加了结束程序的代码(Thread.sleep(60 * 1000);),即程序启动成功,运行一分钟后会结束。实际场景中,您可根据业务需求自行设置程序启动逻辑。
  • 以下参数仅为示例值,需要替换为实际环境中真实值。

参数

示例

说明

accessKey

LTAI4GFGQvKuqHJhFa******

登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。

accessSecret

iMS8ZhCDdfJbCMeA005sieKe******

consumerGroupId

VWhGZ2QnP7kxWpeSSjt******

已创建的温控器数据接收消费组ID。

iotInstanceId

iotInstanceId

实例ID。您可在控制台的实例概览页面查看。

clientId

12345

客户端ID,可自定义,长度不可超过64个字符。建议设置为您的AMQP客户端所在服务器UUID、MAC地址、IP等唯一标识,方便您识别区分不同的客户端。AMQP客户端接入成功后,在控制台的温控器数据接收的消费组详情页面,显示该参数。

connectionCount

4

启动AMQP客户端的连接数,最大不超过64个。用于实时消息推送的扩容。

消费组详情页面会以${clientId}+"-"+数字形式,显示连接的客户端。其中数字最小值为0。

host

iot-***.amqp.iothub.aliyuncs.com

AMQP接入域名。

您可在控制台中实例的实例详情页面,单击查看开发配置,单击AMQP页签查看。

  1. 运行AmqpClient.java示例代码后,返回类似如下日志信息,表示AMQP客户端已接入物联网平台并成功接收消息。

参数

说明

topic

设备属性上报的Topic。

messageId

消息的ID。

content

消息的内容。


7. 云端下发消息给设备

您通过云端应用调用Pub接口,向温控器发送指令。

说明:教程通过自定义Topic下发指令。您也可以通过物模型相关Topic,发送标准化的物模型数据,更多信息,请参见物模型。

  1. 在本地计算机创建一个JavaScript文件(例如PubApi.js),用来存放Pub API调⽤的参考代码。

Pub API调⽤的参考代码如下所示:

const Core = require('@alicloud/pop-core');
var client = new Core({
  accessKeyId: 'LTAI4GFGQvKuqHJhFa******',
  accessKeySecret: 'iMS8ZhCDdfJbCMeA005sieKe******',
  endpoint: 'https://iot.cn-shanghai.aliyuncs.com',
  apiVersion: '2018-01-20'
});
var params = {
  "RegionId": "cn-shanghai",
  "TopicFullName": "/g34q2******/Device1/user/get",
  "MessageContent": "d2FzaGluZ01vZGU6IDIsIHdhc2hpbmdUaW1lOiAzMA==",
  "ProductKey": "g34q2******",
  "IotInstanceId": "iot-cn-6ja1y******"
}
var requestOption = {
  method: 'POST'
};
client.request('Pub', params, requestOption).then((result) => {
  console.log(JSON.stringify(result));
}, (ex) => {
  console.log(ex);
})

本示例需修改以下参数的值。更多信息,请参见云端开发指南

注意:

  • MessageContent是要发送的消息主体,通过将消息原文转换成二进制数据,并进行Base64编码生成。示例为消息“washingMode: 2, washingTime: 30”编码后的值。
  • 以下参数仅为示例值,需要替换为实际环境中真实值。

参数

示例

说明

accessKeyID

LTAI4GFGQvKuqHJhFa******

您的阿里云账号的AccessKey ID。

登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。

accessKeySecret

iMS8ZhCDdfJbCMeA005sieKe******

endpoint

https://iot.cn-shanghai.aliyuncs.com

调用云服务的接入地址。物联网平台的接入地址格式:iot.${RegionId}.aliyuncs.com

RegionId

RegionId

您的物联网平台服务的地域代码。教程中试用版实例部署在华东2(上海)

TopicFullName

/g34q2******/Device1/user/get

要发布消息的自定义Topic。

本示例使用物联网平台中的自定义Topic:/${productKey}/${deviceName}/user/get。

其中${productKey}为产品家庭温控器ProductKey值,${deviceName}为设备Device1

ProductKey

g34q2******

家庭温控器ProductKey值。

IotInstanceId

iot-cn-6ja1y******

实例ID。

您可在控制台的实例概览页面查看。

  1. 打开CMD窗口,使用cd命令找到PubApi.js文件所在路径,在该路径下执行以下命令,安装@alicloud/pop-core模块。
npm install @alicloud/pop-core -S

安装成功后,下载的库文件如下:

node_modules文件夹中包含以下文件:

  1. 继续在该路径下执行以下命令,安装co模块。
npm install co

安装成功后,node_modules文件夹中文件如下:

  1. 模块安装完成后,在CMD窗口输入如下命令,运行PubApi.js代码,从云端下发指令到设备端。
node PubApi.js

执行结果如图所示。关于返回参数的更多信息,请参见Pub


8. 完成

设备接入和上报数据

  1. iot_device.js代码运行成功后,设备状态显示为在线,在设备详情页面,单击物模型数据页签,可看到最新上报的温度值和湿度值。

  1. 在左侧导航栏,单击监控运维>日志服务,进入云端运行日志页签,选择家庭温控器产品,查看设备上报数据的⽇志。

更多信息,请参见云端运行日志

服务端订阅设备消息

  1. AMQP客户端程序运行成功后,您可在服务端订阅中,查看消费组状态的基本信息。

具体操作,请参见管理消费组

  1. 所有配置完成后,在企业实例下的监控运维>日志服务中,从产品列表选择家庭温控器,可在云端运行日志页签下,查看完整的日志信息。

云端下发消息给设备

  1. PubApi.js代码运行成功后,在左侧导航栏,单击监控运维>日志服务,进入云端运行日志页签,查看设备API调用的⽇志。

  1. 您也可以在设备端查看下发的MessageContent内容,如图所示。


9. 释放资源

在完成实验之后,若您想保留实验相关的云产品资源,请随时关注账户扣费情况。若您不想保留实验相关的云产品资源,释放云产品资源即可。

实验链接:https://developer.aliyun.com/adc/scenario/c1ddd626fc6b47988e4050fcdf2292a4

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
30天前
|
消息中间件 网络协议 物联网
MQTT常见问题之物联网设备端申请动态注册时MQTT服务不可用如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
1月前
|
监控 安全 数据挖掘
物联网平台中如何快速检测设备异常
物联网平台中如何快速检测设备异常
30 0
|
1月前
|
存储 监控 安全
Java基于物联网技术的智慧工地云管理平台源码 依托丰富的设备接口标准库,快速接入工地现场各类型设备
围绕施工安全、质量管理主线,通过物联感知设备全周期、全覆盖实时监测,将管理动作前置,实现从事后被动补救到事前主动预防的转变。例如塔吊运行监测,超重预警,升降机、高支模等机械设备危险监控等,通过安全关键指标设定,全面掌握现场安全情况,防患于未然。
148 5
|
1月前
|
XML JSON 网络协议
【开源视频联动物联网平台】设备接入
【开源视频联动物联网平台】设备接入
27 2
|
1月前
|
存储 运维 网络协议
【开源物联网平台】物联网设备上云提供开箱即用接入SDK
IOTDeviceSDK是物联网平台提供的设备端软件开发工具包,可简化开发过程,实现设备快速接入各大物联网平台。设备厂商获取SDK后,根据需要选择相应功能进行移植,即可快速集成IOTDeviceSDK,实现设备的接入。
121 0
|
1月前
|
安全 搜索推荐 物联网
物联网设备的OTA基本原理
物联网设备的OTA基本原理
39 1
|
3月前
|
供应链 NoSQL 物联网
链接全球数十亿台设备!物联网行业如何应对数据管理、实时分析和供应链优化的挑战?
物联网已成为面向未来的解决方案的关键组成部分,且其所蕴含的巨大经济价值潜力有待挖掘
1440 0
链接全球数十亿台设备!物联网行业如何应对数据管理、实时分析和供应链优化的挑战?
|
3月前
|
NoSQL 安全 物联网
检索时间减少83%!部署MongoDB后,通用电气医疗集团狠狠提升了物联网设备的利用效率!
作为医疗技术领域的全球领导者,通用电气医疗集团选择了 MongoDB由其管理旗下物联网设备,从部署(生命周期初期,即 BoL)到报废(生命周期结束,即 EoL)的整个生命周期
1828 3
检索时间减少83%!部署MongoDB后,通用电气医疗集团狠狠提升了物联网设备的利用效率!
|
4月前
|
数据采集 监控 物联网
物联网时代的电脑行为监控软件:代码实现与设备连接
随着物联网技术的飞速发展,电脑行为监控软件在日常生活和商业领域中变得愈发重要。这种软件通过对电脑用户行为的监测,提供了有益的数据,有助于改善用户体验、增强安全性,甚至在一些场景中实现自动化操作。本文将探讨物联网时代的电脑行为监控软件的代码实现与设备连接,并重点介绍监控到的数据如何自动提交到网站。
269 0
|
5月前
|
安全 物联网 网络安全
物联网设备的安全隐患
物联网设备的安全隐患

相关产品

  • 物联网平台