华为云用户手册

  • 概述 Postman是网页调试与辅助接口调用的工具,具有界面简洁清晰、操作方便快捷的特性,可以处理用户发送的HTTP请求,例如:GET,PUT、POST,DELETE等,支持用户修改HTTP请求中的参数并返回响应数据。 为充分了解接口,建议提前获取应用侧API参考查阅。我们已经写好了Postman的collection,在Collection中接口的请求结构体已经完成可以直接使用。 本文档以Postman为例,模拟应用服务器以HTTPS协议接入 物联网平台 ,调测以下API接口: “获取 IAM 用户Token”接口 “查询IAM用户可以访问的项目列表”接口 “创建产品”接口 “查询产品”接口 “创建设备”接口 “查询设备”接口
  • 接收下发命令 在Demo中提供了接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在管理控制台设备详情中命令下发或使用应用侧Demo对该设备ID进行命令下发。下发成功后,在Demo中接收到平台下发给设备的命令。 例如下发参数名为smokeDetector: SILENCE,参数值为50的命令。 图4 命令下发-SILENCE 命令下发成功后,Demo收到的消息是50,命令运行主界面显示如下: 由于是同步命令需要端侧回复响应可参考接口。
  • 连接鉴权 参考连接鉴权接口文档,使用MQTT.fx工具接入物联网平台。 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。 安装最新版MQTT.fx工具,可单击此处下载。 MQTT.fx 1.7.0及旧版本对带有$的主题(Topic)处理存在问题,请使用最新版本进行测试。 访问这里,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成连接信息(ClientId、Username、Password)。 设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。 使用生成工具生成的clientId格式,默认不校验时间戳:设备ID_0_0_时间戳。 当采用“HMA CS HA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。 当采用“HMACSHA256”不校验时间戳方式时,clientId也需要携带“YYYYMMDDHH”格式时间戳,用于加解密密码。 connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。 打开MQTT.fx软件,单击设置图标。 参考下表配置鉴权参数,然后单击“Apply”。 参数名称 说明 Broker Address 填写从 设备接入服务 控制台获取的设备对接地址,此地址为 域名 信息。不能通过域名接入的设备,此处填写从2中获取的IP地址。 Broker Port 默认为1883。 Cliend ID 设备cliendID,请参考2中获取。 User Name 即设备ID,请参考2中获取。 Password 加密后的设备密钥,请参考2中获取。 注:如果您选择安全方式接入,Broker Port设置为8883,下载并获取证书,加载Java语言pem格式的证书。 单击“Connect”,设备鉴权成功后,在物联网平台“所有设备”界面可以看到设备处于在线状态。 图3 设备列表-设备在线
  • 创建产品 创建MQTT协议产品。如果已有MQTT协议产品,可跳过此步骤。 登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”。 根据页面提示填写参数,然后单击“创建”。 表1 创建产品信息参数 基本信息 所属资源空间 平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 产品名称 自定义。支持字母、数字、下划线(_)、连字符(-)的字符组合。 协议类型 选择MQTT。 数据格式 选择JSON。 所属行业 请根据实际情况选择。 设备类型 请根据实际情况选择。 高级配置 产品ID 定制ProductID,用于唯一标识一个产品。如果携带此参数,平台将产品ID设置为该参数值;如果不携带此参数,产品ID在物联网平台创建产品后由平台分配获得。 图2 创建MQTT产品-标准类型
  • JavaScript编解码插件模板 以下为JavaScript编解码插件的模板,开发者需要按照平台提供的模板,实现对应的接口。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 /** * 设备上报数据到物联网平台时调用此接口进行解码, 将设备的原始数据解码为符合产品模型定义的JSON格式数据。 * 该接口名称和入参已经定义好,开发者只需要实现具体接口即可。 * @param byte[] payload 设备上报的原始码流 * @param string topic MQTT设备上报数据时的topic,非MQTT设备上报数据时不携带该参数 * @return string json 符合产品模型定义的JSON格式字符串 */ function decode(payload, topic) { var jsonObj = {}; return JSON.stringify(jsonObj); } /** * 物联网平台下发指令时,调用此接口进行编码, 将产品模型定义的JSON格式数据编码为设备的原始码流。 * 该接口名称和入参格式已经定义好,开发者只需要实现具体接口即可。 * @param string json 符合产品模型定义的JSON格式字符串 * @return byte[] payload 编码后的原始码流 */ function encode(json) { var payload = []; return payload; }
  • 订阅接收命令 订阅某Topic的设备才能接收broker发布的关于该Topic的消息,关于平台预置Topic可参考Topic定义。详细接口信息请参考命令下发。 1 2 //订阅接收命令 client.subscribe(getCmdRequestTopic(), qosLevel, null, new IMqttActionListener(); getCmdRequestTopic()获取接收命令的Topic,向平台订阅该Topic的命令。 1 2 3 public static String getCmdRequestTopic() { return "$oc/devices/" + deviceId + "/sys/commands/#"; }
  • 属性上报 属性上报是指设备主动向平台上报自己的属性,更多信息请参考设备属性上报。 1 2 3 4 //上报json数据,注意serviceId要与产品模型中的定义对应 String jsonMsg = "{\"services\": [{\"service_id\": \"Temperature\",\"properties\": {\"value\": 57}},{\"service_id\": \"Battery\",\"properties\": {\"level\": 80}}]}"; MqttMessage message = new MqttMessage(jsonMsg.getBytes()); client.publish(getRreportTopic(), message, qosLevel, new IMqttActionListener();
  • 创建产品 产品是设备的合集,您可以将相同能力或特征的设备归属在同一个产品下。 登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”。 根据页面提示填写参数,然后单击“立即创建”。 图5 创建产品-MQTT 表1 创建产品基本信息 基本信息 所属资源空间 平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 产品名称 自定义,如StudentCard。支持字母、数字、下划线(_)、连字符(-)的字符组合。 协议类型 选择MQTT。 数据格式 选择JSON。 设备类型选择 选择自定义类型。 设备类型 根据实际填写,例如StudentCard。
  • 获取网桥接入信息 代码调试时,需要获取对应的网桥接入信息,并配置到对应的环境变量中。网桥接入信息,环境变量配置参考: 图1 环境变量配置参考 NET_BRIDGE_ID与NET_BRIDGE_SECRET在标准版和企业版支持在界面配置和获取,获取方式如下: 进入泛协议接入页面:登录管理控制台,单击左侧导航栏“IoTDA实例”,选择对应实例,点击右侧“详情”进入实例,选择“泛协议接入”页签后,单击“新增网关”。 图2 泛协议-新增云网关(非托管) 输入网关名,单击“确定”,会弹出网桥创建成功界面,单击“保存并关闭”,获得NET_BRIDGE_SECRET值。 图3 泛协议-创建网桥成功 在界面中可以获取到NET_BRIDGE_ID。 图4 泛协议-获取网桥ID
  • 开发产品模型 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。 图6 自定义模型-MQTT 新增服务类型“Location”。 在“新增服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 图7 添加服务-Location “服务ID”:Location “服务类型”:建议和服务ID保持一致 “服务描述”:设备上报的位置数据 在“Location”的下拉菜单下单击“添加属性”,填写相关信息后,单击“确定”。 图8 新增属性-longitude 图9 新增属性-latitude 单击添加命令,输入命令名称“FREQUENCY_LOCATION_SET”。 图10 新增命令-FREQUENCY_LOCATION_SET 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。 图11 新增命令参数-period
  • 创建命名空间 登录云容器实例管理控制台。 在左侧导航栏中选择“命名空间”,在右侧页面中“通用计算型”命名空间下单击“创建”。 填写命名空间名称。 设置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平台支持对托管的镜像进行分布式自动部署。省去客户自己购买ECS服务器、购买 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 软固件升级-固件升级
  • 场景说明 MQTT(Message Queuing Telemetry Transport)是一个基于客户端-服务器的消息发布/订阅传输协议,主要应用于计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备,适合长连接的场景,如智能路灯等。固件升级功能是网络设备所必须支持的基础服务。在设备固件出现安全漏洞、软件bug维护、自身功能优化、以及设备性能改良等需更新固件时,在线升级功能就尤为重要。本文档通过MQTT.fx模拟固件设备,使用华为云平台对该固件进行设备升级。 软件升级流程和固件升级流程一样,只是在设备上报版本号时对应参数字段不一样。固件升级上报版本号对应参数字段为fw_version,软件升级上报版本号对应参数字段为sw_version,请参考设备上报版本号
  • 创建煤气监测产品 访问设备接入服务,单击“立即使用”进入设备接入控制台。选择您的实例,单击实例卡片进入。 选择左侧导航栏的“产品”。 单击左侧的“创建产品”,创建煤气浓度监测产品,填写参数后,单击“确定”。 表1 创建产品参数示例 基本信息 产品名称 自定义,如gasdevice。 协议类型 选择“MQTT” 数据格式 选择“JSON” 所属行业 自定义 设备类型 在基本信息页面,单击“自定义模型”,参考下表,完成产品模型配置。gaslevel服务用于监控煤气浓度,windowswitch服务用于执行开关窗命令。 表2 煤气浓度监测产品模型参数示例 服务ID 参数类型 添加参数说明内容 gaslevel 属性 属性名称:gaslevel 数据类型:int 访问权限:可读 取值范围:0~100 windowswitch 命令 命令名称:switch 下发参数名称:switch 数据类型:enum 枚举值:on,off
  • 验证操作 方法一: 您可以使用MQTT.fx模拟设备验证。 使用MQTT.fx分别模拟煤气探测器设备和推窗器,并连接到物联网平台。操作方法请参考在线开发MQTT协议的模拟智慧路灯。 打开模拟推窗器的MQTT.fx,订阅平台下发的命令。 选择“Subscribe”页签。 输入订阅平台下发命令的Topic=$oc/devices/{device_id}/sys/commands/#(其中与步骤2获取的设备ID保持一致。)。 单击“Subscribe”按钮,完成平台命令下发订阅。 图5 创建MQTT订阅 切换到模拟煤气探测的MQTT.fx,上报属性。 选择“Publish”页签。 输入属性上报的Topic:“$oc/devices/{device_id}/sys/properties/report(其中{deviceId}与步骤1获取的设备ID保持一致。)。 上报1条“gaslevel”大于6的属性。 样例: { "services": [{ "service_id": "gaslevel", "properties": { "gaslevel": 45 } } ] } 单击“Publish”按钮上报属性值。 图6 MQTT属性上报 切换到模拟推窗器的MQTT.fx,选择“Subscribe”页签。可以看到收到平台下发的“switch”取值为“on”的命令。 图7 查看下发命令 方法二: 您可以使用配置设备接入服务时注册的真实设备接入平台,上报“gaslevel”大于6的数据。设备会收到一条“switch”取值为“on”的命令,自动推开窗户。
  • MQTT设备消息下发 本示例通过使用postman,下发开启室内空调指令。 使用MQTT.fx模拟器,订阅自定义Topic。 确保创建自定义Topic时,设备操作权限包含“订阅”功能,详细操作请参考自定义Topic。 使用IoT Device SDK或者原生MQTT协议接入的设备,需要在设备程序中,设置设备订阅的自定义Topic名称。 使用postman工具模拟应用侧调用下发设备消息接口,下发开启室内空调的命令。 调用查询设备消息接口,查看下发命令是否成功。若命令下发成功,室内空调将会被开启。
共100000条