华为云用户手册

  • 使用虚拟设备调测产品 当设备侧开发和应用侧开发均未完成时,开发者可以创建虚拟设备,使用应用模拟器和设备模拟器对产品模型、插件等进行调测。模拟设备调测界面分为四个部分 1. 左侧应用模拟器展示区域:呈现应用服务器接收到的属性数据和下发的命令。 2. 左侧设备模拟器展示区域:呈现设备上报的属性和接收到的命令。 3. 右侧应用模拟器和设备模拟器区域:模拟应用下发命令或设备上报属性。 4. 下方消息跟踪区域:呈现设备接入,属性上报和命令下发时,平台的处理日志,帮助开发者进行问题的定界和定位。 图1 在线调试-虚拟设备结构 在产品开发空间,选择“在线调测”,并单击“新增测试设备”。 在弹出的“新增测试设备”窗口,选择“虚拟设备”,单击“确定”,创建一个虚拟设备。虚拟设备名称包含 “DeviceSimulator”字样,每款产品下只能创建一个虚拟设备。 在设备列表中,选择新创建的虚拟设备, 图2 在线调试-创建虚拟设备 单击右侧的“调试”,进入调试界面。 图3 在线调试-进入调试 在“设备模拟器”区域,输入十六进制码流或者JSON数据(以十六进制码流为例),单击“发送”,在“应用模拟器”区域查看数据上报的结果,在“消息跟踪”区域查看 物联网平台 处理日志。 图4 在线调试-模拟数据上报smokeInfo 在“应用模拟器”区域进行命令下发,在“设备模拟器”区域查看接收到的命令(以十六进制码流为例),在“消息跟踪”区域查看物联网平台处理日志。 图5 在线调试-命令下发介绍
  • 推荐模组列表 表1 预集成华为SDK的认证模组 模组类型 厂商 具体型号 4G Cat1模组 广和通 L610 中移物联 ML302 4G Cat4模组 移远 EC20CEFASG 移远 EC20CEHDLG 有方 N720 NB-IoT模组 中移物联 M5319-A LTE Cat4模组适用于业务数据传输速率为50Mbps~150Mbps的场景,LTE Cat1模组适用于业务数据传输速率为5 Mbps~10 Mbps的场景。 若上述列表中没有您所需的模组型号,请提交工单说明您的业务场景和诉求。
  • 安装USB驱动 安装USB驱动: 运行安装文件,根据界面提示进行安装。 不同厂家匹配的USB驱动版本不同,请联系厂家获取符合要求的驱动程序。 驱动安装成功后,连接开发板的USB接口到PC,并打开电源,可在设备管理器中查看到枚举出的串口设备。 使用串口工具进行AT命令调试 运行安装文件,根据界面提示进行安装。 不同厂家匹配的串口工具版本不同,请联系厂家获取符合要求的串口工具。 打开串口工具,选择步骤2枚举的AT串口,波特率设置为115200,单击“Open Port”。 请确保设置正确,否则AT命令不能够被解析或者解析出错。 输入“AT+COPS?”指令,单击“Send Command”,若返回OK,表明网络注册状态成功,否则请检查设置以及硬件接线。 若返回的消息中“+COPS: 0,0,"CHN-CT",7”最后一位数字不是7,表明网络存在问题,请更换SIM卡或确认SIM卡能够上网。
  • 概述 认证模组是指通过预集成IoT Device SDK Tiny,并且通过华为测试认证,遵循华为指定AT命令规范的模组。使用华为认证的模组可以带来以下好处: 设备厂商在MCU上无需关心如何连接到华为云IoT(例如,MQTT建链时密钥的加密算法,clientID的组成方式等),只通过调用该模组提供的AT指令对接华为IoT平台,可以节约设备对接工作量和设备调试周期。 由于MCU无须集成MQTT协议栈或者IoT Device SDK Tiny,因此大大节省MCU资源的消耗。 使用认证模组开发设备的示意图如下所示:
  • 导入代码样例 下载quickStart(websocket).zip样例,并解压。 修改Demo里的关键工程配置参数。其中MqttOverWebsocketDemo.html需要配置host地址、设备ID和设备密钥,用于启动Demo时连接平台。 host地址:即 域名 ,请参考平台对接信息获取; 设备ID和设备密钥:在物联网平台注册设备或调用创建设备接口后获取。 var host = '****'; //IoT平台mqtt对接地址 var deviceId = '****'; //请填写在平台注册的设备ID var secret = '****'; //请填写在平台注册的设备密钥
  • 接收下发命令 在Demo中提供了接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在管理控制台设备详情中命令下发或使用应用侧Demo对该设备ID进行命令下发。下发成功后,在Demo中接收到平台下发给设备的命令。 例如下发参数名为smokeDetector: SILENCE,参数值为1的命令。 图6 命令下发-SILENCE_1 命令下发成功后,Demo收到平台下发的命令,浏览器调试界面的console栏显示如下: 图7 显示 由于是同步命令需要端侧回复响应可参考接口。
  • 调测“查询产品”接口 应用服务器如果需要查询之前创建的产品详情,可以调用此接口。 应用服务器需要构造一个请求,请求示例如下: GET https://iotda.cn-north-4.myhuaweicloud.com/v5/iot/{project_id}/products/{product_id} Content-Type: application/json X-Auth-Token: ******** 接下来参考API文档,调测物联网平台查询产品接口。 注:在以下步骤中,只呈现样例调测用到的参数。 配置“查询产品”接口的HTTP方法、URL和Headers。 单击“Send”,在下方查看返回码和响应消息内容。
  • 调测“创建设备”接口 在设备接入物联网平台前,应用服务器需要调用此接口在物联网平台创建设备。在设备接入物联网平台时携带设备唯一标识,完成设备的接入认证。 应用服务器需要构造一个HTTP请求,请求示例如下: POST https://iotda.cn-north-4.myhuaweicloud.com/v5/iot/{project_id}/devices Content-Type: application/json X-Auth-Token: ******** { "node_id" : "ABC123456789", "device_name" : "dianadevice", "product_id" : "b640f4c203b7910fc3cbd446ed437cbd", "auth_info" : { "auth_type" : "SECRET", "secure_access" : true, "fingerprint" : "********", "secret" : "********", "timeout" : 300 }, "description" : "watermeter device" } 参考API文档,调测物联网平台创建设备接口。 注:在以下步骤中,只呈现样例调测用到的参数。 配置“创建设备”接口的HTTP方法、URL和Headers。 配置“创建设备”接口的Body。 单击“Send”,在下方查看返回码和响应消息内容。 请将返回的“device_id”更新到“IoTDA”环境中的“device_id”参数中,用于后续其它接口使用。 注意:在postman中自动更新了“device_id”参数,使用时无需手动操作。
  • 调测“查询设备”接口 应用服务器需要查询在物联网平台创建的设备详情时,可以调用此接口。 应用服务器需要构造一个HTTP请求,请求示例如下: GET https://iotda.cn-north-4.myhuaweicloud.com/v5/iot/{project_id}/devices/{device_id} Content-Type: application/json X-Auth-Token: ******** 参考API文档,调测物联网平台查询设备接口。 注:在以下步骤中,只呈现样例调测用到的参数。 配置“查询设备”接口的HTTP方法、URL和Headers。 单击“Send”,在下方查看返回码和响应消息内容。
  • 调测“查询 IAM 用户可以访问的项目列表”接口 在访问物联网平台业务接口前,应用服务器需要调用“查询IAM用户可以访问的项目列表”接口获取用户的项目ID,用于后续访问物联网平台业务接口。 应用服务器需要构造一个HTTP请求,请求示例如下: GET https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ******** 参考API文档,调测查询IAM用户可以访问的项目列表接口。 配置“查询IAM用户可以访问的项目列表”接口的HTTP方法、URL和Headers。 单击“Send”,在下方查看返回码和响应消息内容。 返回body中包含一个projects列表,查找其中“name”参数值与“IoTDA”环境中“region”参数值相同的条目,取其“id”参数值更新到“IoTDA”环境中“project_id”参数,以便于在调用其它接口时使用。 这里我们已经在postman中自动更新了“project_id”参数,使用时无需手动操作。
  • 调测“获取IAM用户Token”接口 在访问物联网平台业务接口前,应用服务器需要调用“获取IAM用户Token”接口鉴权,华为云认证通过后向应用服务器返回鉴权令牌X-Subject-Token。 应用服务器需要构造一个HTTP请求,请求示例如下: POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 参考API文档,调测获取IAM用户Token接口。 配置“获取IAM用户Token”接口的HTTP方法、URL和Headers。 配置“获取IAM用户Token”接口的Body。 单击“Send”,在下方查看返回码和响应消息内容。 请将返回头域中的的X-Subject-Token更新到“IoTDA”环境的“X-Auth-Token”参数中,以便于在调用其它接口时使用。若超过令牌有效时间,需要重新调用鉴权接口。 这里我们已经在postman中自动更新了“X-Auth-Token”参数,使用时无需手动操作。
  • 调测“创建产品”接口 在设备接入物联网平台前,应用服务器需要调用此接口创建产品,后续注册设备时需要使用这里创建的产品。 应用服务器需要构造一个请求,请求示例如下: POST https://iotda.cn-north-4.myhuaweicloud.com/v5/iot/{project_id}/products Content-Type: application/json X-Auth-Token: ******** { "name" : "Thermometer", "device_type" : "Thermometer", "protocol_type" : "MQTT", "data_format" : "binary", "manufacturer_name" : "ABC", "industry" : "smartCity", "description" : "this is a thermometer produced by Huawei", "service_capabilities" : [ { "service_type" : "temperature", "service_id" : "temperature", "description" : "temperature", "properties" : [ { "unit" : "centigrade", "min" : "1", "method" : "R", "max" : "100", "data_type" : "decimal", "description" : "force", "step" : 0.1, "enum_list" : [ "string" ], "required" : true, "property_name" : "temperature", "max_length" : 100 } ], "commands" : [ { "command_name" : "reboot", "responses" : [ { "response_name" : "ACK", "paras" : [ { "unit" : "km/h", "min" : "1", "max" : "100", "para_name" : "force", "data_type" : "string", "description" : "force", "step" : 0.1, "enum_list" : [ "string" ], "required" : false, "max_length" : 100 } ] } ], "paras" : [ { "unit" : "km/h", "min" : "1", "max" : "100", "para_name" : "force", "data_type" : "string", "description" : "force", "step" : 0.1, "enum_list" : [ "string" ], "required" : false, "max_length" : 100 } ] } ], "option" : "Mandatory" } ], "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka" } 参考API文档,调测物联网平台创建产品接口。 注:在以下步骤中,只呈现样例调测用到的参数。 配置“创建产品”接口的HTTP方法、URL和Headers。 配置“创建产品”接口的BODY。 单击“Send”,在下方查看返回码和响应消息内容。 将返回的“product_id”更新到“IoTDA”环境中的“product_id”参数中,用于后续其它接口使用。 注:在postman中自动更新了“product_id”参数,使用时无需手动操作。
  • 安装并配置Postman 安装Postman。 访问Postman官网,下载并安装Windows 64位Postman最新版本。 安装Postman依赖.NET Framework 4.5组件。 如需下载Windows 32位Postman最新版本,访问此处下载。 填写邮箱、用户名和密码注册Postman。 导入Postman环境变量。 单击右上角的图标,打开“MANAGE ENVIRONMENTS”窗口。 单击“Import”,在弹出的页面中,单击“选择文件”,导入IoTDA.postman_environment.json文件(下载Collection解压后获取)。 单击导入的“IoTDA”环境。 参考下表修改以下参数。 参数名 参数说明 IAMEndpoint IAM终端节点,参考IAM地区和终端节点获取。 IoTDAEndpoint 物联网平台终端节点,参考2.e。 IAMUserName IAM用户名,参考我的凭证获取。 IAMPassword 登录华为云的密码。 IAMDoaminId 账号名,参考我的凭证获取。 region 开通 设备接入服务 的区域,参考物联网平台终端节点获取。 IoTDAEndpoint参考。 进入控制台,选择左侧导航栏“总览”,单击“实例基本信息-接入信息”,根据相应的接入类型和协议选择对应的接入地址。 图1 总览-获取接入信息 返回主页,选择环境变量为刚导入的“IoTDA”。 单击左上角的“Import”,单击“Choose Files”导入“应用侧API调用(V5版本).postman_collection.json”。 导入成功后,显示如下。
  • 概述 Postman是网页调试与辅助接口调用的工具,具有界面简洁清晰、操作方便快捷的特性,可以处理用户发送的HTTP请求,例如:GET,PUT、POST,DELETE等,支持用户修改HTTP请求中的参数并返回响应数据。 为充分了解接口,建议提前获取应用侧API参考查阅。我们已经写好了Postman的collection,在Collection中接口的请求结构体已经完成可以直接使用。 本文档以Postman为例,模拟应用服务器以HTTPS协议接入物联网平台,调测以下API接口: “获取IAM用户Token”接口 “查询IAM用户可以访问的项目列表”接口 “创建产品”接口 “查询产品”接口 “创建设备”接口 “查询设备”接口
  • 创建命名空间 登录云容器实例管理控制台。 在左侧导航栏中选择“命名空间”,在右侧页面中“通用计算型”命名空间下单击“创建”。 填写命名空间名称。 设置VPC,选择使用已有VPC或新建VPC,新建VPC需要填写VPC网段,建议使用网段:10.0.0.0/8~22,172.16.0.0/12~22,192.168.0.0/16~22。 设置子网网段。 您需要关注子网的可用IP数,确保有足够数量的可用IP,如果没有可用IP,则会导致负载创建失败。 单击“创建”。
  • SDK接口说明: 表1 表1 泛协议SDK提供监听平台下行数据的接口说明 接口 说明 BridgeCommandListener 平台命令下发监听接口。泛协议插件可以通过该接口将平台的下行命令转发给第三方协议设备。 BridgeDeviceMessageListener 平台消息下发监听接口。泛协议插件可以通过该接口将平台的下行消息转发给第三方协议设备。 BridgeDeviceDisConnListener 平台通知网桥断开设备连接监听接口。泛协议插件可以通过该接口主动断开第三方协议设备的连接。 LoginListener 网桥等待设备登录结果的监听接口。泛协议插件可以通过该接口监听设备是否登录成功。 LogoutListener 网桥等待设备登出结果的监听接口。泛协议插件可以通过该接口监听设备是否登出成功。 表2 表2 泛协议SDK提供的相关类说明 类 说明 BridgeClientConf 泛协议SDK客户端配置类(包括泛协议SDK连接平台的地址、网桥ID、密钥等参数) BridgeBootstrap 泛协议SDK启动初始化类。 BridgeClient 泛协议SDK网桥客户端实现类,实现同平台的通信(设备登录、设备消息上报、设备属性上报、设备登出等)
  • 托管部署 IoT平台提供泛协议镜像托管部署能力,使用泛协议SDK开发的插件可以制作成镜像托管部署在平台,IoT平台支持对托管的镜像进行分布式自动部署。省去客户自己购买E CS 服务器、购买 ELB负载均衡 、进行容器化等操作和费用。 当前只有IoTDA企业版支持托管部署,使用托管部署方案后,资源费用包含在IoTDA企业版内客户不用单独为部署资源付费。IoTDA标准版可以参考非托管部署方案进行部署和运维,产生的费用参考ECS服务器或者云容器实例CCI的费用说明。 登录管理控制台,单击左侧导航栏“IoTDA实例”,选择对应的企业实例单击“详情”。 在“泛协议接入”页面单击“添加镜像”,单击“同意授权”后选择需要部署的对应镜像。 图1 泛协议-授权 进入“云网关”页面,填写云网关名称和对应要开发的端口后,在“私有镜像”列表中选择上一步骤中上传的镜像。 图2 泛协议-新增云网关(托管) 父主题: 泛协议插件开发
  • 初始化网桥SDK 创建BridgeBootstrap对象实例,调用initBridge方法,在该方法中会读取环境变量的配置信息,并同IoT平台建立网桥连接。 环境变量说明: 表2 环境变量说明 环境变量名称 参数说明 样例 NET_BRIDGE_ID 网桥ID bridge001 NET_BRIDGE_SECRET 网桥密钥 ********** NET_BRIDGE_SERVER_IP IoTDA平台地址 *****.iot-mqtts.cn-north-4.myhuaweicloud.com NET_BRIDGE_SERVER_PORT IoTDA平台泛协议接入端口号 8883 初始化成功后,需要设置平台下行数据的监听器,监听平台的下行数据。 代码样例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public void init() { //网桥启动初始化 BridgeBootstrap bridgeBootstrap = new BridgeBootstrap(); // 从环境变量获取配置进行初始化 bridgeBootstrap.initBridge(); bridgeClient = bridgeBootstrap.getBridgeDevice().getClient(); // 设置平台下行数据监听器 DownLinkHandler downLinkHandler = new DownLinkHandler(); bridgeClient.setBridgeCommandListener(downLinkHandler) // 设置平台命令下发监听器 .setBridgeDeviceMessageListener(downLinkHandler) // 设置平台消息下发监听器 .setBridgeDeviceDisConnListener(downLinkHandler); // 设置平台通知网桥主动断开设备连接的监听器 }
  • 配置Astro大屏服务 登录华为云官方网站,访问Astro大屏服务。 选择进入首页, 新建项目。 图13 新建项目 进入新建项目后,单击“新建页面”。单击“新建空白页”完成页面创建。 图14 新建空白页 可通过拖拉的方式,将组件中的元素拉到页面,从而完成页面设计。详情请参考开发页面。 图15 最终页面展示 设置数据源,选中一个视图组件,如图单击数据按钮。 图16 设置数据源 数据类型选择DWS,并配置DWS数据源,配置流程中通过sql语句查询DWS数据,并在组件预览中将查询出来的数据与组件的配置做映射。详情参考数据集管理。 图17 配置数据 参考上述步骤完成所有组件的配置。
  • 数据上报及验证数据是否转发成功 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行消息上报(参考:设备消息上报)。上报内容如下: { "id": "2", "device_id" : "********", "report_time":"2023-10-19 19:39:42", "province":"guangzhou", "city": "shengzhen", "daily_power_generation": 32, "total_power_generation": 108, "total_power": 1023, "running_status": "ONLINE" } 前往Kafka控制台,查看是否收到转发的消息。 图6 查看Kafka消息
  • 配置DWS 数据仓库 服务 登录华为云官方网站,访问数据仓库服务。 单击“进入控制台”。 访问数据仓库服务控制台“集群管理”页面,选择购买的集群,若无集群,则参考购买集群,购买集群后,单击登录集群。 登录集群后,单击新建数据库,创建数据库。 图7 创建数据库 单击SQL查询, 进入SQL查询页面, 执行以下SQL语句创建数据表。 CREATE TABLE IF NOT EXISTS power_test_dws ( "id" BIGINT, "report_time" TIMESTAMP, "province" varchar(255), "city" varchar(255), "device_id" varchar(255) NOT NULL, "daily_power_generation" numeric(10,2), "total_power_generation" numeric(10,2), "total_power" numeric(10,1), "running_status" varchar(10), CONSTRAINT "device_uniqe" UNIQUE ("device_id", "report_time") ) WITH (ORIENTATION = COLUMN, PERIOD='15 days', storage_policy = 'LMT:180') PARTITION BY RANGE (report_time);
  • 模拟数据上报及结果验证 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行消息上报,详情请参考:设备消息上报。 上报内容如下: { "id": "2", "device_id" : "********", "report_time":"2023-10-24 19:39:42", "province":"guangzhou", "city": "guangdong", "daily_power_generation": 11, "total_power_generation": 22, "total_power": 324, "running_status": "OFFLINE" } 前往DWS控制台,查看是否收到转发的消息。 图18 查看DWS消息 前往Astro大屏服务查看监控视图。 图19 监控大屏数据
  • 前提条件 已注册华为官方账号。未注册可参考注册华为账户完成注册。 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则会影响后续云服务的开通。 已开通设备接入服务。未开通则访问设备接入服务,单击“免费试用”或单击“价格计算器”购买并开通该服务。 已开通Kafka服务。未开通则访问Kafka服务,单击“立即购买”后开通该服务。 已开通 数据湖探索 服务。未开通则访问 数据湖 探索服务,单击“立即购买”后开通该服务。 已开通云数据仓库 GaussDB (DWS)服务。未开通则访问云数据仓库GaussDB(DWS)服务,单击“购买”后开通该服务。 已开通Astro大屏服务, 未开通则访问Astro大屏应用,单击“立即使用”后开通该服务。
  • 示例场景 在本示例中,我们实现以下场景: 新能源设备上报发电量、地区等数据到物联网平台,物联网平台将数据转发至kafka,由 DLI 进行大数据清洗将数据存储至DWS,再由Astro大屏应用读取数据进行可视化展示实现各个地区发电量的统计分析。 操作步骤如下: 1、在物联网平台创建产品和设备。 2、在物联网平台配置数据转发规则实现将设备上报的数据转发到kafka中。 3、数据上报及验证数据是否转发成功。 4、配置DWS数据仓库服务。 5、配置DLI数据湖探索服务实现将kafka中的数据进行清洗并转发至DWS。 6、配置Astro大屏服务,从数据仓库服务DWS中获取数据并进行展示。 7、模拟数据上报及结果验证。
  • 导入测试计划 下载用于JMeter测试的测试计划。 打开JMeter,选择“Open”导入下载的测试计划。 在 JMeter左侧文件目录中单击 “User Defined Variables”,在“User Defined Variables”对话框中配置以下信息。 表4 参数说明 参数名 参数说明 server MQTT协议服务端地址。获取方式参考获取接入地址。 port MQTT协议端口,填写为8883。 productId 产品ID,创建产品时生成的产品ID。 password MQTT连接密码。为使用“HMACSHA256”算法以时间戳为密钥对secret进行加密后的值。secret为批量注册设备时填写的密钥。可以通过工具获取加密后的值。 timeStamp 为对password进行加密的时间戳。时间格式为YYYYMMDDHH。 图2 参考样例
  • 发起压测 在 JMeter 左侧文件目录中单击 “Thread Group”,配置“Number of Threads”为10000(一个线程对应一个设备在线,配置为10000表示设备与平台间保持1万个设备在线)。 图3 配置设备 在 JMeter 左侧文件目录“Thread Group”目录下单击"Delay between sampler" ,配置“Thread Delay(in milliseconds)”为100000(每设备每100秒发布一次消息)。 图4 配置设备 在Jmeter工具栏图表中单击(开始)按钮,启动性能测试。 图5 性能测试 在 JMeter 左侧文件目录中单击 “Summary Report”,可以看到“Connect”、"Publish Message"的吞吐量。可以通过调整“Number of Threads”和“Thread Delay(in milliseconds) ” 来调整Jmeter发起的吞吐量。 图6 性能测试 JMeter测试计划调试正常后,可以将测试计划导入到华为云的CodeArts PerfTest服务,进行分布式部署以满足更高规格的性能测试 。
  • 场景说明 随着物联网技术的发展,全球物联网设备连接规模与日俱增。大量设备接入和设备管理对网络带宽、通信协议以及平台服务架构都带来了很大挑战。IoT架构选型时,对平台进行性能测试显得尤为重要。本文介绍如何使用JMeter工具对平台的MQTT协议接入能力进行性能压测。 本文描述的测试方案如下: 测试场景: 模拟1万个设备同时在线,验证平台长连接的稳定性。 模拟设备每秒发起100次消息上报,验证平台消息处理能力。 测试环境: 压测目标平台:华为云设备接入服务低频单元S1(1万设备在线、200TPS消息上下行)。 压测执行机:Jmeter执行机1台,规格如下: 表1 压测执行机 实例类型 规格名称 vCPUs 内存 通用计算型s6 s6.xlarge.2 4vCPUs 8GiB 单台Jmeter执行机最多能模拟5万设备在线,如果需要模拟更高规格的在线设备数可以使用华为云的CPTS服务,部署多台Jmeter执行机,以满足规格测试的要求。
  • 创建产品 登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”。 根据页面提示填写参数,然后单击“确定”。 表2 参数说明 基本信息 所属资源空间 平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 产品名称 自定义。支持字母、数字、下划线(_)、连字符(-)的字符组合。 协议类型 选择MQTT。 数据格式 选择JSON。 所属行业 请根据实际情况选择。 设备类型 请根据实际情况选择。 高级配置 产品ID 定制ProductID,用于唯一标识一个产品。如果携带此参数,平台将产品ID设置为该参数值;如果不携带此参数,产品ID在物联网平台创建产品后由平台分配获得。
  • 验证操作 方法一: 您可以使用MQTT.fx模拟设备验证。 使用MQTT.fx模拟恒温空调,并连接到物联网平台。操作方法请参考在线开发MQTT协议的模拟智慧路灯。 选择“Subscribe”页签,输入订阅设备影子的topic=$oc/devices/{device_id}/sys/shadow/get/response/#,其中{device_id}与步骤6的设备ID保持一致,单击“Subscribe”按钮。 选择“Publish”页签,输入请求设备影子的Topic=$oc/devices/{device_id}/sys/shadow/get/request_id={request_id}。 输入一条获取设备影子的请求,单击“Publish”按钮。 示例: { "object_device_id": "**********", "service_id": temperature" } 选择“Subscribe”页签,看到平台下发的设备影子数据。 方法二: 您可以使用配置设备接入服务时注册的真实设备接入平台,设备会收到平台下发的设备影子,修改空调的预设温度值。
  • 业务实现 使用MQTT.fx模拟设备接入平台,详情请参考连接鉴权。 用MQTT.fx订阅平台下行信息Topic,MQTT.fx会收到平台服务端下发的查询版本命令。 Topic 下行: $oc/devices/{device_id}/sys/events/down 参数说明 请参考平台下发获取版本信息通知 图10 订阅通知 通过MQTT.fx上报软固件版本信息。 Topic 上行: $oc/devices/{device_id}/sys/events/up 参数说明 请参考设备上报软固件版本 示例 Topic: $oc/devices/{device_id}/sys/events/up 数据格式: { "object_device_id": "{object_device_id}", "services": [{ "service_id": "$ota", "event_type": "version_report", "event_time": "20151212T121212Z", "paras": { "sw_version": "v1.0", "fw_version": "v1.0" } }] } 图11 上报版本号 上报完版本号后,模拟器会接收到平台下发的升级通知,通知信息如下: Topic 上行: $oc/devices/{device_id}/sys/events/down 参数说明 请参考平台下发升级通知 图12 获取升级通知 设备收到升级通知后,可通过Http请求下载升级包。 本次演示使用Curl命令代替。 图13 下载升级包 示例 curl -X GET -H "Authorization:Bearer ****************************" "https://**.**.**.**:8943/iodm/dev/v2.0/upgradefile/applications/********/devices/********/packages/********" -v -k 应在http附加请求消息头(header)字段附加Authorization信息,其值为“Bearer {access_token}”,其中{access_token}为收到的升级通知中的access_token。Bearer和{access_token}之间有一个空格。 如果event_type为firmware_upgrade_v2、software_upgrade_v2,则在请求下载软固件包时不需要携带请求头。请求示例如下: GET https://******.obs.cn-north-4.myhuaweicloud.com:443/test.bin?AccessKeyId=DX5G7W********* 设备上报升级状态 Topic 上行: $oc/devices/{device_id}/sys/events/up 参数说明 请参考设备上报升级状态 示例 Topic: $oc/devices/{device_id}/sys/events/up 数据格式: { "object_device_id": "{object_device_id}", "services": [{ "service_id": "$ota", "event_type": "upgrade_progress_report", "event_time": "20151212T121212Z", "paras": { "result_code": 0, "progress": 50, "version": "V1.0", "description": "upgrade processing" } }] } 如下图所示上报升级进度为50%,可以在平台查询到升级进度为50%。 图14 上报升级进度50% 图15 任务详情-Test_upgrade_1-升级进度 完成升级 上报升级进度为100%,且当前版本为升级的目标版本,可以在平台查询到升级完成。 图16 上报升级进度100% 图17 软固件升级-固件升级
共100000条