华为云用户手册

  • 单个/批量导入 进入“设备-注册”界面,单击“注册设备”或“批量注册”。 图1 注册设备 按照下方参数说明填写关键参数信息后,完成注册。 表1 注册设备关键参数列表 参数名称 说明 产品 选择设备所属的产品名称。 批量导入时,需要填写产品ID。 设备标识码 设备唯一物理标识,如IMEI、MAC地址等,用于设备在接入 物联网平台 时携带该标识信息完成接入鉴权。 设备名称 设备发放时,设备名称将作为主要的筛选条件之一,建议按照统一的规则规划不同地区的设备名称。 例如:北京地区设备,设备名称都携带Beijing;香港地区设备,设备名称都携带Hongkong。 设备ID 设备ID默认为产品ID+“_”+设备标识码,用户也可自己定义。 发放策略 根据需求选择对应的发放策略类型,注册设备成功后,设备将按照对应的策略进行发放。 导入配置(LwM2M协议设备) 仅在设备使用LwM2M协议时需要填写以下参数: 引导服务端PSK:设备初次上电时,与设备发放服务建立DTLS连接,PSK验证通过后进行设备引导。 连接服务端PSK:设备连接 设备接入服务 、与平台建立DTLS连接时用于验证。 连接服务端PSK不需要烧录在设备中,设备首次上电后启动BootStrap流程时由平台下发。 安全模式:支持安全模式DTLS/DTLS+和非安全模式。选择DTLS模式或DTLS+模式,设备将通过安全端口5684接入平台,否则将通过非安全端口5683接入。 默认生命周期:设备开机后,如果没有归属物联网平台地址,且在默认生命周期内没有收到设备发放服务下发的地址,则根据注册的设备发放服务地址,向物联网平台发起请求。平台返回连接信息后,设备覆盖本地的注册的物联网平台地址,向指定的物联网平台地址发起注册。默认值为86400秒,最大值(7*86400秒)。 导入配置(MQTT协议设备) 仅在设备使用MQTT协议时需要填写以下参数: 安全模式:支持安全模式密钥模式和X.509证书模式。 设备密钥:选择密钥模式时该参数选填,如果不填系统会返回密钥,或从设备详情获取。 选择证书:选择X.509证书模式时该参数必填,选择当前注册设备所需要的证书。 证书指纹:根据证书生成的唯一识别证书的标识。与“自注册开关”参数选填其一或都填。 自注册开关:如果支持设备自注册,在设备首次认证时不会去认证设备ID和设备证书的关系。与“证书指纹”参数选填其一或都填。
  • LwM2M设备批量发放操作 本文以注册3个LwM2M设备,发放到中国站“华北-北京四”为例演示如何发放LwM2M设备。 前提条件 已在中国站“华北-北京四”的设备接入服务中创建应用。 获取终端节点。 表4 LWM2M设备终端节点列表 区 域名 称 区域 终端节点(Endpoint) 端口 协议 华北-北京四 cn-north-4 iot-bs.cn-north-4.myhuaweicloud.com 5683 LwM2M 华北-北京四 cn-north-4 iot-bs.cn-north-4.myhuaweicloud.com 5684 LwM2M + DTLS 操作步骤 进入“策略”界面,单击展开“静态策略”,单击“添加实例”。 按照下方参数说明填写关键参数信息后,单击“确定”。 表5 实例1-发放到北京 参数名称 说明 关键字 Beijing 优先级别 1级 发放区域 华北-北京四 发放应用 选择在“华北-北京四”的设备接入服务中创建的应用。 进入“设备”界面,单击“批量注册”。 下载模板,按照下方参数说明分别填写三个设备的关键参数信息后,选择模板文件并单击“保存”。 表6 LWM2M设备模板关键参数列表 参数名称 说明 nodeId 若有真实设备,填写为设备的IMEI或MAC地址;若没有真实设备,填写自定义字符串,不同设备的识别码不能重复。 name 分别填写为LwM2M_Beijing001,LwM2M_Beijing002,LwM2M_Beijing003。 productId 填写所要注册的设备所属产品的产品ID。 strategyTypeId 策略类型,填写0(静态策略)。 psk 可填写为12345678。 bootstrapPsk 可填写为87654321。 secure 填写为DTLS。 其他参数 留空。 图3 模板填写样例 在“操作记录”中查看注册结果,注册成功则继续下一步;注册失败则可单击“失败数”所在列的数字查看失败原因,修改模板后重新注册。 设备初次上电,先接入到设备发放平台,随后通过Bootstrap流程引导设备获得目标物联网平台地址,完成设备发放。
  • MQTT设备批量发放操作 本文以注册3个MQTT设备,发放到中国站“华北-北京四”为例演示如何发放MQTT设备。 前提条件 已在中国站“华北-北京四”的设备接入服务中创建应用。 操作步骤 进入“策略”界面,单击展开“静态策略”,单击“添加实例”。 按照下方参数说明填写关键参数信息后,单击“确定”。 表2 实例1-发放到北京 参数名称 说明 关键字 Beijing 优先级别 1级 发放区域 华北-北京四 发放应用 选择在“华北-北京四”的设备接入服务中创建的应用。 进入“设备”界面,单击“批量注册”。 下载模板,按照下方参数说明分别填写三个设备的关键参数信息后,选择模板文件并单击“保存”。 表3 MQTT设备模板关键参数列表 参数名称 说明 nodeId 若有真实设备,填写为设备的IMEI或MAC地址;若没有真实设备,填写自定义字符串,不同设备的识别码不能重复。 name 分别填写为MQTT_Beijing001,MQTT_Beijing002,MQTT_Beijing003。 productId 填写所要注册的设备所属产品的产品ID。 strategyTypeId 策略类型,填写0(静态策略)。 其他参数 留空。 图2 模板填写样例 在“操作记录”中查看注册结果,注册成功则继续下一步;注册失败则可单击“失败数”所在列的数字查看失败原因,修改模板后重新注册。 设备初次上电,先接入到设备发放平台,随后通过Bootstrap流程引导设备获得目标物联网平台地址,完成设备发放。
  • 创建资源空间 用户首次开通设备接入服务时,物联网平台自动为用户创建了一个默认资源空间,“默认资源空间”每个实例仅有一个,不允许删除。 您可以基于默认资源空间创建产品,注册设备等,也可以参考如下步骤创建新的资源空间。 图1 资源空间-资源空间列表 如果您是老用户,即2020年04月27日00:00前开通的设备接入服务,平台设置默认资源空间的规则请参考设置默认资源空间的规则。 访问设备接入服务,单击“管理控制台”进入设备接入控制台。 单击左侧导航栏“IoTDA实例”,选择您的实例,单击实例卡片进入实例。 在左侧导航栏选择“资源空间”,单击“新建资源空间”,在弹出的页面中,填写参数后,单击“确定”。 资源空间名称必须为账号下唯一。 图2 资源空间-创建资源空间
  • 业务流程 设备远程配置流程详细说明: 用户在设备接入服务的控制台上创建远程配置任务。一个应用下最多同时运行10个远程配置任务,每个任务最多支持对10万个设备下发配置。如果一个设备已经在一个已有的远程配置任务中,并且该设备远程配置还未完成,新建的远程配置任务如果包含该设备,则该设备的新远程配置將直接失败。 平台感知设备是否在线,当设备在线时立即下发配置给设备。当设备不在线时,等待设备上线订阅远程配置Topic,平台感知设备上线后下发配置。在创建远程配置任务时可以选择配置超时时间(1-30天),默认30天。 设备完成配置更新后,调用远程配置响应接口向物联网平台反馈配置更新结果。
  • 场景说明 将数据流转到influxDB,兼容InfluxDB生态的云原生时序数据库。提供高性能读写、高压缩率、冷热分层存储以及弹性扩容、监控告警等服务能力,可以实现大并发的时序数据读写,压缩存储和类SQL查询等功能,支持多维聚合计算和 数据可视化 分析能力。广泛应用于资源监控、业务监控分析、物联网设备实时监控、工业生产监控、生产质量评估和故障回溯等。提供了高吞吐量和并发性,可以通过快速的响应时间来支持大量的连接,非常适合要求苛刻的物联网应用。
  • 购买GeminiDB Influx 登录云数据库GeminiDB Influx,单击“立即购买”。 根据需求选择按需计费或者包年包月以及性能规格、存储空间等,兼容接口选择InfluxDB。具体可参考购买集群实例。 图1 购买influxDB实例 下载InfluxDB客户端,通过客户端连接实例,参考公网连接实例。 使用客户端连接实例后,通过以下命令创建数据库,${databaseName}可以自定义。 create database ${databaseName} 图2 创建数据库
  • 操作步骤 设备发起连接鉴权,鉴权参数填写规则参考设备连接鉴权。 设备鉴权成功后,发起广播Topic订阅,广播Topic必须为“$oc/broadcast/”前缀,样例如下: $oc/broadcast/test 应用服务器下发广播消息,指定Topic名称和消息内容。 POST https://{Endpoint}/v5/iot/{project_id}/broadcast-messagesContent-Type: application/jsonX-Auth-Token: ********{ "topic_full_name" : "$oc/broadcast/test", "message" : "eyJhIjoxfQ=="} 这里Topic必须为“$oc/broadcast/”前缀,消息内容需要使用BASE64编码。 设备接收广播消息,设备接收的广播消息样例如下。 Topic: $oc/broadcast/test 数据内容:{"a":1}
  • 建立连接 在com.iot.mqtt.example.demo.MqttConstants中设置接入地址及鉴权参数的值: // IoT平台mqtt接入地址,替换成"连接配置说明中"的"MQTT接入域名。String HOST = "${HOST}";// 接入凭证,替换成"获取MQTT接入凭证"中获取的接入凭证。String AC CES S_KEY = "${accessKey}";String ACCESS_CODE = "${accessCode}";// 实例ID,当同一region购买多个标准版实例该参数必填。String INSTANCE_ID = "${instanceId}";// 接收数据的Topic,替换成"创建规则动作"中的Topic。String SUBSCRIBE_TOPIC = "${subscribeTopic}"; Demo中涉及的参数说明,请参考连接配置说明。 运行com.iot.mqtt.example.demo.MqttDemo样例代码,根据以下日志信息判断是否订阅成功。该示例忽略服务端证书校验,如需校验服务端证书可参考com.iot.mqtt.example.demo.MqttTlsDemo。 订阅成功。 图1 订阅成功 订阅失败。 用户名或密码错误。 图2 用户或密码错误 订阅的Topic不存在。 图3 订阅topic不存在
  • 使用展示 打开界面如下,其中“INSTANCE ID”在同一区域购买多个IoTDA标准版实例时必填,详细参数说明,请参考AMQP客户端接入说明。 图7 Amqp连接配置 修改连接参数后连接成功界面如下: 图8 连接成功 获取流转数据成功界面如下: 图9 接收平台消息 网络连接失败界面如下: 图10 网络连接失败 接入信息(accessKey、accessCode、instanceId)错误界面如下: 图11 接入信息错误 队列不存在错误界面如下: 图12 队列不存在错误
  • 准备工作 安装android studio。访问android studio官网,选择合适系统的版本下载并安装。(本文以windows 64-bit系统Android Studio 4.1.1为例)。 图1 下载android studio 安装JDK(也可以使用IDE自带的JDK)。 访问Oracle官网,选择合适的JDK版本单击“Download”下载(本文以Windows x64 JDK8为例)。 下载完成后,运行安装文件,根据界面提示安装。
  • 代码示例 下载Amqp Demo样例。 运行Android Studio,单击“Open”,选择1中下载的样例。 图2 导入已有项目 完成代码导入。 图3 导入项目结构 (可选) 可以在res\values\strings.xml文件中提前配置Amqp连接参数,涉及的参数说明,请参考AMQP客户端接入说明。 图4 修改连接参数 AVD Manager配置,选择任意设备模型并且API Level 28的虚拟设备用于调试。 图5 配置AVD Manager 启动demo进行调试。 图6 启动demo
  • 标签命名规则 每个标签由一对键值对(Key-Value)组成。 每个IoTDA实例最多可以添加20个标签。 对于每个资源,每个标签键(Key)都必须是唯一的,每个标签键(Key)只能有一个值(Value)。 标签共由两部分组成:“标签键”和“标签值”,其中,“标签键”和“标签值”的命名规则如表1所示。 表1 标签命名规则 参数 规则 样例 标签键 不能为空。对于同一个实例,Key值唯一。最大长度36个字符。 字符集:A-Z,a-z , 0-9,‘-’,‘_’,UNICODE字符(\u4E00-\u9FFF) Organization 标签值 每个值最大长度43个字符,可以为空字符串。 字符集:A-Z,a-z , 0-9,‘.’,‘-’,‘_’,UNICODE字符(\u4E00-\u9FFF) Apache 如您的组织已经设定IoTDA的相关标签策略,则需按照标签策略规则为实例添加标签。标签如果不符合标签策略的规则,则可能会导致实例创建失败,请联系组织管理员了解标签策略详情。
  • 连接鉴权 MQTT.fx 是目前主流的MQTT桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息。 本文主要介绍 MQTT.fx 如何与华为设备发放交互,其中设备发放服务MQTT的南向接入地址请参考获取终端节点。 下载 MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载 MQTT.fx ),安装MQTT.fx工具。 打开 MQTT.fx 客户端程序,单击“设置”。 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的参数配置。 填写 User Credentials 信息。 其中Username 和Password 参数参考MQTT CONNECT连接鉴权参数说明。 选择开启 SSL/TLS,勾选CA certificate file,CA Certificate File指定为物联网平台根证书(请先下载物联网平台的根证书,解压后,选择其中c或java目录下PEM后缀的文件)的本地路径。 完成以上步骤后,单击“Apply”和“OK”保存,并在配置文件框中选择刚才创建的文件名,单击“Connect”,当右上角圆形图标为绿色时,说明连接设备发放服务成功,可进行订阅(Subscribe)和消息推送(Publish)操作。
  • 接口功能 设备发放平台设备侧支持MQTT协议的connect消息接口,接口规范参考MQTT标准规范,鉴权通过后建立设备与平台间的MQTT连接。 设备发放平台目前只支持MQ TTS 接入,设备通过connect消息接口和平台建立MQTT连接时,需要使用服务端CA证书验证服务端证书。服务端CA证书单击huaweicloud-iot-root-ca-list获取证书文件压缩包。 根据您使用的工具或语言取用压缩包内的证书文件: IoT Device SDK(C/C#)、MQTT.fx工具:使用压缩包中c目录下以pem或crt为后缀的文件; IoT Device SDK(Java):使用压缩包中java目录下以jks为后缀的文件; IoT Device SDK(Android):使用压缩包中android目录下以bks为后缀的文件。
  • 参数说明 表1 设备发放参数说明列表 参数 必选/可选 类型 参数描述 clientId 必选 String(256) 注册组选择非华为云证书场景: 设备clientId由3个部分组成:设备ID、设备身份标识类型、用户标识ID(ScopeID)。通过下划线“_”分隔,设备身份标识类型固定值为0 例:5f052ac562369102d42b0fb6_0_ff5bbx7a488f 其他场景: 设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳。通过下划线“_”分隔,设备身份标识类型固定值为0 密码签名类型:长度1字节,当前支持2种类型: “0”代表HMA CS HA256不校验时间戳。 “1”代表HMACSHA256校验时间戳。 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。 例:5f052ac562369102d42b0fb6_0_0_2019122614 Username 必选 String(256) 设备ID。 Password 必选 String(256) Password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值(secret为注册设备时平台返回的secret)。 当设备认证类型使用密钥认证接入(SECRET)需填写“Password”,证书认证接入(CERTIFICATES)不需填写“Password”。 注:ScopeID可以在设备发放页面单击注册组查询,如下图所示。 图1 查看ScopeId 设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。 connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。 访问参数生成工具,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成设备连接鉴权所需的参数(ClientId、Username、Password)。
  • 动态完成不同批次设备初始化配置 当不同型号的设备在首次连接设备接入时需要具备不同的初始化状态,可以通过设备发放完成不同批次设备初始化配置。 具体使用示例参考: MQTT 密钥设备使用静态策略发放示例 MQTT 密钥设备使用静态策略发放是设备预注册的场景,需要为每个设备预置初始化的值。 MQTT 注册组静态策略发放示例 MQTT 注册组静态策略发放是设备注册组的场景,只需要为注册组设置一个初始化的值,那么对应这个组的设备都可以收到下发的初始化配置。一般来说:设备初始化配置会配合注册组使用。
  • 代码示例 在本地计算机创建一个JavaScript文件(例:HwIotAmqpClient.js),保存以下示例代码到文件中。参考AMQP客户端接入说明修改相关连接参数。 const container = require('rhea');//获取当前时间戳var timestamp = Math.round(new Date());//建立连接。var connection = container.connect({ //接入域名,请参考这里。 'host': '${UUCID}.iot-amqps.cn-north-4.myhuaweicloud.com', 'port': 5671, 'transport': 'tls', 'reconnect': true, 'idle_time_out': 8000, //userName组装方法,请参考这里。 'username': 'accessKey=${yourAccessKey}|timestamp=' + timestamp + '|instanceId=${instanceId}', //accessCode,请参考这里。 'password': '${yourAccessCode}', 'saslMechannisms': 'PLAIN', 'rejectUnauthorized': false, 'hostname': 'default',});//创建Receiver连接。 队列名,可以使用默认队列DefaultQueuevar receiver = connection.open_receiver('${yourQueue}');//接收云端推送消息的回调函数。container.on('message', function (context) { var msg = context.message; var content = msg.body; console.log(content); //发送ACK,注意不要在回调函数有耗时逻辑。 context.delivery.accept(); }); 进入上一步创建的文件(HwIotAmqpClient.js)所在目录,执行以下命令安装rhea库。 npm install rhea 安装完成后,项目文件如下图所示。 通过命令启动AMQP客户端,命令如下。 node HwIotAmqpClient.js 运行结果示例 订阅成功: 显示如下日志代表AMQP客户端订阅成功,并成功获取到物联网平台数据。 订阅失败 以下日志代表AMQP客户端在物联网平台鉴权失败,请确认接入码是否正确,时间戳与标准时间的差异是否大于5分钟。
  • 制作调测证书 调测证书,又叫做自签名证书,用于客户端通过HTTPS访问服务端时进行安全认证。在物联网平台的使用中,可用于物联网平台向应用服务器采用HTTPS协议推送数据时,物联网平台认证应用服务器的合法性。本文以Windows环境为例,介绍通过Openssl工具制作调测证书的方法,生成的证书为PEM编码格式的证书,后缀为.cer。 常见的证书存储格式如下表所示。 存储格式 说明 DER 二进制编码,后缀名.der/.cer/.crt PEM BASE 64编码,后缀名.pem/.cer/.crt JKS Java的证书存储格式,后缀名.jks 自签名证书仅用于调测阶段,在商用时,您需要向知名CA机构申请证书,否则可能会带来安全风险。 在浏览器中访问这里,下载并安装OpenSSL工具。 以管理员身份运行cmd命令行窗口。 执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。 执行如下命令生成CA根证书私钥文件ca_private.key。 openssl genrsa -passout pass:123456 -aes256 -out ca_private.key 2048 aes256:代表加密算法。 passout pass:代表私钥密码。 2048:代表密钥长度。 执行如下命令使用CA根证书私钥文件生成csr文件ca.csr,用于6生成CA根证书。 openssl req -passin pass:123456 -new -key ca_private.key -out ca.csr -subj "/C=CN/ST=GD/L=SZ/O=Huawei/OU=IoT/CN=CA" 如下信息您可以根据实际情况进行修改。 C:代表国家,填写CN。 ST:地区,如GD。 L:城市,如SZ。 O:组织,如Huawei。 OU:组织单位,如IoT。 CN:Common Name,填写为CA的组织名,如CA。 执行如下命令生成CA根证书ca.cer。 openssl x509 -req -passin pass:123456 -in ca.csr -out ca.cer -signkey ca_private.key -CAcreateserial -days 3650 如下信息您可以根据实际情况进行修改。 passin pass:必须与4中设置的私钥密码保持一致。 days:代表证书有效期。 执行如下命令生成应用服务器端私钥文件。 openssl genrsa -passout pass:123456 -aes256 -out server_private.key 2048 执行如下命令生成应用服务器端csr文件,用于生成服务端证书。 openssl req -passin pass:123456 -new -key server_private.key -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=Huawei/OU=IoT/CN=appserver.iot.com" 如下信息您可以根据实际情况进行修改。 C:代表国家,填写CN。 ST:地区,如GD。 L:城市,如SZ。 O:组织,如Huawei。 OU:组织单位,如IoT。 CN:Common Name,一般填写为应用服务器的域名或IP。 通过CA私钥文件ca_private.key对服务端csr文件server.csr进行签名,生成服务端证书文件server.cer。 openssl x509 -req -passin pass:123456 -in server.csr -out server.cer -sha256 -CA ca.cer -CAkey ca_private.key -CAserial ca.srl -CAcreateserial -days 3650 (可选)如果您需要.crt/.pem后缀的证书,可以根据如下命令进行转换。下面将以server.cer转为为server.crt为例进行说明,需要转换ca.cer证书时,请将命令中的server替换为ca。 openssl x509 -inform PEM -in server.cer -out server.crt 在openssl安装目录的bin文件夹下,获取生成的CA证书(ca.cer/ca.crt/ca.pem)、应用服务器证书(server.cer/server.crt/server.pem)和私钥文件(server_private.key)。其中CA证书用于加载到物联网平台,应用服务器证书和私钥文件用于加载到应用服务器。
  • 概述 订阅推送的示意图如下图所示: 物联网平台采用HTTPS协议向应用服务器进行消息推送时,物联网平台需要校验应用服务器的真实性,需要在物联网平台上加载CA证书,该证书由应用服务器侧提供(调测时可自行制作调测证书,商用时建议更换为商用证书,否则会带来安全风险)。 推送机制:物联网平台向应用服务器推送消息后,如果应用服务器接收消息成功,会向物联网平台返回200 OK响应码。如果应用服务器无响应(或响应时间超过15秒),或者应用服务器向物联网平台返回非200响应码(如500、501、502、503、504等),表示消息推送失败,消息推送失败后该消息将被丢弃。推送失败连续累计达到10次,物联网平台会将该订阅URL的主机地址加入黑名单,在黑名单期间消息将会积压在平台(默认积压最近24小时或1GB数据,若只想保留最新数据可参考数据转发积压策略配置进行配置)。此后每3分钟尝试对黑名单中的订阅URL主机地址进行消息推送,如果推送失败,则继续保持黑名单;如果推送成功,则解除黑名单。解除黑名单后消息将会以最大流控值推送完积压的消息后才会正常推送最新消息(默认流控为800TPS,自定义配置参考数据转发流控策略配置)。
  • 生成设备证书 使用OpenSSL工具为设备证书生成密钥对(设备私钥): openssl genrsa -out deviceCert.key 2048 使用设备密钥对,生成证书签名请求文件: openssl req -new -key deviceCert.key -out deviceCert.csr 生成证书签名请求文件时,要求填写证书唯一标识名称(Distinguished Name,DN)信息,参数说明如下表2所示。 表3 证书签名请求文件参数说明 提示 参数名称 取值样例 Country Name (2 letter code) []: 国家/地区 CN State or Province Name (full name) []: 省/市 GuangDong Locality Name (eg, city) []: 城市 ShenZhen Organization Name (eg, company) []: 组织机构(或公司名) Huawei Technologies Co., Ltd. Organizational Unit Name (eg, section) []: 机构部门 Cloud Dept. Common Name (eg, fully qualified host name) []: CA名称(CN) Huawei IoTDP CA Email Address []: 邮箱地址 / A challenge password []: 证书密码,如您不设置密码,可以直接回车 / An optional company name []: 可选公司名称,如您不设置,可以直接回车 / 使用CA证书、CA证书私钥和CSR文件创建设备证书(deviceCert.crt)。 openssl x509 -req -in deviceCert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out deviceCert.crt -days 36500 -sha256 生成设备证书用到的“rootCA.crt”和“rootCA.key”这两个文件,为“制作CA证书”中所生成的两个文件,且需要完成“上传并验证CA证书”。 “-days”后的参数值指定了该证书的有效天数,此处示例为36500天,您可根据实际业务场景和需要进行调整。
  • 连接鉴权 MQTT.fx 是目前主流的MQTT桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息。 本文主要介绍 MQTT.fx 如何与华为设备发放交互,其中设备发放服务MQTT的南向接入地址请参考获取终端节点。 下载 MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载 MQTT.fx ),安装MQTT.fx工具。 打开 MQTT.fx 客户端程序,单击“设置”。 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的参数配置。 填写 User Credentials 信息。 其中Username 参考MQTT CONNECT连接鉴权参数说明(无需填写Password)。 注:注册组的场景不存在选择产品,所以命名需要注意:如果命名字符串有“_”,那么第一项必须为对应设备接入已经存在的产品ID,如果不包括“_”,那么可以随意命名。 选择开启 SSL/TLS,勾选Self signed certificates,配置相关证书内容。 CA File为设备发放对应的CA证书。 Client Certificate File为设备的设备证书。 Client Key File为设备的私钥。 完成以上步骤后,单击“Apply”和“OK”保存,并在配置文件框中选择刚才创建的文件名,单击“Connect”,当右上角圆形图标为绿色时,说明连接设备发放服务成功,可进行订阅(Subscribe)和消息推送(Publish)操作。
  • 上传并验证CA证书 登录设备发放控制台,进入“证书”界面,单击右上角“上传CA证书”,填写“证书名称”并上传上述“制作CA证书”步骤后生成的“CA证书(rootCA.crt文件)”,单击“确定”。 图1 上传CA证书 验证步骤1中上传的CA证书,只有成功验证证书后该证书方可使用。 为验证证书生成密钥对。 openssl genrsa -out verificationCert.key 2048 获取随机验证码。 图2 上传CA证书完成页 图3 复制验证码 利用此验证码生成证书签名请求文件CSR。 openssl req -new -key verificationCert.key -out verificationCert.csr CSR文件的Common Name (e.g. server FQDN or YOUR name) 需要填写前一过程中获取到的随机验证码。 使用CA证书、CA证书私钥和CSR文件创建验证证书(verificationCert.crt)。 openssl x509 -req -in verificationCert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out verificationCert.crt -days 500 -sha256 生成验证证书用到的“rootCA.crt”和“rootCA.key”这两个文件,为“制作CA证书”中所生成的两个文件。 “-days”后的参数值指定了该证书的有效天数,此处示例为500天,您可根据实际业务场景和需要进行调整。 上传验证证书进行验证。 图4 上传验证证书
  • 制作CA证书 在浏览器中访问这里,下载并进行安装OpenSSL工具,安装完成后配置环境变量。 在 D:\certificates 文件夹下,以管理员身份运行cmd命令行窗口。 生成密钥对(rootCA.key): 生成“密钥对”时输入的密码在生成“证书签名请求文件”、“CA证书”,“验证证书”以及“设备证书”时需要用到,请妥善保存。 openssl genrsa -des3 -out rootCA.key 2048 使用密钥对生成证书签名请求文件: 生成证书签名请求文件时,要求填写证书唯一标识名称(Distinguished Name,DN)信息,参数说明如下表1 所示。 表2 证书签名请求文件参数说明 提示 参数名称 取值样例 Country Name (2 letter code) []: 国家/地区 CN State or Province Name (full name) []: 省/市 GuangDong Locality Name (eg, city) []: 城市 ShenZhen Organization Name (eg, company) []: 组织机构(或公司名) Huawei Technologies Co., Ltd. Organizational Unit Name (eg, section) []: 机构部门 Cloud Dept. Common Name (eg, fully qualified host name) []: CA名称(CN) Huawei IoTDP CA Email Address []: 邮箱地址 / A challenge password []: 证书密码,如您不设置密码,可以直接回车 / An optional company name []: 可选公司名称,如您不设置,可以直接回车 / openssl req -new -key rootCA.key -out rootCA.csr 生成CA证书(rootCA.crt): openssl x509 -req -days 50000 -in rootCA.csr -signkey rootCA.key -out rootCA.crt “-days”后的参数值指定了该证书的有效天数,此处示例为50000天,您可根据实际业务场景和需要进行调整。
  • 设备引导 下载并修改华为SDK示例代码进行设备引导(这里以java sdk代码为示例)。 用IDEA/Eclipse打开SDK代码工程,修改DEMO示例BootstrapSample中的参数,其中deviceId和secret替换为步骤3中生成的设备ID和密钥即可,bootstrapUri为获取设备发放终端节点对应的终端节点。 运行DEMO程序,看到如下日志,代表设备发放成功,并且已经收到设备发放下发的设备接入地址。如果程序运行没报错,在对应的设备接入平台可以看到设备,并已在线。
  • 连接鉴权 MQTT.fx 是目前主流的MQTT桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息。 本文主要介绍 MQTT.fx 如何与华为设备发放交互,其中设备发放服务MQTT的南向接入地址请参考获取终端节点。 下载 MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载 MQTT.fx ),安装MQTT.fx工具。。 打开 MQTT.fx 客户端程序,单击“设置”。 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的参数配置。 填写 User Credentials 信息。 其中Username 参考MQTT CONNECT连接鉴权参数说明(无需填写Password)。 注:注册组的场景不存在选择产品,所以命名需要注意:如果命名字符串有“_”,那么第一项必须为对应设备接入已经存在的产品ID,如果不包括“_”,那么可以随意命名。 选择开启 SSL/TLS,勾选Self signed certificates,配置相关证书内容。 CA File为设备发放对应的CA证书。 Client Certificate File为设备的设备证书。 Client Key File为设备的私钥。 完成以上步骤后,单击“Apply”和“OK”进行保存,并在配置文件框中选择刚才创建的文件名,单击“Connect”,当右上角圆形图标为绿色时,说明连接设备发放服务成功,可进行订阅(Subscribe)和消息推送(Publish)操作。
  • 使用服务质量 支持MQTT的服务质量等级为QoS 0、QoS 1,不支持QoS 2。 Topic的QoS为 0 时,消息下发不需要等设备回ACK,仅只下发一次; Topic的QoS为 1时,消息下发需要等设备回ACK。 平台默认该设备订阅了QoS为0的系统Topic, 如果需要QoS为1的下行系统Topic,需要设备设置订阅QoS。 设备订阅非$oc开头的自定义Topic, 如果需要平台支持该Topic的QoS为1, 需向平台提交工单联系申请。 如果设备订阅Topic的QoS为1, 平台下发消息没有收到设备确认ACK时, 平台会重发消息, 默认每隔2s重发1次, 共重发3次; 重发后设备依旧没有回确认响应且消息还在缓存时间内, 设备再次上线或订阅Topic时, 平台会再重发消息, 默认每隔10s重发1次, 共重发5次; 同时每次重发也会触发每隔2s重发机制, 故订阅Topic的QoS为1时平台会重发消息。平台重发消息后,设备会收到重复消息,建议设备要有去重机制。
  • 消息缓存下发使用说明 消息下发是平台向设备直接下发消息的一种方式。消息下发具有缓存特性,当设备不在线时,平台会对下发的消息进行缓存,直到设备上线。 以下使用系统Topic进行设备消息缓存下发说明: 图1 消息缓存下发流程 应用侧或平台用下发设备消息接口,下发请求到物联网平台,下发消息样例如下: POST https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/messagesContent-Type: application/jsonX-Auth-Token: ********{ "message_id": "99b32da9-cd17-4cdf-a286-f6e849cbc364", "name": "messageName", "message": "HelloWorld"} 物联网平台向应用返回201 Created,消息状态为PENDING。 物联网平台通过设备消息状态变更通知接口推送消息结果给应用,设备未上线时,设备消息状态为缓存(PENDING),对应的消息样例如下: Topic: $oc/devices/{device_id}/sys/messages/down 数据格式:{ "resource": "device.message.status", "event": "update", "notify_data": { "message_id": "string", "name": "string", "device_id": "string", "status": "PENDING", "timestamp": "string" } } 设备上线。 设备订阅消息下发的topic(平台采用了隐式订阅的功能,对于下行的系统topic,设备无需订阅,非系统topic需要设备订阅),用于接收消息。 物联网平台根据协议规范下发消息给设备。下发的消息样例如下: Topic: $oc/devices/{device_id}/sys/messages/down 数据格式:{ "object_device_id": "{object_device_id}", "name": "name", "id": "id", "content": "hello"} 平台将消息的最终结果推送给应用服务器,设备消息状态为已发送(DELIVERED)。使用接口:设备消息状态变更通知接口。 Topic: $oc/devices/{device_id}/sys/messages/down 数据格式:{ "resource": "device.message.status", "event": "update", "notify_data": { "message_id": "string", "name": "string", "device_id": "string", "status": "DELIVERED", "timestamp": "string" } }
  • 下发消息状态 MQTT设备消息执行状态以及状态变化机制如下所示。 图4 设备消息状态 表2 消息执行状态 消息执行状态 说明 缓存(PENDING) MQTT协议设备不在线,物联网平台会将消息进行缓存,此时任务状态为“缓存”状态。 超时(TIMEOUT) 物联网平台缓存的PENDING状态的消息,如果1天之内(支持配置,最长缓存时间24小时)还没有下发下去,物联网平台会将消息状态设置为“超时”。 已发送(DELIVERED) 物联网平台将消息发送给设备后,状态变为“已发送”。 失败(FAILED) 物联网平台发送消息给设备不成功,消息状态变为“失败”。
  • 概述 消息下发不依赖产品模型,提供给设备的单向通知,具有消息缓存功能;云端消息下发中,平台会以异步方式(消息下发后无需等待设备侧回复响应)下发消息给设备;若设备不在线,则在设备上线后发送数据(支持配置,最长缓存时间24小时)。平台对每个设备默认只保存20条消息,超过20条后,后续的消息会替换下发最早的消息。同时,消息下发支持使用自定义topic的格式进行数据下发。 表1 消息下发Topic类别 消息下发Topic类别 描述 系统Topic 平台预先定义了各种设备和平台通信的Topic,具体Topic列表和功能说明可参考Topic定义。 自定义Topic 用户可以自定义Topic,设备和平台间可以基于用户自定义的Topic进行通信。 自定义topic分类: 在产品中定义需要使用的Topic,这类Topic有$oc/devices/{device_id}/user/前缀,消息上报或者消息下发时平台会校验Topic是否在产品中定义,未在产品中定义的Topic会被平台拒绝。使用方式可以参考链接使用自定义Topic进行通信的最佳实践。 使用非$oc开头的自定义Topic,如/aircondition/data/up进行消息通信,这类Topic平台不校验Topic权限,根据MQTT协议定义的规则进行Topic的消息上下行通信。使用方式可以参考链接第三方云设备迁移至华为云最佳实践。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全