新闻中心

IOT用户指南

2019-06-13

一、创建产品

使用域乎物联网平台的第一步:在控制台创建产品。产品是设备的集合,通常是一组具有相同功能定义的设备集合。例如:产品指同一个型号的产品,设备就是该型号下的某个设备。

操作步骤

1.       登录域乎物联网平台控制台台。

2.       产品列表,单击创建产品
img1

3.       完成要创建的产品参数设置,单击完成
img2

页面参数设置如下:

 

参数

描述

产品名称

为产品命名。产品名称在账号内具有唯一性。例如,可以填写为产品型号。支持中文、英文字母、数字和下划线,长度限制4~30,一个中文汉字算2位。

产品描述

输入文字,用以描述产品。字数限制为100。

 

 

执行结果

产品创建成功后,页面自动跳转回 产品列表页面。您可以查看或编辑产品信息。

 

二、创建设备

产品指某一类设备,创建完产品后,需要为设备创建身份。您可以创建单个设备,也可以批量创建设备。本文为您讲述单个设备的创建。

操作步骤

1.       登录域乎物联网平台控制台

2.       左侧导航栏选择设备管理 ,单击添加设备

3.       点击添加设备。输入设备名称和设备串号,完成后,单击完成
img3

4.       单击确认。完成设备创建。

设备创建完成后,将自动弹出 查看设备证书弹框。您可以查看、复制设备证书信息。设备证书又名 设备三元组,由设备 ProductKey、DeviceName、和 DeviceSecret组成,是设备与域乎物联网平台进行通信的重要身份认证,建议您妥善保管。

·       ProductKey:域乎物联网平台为您创建的产品颁发的全局唯一标识符。

·       DeviceName:设备在产品内的唯一标识符,用于设备认证和通信。

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

 

img4

5.       单击已创建设备对应操作栏中的查看,进入设备详情页面,查看设备详情。

 

三、什么是Topic

域乎物联网平台中,服务端和设备端通过 Topic 来实现消息通信。Topic是针对设备的概念,Topic类是针对产品的概念。产品的Topic类会自动映射到产品下的所有设备中,生成用于消息通信的具体设备Topic。

什么是Topic类?

为了方便海量设备基于海量Topic进行通信,简化授权操作,域乎物联网平台增加了产品Topic类的概念。Topic类是一类Topic的集合。/${YourProductKey}/${YourDeviceName}/user/update是具体Topic/${YourProductKey}/device1/user/update/${YourProductKey}/device2/user/update的集合。

您创建产品后,域乎物联网平台会为该产品创建系统 Topic 类。您还可以根据业务需求,自定义Topic类。

·       在产品的Topic类列表页,创建自定义Topic类

您可以在产品详情页的Topic类列表页,查看该产品的所有Topic类。

在您创建设备后,产品Topic类会自动映射到设备上。您无需单独为每个设备授权Topic。

图 1. Topic 自动生成示意图
IMG_256

关于Topic类的说明:

·       Topic类中,以正斜线(/)进行分层,区分每个类目。其中,有两个类目为既定类目:${YourProductKey}表示产品的标识符ProductKey;${YourDeviceName}表示设备名称。

·       类目命名只能包含字母,数字和下划线(_)。每级类目不能为空。

·       设备操作权限:发布表示设备可以往Topic发布消息;订阅表示设备可以从Topic订阅消息。

·       系统Topic类是由系统预定义的Topic类,不支持用户自定义,不采用/${YourProductKey}开头。例如,高级版中,针对物模型所提供的Topic类一般以/sys/开头;固件升级相关的Topic类以/ota/开头;设备影子的Topic类以/shadow/开头。

什么是Topic?

产品的Topic类不用于通信,只是定义Topic。用于消息通信的是具体的设备Topic。

您可以在域乎物联网平台控制台,对应的设备详情页的Topic类列表页,查看该设备支持的具体Topic。

·       Topic格式和Topic类格式一致。区别在于Topic类中的变量${YourDeviceName},在Topic中则是具体的设备名称。

·       设备对应的Topic是从产品Topic类映射出来,根据设备名称而动态创建的。设备的具体Topic中带有设备名称(即DeviceName),只能被该设备用于消息通信。例如,Topic:/${YourProductKey}/device1/user/update归属于设备名为device1的设备,所以只能被设备 device1 用于发布、订阅消息,而不能被设备 device2 用于发布、订阅消息。

·       使用规则引擎来转发设备数据,需配置相关Topic。在设置规则引擎时,配置的Topic中可使用通配符,且同一个类目中只能出现一个通配符。

表 1. Topic 通配符

通配符

描述

#

这个通配符必须出现在Topic的最后一个类目,代表本级及下级所有类目。例如, Topic:/${YourProductKey}/device1/user/#,可以代表/${YourProductKey}/device1/user/update和/${YourProductKey}/device1/user/update/error。

+

代表本级所有类目。例如,Topic:/${YourProductKey}/+/user/update,可以代表/${YourProductKey}/device1/user/update和/${YourProductKey}/device2/user/update。

 

四、自定义Topic

本文介绍如何为产品自定义Topic类。自定义Topic类将自动映射到该产品下的所有设备中。

操作步骤

1.       登录域乎物联网平台控制台

2.       左侧导航栏单击 > 产品概况

3.       产品管理页面,找到需要自定义Topic类的产品,并单击对应操作栏中的查看按钮。

4.       产品详情页面,单击消息通信 > 定义Topic类

5.       定义Topic类。
img6

·       设备操作权限:设备对该Topic的操作权限,可设置为发布、订阅、发布和订阅。

·       Topic类:根据页面上方的Topic规则设置Topic类的自定义类目名称。

·       描述:对自定义的Topic类进行描述,可以为空。

6.       单击确认

Topic类中的通配符

自定义Topic类时,您可以使用通配符。通配符内容请参考什么是Topic。其中:

·       #代表本级及下级所有类目。

·       +代表本级所有类目。

 

五、标签

域乎物联网平台的标签是您给设备自定义的标识。您可以使用标签功能来灵活管理设备。

物联网往往涉及量级设备的管理。如何区分不同批次的设备,如何实现批量管理,成为一大挑战。域乎物联网平台为解决这一问题提供了标签功能。您可以为不同设备贴上不同标签,然后根据标签实现分类统一管理。

标签的结构为Key:Value

设备标签

您可以根据设备的特性为设备添加特有的标签,方便对设备进行管理。例如,为房间 201 的智能电表定义一个标签为room:201。您可以在控制台管理设备标签,也可以通过 API 管理设备标签。

在控制台添加设备标签的操作步骤:

1.       登录域乎物联网平台控制台

2.       左侧导航栏选择设备管理 > 设备详情

3.       设备详情页面,找到标签信息部分,单击立即添加按钮。

4.       在弹出的对话框中,输入标签的 标签Key 和 标签Value,然后单击确认

 

img7

设备标签信息会跟随设备在系统内部流转。并且,域乎物联网平台可以基于规则引擎,将设备标签发给域乎其他云服务。

 

六、数据流转概览

使用域乎物联网平台规则引擎的数据流转功能,可将Topic中的数据消息转发至其他Topic或其他域乎产品进行存储或处理。

什么是数据流转

当设备基于Topic进行通信时,您可以在规则引擎的数据流转中,编写SQL对Topic中的数据进行处理,并配置转发规则将处理后的数据转发到其他Topic或域乎其他服务。例如:

·       将数据转发到另一个Topic中以实现M2M通信。

·       将数据转发到RDS表格存储TSDB中进行存储。

使用规则引擎的数据流转功能后,您无需购买服务器部署分布式架构,即可实现采集 + 计算 + 存储的全栈服务。

 

IMG_256

数据流转使用限制

·       数据流转基于Topic对数据进行处理。只有通过Topic进行通信时,才能使用数据流转。

·       通过SQL对Topic中的数据进行处理。

·       SQL语法目前不支持子查询。

·       支持部分函数,比如deviceName()获取当前设备名称,具体函数请参考函数列表档。

数据流转使用指南

i.       设置数据流转规则:如何设置一条转发规则。

ii.       SQL表达式:规则中SQL表达式的写法详解。

iii.       函数列表:规则中SQL表达式支持的函数列表。

iv.       数据流转过程:使用规则引擎数据流转过程中的数据流转格式。

v.       地域和可用区:确认支持的目的云产品及地域信息。

vi.       使用实例:不同云产品目的地的转发设置详解。

 

七、SQL表达式

建立数据流转规则时,可以编写SQL来解析和处理数据。其中,二进制格式的数据不做解析,直接透传。本文主要讲解SQL表达式。

SQL表达式

JSON数据可以映射为虚拟的表,其中Key对应表的列,Value对应列值,这样就可以使用SQL处理。为便于理解,我们将数据流转的一条规则抽象为一条SQL表达(类试MySQL语法):

 

IMG_256 

试用

 

例如某环境传感器用于火灾预警,可以采集温度、湿度及气压数据,上报数据内容如下:

{

"temperature":25.1

"humidity":65

"pressure":101.5

"location":"xxx,xxx"

}

假定温度大于38,湿度小于40时,需要触发报警,可以编写如下的SQL语句:SELECT temperature as t, deviceName() as deviceName, location FROM /ProductA/+/update WHERE temperature > 38 and humidity < 40

当上报的数据中,温度大于38且湿度小于40时,会触发该规则,并且解析数据中的温度、设备名称、位置,用于进一步处理。

FROM

FROM 可以填写Topic。而且,Topic中的设备名(deviceName)一级类目可以填写通配符+(代表本级所有类目),用于匹配需要处理的设备消息Topic。当有符合Topic规则的消息到达时,消息的payload数据以JSON格式解析,并根据SQL语句进行处理(如果消息格式不合法,将忽略此消息)。您可以使用topic()函数引用具体的Topic值。

试用

上文例子中,"FROM /ProductA/+/update"语句表示该SQL仅处理符合/ProductA/+/update格式的消息,具体匹配参考 Topic

SELECT

·       JSON数据格式

SELECT语句中的字段,可以使用上报消息的payload解析结果,即JSON中的键值,也可以使用SQL内置的函数,比如deviceName()

 

支持*和函数的组合。不支持子SQL查询。

 

上报的JSON数据格式,可以是数组或者嵌套的JSON,SQL语句支持使用JSONPath获取其中的属性值,如对于{a:{key1:v1, key2:v2}},可以通过a.key2 获取到值v2。使用变量时,需要注意单双引号区别:单引号表示常量,双引号或不加引号表示变量。如使用单引号'a.key2',值为a.key2

 

内置的SQL函数可以参考函数列表

 

试用

 

例如上文,"SELECT temperature as t, deviceName() as deviceName, location"语句,其中temperature和loaction来自于上报数据中的字段,deviceName()则使用了内置的SQL函数。

 

·       二进制数据格式

·       可填*直接透传数据。*后不能再使用函数。

·       可使用内置函数,如to_base64(*)函数,将原始Payload二进制数据转成base64String提取出来;deviceName()函数,将设备名称信息提取出来。

说明 SELECT语句中的字段最多支持50个。

WHERE

·       JSON数据格式

规则触发条件,条件表达式。不支持子SQL查询。WHERE中可以使用的字段和SELECT语句一致,当接收到对应Topic的消息时,WHERE语句的结果会作为是否触发规则的判断条件。具体条件表达式列表见下方表格。

 

试用

 

上文例子中, "WHERE temperature > 38 and humidity < 40" 表示温度大于38且湿度小于40时,才会触发该规则,执行配置。

 

·       二进制数据格式

目前二进制格式WHERE语句中仅支持内置函数及条件表达式,无法使用payload中的字段。

 

SQL结果

SQL语句执行完成后,会得到对应的SQL结果,用于下一步转发处理。如果payload数据解析过程中出错会导致规则运行失败。 转发数据动作中的表达式需要使用 ${表达式} 引用对应的值。

试用

对于上文例子,配置转发动作时,可以${t}${deviceName}${loaction}获取SQL解析结果,如果要将数据存储到TableStore,配置中可以使用${t}${deviceName}${loaction}

数组使用说明

数组表达式需要使用双引号,用$.表示取jsonObject,$.可以省略,.表示取jsonArray。

比如设备消息为: {"a":[{"v":0},{"v":1},{"v":2}]},不同表达式结果如下:

·       "a[0]" 结果为 {"v":0}

·       "$.a[0]" 结果为{"v":0}

·       ".a[0]" 结果为 [{"v":0}]

·       "a[1].v"结果为1

·       "$.a[1].v"结果为1

·       ".a[1].v" 结果为[1]

条件表达式支持列表

操作符

描述

举例

=

相等

color = ‘red’

<>

不等于

color <> ‘red’

AND

逻辑与

color = ‘red’ AND siren = ‘on’

OR

逻辑或

color = ‘red’ OR siren = ‘on’

( )

括号代表一个整体

color = ‘red’ AND (siren = ‘on’ OR isTest)

+

算术加法

4 + 5

-

算术减

5月4日

/

4月20日

*

5 * 4

%

取余数

20 % 6

<

小于

5 < 6

<=

小于或等于

5 <= 6

>

大于

6 > 5

>=

大于或等于

6 >= 5

函数调用

支持函数,详细列表请参考函数列表。

deviceId()

JSON属性表达式

可以从消息payload以JSON表达式提取属性。

state.desired.color,a.b.c[0].d

CASE … WHEN … THEN … ELSE …END

Case 表达式(不支持嵌套)

CASE col WHEN 1 THEN ‘Y’ WHEN 0 THEN ‘N’ ELSE ‘’ END as flag

IN

仅支持枚举,不支持子查询。

比如, where a in(1,2,3)。不支持以下形式: where a in(select xxx)

like

匹配某个字符, 仅支持%通配符,代表匹配任意字符串。

比如, where c1 like ‘%abc’, where c1 not like ‘%def%’

 

八、数据转发示例

 

您可以将依据SQL规则处理完的数据,设置转发到另一个Topic中,实现M2M或者更多其他场景

前提条件

在设置转发之前,您需要参考设置规则引擎编写SQL完成对数据的处理。

背景信息

本文将教您如何设置数据从Topic1中依照规则引擎设置转发到Topic2内:

IMG_256

操作步骤

1.       单击数据转发一栏的添加操作。出现添加操作页面。

img11 

2.       按照页面提示,设置参数。

·       选择操作:此处选择发布到另一个Topic

·       Topic:选择您需要把数据转发到哪一个产品中。

·       在选择产品后,还需补充完整该Topic。您可以使用${}表达式引用上下文值。

 

这里有最新的公司动态,这里有最新的网站设计、移动端设计、网页相关内容与你分享