华为云用户手册

  • 使用MQTT_Simulator接入 下载MQTT_Simulator模拟器(默认是64位操作系统),并启动模拟器,如下图: 界面展示 模拟器提供了界面显示,填写Server地址、设备ID、设备密钥。请根据实际创建的设备信息填写。 Server地址:即 域名 ,参考平台对接信息获取; 设备ID和设备密钥:在这里获取。 不同的Server地址SSL加密接入时要与对应的证书文件匹配使用,证书获取请参考获取资源,需要替换certificate文件夹下的证书,如下图: 用户可以选择设备侧建链时是否为SSL加密,选择Qos方式是0还是1,当前不支持Qos2,可参考使用限制。 新建连接 设备或网关在接入 物联网平台 时首先需要和平台建立连接,从而将设备或网关与平台进行关联。开发者通过传入设备信息,将设备或网关连接到物联网平台。单击新建连接按钮,域名、设备ID和密钥正确的情况下,可以看到日志设备连接成功,可在平台查看设备状态,如下图: 图14 设备列表-设备在线 订阅Topic 订阅某topic的设备才能接收broker发布的关于该topic的消息,关于平台预置topic可参考Topic定义。 建链后,如果成功订阅Topic,主界面日志栏显示如下信息: 发布Topic 发布Topic是指设备主动向平台上报自己的属性或消息,详细见设备属性上报接口文档。 在模拟器中实现了上报Topic、属性上报功能。 输入要上报的JSON message,上报luminance属性为30。发布Topic后,Demo界面显示如下: 设备上报属性成功后可在“设备详情”页面查看到上报的属性: 图15 查看上报数据-MQTT 接收下发命令 模拟器支持接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在控制台设备详情中对该设备进行同步命令下发。下发成功后,在MQTT的回调函数中接收到平台下发给设备的命令。 例如用户想远程开灯,下发参数名为LightControl: switch,参数值为ON的命令。 图16 命令下发-同步命令下发 同步命令下发成功后,Demo界面显示如下:
  • 连接鉴权 使用MQTT.fx工具激活在物联网平台上注册的设备。 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。 访问这里,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成连接信息(ClientId、Username、Password)。 参数 必选/可选 类型 参数描述 ClientId 必选 String(256) 一机一密的设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳,通过下划线“_”分隔。 设备ID:指设备在平台成功注册后生成的唯一设备标识,通常由设备的产品ID和设备的NodeId通过分隔符“_”拼装而来。 设备身份标识类型:固定值为0,表示设备ID。 密码签名类型:长度1字节,当前支持2种类型: “0”代表HMA CS HA256不校验时间戳。 “1”代表HMACSHA256校验时间戳。 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。 Username 必选 String(256) 设备ID。 Password 必选 String(256) 加密后的设备密钥。Password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值。 secret为注册设备时平台返回的secret。 设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。 使用生成工具生成的clientId格式,默认不校验时间戳:设备ID_0_0_时间戳。 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。 connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。 打开MQTT.fx软件,单击设置图标。 参考下表配置鉴权参数,然后单击“Apply”。 参数名称 说明 Broker Address 填写从 设备接入服务 控制台获取的平台对接信息,此接入地址为域名信息。不能通过域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。 Broker Port 默认为1883。 Cliend ID 设备cliendID,请参考2中获取。 User Name 即设备ID,请参考2中获取。 Password 加密后的设备密钥,请参考2中获取。 单击“Connect”,设备鉴权成功后,在物联网平台可以看到设备处于在线状态。 图11 设备在线
  • 开发产品模型 找到新增的产品,单击产品进入产品界面。 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。 图3 自定义模型-MQTT 新增服务类型“BasicData”。 在“添加服务”页面,根据页面提示填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 图4 添加服务-BasicData 在“BasicData”服务列表右侧区域,单击“新增属性”,填写相关信息后,单击“确定”。 图5 新增属性-luminance 新增服务类型“LightControl”。 在“基本信息”下单击“添加服务”,根据页面提示填写后,单击“确定”。 “服务ID”:LightControl “服务类型”:建议和服务ID保持一致 “服务描述”:路灯开关控制 在“LightControl”的下拉菜单下单击“添加命令”,输入命令名称“Switch”。 图6 新增命令-Switch 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。 图7 新增命令参数-value
  • MQTT设备消息下发 本示例通过使用postman,下发开启室内空调指令。 使用MQTT.fx模拟器,订阅自定义Topic。 确保创建自定义Topic时,设备操作权限包含“订阅”功能,详细操作请参考自定义Topic。 使用IoT Device SDK或者原生MQTT协议接入的设备,需要在设备程序中,设置设备订阅的自定义Topic名称。 使用postman工具模拟应用侧调用下发设备消息接口,下发开启室内空调的命令。 调用查询设备消息接口,查看下发命令是否成功。若命令下发成功,室内空调将会被开启。
  • 设备引导请求 终端节点 区域名称 区域 终端节点(Endpoint) 端口 协议 华北-北京四 cn-north-4 iot-bs.cn-north-4.myhuaweicloud.com 8883 MQ TTS 下载并修改华为SDK示例代码进行设备引导(这里以java sdk代码为示例)。 用IDEA/Eclipse打开SDK代码工程,修改iot-device-demo目录下的DEMO示例“BootstrapSample”中的参数,其中deviceId和secret替换为注册设备中生成的设备ID和密钥即可,bootstrapUri为上述终端节点。 运行DEMO程序,看到如下日志,代表设备发放成功,并且已经收到设备发放下发的设备接入地址。如果程序运行没报错,在对应的设备接入平台可以看到设备,并已在线。 收到设备发放下发的设备接入地址后,需要关闭设备侧的设备发放的连接,用的新的URL地址与设备接入通信,进行相关业务。
  • 业务流程 创建策略。其中以静态策略为例。 注册设备。注册MQTT协议的设备,体验发放业务。可以注册单个,也可以批量注册设备。 设备请求引导。 设备接收信息,解析出IoT接入实例地址,与IoT接入实例1进行通信。 动态扩容设备接入实例,创建对应实例的资源空间,在对应资源空间下上传产品。 注册设备。选择对应实例的产品创建设备。 新增策略。添加新实例的静态策略,以不同的关键字命名静态策略。 设备请求引导。 设备接收信息,解析出IoT接入实例地址,与IoT接入实例2进行通信。 应用主动设备发放控制台与设备侧通信。
  • 创建策略 有两种使用场景:设备发放控制台 用户预先开通了多个实例,通过设备的不同销售数据,根据对应的策略,设备上电自动发放到对应的实例。 用户预先只开通一个实例,预先创建对应的策略把设备发放到当前实例。当对应实例达到上限,动态开通新的接入实例,用户删除当前策略,添加新的策略,把新上电的设备发放到新开通的实例。 本示例讲述的是第二种使用场景。 登录设备发放控制台,进入到策略页面的静态策略页面,单击添加实例,根据关键字发放到指定的IoTDA实例。 图1 创建静态策略 图2 创建静态策略详情
  • 场景说明 随着厂商IoT设备的不断增加,或者厂商设备本来就面向多个销售中心(不同的销售中心有着自己的IoT接入实例),面对这样的场景,厂商在设备出厂的时候不知道设备最终需要连接到哪个IoT接入实例,设备出厂后不希望再对设备进行二次烧录。为此,华为IoT解决方案推出设备发放服务,设备出厂统一烧录设备发放的地址,通过在设备发放服务预置不同的发放策略,设备上电后自动发放到对应的IoT接入实例,并把对应的IoT接入实例地址下发给设备,设备就可以和目的接入实例实现通信。
  • 注册设备 本次以注册单个MQTT密钥设备为示例,登录设备发放控制台,进入到“设备”页面,单击“注册”,选择对应接入点的产品进行设备注册,设备名称为“Model1_001”,填写设备的密钥,发放策略选择“静态策略”,创建设备。 实际使用中,用户可以使用批量注册功能注册大量设备。下载批量注册模板,按照模板说明正确填写后上传批量注册文件以批量注册设备。建议每个设备名称的以策略的关键字开头(比如策略关键字为Model1,设备名称为Model1_XXX001)。 图3 设备列表 图4 注册设备产品列表 图5 创建密钥模式静态策略设备
  • 模拟数据上报及结果验证 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行属性上报(参考:设备属性上报)。 上报内容如下: {"services": [{"service_id": "order","properties": {"orderID": "0000002","area": "罗湖区","orderTime": "20220815T121215Z","goods": "商品02","amount": 30.5 },"event_time": "20220815T121215Z" } ]} 打开 数据可视化 服务查看数据是否刷新。 图15 结果查看
  • 数据上报及验证数据是否转发成功 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行属性上报(参考:设备属性上报)。 上报内容如下: {"services": [{"service_id": "order","properties": {"orderID": "0000001","area": "南山区","orderTime": "20220815T121215Z","goods": "商品01","amount": 30.5 },"event_time": "20220815T121215Z" } ]} 前往OBS控制台,查看转发目标设置的文件是否生成。 图7 查看OBS桶内文件
  • 创建产品和设备 访问设备接入服务,单击“立即使用”进入设备接入控制台。 选择左侧导航栏的“产品”,在搜索框中选择新建产品所属的资源空间。 单击左侧的“创建产品”,创建一个基于MQTT协议的产品,填写参数后,单击“确定”。 图3 创建产品-MQTT 为上一步创建的产品导入产品模型,请参考导入产品模型。 选择第3步创建的产品,在该产品下注册设备、请参考注册单个设备。 本文中使用的产品模型和设备仅为示例,您可以使用自己的产品模型和设备进行操作。
  • 示例场景 在本示例中,我们实现下述场景: 设备上报数据到物联网平台,物联网平台将数据以CSV格式存储到 对象存储服务 (OBS),数据可视化服务( DLV )从OBS文件读取数据并展现为多个维度的报表。 操作步骤如下: 在物联网平台创建产品和设备:创建MQTT协议产品、开发产品模型、并注册设备。 在物联网平台进行数据转发规则配置:创建数据转发规则,将数据以CSV格式持久化至OBS服务。 数据上报及验证数据是否转发成功。 配置数据可视化服务(DLV):展示OBS中物联网数据。 模拟数据上报及结果验证:使用设备模拟器上报数据,验证DLV大屏数据实时刷新。 图1 示例说明
  • 模拟数据上报及结果验证 在设备接入控制台“设备-所有设备-设备列表”中,单击创建的设备标识码进入设备详情,在“消息跟踪”页签中,单击“启动消息跟踪”,开启消息跟踪。 图24 消息跟踪-启动消息跟踪 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx进行消息收发)。 使用模拟器进行消息上报,详情请参考:设备消息上报。 Topic: $oc/devices/{device_id}/sys/messages/up数据格式:{ "age": "34", "profession": "blue-collar", "maritalStatus": "single", "educationalStatus": "tertiary", "realEstateSituation": "no", "loanStatus": "tertiary"} 在设备详情中,查看消息跟踪,是否收到消息上报,并转发至FunctionGraph。 图25 消息跟踪-消息上报流转至FunctionGraph 查看HTTP服务器是否收到预测结果。 图26 查看消息
  • 示例场景 在本示例中,我们实现以下场景: 设备上报银行客户特征信息,物联网平台将数据转发至FunctionGraph,由FunctionGraph转发至ModelArts进行AI分析,最终将分析的结果转发至HTTP服务器中。 操作步骤如下: 创建并发布ModelArts模型。 配置FunctionGraph函数。 创建MQTT协议产品,并创建设备。 数据转发规则配置,将数据流转至FunctionGraph。 模拟数据上报及结果验证,查看HTTP服务器是否收到AI分析后的消息。 图1 场景说明
  • 前提条件 已注册华为官方账号。未注册可参考注册华为账户完成注册。 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则会影响后续云服务的开通。 已开通设备接入服务。未开通则访问设备接入服务,单击“免费试用”或单击“价格计算器”购买并开通该服务。 已开通FunctionGraph服务。未开通则访问FunctionGraph服务,单击“立即使用”后开通该服务。 已开通ModelArts服务。未开通则访问 AI开发平台 ,单击“控制台”后进入该服务。 自建一个HTTP服务器,并提供POST接口用来接收推送的数据(本示例默认用户已经搭建好相应的服务器与接口,不再展示如何搭建HTTP服务器指导)。
  • 概述 在物联网解决方案中,针对庞大的数据进行自动学习时,需要对海量数据进行标注、训练,按照传统的方式进行标注、训练不仅耗时耗力,而且对资源消耗也非常巨大。华为云物联网平台可以通过规则引擎,将获取的海量数据流转到华为云其他云服务,从而实现将海量数据通过 函数工作流 (FunctionGraph)进行预处理,再将清洗后的数据流入AI开发平台(ModelArts)进行AI分析,并将分析结果统一转发至HTTP服务器中。
  • 场景说明 平台支持基于WebSocket的MQTT协议,使基于浏览器的应用程序或者小程序可以快速接入到物联网平台。本文以“智慧路灯”为示例,通过微信小程序模拟设备,带您体验设备通过MQTT over WebSocket协议连接到物联网平台、上报数据和接收命令的全过程。 假设: 路灯设备上报一条包含光照强度(luminance)的消息;路灯支持远程控制开关状态的命令(switch),路灯上报的数据格式为JSON格式。
  • 创建产品 产品是设备的合集,您可以将相同能力或特征的设备归属在同一个产品下。 登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”。 根据页面提示填写参数,然后单击“立即创建”。 基本信息 所属资源空间 平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 产品名称 自定义,如Streetlight。支持字母、数字、下划线(_)、连字符(-)的字符组合。 协议类型 选择MQTT。 数据格式 选择JSON。 设备类型选择 选择自定义类型 设备类型 Streetlight
  • 开发产品模型 找到创建产品章节新增的产品,单击产品进入产品界面。 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。 添加服务“BasicData”。 在“添加服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 “服务ID”:BasicData “服务类型”:建议和服务ID保持一致 “服务描述”:上报路灯数据 在“BasicData”的下拉菜单下单击“添加属性”,填写相关信息后,单击“确定”。 “属性名称”:luminance “数据类型”:int(整型) “访问权限”:可读、可写 “取值范围”:0~65535 “步长”:0 “单位”:不填写 添加服务类型“LightControl”。 在“基本信息”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 “服务ID”:LightControl “服务类型”:建议和服务ID保持一致 “服务描述”:路灯开关控制 在“LightControl”的下拉菜单下单击“添加命令”,输入命令名称“Switch”。 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。 图1 新增命令参数-value
  • 使用微信小程序接入 下载微信小程序示例工程。 下载并安装微信 开发者工具 ,使用微信开发者工具打开微信小程序示例工程,如下图所示。 图3 微信小程序示例工程 小程序提供了界面显示,填写Server地址、设备ID、设备密钥。请根据实际创建的设备信息填写。 Server地址:即服务器域名,参考平台对接信息获取“MQTT over WebSocket”协议对应的域名; 基础版实例“MQTT over WebSocket”协议对应的域名为:iot-mqtts.cn-north-4.myhuaweicloud.com 设备ID和设备密钥:在这里获取。 微信小程序连接到物联网平台 开发者通过传入设备信息,将设备连接到物联网平台。 真机调测时请在微信开发者工具-详情-本地设置-不校验合法域名,将其取消勾选,再在微信公众平台-小程序管理员界面-开发管理-服务器域名中添加socket合法域名('wss://'+MQTT接入地址)。 图4 连接到平台 单击连接到平台按钮,在域名、设备ID和密钥正确的情况下,可以看到日志设备连接成功,可在平台查看设备状态,如下图: 图5 设备列表-设备在线 发布Topic 发布Topic是指设备主动向平台上报自己的属性或消息,详细见设备属性上报接口文档。 在微信小程序中实现了上报属性数据的功能。 发布Topic后,Demo界面显示如下: 图6 上报数据 设备上报属性成功后可在设备详情页面查看到上报的属性: 图7 查看上报数据-MQTT 订阅Topic 订阅某topic的设备才能接收平台发布的关于该topic的消息,关于平台预置topic可参考Topic定义。 建链后,如果成功订阅Topic,主界面日志栏显示如下信息: 图8 订阅topic界面 接收下发命令 小程序支持接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在控制台设备详情中对该设备进行同步命令下发。下发成功后,在MQTT的回调函数中接收到平台下发给设备的命令。 例如下发参数名为LightControl: Switch,参数值为ON的命令。 图9 命令下发-MQTT 同步命令下发成功后,Demo界面显示如下 图10 接收命令界面
  • 1.设备接入地址切换 IoT场景设备量大,设备能力弱。IoT的迁移需尽量减少对设备侧的改动。华为云IoT提供多种技术方案来解决这个问题。 对于自建IoT平台设备,设备连接平台使用的是原有IoT平台域名,则设备侧可以不用做任何修改,将域名通过DNS解析到华为云IoT平台接入地址即可完成迁移。 对于存量第三方平台的设备,如果设备支持修改接入平台地址,则可以将设备侧地址切换为华为云IoT平台接入地址完成迁移。 对于设备能力比较强,可以进行OTA升级的设备,华为云提供Device SDK支持设备通过OTA完成接入地址切换。
  • 2.设备接入鉴权适配 当前各个云厂商都会定义自己的鉴权方式,导致设备迁移时,需要在设备端做各种适配。华为云IoT在平台端提供多种鉴权能力,把鉴权适配的动作移到云端,减少设备改动带来的风险。 自定义鉴权:针对存量设备设备鉴权参数无法修改的场景,平台提供自定义鉴权能力,支持在平台自定义配置设备的鉴权逻辑,实现设备鉴权方式免改动接入华为云IoT。 系统鉴权:华为云Device SDK提供了系统默认的鉴权能力,对于支持修改代码的设备,可以集成SDK通过轻量化改动就可以实现设备的接入。 对于存量设备信息的迁移,华为云也提供了多种迁移能力满足不同的应用场景: 设备迁移服务:华为云IoTDA提供自动化,高效的迁移能力,支持第三方云平台的存量产品和设备信息全量同步到华为云IoT,实现设备信息无感自动迁移。迁移流程如下: 图2 设备迁移 设备自注册:通过在自定义鉴权中开启自注册功能,支持设备在连接到平台时自动注册设备到平台,而不需要提前进行设备的迁移。 批量注册设备:通过华为云提供的SDK调用创建设备接口,进行批量的设备注册。
  • 场景示例—智能网关 场景简介:已对接存量设备的网关,不用迁移就可以实现对既有设备和新设备的兼容控制。 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧用户主动去消费。 核心知识点:产品模型、消息上报、消息下发、MQTT协议、数据转发规则、自定义Topic。 最佳实践参考:使用自定义Topic管理室内空调
  • 场景示例—恒温空调 场景简介:通过恒温控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节。 该场景主要描述的是应用侧或控制台可以给离线设备下发缓存命令,待设备上线后执行,控制台通过设备影子配置属性,待设备上线后上报的属性不匹配的话,会自动下发属性修改的指令,直至修改成功。 核心知识点:产品模型、编辑码插件、设备影子、属性上报、属性修改。 最佳实践参考:预置设备影子自动调节空调温度。
  • 场景示例—智能家居煤气检测联动 场景简介:煤气检测器发现煤气浓度超标时,自动关联无线推窗器把窗户打开,起到通风的作用。 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台或通过应用侧接口创建设备联动规则,把设备上报的属性转发,通过物联网平台规则引擎转变成命令下发给其他指定设备。 核心知识点:产品模型、属性上报、命令下发、MQTT协议、设备联动规则。 最佳实践参考:煤气浓度过高自动打开推窗器。
  • 前提条件 已开通IoTDA的“华南-广州-华南友好环境”。 进入“IoTDA华南-广州-华南友好环境”控制台,选择左侧导航栏“设备发放”服务,开通设备发放服务。 图3 华南-广州-华南友好环境控制台 图4 授权开通 图5 授权成功 安装IntelliJ IDEA 访问IntelliJ IDEA官网,选择合适系统的版本下载。(本文以windows 64-bit系统IntelliJ IDEA 2019.2.3 Ultimate为例)。 图6 IntelliJ IDEA官网 下载完成后,运行安装文件,根据界面提示安装。 安装Maven软件,通过 Maven 安装项目依赖是使用 Java SDK 的推荐方法,首先您需要下载并安装 Maven ,安装完成后您只需在 Java 项目的 pom.xml 文件加入相应的依赖项即可。
  • 权限配置 单击设备接入控制台页面右上角的账号,选择“统一身份验证”。 图10 统一身份认证 进入统一身份认证服务页面后,单击左侧“委托”,然后在右上角的输入框中输入“iotps”,再单击iotps这个委托名称右侧的“授权”按钮。 图11 创建委托授权 进入授权页面后,在右上角的输入框中“iotda”,然后选择“IoTDA FullAccess”,再单击“下一步”。 图12 选择策略 跳转到如下页面后,直接单击右下角的“确定”即可。 图13 设置最小授权范围
  • 开始批量自注册引导 上述内容修改完后,可以运行iot-device-e2e-demo下的 BootstrapCertAuthRegisterGroup.java类,右键单击运行后,SDK会自动开始批量自注册过程。当前默认自注册大约1000设备,大约10TPS。 由于mqtt链接比较耗资源,大家可以把jvm最大内存调大一些。 1、单击IDEA菜单栏上方的“RUN”-“Edit Configurations” 2、单击“Modify options”-“Add VM options” 3、在下图的框中输入“-Xmx4096m” 4、运行程序,如下图所示: 图14 批量自注册
  • 结果验证 在自动开始批量自注册之后,用户可以在IDEA的控制台看到自注册的日志。 图15 自注册日志 用户可以在设备接入控制台看到已发放的设备数目。 图16 查看已发放的设备数目列表 用户可以通过右上角的“所有状态”来过滤“在线”的设备,可以看到在线设备数一直在增长。 图17 设备在线状态 用户可以回到设备发放控制台,看到SDK默认创建好的证书策略。 图18 设备发放证书策略 用户可以看到SDK默认创建的注册组。 图19 注册组列表 单击上图中的“注册组”名称,可以看到注册组里设备发放状态。 图20 设备发放状态
共100000条
提示

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