一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

人工智能52

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

在这篇你将会接触到:从物联网工程师从硬件层-通信层到应用层全流程;开发华为云最基本的一些产品介绍和布局,使用将通过虚拟设备与华为云学习设备接入与使用;随后你将会通过一个STM32-ESP8266-MQTT-华为云的实例演示MQTT通讯、不同硬件设备上数据格式的处理转化以及一些最基础的通信知识;最后通过官方提供的IAM账号,挑战实时处理工业的数据流,建立数据通道,掌握好基本的算子的概念并学会运用它处理数据。

文章目录

华为云创建和IOT区块部分

因为华为云中的IOT和各个区块混杂在一起,所以很不容易找到这个IOT,所以在开始之前先来简单地介绍一下华为云的基本的操作页面。

当你登录并注册时,你会进入华为云的首页,每当你感到头晕时,就会返回到这个主页面。

[En]

When you log in and register, you will go to Huawei Cloud's home page and return to this main page whenever you get dizzy.

官网链接
https://www.huaweicloud.com
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

现在你可以看下上面的一行栏目,比较重要的是三个东西:产品、开发者和控制台。开发者点进去是有大量的教程和认证课程等,有时间可以学习一下。第二个是控制台,IOT这块用的较少,在后面的服务器搭建这篇博客中我会详细每步都截图来讲明白。

产品是比较重要的,他在栏目的上方

产品这里你可以找到华为云的所有服务,正式因为这里的服务太多了,所以非常容易绕晕,下图即为产品页面,一共20个服务,这里我们只讲IOT的服务。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

这里就是我们要用的IOT服务模块,我们直接从这里开始,智能硬件是华为自家的设备我相信一般很少工业上买到,一般都是西门子等一些工业品牌。

所以我们的重点是物联网云服务,把工业数据接入到华为云并做出数据分析与数据模型建立。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

点设备接入IOTDA进入如下页面一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
然后点击进入管理控制台,正式启动物联网云平台建设,这里是物联网工程师工作的控制台。

[En]

Then click to enter the management console to officially start the construction of the Internet of things cloud platform, here is the console where the Internet of things engineers work.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 虚拟设备-设备接入演示

首先,让我简单地谈谈设备访问的整个过程。这是设备访问的整个过程。我们需要做的是:

[En]

First of all, let me briefly talk about the whole process of device access. This is the whole process of device access. What we need to do:

1、先定义一个产品(叫什么名字,用什么通信协议、数据格式是什么等等,虽然理论上选择范围很多,但是工业上用的就那几套)
2、定义一个设备(就是你的端侧设备,这里主要是设定要密钥这些的链接验证方式、设备ID这些)
3、数据规则(我们云平台用什么数据格式发,设备用什么格式,是小数还是整数都要规定好)
4、这些数据存储在那里,既然我们用了华为云,肯定物联网的云优势就在这里,就是存储数据和数据处理这两方面。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
你可以在总览这里查看刚才说的每一个部分。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

1.创建产品

点红色的那个创建产品,其他随便填,只是一个名称,但是数据格式如果使用我们的虚拟设备的话可以选择JSON格式
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

点击创建即可
然后你可以点一下这个产品的查看,这里有很多我们要用的信息,数据格式那里是我一开始做错了,是JSON的。这个页面别急着关掉,我们要在这里开始定义物模型,点开下面的红色的创建服务,开始干活。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 2.自定义物模型(定义服务-属性/命令)

您可以在此处选择任何名称,此处提供了三级定义。我给大家举个例子,比如我要监测共享汽车设备的状态,监测天气的温湿度计,这叫服务。

[En]

You can choose any name here, and a three-level definition is provided here. Let me give you an example, for example, I want to monitor the status of shared car equipment and the temperature and hygrometer of the weather, which is called service.

对于第一个车载设备,我想知道他的两件事:位置、纬度和经度,以及它是否被激活。这称为设备的属性。

[En]

For the first car device, I want to know two things about him: location, latitude and longitude, and whether it is activated or not. This is called the property of the device.

那么我们先创建第一个服务--车载设备,您可以随意选择名称,添加服务如下:

[En]

So let's first create the first service, car equipment, you can choose the name at will, and add the service as follows:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
然后你需要点击添加属性来添加两个属性:位置和开车与否
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

添加属性时候你需要做的一下几个事情,其他的随便填:
1、定义属性是否可读可写
2、设备的取值范围
3、数据类型,浮点数还是整数等等

在这里,由于使用虚拟设备进行传输,任何数据都很好,通常更具可读性和可写性。

[En]

Here, due to the use of virtual devices for transmission, any data is fine, generally more readable and writable floating points.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

最后如下图
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3.注册设备(注册完成后状态显示未激活)

在定义了华为云中要接收和发送的信息后,现在可以继续点击设备,选择所有设备,然后右上角有一个红色的注册设备,然后点击开始创建设备。

[En]

After defining the information to be received and transmitted in Huawei's cloud, you can now continue to click on the device, select all the devices, and then there is a red registered device in the upper right corner, and click start to create the device.

您所属的资源空间可以选择默认,也可以购买自己的超大磁盘。事实上,云硬盘相关的部分内容不会进行扩容。

[En]

The resource space you belong to can choose the default, or you can buy your own super-large disk. In fact, some of the contents related to cloud disk will not be expanded.

剩下的内容要填写,设备认证选择密钥,密钥是比较流行的认证类型,然后自己填写密码。

[En]

The rest of the content is to be filled in, the device authentication selects the key, the key is a more popular type of authentication, and then fill in the password yourself.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
创建出来如下图
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
你需要点击查看,里面我们需要的信息ID信息,为接下里做准备,这是我的页面,等会需要在这里提取设备ID。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 4.MQTT虚拟生成设备

华为官方推荐的那个生成器需要依赖Java环境,我不推荐使用,这里用我这个,这也可以在下面的链接下载。

https://www.yuque.com/docs/share/48cb3122-a049-4268-83bc-9354776991cf?#

如果没办法下载,你也可以到CSDN上搜MQTT虚拟设备发送什么的,都可以下载的,但是都是VIP或者收费的,所以首选上面的下载链接,也可以私聊我发给你。

为了方便展示,我在设备把页面换成中文了。

解压好是如下图的页面的页面,链接名称写你的设备名称,比如手我定义的是test,然后第二个英文的是写你的设备ID,第三行是你的密钥密码,其他就不用调整了
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

然后进入如下页面
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

此时,查看您的华为云设备的区块,就可以看到该设备在线显示。这意味着这是你成功的时候。接下来,模拟设备接收和发送。

[En]

At this time, you check the block of your Huawei cloud device, and you can see that the device is displayed online. It means that this is when you succeed. Next, the analog device receives and transmits.

3.上报/订阅Topic发送json格式数据测试平台设备是否能正常接受到数据

接下来你按照下面的一个输入做出一些尝试,在topic输入下面的上报的代码,然后在下面的数据块总发送json格式的代码块
上报数据TOPIC:o c / d e v i c e s / d e v i c e i d / s y s / m e s s a g e s / u p 订 阅 消 息 T O P I C : oc/devices/{device_id}/sys/messages/up 订阅消息TOPIC:o c /d e v i c e s /d e v i c e i ​d /s y s /m e s s a g e s /u p 订阅消息T O P I C :oc/devices/{device_id}/sys/messages/down

device_id写上面我提到的设备ID

JSON数据格式:
{
"services": [
{
"service_id": "Track",
"properties": {
"Longitude": 113.6320,
"Latitude": 34.7685
}
},
{
"service_id": "Sensor",
"properties": {
"Temperature": 85.26,
"Humidity": 35.8
}
}
]
}

代码如下图
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

当然topic指令并不是仅仅是简单的两句话,你可以打开产品那一栏点击查看,有一些列的代码指令提供参考
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

然后,您可以从我们云上的虚拟设备接收消息,然后它就显示在这里。

[En]

Then you can receive the message from our virtual device on the cloud, and then it has been shown here.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
你可以点开来查看这个消息,由于一开始我设置成了二进制格式,这里发送的JSON的格式,所以只呈现我发送的数据原码,可以看下官方的数据格式

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

你可以在运维监控这里看到这些链接的设备
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

同时你可以在监控运维下的消息跟踪查看所有的消息历史记录
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 云端下发命令和控制

您也可以选择在设备管理中查找您自己的设备,然后检查上面一栏中是否有命令。您可以单击下图中的同步命令来查看您的虚拟设备的接收情况。

[En]

You can also choose to find your own device in device management, and then check that you have a command in the upper column. You click on the synchronization command in the image below to see how your virtual device receives.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
最后,随着连接的设备越来越多,请返回此处的概述,查看所有设备的干预。

[En]

Finally, as more and more devices are connected, go back to the overview here to see the intervention of all devices.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

ESP8266-STM32-传感器结合以实现端侧数据收集[MQTT]

在前面的部分,为了让演示简单明了,也考虑到大多数看过本博客的朋友手头都没有硬件,所以我们使用虚拟设备进行云连接,现在我们开始展示硬件云通信。

[En]

In the previous part, in order to make the demonstration simple and clear, but also considering that most of the friends who read this blog do not have the hardware on hand, so we use virtual devices for cloud links, and now we begin to show the hardware cloud communication.

在这里主要的通讯模块是ESP8266,因为笔者实在是太菜,对NB-IOT或者4/5G模块或者LoRa的理解还不够深入,所以用这个例子来讲解MQTT的传输。

MQTT简介

MQTT可以为一种网络协议,是通讯的语言,比如说大家熟知的java、python、C/C+都是编程语言。而物联网设备间沟通的语言,就是网络协议。设备间想相互交流,通信双方必须使用同一种"语言"。比如说你和中国人问好说'你好'、日本人问好要说'こんにちは'、和英国人问好要说'hello'.

我以前在郭朝斌"物联网开发实战"中曾经听到是这么解释MQTT的重要性的,这里例子非常生动:

物联网的网络通信特点是物联网设备很大可能工作在不可靠、高延迟的网络环境中。 并且物联网系统中,设备数量多,而且交互非常复杂。比如家里的环境监测,温度、湿度、光照、二氧化碳、甲醛含量......这些都需要不同的设备测量,而且每个房间用到的设备也不同。如果让云平台的服务对每个设备分别做权限控制和数据阈值设置,这会非常麻烦。

因为当数据的"生产者"和"消费者"直接交互时,要是没有中间角色基于共同的目标协调,双方的耦合度会很大,导致系统很难实现。 这时候,需要把家为一个整体来处理,交互逻辑就会变得简单多了。设备经常需要根据实际使用环境做增加、减少等调整。

因此,基于以上特点,物联网系统在选择网络通信协议时一般采用发布-订阅结构。

[En]

Therefore, based on the above characteristics, the Internet of things system generally adopts a publish-subscribe structure when choosing the network communication protocol.

发布 - 订阅模式

发布 - 订阅模式包含三个角色,分别是发布者、经纪人和订阅者,它们的关系如下图所示

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 消息传递的过程可以分为三步:

1.发布者(设备)负责生产数据。发布者发送某个主题的数据给经纪人,发布者不知道订阅者。
2.订阅经纪人管理的某个或者某几个主题。
3.当经纪人接收到某个主题的数据时,将数据发送给这个主题的所有订阅者。

例如,在使用美团外卖点吃午饭时,当订单下达到外卖订餐中心服务器时,外卖订餐中心收到订单后,再将订单发送给店主。

[En]

For example, when using the Meituan takeout point for lunch, when the order is issued to the takeout order center server, the takeout order center receives the order and then sends the order to the shopkeeper.

发布 - 订阅模式之所以适合物联网系统因为在物联网场景中,一个传感器数据需要触发多个服务或者终端执行动作。
例如,当红外传感器检测到人体存在时,需要触发一系列动作:通知摄像头拍照、声光报警进行报警、向失主手机推送信息等。

[En]

For example, when the infrared sensor detects the presence of a human body, it needs to trigger a series of actions: notify the camera to take a picture, sound and light alarm to carry out the alarm, push messages to the owner's mobile phone and so on.

如何满足这一需求?我们最好有相机、声光报警器和手机来订阅“身体方法”这个话题。当红外传感器被触发时,它会发送一条接近人体的消息,然后设备可以同时接收到该消息,然后完成系统定义的动作。这就是发布-订阅模型的工作方式。

[En]

How to meet this demand? We'd better get cameras, acousto-optic alarms and mobile phones to subscribe to the topic "body approach". When the infrared sensor is triggered, it sends a message of proximity to the human body, and then the devices can receive the message at the same time, and then complete the actions defined by the system. This is how the publish-subscribe model works.

MQTT 协议就是发布 - 订阅模式中的大佬,所以MQTT在物联网使用的范围非常广泛。

MQTT

MQTT它有三个主要特点:

1.采用二进制的消息内容编码格式,所以二进制数据、JSON 和图片等负载内容都可以方便传输。(华为云也是仅仅支持JSON和二进制)
2.协议头很紧凑,协议交互也简单,保证了网络传输流量很小。
3.支持 3 种 QoS(Quality of Service,服务质量)级别,便于应用根据不同的场景需求灵活选择。

这三个特点,让 MQTT 协议非常适合计算能力有限、网络带宽低、信号不稳定的远程设备,所以它成为了物联网系统事实上的网络协议标准。

请求 - 响应模式

请求 - 响应模式有两个角色,一个是客户端,另一个是服务器。
客户端是请求数据或服务的一方。服务器用于接收来自客户端的请求,并提供相应的数据或服务。服务器端收到请求后,获取数据,对资源数据(如数据库)进行处理,准备响应,然后返回给客户端。

[En]

The client is the party that requests data or services. The server is used to receive requests from the client and provide corresponding data or services. After receiving the request, the server will get the data, process the resource data (such as the database), prepare the response, and then return it to the client.

请求 - 响应模式是无状态的通信方式,每个完整的请求 - 响应都是相互独立的。进一步细分的话,它还可以分为同步和异步两种。你可以看下这张图片。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

如果我们使用华为云,那么华为云就是我们的服务器,我们的设备就是我们的客户端。我们之所以想在云中工作,是为了提高我们处理数据的能力。

[En]

If we use Huawei Cloud, Huawei Cloud is our server, and our device is our client. The reason why we want to work in the cloud is to improve our ability to process data.

好,一般来说,ESP8266都是通过WI-FI来通信,但是方式和硬件设备条件有一些不同,有以下两种产品:
第一种是独立的开发版,有独立的处理器与充足的I/O管脚的,像下图
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
第二种是通讯模块,需要搭配板子使用,期间是信息传递的桥梁,将信息传输的平台,然后把平台传输会设备。烧录器上面那个芯片就是我们的WI-FI模块
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

接下来我们主要详细讲将STM32和ESP8266模块这种搭配为例子

; STM32+ESP8266+MQTT+华为云

这里参考一位大佬的博客,大家感兴趣可以去看下
https://blog.csdn.net/hao1__/article/details/121050775

首先我来说下这里完成的工作:
华为云
1、获取端口、域名、WI-FI、ClientId、Username、Password
2、自定义操作topic
STM32端
1、ST-Link仿真器、STM32、ESP8266硬件连接
2、配置、填写和写入topic

最后云端获取温湿度数据以及控制继电器开关

获取端口、域名、WI-FI、ClientId、Username、Password

1、WI-FI
这个只需要准备好你家的WI-FI名字和密码就可以

2、端口-域名
你根据下图的提示,在总览这里找到MQTT华为这端的域名和端口
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、ClientId、Username、Password
这三个需要进入到点击进入生产工具网址,进行三元组信息生产。
生成工具网址:
https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
将我们在华为云的ID地址和密钥复制进去,将生成之后生成ClientId、Username、Password复制保存
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 自定义操作topic

我们上面已经接触过用topic进行数据的传输,这里我们自定义一个topic,跟着下面三张图的讲解就可以完成,但是还是要提醒一下,topic不可以直接用,而是把{ deviceId_ID}需要替换成自己的ID
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

ST-Link仿真器、STM32、ESP8266硬件连接

这个设备用的是stm32l,需要加装一个ST-Link,同时将ESP8266模块直接装入板子进行配置。一起来看下吧
一、材料准备
准备以下材料
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

将ESP8266模块插进去
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
将串口线一端插入到STM32L的USB口,另一端插入到电脑的USB口
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

连接ST-Link仿真器
用3条杜邦线接入STM32L的 DIO、GND、CLK中
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
另一头的杜邦线接入仿真器,仿真器USB接口接入电脑。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 配置、填写和烧录

代码在QQ讨论群下载
131322621

配置ST-Link仿真器

打开代码,点击配置仿真器
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 填写

现在需要通讯的的那几个要素(端口、域名、WI-FI、ClientId、Username、Password )依次填入
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

填入自定义topic,来触发特定的指令,比如说传输温湿度、打开关闭
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

校验结果

写两个数据上传到华为云
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

你可以在特定的指令中下达我们特定的topic,然后开关继电器
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 数据格式问题

这里要强调数据格式问题,一个是JSON格式、一个是二进制数据流格式,在上面接入设备的时候你就会发现一个问题,如果不同格式的发送到华为云平台,虽然不会报错,但是只可以接收到一段完整的代码,而不能提取出其中的数据,所以正确的格式在多设备的数据处理中尤其重要。

这里有篇博客写的非常好,解决了ESP8266和STM32两个设备中的格式转化问题,下面它的链接:
https://blog.csdn.net/qq_44857700/article/details/112388324?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen

实现方式
首先以这两个作为例子,剩下的不论是什么设备都是这流程:
1、安装当下环境的JSON解析库
2、串口接收的实现
3、JSON库对数据进行解析
4、JSON数据再处理打包发送

在这里ESP8266按装的Arduino的环境(ArduinoJson库),STM32按装的是Keil5的环境(Jansson库),这和上面那个例子是一样的,都是Keil环境。

串口接收的实现

在ESP8266程序中需要将usartEvent();函数放到loop()函数中。

/*串口数据接收*/
void usartEvent(){
  comdata = "";
  while (Serial.available())//时刻读取硬件串口数据
  {
    comdata = Serial.readStringUntil('\n');//从串口缓存区读取字符到一个字符串型变量,直至读完或遇到某终止字符。
    UserData(comdata);//进行JOSN数据解析
  }
  while (Serial.read() >= 0){}//清除串口缓存
}

ArduinoJson库实现数据解析

/*数据解析{status:true}*/
void UserData(String content){
  StaticJsonDocument<200> doc;//&#x7533;&#x8BF7;JSON&#x89E3;&#x6790;&#x7A7A;&#x95F4;
  DeserializationError error = deserializeJson(doc,content);
  if (error) {//&#x89E3;&#x6790;&#x9519;&#x8BEF;
    Serial.print(F("deserializeJson() failed: "));
    return;
  }
  status=  doc["status"];
}
</200>

ArduinoJson库实现数据的打包发送

参照ArduinoJson库的JsonGeneratorExample工程即可得到以下代码,当然也可采用serial.println()函数进行格式化输出。

  StaticJsonDocument<200> doc;
  doc["sensor"] = "gps";
  doc["time"] = 1351824120;
  serializeJsonPretty(doc, Serial);
</200>

STM32部分

STM32同ESP8266一样,我会从以下四部分介绍:①JSON解析库的安装②串口接收的实现③JSON库实现数据解析④JSON数据的打包发送

JSON解析库的安装

关于这个库还没有下载的小伙伴可以参照这个博客安装:
【STM32上使用JSON - 羊羊得亿 - 博客园】https://www.cnblogs.com/yangxuli/p/7885225.html
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 串口接收的实现

STM32的串口中断我才用的是串口空闲中断,空闲中断是接受数据后出现一个byte的高电平(空闲)状态,就会触发空闲中断。
代码实现如下:
需要定义的全局变量:u8 buf1_size = 0;//串口数据接收数量标记 bool data_change = 0;//串口接收完成/变化标志位

#include <stdarg.h>
#include <string.h>
void USART1_printf (char *fmt, ...){
    char buffer[USART1_REC_LEN+1];  // &#x6570;&#x636E;&#x957F;&#x5EA6;
    u8 i = 0;
    va_list arg_ptr;
    va_start(arg_ptr, fmt);
    vsnprintf(buffer, USART1_REC_LEN+1, fmt, arg_ptr);
    while ((i < USART1_REC_LEN) && (i < strlen(buffer))){
        USART_SendData(USART1, (u8) buffer[i++]);
        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
    }
    va_end(arg_ptr);
}

void USART1_Init(u32 bound){ //&#x4E32;&#x53E3;1&#x521D;&#x59CB;&#x5316;
    //GPIO&#x7AEF;&#x53E3;&#x8BBE;&#x7F6E;
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //&#x4F7F;&#x80FD;USART1&#xFF0C;GPIOA&#x65F6;&#x949F;
     //USART1_TX   PA.9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //&#x590D;&#x7528;&#x63A8;&#x633D;&#x8F93;&#x51FA;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    //USART1_RX   PA.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//&#x6D6E;&#x7A7A;&#x8F93;&#x5165;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   //Usart1 NVIC &#x914D;&#x7F6E;
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//&#x62A2;&#x5360;&#x4F18;&#x5148;&#x7EA7;3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;      //&#x5B50;&#x4F18;&#x5148;&#x7EA7;3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ&#x901A;&#x9053;&#x4F7F;&#x80FD;
    NVIC_Init(&NVIC_InitStructure); //&#x6839;&#x636E;&#x6307;&#x5B9A;&#x7684;&#x53C2;&#x6570;&#x521D;&#x59CB;&#x5316;VIC&#x5BC4;&#x5B58;&#x5668;
    //USART &#x521D;&#x59CB;&#x5316;&#x8BBE;&#x7F6E;
    USART_InitStructure.USART_BaudRate = bound;//&#x4E00;&#x822C;&#x8BBE;&#x7F6E;&#x4E3A;9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//&#x5B57;&#x957F;&#x4E3A;8&#x4F4D;&#x6570;&#x636E;&#x683C;&#x5F0F;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;//&#x4E00;&#x4E2A;&#x505C;&#x6B62;&#x4F4D;
    USART_InitStructure.USART_Parity = USART_Parity_No;//&#x65E0;&#x5947;&#x5076;&#x6821;&#x9A8C;&#x4F4D;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//&#x65E0;&#x786C;&#x4EF6;&#x6570;&#x636E;&#x6D41;&#x63A7;&#x5236;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //&#x6536;&#x53D1;&#x6A21;&#x5F0F;
    USART_Init(USART1, &USART_InitStructure); //&#x521D;&#x59CB;&#x5316;&#x4E32;&#x53E3;
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//&#x5F00;&#x542F;ENABLE/&#x5173;&#x95ED;DISABLE&#x4E32;&#x53E3;&#x63A5;&#x6536;&#x4E2D;&#x65AD;
    USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);//&#x5F00;&#x542F;&#x4E32;&#x53E3;&#x7A7A;&#x95F2;&#x4E2D;&#x65AD;
    USART_Cmd(USART1, ENABLE);                    //&#x4F7F;&#x80FD;&#x4E32;&#x53E3;
}

void USART1_IRQHandler(void){ //&#x4E32;&#x53E3;1&#x4E2D;&#x65AD;&#x670D;&#x52A1;&#x7A0B;&#x5E8F;&#xFF08;&#x56FA;&#x5B9A;&#x7684;&#x51FD;&#x6570;&#x540D;&#x4E0D;&#x80FD;&#x4FEE;&#x6539;&#xFF09;
    u8 clear = clear;
    USART_ClearFlag(USART1,USART_FLAG_TC);

    if(USART_GetITStatus(USART1,USART_IT_RXNE)!=Bit_RESET)//&#x4E32;&#x53E3;&#x4E2D;&#x65AD;&#x53D1;&#x751F;
    {
        if(data_change == 0)//&#x91CD;&#x65B0;&#x63A5;&#x6536;
        {
            memset(USART1_RX_BUF,0,sizeof(USART1_RX_BUF));//&#x6E05;&#x7A7A;&#x6574;&#x4E2A;&#x63A5;&#x6536;&#x6570;&#x7EC4;
            data_change = 1;//&#x6807;&#x5FD7;&#x4F4D;&#x62C9;&#x9AD8;
        }
        USART1_RX_BUF[buf1_size++]=USART1->DR;
    }

    else if(USART_GetFlagStatus(USART1,USART_FLAG_IDLE)!=Bit_RESET)//&#x7A7A;&#x95F2;&#x4E2D;&#x65AD;&#x53D1;&#x751F;
    {
        buf1_size = 0;
        data_change = 0;//&#x6807;&#x5FD7;&#x4F4D;&#x62C9;&#x4F4E;&#xFF0C;&#x4E0B;&#x6B21;&#x6570;&#x636E;&#x6539;&#x53D8;&#x8FDB;&#x5165;
        data_sys = 1;//&#x5141;&#x8BB8;&#x89E3;&#x6790;

        clear = USART1->SR;//&#x7A7A;&#x95F2;&#x4E2D;&#x65AD;&#x8981;&#x8BFB;&#x8FD9;&#x4E24;&#x4E2A;&#x5BC4;&#x5B58;&#x5668;
        clear = USART1->DR;
        USART_ClearITPendingBit(USART1,USART_IT_IDLE);//&#x6E05;&#x9664;&#x7A7A;&#x95F2;&#x4E2D;&#x65AD;&#x6807;&#x5FD7;&#x4F4D;
    }
}
</string.h></stdarg.h>

JSON库实现数据解析

JSON库解析需要调用头文件#include

#include <jansson.h>
bool led_status;
//&#x5F00;&#x5173;&#x706F;JSON&#x51FD;&#x6570;{"status":true}
//&#x5B58;&#x5728;&#x95EE;&#x9898;!!&#x4F7F;&#x7528;&#x672C;&#x51FD;&#x6570;&#x89E3;&#x6790;&#x540E;&#x4E32;&#x53E3;printf&#x65E0;&#x6CD5;&#x4F7F;&#x7528;&#xFF0C;&#x5EFA;&#x8BAE;&#x4F7F;&#x7528;USART1_printf&#x51FD;&#x6570;&#x5B9E;&#x73B0;&#x53D1;&#x9001;
/**
* @brief  Json&#x89E3;&#x6790;&#x51FD;&#x6570;
* @param none
* @return
* - 0 &#x8F6C;&#x6362;&#x6210;&#x529F;
* - 1 &#x8F6C;&#x6362;&#x5931;&#x8D25;
* @details
*/
uint8_t Jansson_Analysis(char *text)
{
    json_error_t error;
    json_t *root;

    root = json_loads((const char*)text, 0, &error);
    if(json_is_object(root))
    {
        status = json_object_get(root, "status");
        if(json_is_true(status))
            led_status = 1;
        else if(json_is_false(status))
            led_status = 0;
    }
    else
    {
        USART1_printf("root format error:%d-%s\r\n", error.line, error.text);
        return 1;
    }
    json_decref(root);//&#x91CA;&#x653E;JSON&#x7A7A;&#x95F4;
    return 0;
}
/*
// string &#x7C7B;&#x578B;&#x7684;&#x89E3;&#x6790;
name = (char *)json_string_value(json_object_get(root, "name"));
// int &#x7C7B;&#x578B;&#x7684;&#x89E3;&#x6790;
age = json_integer_value(json_object_get(root, "age"));
// double &#x7C7B;&#x578B;&#x7684;&#x89E3;&#x6790;
score = json_real_value(json_object_get(root, "score"));
// bool &#x7C7B;&#x578B;&#x7684;&#x89E3;&#x6790;
status = json_object_get(root, "status");
if(json_is_true(status))
else if(json_is_false(status))
*/
</jansson.h>

JSON数据的打包发送

Jansson包提供了一个json数据打包的函数,但此函数在打包过程中会占用极大的片内空间,因此在这里仅介绍给大家,不推荐大家使用,推荐大家使用的方法还是使用printf函数进行格式化输出。

/**
* @brief  &#x5C06;&#x6570;&#x636E;&#x6253;&#x5305;&#x4E3A;Json&#x683C;&#x5F0F;
* @param [in] status
* @return none
* @details
*/
void jansson_pack(bool state)
{
    json_t *root;
    char *out;
    /* Build the JSON object */
    root = json_pack("{sb}","status",status);
    out = json_dumps(root, JSON_ENCODE_ANY);
    printf("%s",out);
    json_decref(root);//&#x91CA;&#x653E;JSON&#x7A7A;&#x95F4;
    free(out);//&#x91CA;&#x653E;JSON&#x7A7A;&#x95F4;
}
/*
s &#x4EE3;&#x8868;string&#x7C7B;&#x578B;
b &#x4EE3;&#x8868;bool&#x7C7B;&#x578B;
d &#x4EE3;&#x8868;int&#x7C7B;&#x578B;
f &#x4EE3;&#x8868;float&#x3001;double&#x7C7B;&#x578B;
*/

使用printf格式化输出只需要:

printf("{\"status\":%d}",status);

实时数据分析

关于实时的数据分析,这里一般都没有现成的实时数据流,但是幸运的是华为云官方提供了三个Demo,可以登录在他们的IAM用户使用,将下面的3个账号中的一个依次填入到登录的IAM界面中
账号1
IoTAnalyticsDemo
IoTAnalyticsDemo1
IoTAnalyticsDemo
账号2
IoTAnalyticsDemo
IoTAnalyticsDemo2
IoTAnalyticsDemo
账号3
IoTAnalyticsDemo
IoTAnalyticsDemo3
IoTAnalyticsDemo

你需要退出自己的账号,然后回到原来的页面

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

上面三个账号随便一个都可以使用,都是官方提供的
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

还是和第一次的一样,点开产品,点IOT物联网,点IOT数据分析,然后点开始使用开始我们的开发工作。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

你会进入到工作台中,
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
首先先了解一下整个数据分析的结构吧。
首先数据分析主要由以下的步骤组成:

1 、配置数据源
配置与IoT数据分析服务交互的外部数据源。
2、 创建数据管道
通过数据管道进行数据预处理和数据流控制。
3 、配置存储
完成老化策略配置,将数据导入存储。
4 、资产建模
基于业务述求,为物理对象创建出一个实时映射的数字镜像。
5 、数据分析
选择合适的数据分析方式,开启数据探索。
6 、结果导出
将分析结果导出并下载到本地,或转到第三方存储中。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

用于做分析的数据源有以下的来源,可以根据实际的工业需求进行选择,这次演示用的IoTDA实时数据源做分析。
IoTDA实时数据源
DIS数据源
DMS(kafka)数据源
离线数据源
API数据源

这里详细说下IoTDA实时数据源,等会要用的呢

; 添加IoTDA实时数据源

操作步骤
1、访问并登录"IoT数据分析"服务控制台,点击"立即使用"。
2、在左侧导航栏选择"数据源>IoTDA实时数据源",点击页面中"立即授权"按钮进行确认授权。以便后续IoTA服务与IoTDA服务能够互相访问租户数据。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
3、确认授权后,点击"添加数据源",输入数据源名称、在实例下拉列表中选择1个您名下的IoTDA设备接入服务实例、并在产品栏选择您需要把该IoTDA实例下哪些产品的数据上报到数据分析服务中,然后点击"确定"。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

创建数据管道

1、访问并登录"IoT数据分析"服务控制台,点击"立即使用"。
2、在左侧导航栏选择"数据管理",进入数据管道页面,在"管理列表"点击"创建数据管道"。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、弹出"创建数据管道"对话框,您可自行填写"作业名称"、"描述",并选择数据源
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

使用IoTDA数据源时,系统会自动读取该数据源的相关信息及相关的产品信息,生成作业执行流程,如图所示。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

上图所示示例中,所选择的IoTDA数据源包含两种设备:烟感设备与水表,系统自动生成了两个处理分支,分别用于处理这两种设备上报的数据。

这两个分支各自以一个"产品过滤"算子作为起始点,分别过滤出这两种设备的数据,以便于各续处理流程仅处理某一种产品的数据,如图所示。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

系统还自动根据这两种设备的产品信息(该产品信息以安全的方式从IoTDA获取),生成了默认的输出配置。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

请选择存储组并填写存储名称,完成配置并保存,如图所示。

[En]

Please select the storage group and fill in the storage name to complete the configuration and save it, as shown in the figure.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 处理流程-数据源配置、清洗与输出

数据源配置

1、IoTDA数据源
在画布上选中"IoT设备接入数据源"算子,在右侧配置面板处,可修改算子名称、选择数据源、填写事件时间字段路径、时间格式,如图。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
2、DIS数据源配置
在画布上选中"DIS数据源"算子,在右侧配置面板处,可修改算子名称、选择数据源、填写事件时间字段路径、时间格式、时区,如图。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 数据清洗

目前提供了产品过滤、添加和修改属性类、删除属性类、过滤消息类、添加消息类和规定消息类等几种类型的数据清洗操作符。要添加清洗步骤,在操作员节点上单击鼠标右键可看到向前和向后菜单,如图所示:

[En]

At present, several types of data cleaning operators are provided, such as product filtering, adding and modifying attribute class, deleting attribute class, filtering message class, adding message class and prescribing message class. To add cleaning steps, right-click on the operator node to see the "forward" and "backward" menus, as shown in the figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

接下来,以产品过滤、数据计算、选择属性、数据过滤、超时插补和数据聚合为例,介绍不同类型的运算符配置。有关每个操作员配置的详细说明,请参阅操作员使用指南。

[En]

Next, take product filtering, data calculation, selection attributes, data filtering, timeout interpolation and data aggregation as examples to introduce different types of operator configurations. For a detailed description of each operator configuration, please refer to the operator usage Guide.

1、产品过滤
"产品过滤"仅可添加在"IoT设备接入数据源"算子后,因此,仅在"IoT设备接入数据源"算子上点击右键时,可以看到"产品过滤"算子。
新增操作员节点后,在操作员节点上点击鼠标左键,打开右侧操作员配置面板,如图所示:

[En]

After adding the operator node, click the left mouse button on the operator node to open the operator configuration panel on the right, as shown in the figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

系统会根据所选择的产品,自动生成该算子的输出内容:
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

2、数据计算
按照表达式进行数值计算,计算的结果赋值给源属性。
新增操作员节点后,在操作员节点上点击鼠标左键,打开右侧操作员配置面板,如图所示:

[En]

After adding the operator node, click the left mouse button on the operator node to open the operator configuration panel on the right, as shown in the figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、选择属性
在输入数据中选择保留的属性,则删除未选择的属性。当数据字段较多时,用户可以使用该功能过滤出与业务相关的字段。

[En]

Select the reserved attribute in the input data, and the unselected attribute is deleted. When there are many data fields, users can use this function to filter out the fields related to the business.

新增操作员节点后,在操作员节点上点击鼠标左键,打开右侧操作员配置面板,如图所示:

[En]

After adding the operator node, click the left mouse button on the operator node to open the operator configuration panel on the right, as shown in the figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

使用该配置筛选出batteryLevel与batteryVoltage两个字段,因为后续处理流程仅使用这两个字段。

4、数据过滤
按照设定的条件对数据进行过滤,满足条件的数据输出,不满足条件的数据丢弃。

[En]

The data is filtered according to the set conditions, the data that meets the conditions is output, and the data that does not meet the conditions will be discarded.

新增操作员节点后,在操作员节点上点击鼠标左键,打开右侧操作员配置面板,如图所示:

[En]

After adding the operator node, click the left mouse button on the operator node to open the operator configuration panel on the right, as shown in the figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

使用该配置过滤出batteryLevel不等于0且batteryVoltage大于100的数据。
数据过滤算子不会修改数据输出,用户可展开"输出"项检查输出内容。

5、超时插补
提供基于时间的数据内插。时间支持延迟等待时间和指定固定时间点。插补数据是先前的实际数据,但事件时间是通过插补计算的时间。

[En]

Provide time-based data interpolation. Time supports delaying the waiting time and specifying a fixed point in time. The interpolation data is the previous actual data, but the event time is the time calculated by interpolation.

新增操作员节点后,在操作员节点上点击鼠标左键,打开右侧操作员配置面板,如图所示:

[En]

After adding the operator node, click the left mouse button on the operator node to open the operator configuration panel on the right, as shown in the figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

6、数据聚合
数据聚合算子,对数据流中的数据根据窗口周期进行汇聚计算。
新增操作员节点后,在操作员节点上点击鼠标左键,打开右侧操作员配置面板,如图所示:

[En]

After adding the operator node, click the left mouse button on the operator node to open the operator configuration panel on the right, as shown in the figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

数据输出

将数据输出到IoTA的存储,以便进一步分析(资产建模、实时分析、时序分析、离线分析)使用。
您可以配置操作员名称,选择存储组,填写存储名称,选择需要的属性和属性类型,如图所示:

[En]

You can configure the operator name, select the storage group, fill in the storage name, and select the desired attribute and attribute type, as shown in the figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 运行数据管道

数据管道编辑完成后,作业状态会变为"就绪"态,如图所示:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

"就绪"态的作业即可运行:在"管理列表页"点击作业卡片,进入"作业详情页",然后点击右上角的红色按钮"启动作业"。

在启动作业时,系统会确定用户的作业是否需要实时计算资源。如果需要实时计算资源,会弹出如下对话框供用户选择:

[En]

When starting a job, the system will determine whether the user's job requires real-time computing resources. If real-time computing resources are required, the following dialog box will pop up for users to choose:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

模型与资产

1、创建资产模型
点击"新建",如下图1中①所示
输入模型名称、显示名称,点击确定,如下图1中②所示
图1 新增模型
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

2、添加属性信息
手动添加
点击手动添加,如下图1中①所示
输入名称、显示名称,选择属性类别、数据类型、属性值(指该属性的缺省值)、范围、单位,点击[确定],如下图1中②所示;单位定义中,系统预置了一系列常用单位,如果没有合适的单位,用户可以手工录入自定义单位。

[En]

Enter the name, display name, select attribute category, data type, attribute value (refers to the default value of the attribute), range and unit, and click OK, as shown in ② in figure 1 below; in the unit definition, the system has preset a series of commonly used units, if there is no suitable unit, the user can manually enter the custom unit.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

快速添加

IoTA提供了快速批量添加属性的功能,用户可以将在存储管理中定义的物的各种属性快速引入到资产模型中,引用时需要指定存储位置,具体步骤如下:

点击快速添加,如下图2中①所示
选择数据存储,如下图2中②所示
输入范围,勾选要添加的属性,点击确定,如下图2中③所示。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、添加分析任务
点击添加分析任务,如下图1中①所示
输入名称,选择类型,完成输入参数和表达式的定义,并将分析任务的输出映射到特定的属性,然后单击OK,如下图1中的②所示。有关分析任务的概念,请参见分析任务的定义。

[En]

Enter the name, select the type, complete the definition of input parameters and expressions, and map the output of the analysis task to specific attributes, and click OK, as shown in ② in figure 1 below. For more information on the concept of analysis task, please see the definition of analysis task.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
1、创建资产
在资产管理页,点击"新建资产",如下图1中①所示
输入名称,选择模型,点击确定,如下图1中②所示
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 数据分析

经过上述这么多步骤,就可以对数据进行分析了,根据不同的数据源有三种分析方式:实时分析、实时分析、离线分析:

[En]

After so many steps above, the data can be analyzed, and there are three kinds of analysis according to different data sources: real-time analysis, real-time analysis, offline analysis:

1、实时分析
这里提供了丰富的IoT实时处理算子以及提供相应的编排开发IDE,适合用来一站式的开发、调测、部署、监控实时作业,可以满足IoT行业各种实时数据分析场景。
2、实时分析
针对IoT数据的显著时序特征,基于物联网资产模型提供海量时序数据的存储和多种时间维度的聚合计算能力,丰富的图表分析方式让数据规律清晰可见。
3、离线分析
通过标准 SQL开发数据分析任务,并轻松处理TB-EB级别海量数据,可在报表统计、设备行为分析等无需实时处理数据的场景使用。

接下里我们就用一个演示来把前面全部过程都贯穿一遍。

实例演示-使用IoTA实现电子工厂SMT产线OEE分析实践

这是政府提供的一个经典案例。通过运行这个案例,你基本上可以熟悉实时数据分析的整个过程。

[En]

This is a classic case provided by the government. By running this case, you can basically be familiar with the whole process of real-time data analysis.

总体流程介绍

从设备侧到应用侧端到端数据分析过程
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 1、主流程说明:

设备上报数据(也可基于设备模拟器)

基于标准物模型,设备定时通过MQTT协议自动上报设备属性数据。

IoT设备接入服务

通过配置设备数据转发规则将设备属性数据和设备消息到IoTA服务。

IoT数据分析服务

基于数据管道接收设备数据,并通过资产建模和计算分析能力,实时计算生成产线和设备OEE相关数据,判断数据是存存在异常信息。

3D应用:

通过调用IoTA的API获取数据,以3D形式展示产线和设备,可查看产线和设备OEE,设备关键指标,告警等故障信息,同时可查到相关历史数据。

2、IoTA内部主要分析流程说明

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 3、开通IoT数据分析服务。

登录华为云,搜索"IoTA",在产品主页点击"立即使用",进入IoTA服务Console页面,此时会自动开通IoTA服务。

4、设备管理服务授权配置

完成IoTDA服务授权配置

5、创建管道作业接入IoTDA数据

分析数据的第一步需要将SMT设备上报的数据接入到IoTA服务,基于IoTDA服务授权配置后,数据即会从IoTDA服务自动转发到IoTA中,通过创建管道作业可将从IoTDA转发的数据接入,用户通过构建管道作业实现对设备数据进行清洗,规整,去重,增加外部业务属性信息等一系列处理,为下一步基于资产模型分析设备属性数据做好准备,本案例中管道作业为计算设备OEE相关指标准备好基础数据。

6、创建SMT产线和设备资产模型

为了构建物联网领域业务对象的数字孪生模型,IoT数据分析服务参考软件工程中面向对象的思想提供了"资产建模"能力,其中核心概念包括资产模型和资产,模型包括属性(类属性)和分析任务(类方法),对物理世界事物构建数字资产模型时,必须先定义好资产模型、然后再创建资产,即要先定义好SMT产线和设备的资产模型,再基于设备模型实例化创建设备资产。

7、创建SMT产线和设备资产

在完成SMT产线和设备模型构建后,用户可通过该模型,实例化创建对应的资产,包括工厂,产线,设备资产,发布资产后,结合前端管道作业输出的设备数据,可实时监控资产的运行状态。
详细操作请参考 创建SMT产线和设备资产。

8、使用资产模型实时计算产线和设备OEE及设备数据异常分析

在完成SMT产线和设备模型及资产构建后,系统自动根据模型结合资产数据计算引擎,根据设备上报的数据对SMT产线和设备OEE进行实时计算,通过Console可对设备状态、设备关键属性、设备数据异常告警等进行实时监控。

9、第三方应用实时呈现SMT产线和设备数据分析结果

IoTA当前提供标准API对外开放数据,包括设备原始数据,资产快照和历史数据,第三方应用通过API实时获取SMT产线的各项分析结果,包括设备OEE,设备状态、设备关键属性、数据异常告警,设备属性历史数据等进行实时呈现。

实例演示

创建管道与IOTDA数据接入

在开始之前,因为整个过程涉及的算法非常复杂,所以我不会在这里展示具体过程的算法或详细配置,这没有利用我们对整个过程的掌握。我会尽我所能把整个过程简化和简化。

[En]

Before the start, because the arithmetic involved in the whole process is very complex, here I will not show the arithmetic or detailed configuration of a specific process, which does not take advantage of our mastery of the whole process. I will try my best to simplify and simplify the whole process.

1、创建管道作业,进入IoTA Console,选择左侧导航栏"数据管道",然后点击右侧"创建数据管道"。

此处的数据源未显示在数据源输入部分中。数据源可以参照上述流程,只需两步即可倒入。

[En]

The data source here is not shown in the data source input section. The data source can refer to the above process and can be poured in only two steps.

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

输入作业名称,描述,选择数据源"IoTDA"类型,点击"确定"进入作业编辑页面。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 2、进入管道作业编辑页面,系统默认为作业配置了"IoT设备接入数据源","产品过滤","数据存储输出" 3个算子,如下图所示。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、添加存储组, 点击某一个存储输出算子,比如印刷机存储输出算子,右侧配置存储组名称中点击下方的"添加",然后输入存储组名称"SMT-Demo-Storage",点击右侧图标,保存配置。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 4、添加存储,比如印刷机存储输出算子,在"数据存储名称"中点击添加,输入存储名称"Printing1"点击右侧图标,保存配置。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

5、重复步骤3,步骤4,将其它5个设备输出算子配置好数据存储名称,配置完成点击右上角"保存",保存成功后可在存储管理页面中查看已创建好的存储组和存储名称。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 6、为打印机添加"数据计算算子",右键点击算子图标,弹出菜单中选择"数据计算"算子,如下图所示:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

为了整体流程更加简洁明了,这里不对算子进行过多讲解

7、为打印机再添加"数据计算算子",右键点击算子图标,弹出菜单中选择"数据计算"算子,如下图所示

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

算子的配置如下图所示:
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 8、为打印机再添加"数据过滤"算子,右键点击算子图标,弹出菜单中选择"数据计算"算子,如下图所示

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

9、重复步骤6~步骤8将其它设备分支添同样的算子进行处理,配置后的效果如下图所示

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 10、为印刷机增加计划工作状态属性, 右键点击IoTDA数据源算子弹出"添加产品过滤"算子图标,

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
产品过滤算子的参数和上面的印刷机分支相同
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

11、增加超时插补算子,右键点击增加"超时插补"算子,算子配置如下:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 12、为印刷机增加"数据计算"算子,用于转换时间格式,配置方法与步骤6相同
13、为印刷机增加"数据计算"算子,用于增加增加PlanningWorkStatus属性,算子参数配置如下

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 14、为印刷机增加数据输出算子,用于将设备计划工作状态数据输出到存储中,算子配置如下图所示

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

15、重复步骤10~步骤14为其它5种SMT设备分别增加设备计划工作状态属性数据,最终完成后如下图效果:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 16、点击右上角保存,并启动作业。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

启动成功后,约1分钟左右,作业状态为"运行中"表示作业正常运行。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

创建SMT产线和设备资产模型

注:我在这里删除了大量的表格和数据,主要是为了强调开发过程的过程和步骤,因为每个行业的运算符和算法都不同,所以我更注重平台的使用。

[En]

Note: here I have deleted a large number of tables and data, mainly to emphasize the process and steps of the development process, because the operators and algorithms of each industry are different, so I pay more attention to the use of the platform.

1、创建设备模型:印刷机模型,在IoTA Console中左侧导航栏中选择"资产建模","模型",点击上方"新建"

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

输入模型名称: Printing, 显示名称: "印刷机",点击"确定"保存。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 2、为印刷机增加属性,点击 属性信息下方"快速添加"按钮,可从数据存储中快速导入印刷机属性字段,减少手工操作。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

在数据存储中下拉选择"Printing"存储名称,勾选所有导入的属性,然后点击"确定"保存。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

导入后效果如下
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、为印刷机增加静态类型和分析任务类型的属性,通过界面"手动添加"方式,按照"设备公共性属性列表"的参数进行配置。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 4、为印刷机模型增加分析任务,通过界面"添加分析任务",按照"设备公共分析任务列表"的参数进行配置。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

5、重复步骤1~步骤5 创建其它5种设备的模型。
6、创建产线模型

点击新建,弹出模型对话框,输入模型名称:"ProductLine",显示名称:"产线", 点击"确定"。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 7、添加产线模型的属性信息。

在左侧模型导航栏上选择上一步创建的"ProductLine"模型, 在"属性信息"页面点击 "手动添加",如下图所示:
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

在对话框中输入属性信息,包括名称、显示名称、属性类别、数据类型、单位等,点击[确定]按钮,属性添加完成。如下图所示:

[En]

Enter information about attributes in the dialog box, including name, display name, attribute category, data type, unit, etc. Then click OK to finish adding attributes. As shown in the following figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

完成后效果图
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

8、添加产线模型的分析任务

选择分析任务页面,点击"添加分析任务"。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
在弹出的对话框中,请参照下图、下表输入相关信息。如果您输入了更多的参数,请通过添加参数逐个添加参数。

[En]

In the pop-up dialog box, refer to the following figure and table to enter relevant information. If you enter more parameters, add parameters one by one through "add parameters".

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 9、创建工厂模型

点击新建,弹出模型对话框,输入模型名称:"Factory",显示名称:"工厂", 点击"确定"。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

10、至此工厂,产线,设备的模型已创建完成,如下图如示。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 创建SMT产线和设备资产模型

1、创建设备模型:印刷机模型,在IoTA Console中左侧导航栏中选择"资产建模","模型",点击上方"新建"

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
输入模型名称: Printing, 显示名称: "印刷机",点击"确定"保存。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 2、为印刷机增加属性,点击 属性信息下方"快速添加"按钮,可从数据存储中快速导入印刷机属性字段,减少手工操作。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
在数据存储中下拉选择"Printing"存储名称,勾选所有导入的属性,然后点击"确定"保存。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
导入后效果如下

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、为印刷机增加静态类型和分析任务类型的属性,通过界面"手动添加"方式,按照"设备公共性属性列表"的参数进行配置。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 4、为印刷机模型增加分析任务,通过界面"添加分析任务",按照"设备公共分析任务列表"的参数进行配置。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

5、重复步骤1~步骤5 创建其它5种设备的模型。

创建产线模型

6、点击新建,弹出模型对话框,输入模型名称:"ProductLine",显示名称:"产线", 点击"确定"。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 7、添加产线模型的属性信息。

在左侧模型导航栏上选择上一步创建的"ProductLine"模型, 在"属性信息"页面点击 "手动添加",如下图所示:
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

在对话框中输入属性信息,包括名称、显示名称、属性类别、数据类型、单位等,点击[确定]按钮,属性添加完成。如下图所示:

[En]

Enter information about attributes in the dialog box, including name, display name, attribute category, data type, unit, etc. Then click OK to finish adding attributes. As shown in the following figure:

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

完成添加后的效果如下图所示。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

8、添加产线模型的分析任务

选择分析任务页面,点击"添加分析任务"。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

完成配置后的效果如下图所示:
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 9、创建工厂模型

点击新建,弹出模型对话框,输入模型名称:"Factory",显示名称:"工厂", 点击"确定"。
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

10、至此工厂,产线,设备的模型已创建完成,如下图如示。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 使用资产模型实时计算产线和设备OEE

1、从IoTA导航栏,点击"资产建模型",再点击"资产",选择已创建的"SMTFactoryDemo"进入资产界面。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 2、选择进入资产监控页面。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、选择某一设备资产,比如选择"印刷机"设备,可实时查看当前设备上报的所有测量类型属性数据,同时也能查看所有计算任务类型属性的实时结果数据。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 4、选择产线资产,比如"SMT产线1",可以实时查看到当前产线的OEE相关的指标计算结果。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

5、查看某个设备资产的历史数据,比如查看印刷机的历史数据,点击选择印刷机资产,点击属性值右边的图标,即可查看当前设备资产的历史数据时序分析图,比如查看资产属性的平均值曲线。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

; 6、通过点击右上角的,可查看资产时序历史原始数据。

一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

第三方应用实时呈现数据分析结果

1、点击 http://123.60.210.97:8088/ 打开终端贴片产线应用。
2、可点击某个设备查看此设备的关键属性值,及此设备的OEE指标,同时可查看产线或设备的历史数据,如下图所示:
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

3、查看设备数据异常告警事件,点击设备中的黄色感叹号图标,会显示设备属性的异常数据信息,如下图所示:
一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

Original: https://blog.csdn.net/weixin_47567401/article/details/122740792
Author: 翼达口香糖
Title: 一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)



相关阅读

Title: Tensorflow 2.9.1安装笔记

CPU:i7-4790k

显卡:GTX2060

Cuda 版本:11.3

Cunn版本: 11.6

Python版本:3.7.7

不想用anacoda,直接装 tensorflow

1.准备工作

  • 安装python3.7.7(之前安装好的)

可以根据需要安装相应的版本,不建议安装最新版,python版本之间的代码兼容度不好。3.6~3.8可能比较合适。

我安装的是11.3版本。

deviceQuery.exe 和 bandwithTest.exe测试通过。

  • 下载Tensorflow

我下载的是 tensorflow-2.9.1-cp37-cp37m-win_amd64.whl

  • 安装组件

安装Tensorflow之前,安装好以下支持模块

A.Numpy: pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

B.mkl: pip install mkl -i https://pypi.tuna.tsinghua.edu.cn/simple

C.protobuf pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple

2.安装Tensorflow

把 tensorflow-2.9.1-cp37-cp37m-win_amd64.whl 放到d盘根目录,打开命令行并转到D:\

pip install tensorflow-2.9.1-cp37-cp37m-win_amd64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

这样在安装过程中加载其他模块的时候,速度会非常快。

3.测试

import tensorflow as tf
print("Tensorflow version:")
print(tf.__version__)

print("CPU/GPU devices for Tensorflow:")
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
cpus = tf.config.experimental.list_physical_devices(device_type='CPU')
print(gpus)
print(cpus)

运行结果:

Tensorflow version:
2.9.1
CPU/GPU devices for Tensorflow:
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')]

至此安装完毕。

IDE可以使用Visual Studio Code(小规模测试)

或者Pycharm(程序较大很方便)

Original: https://blog.csdn.net/st01lsp/article/details/125294794
Author: st01lsp
Title: Tensorflow 2.9.1安装笔记

相关文章
跨域 人工智能

跨域

同源策略指三个相同:协议相同、域名相同、端口相同,有一个不同即非同源。 主域与子域、域名与域名对应的IP。都是非同源的 同源策略可以算是web安全的基石,没有同源策略就么有安全可言。 无法共享 coo...
无人驾驶感知篇之车载摄像头 人工智能

无人驾驶感知篇之车载摄像头

1.车载摄像头的组成 昨天上海新增了3千多例,今天开始了"鸳鸯锅"封锁模式,早上看到的时候挺心酸的,祝愿ta们能早点康复,也希望能疫情能早点结束。OK,言归正传,车载摄像头主要有:镜头、滤色片、图像C...
特定声音识别检测模块详解 人工智能

特定声音识别检测模块详解

需求解析 对于养宠物的人来说,识别宠物的叫声并根据它的叫声来判断是否出现了异常。宠物叫声一般都比较单一,难度相对较低,准确性有保障。 病人健康检测:通过声音识别,可以检测出人夜晚打呼噜的声音,可以检测...
波士顿房价预测(TensorFlow2.9实践) 人工智能

波士顿房价预测(TensorFlow2.9实践)

波士顿房价预测(TensorFlow2.9实践) 波士顿房价数据集包括506个样本,每个样本包括12个特征变量和该地区的平均房价。房价(单价)显然和多个特征变量相关,不是单变量线性回归(一元线性回归)...
ASR自动语音识别代码操作 人工智能

ASR自动语音识别代码操作

JupyterLab 语音识别操作流程 录制语音文件 合并为单声道文件 导入nemo工具包及asr工具类 加载Quartznet中文版预训练模型 测试模型识别效果 语音识别操作流程 使用音频软件或手机...