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

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

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

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
相关文章
|
2月前
|
Web App开发 网络协议 安全
基于Web攻击的方式发现并攻击物联网设备介绍
基于Web攻击的方式发现并攻击物联网设备介绍
45 4
|
2月前
|
安全 物联网 物联网安全
智能物联网安全:物联网设备的防护策略与最佳实践
【10月更文挑战第26天】随着物联网(IoT)技术的快速发展,智能设备已广泛应用于智能家居、工业控制和智慧城市等领域。然而,设备数量的激增也带来了严重的安全问题,如黑客攻击、数据泄露和恶意控制,对个人隐私、企业运营和国家安全构成威胁。因此,加强物联网设备的安全防护至关重要。
114 7
|
3月前
|
物联网 5G 智能硬件
物联网卡:物联网卡不支持语音通话,是如何实现设备间的数据传输和通信的?
物联网卡(IoT SIM卡)通常被设计用于支持物联网(IoT)设备之间的数据传输,而不直接支持语音通话功能。这是因为物联网设备主要关注的是数据的收集、传输和处理,而不是语音通信。为了实现设备间的数据传输和通信,物联网卡及其背后的技术采用了多种方法,主要包括但不限于以下几种方式:
物联网卡:物联网卡不支持语音通话,是如何实现设备间的数据传输和通信的?
|
3月前
|
传感器 机器学习/深度学习 存储
物联网设备精细化管理系统解决方案
随着科技的进步,物联网技术作为新一代信息技术的核心部分,正在深刻改变各行业的生产和管理方式。其在资产管理、智慧城市、能源管理和智慧医疗等多个领域的广泛应用,不仅提高了运营效率,还促进了资源优化配置和精细化管理。本文详细介绍了物联网的基础概念及其在设备精细化管理系统中的具体应用方案,展示了如何通过智能感知层建设、数据处理分析平台以及精细化管理应用,实现设备的实时监控、预测性维护和能耗管理等功能,从而帮助企业提升竞争力,降低成本,并推动社会向更智能化、绿色化的方向发展。
107 2
物联网设备精细化管理系统解决方案
|
3月前
|
物联网
物联网卡不能使用在什么设备上
“物联网卡不能使用在什么设备上”这一操作或规定,通常基于物联网卡的特性、使用条款以及设备兼容性等因素。以下是对这一问题的详细分析和操作建议:
|
3月前
|
存储 监控 物联网
医疗物联网设备精细化管理系统解决方案
华汇数据智慧医院物联网管理系统解决方案是一种集物联网、云计算、大数据和人工智能等先进技术于一体的综合性解决方案,旨在提升医院的运营效率、医疗质量和患者满意度。
92 3
|
3月前
|
安全 物联网
物联网卡不能更换设备使用吗
物联网卡(IoT SIM卡)是否允许更换设备使用,这主要取决于物联网服务提供商的具体政策和服务条款。通常,物联网卡是为特定设备或应用场景设计的,因此一些服务提供商会限制卡的更换使用,主要是出于安全、管理、网络优化和避免滥用等考虑
|
4月前
|
安全 物联网 定位技术
2G网络和基站的撤销对物联网设备的影响
2G网络和基站的撤销对物联网设备的影响是多方面的,以下是对这一影响的详细分析:
2G网络和基站的撤销对物联网设备的影响
|
2月前
|
安全 物联网 物联网安全
智能物联网安全:物联网设备的防护策略与最佳实践
【10月更文挑战第27天】随着物联网技术的快速发展,智能设备已广泛应用于生活和工业领域。然而,物联网设备的安全问题日益凸显,主要威胁包括中间人攻击、DDoS攻击和恶意软件植入。本文探讨了物联网设备的安全防护策略和最佳实践,包括设备认证和加密、定期更新、网络隔离以及安全标准的制定与实施,旨在确保设备安全和数据保护。
83 0
|
3月前
|
物联网 数据安全/隐私保护
物联网:物联网卡不能使用在什么设备上
物联网卡是专为物联网设备设计的SIM卡,旨在连接非传统的、嵌入式或远程的设备到互联网。由于其特定的用途和设计,物联网卡并不适用于所有类型的设备,尤其是在以下几个方面,物联网卡通常不能或不建议使用在以下设备上:

热门文章

最新文章

相关产品

  • 物联网平台