华为云用户手册

  • 连接鉴权 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)操作。
  • 测试数据 表1 测试列表 规格描述 规格值--sysbench oltp场景 备注 DDM 并发数 TPS QPS 1*8U16G 512 2168.748 43389.45 RDS实例规格:2*8U16G,超高IO 1*16U32G 512 4117.23 82362.996 RDS实例规格:2*16U32G,超高IO 1*32U64G 1000 5627.754 112585.59 RDS实例规格:2*32U64G,超高IO DDM内核具备一定的过载保护能力,在过载后会触发一些列动作,例如尝试释放长时间占用系统资源的语句。触发过载保护后压测结果曲线可能会观测到抖动。触发过载说明性能已达到瓶颈,继续加压已无法获得性能提升,请尝试降低压力以获取更高的性能表现。
  • 测试工具 Sysbench是一款基于LuaJIT的,模块化多线程基准测试工具,常用于数据库基准测试。通过内置的数据库测试模型,采用多线程并发操作来评估数据库的性能。了解Sysbench更多详情,请访问https://github.com/akopytov/sysbench。 本次测试使用的Sysbench版本为1.0.20,具体的安装命令如下: # wget -c https://github.com/akopytov/sysbench/archive/1.0.20.zip # yum install autoconf libtool mysql mysql-devel vim unzip # unzip 1.0.20.zip # cd sysbench-1.0.20 # ./autogen.sh # ./configure # make # make install
  • 开发中心模拟设备如何上报负数? 使用LWM2M协议接入的设备上报负数时,编解码插件对应的数据类型要选择有符号整形数;实际上报数据时,负数转换为二进制编码时需要转换为补码,再转换为十六进制数填写到模拟设备数据上报界面。 例如: -5转换为二进制,原码为10000101,补码为11111011,补码转换为十六进制为FB,再与消息中其他字段(如地址域字段取值为00)组合后上报。 父主题: 设备集成(联通用户专用)
  • 开发中心、设备接入和设备管理的差异是什么? 开发中心、设备接入和设备管理的主要差异是: 产品 定位 商用/测试 价格 特别关注 设备接入 进行海量设备联接、数据采集/转发、远程控制的云服务。 商用环境 按照消息数收费 开通设备管理服务时,系统会同时开通 设备接入服务 。开通设备管理服务后,设备接入服务中已注册的设备,可以在设备管理服务中继续使用。 设备管理 在设备接入基础上,增加了产品模型定义、远程诊断、数据存储、软固件升级等更丰富的设备管理能力。使用设备管理时,包含设备接入服务的能力。 商用环境 按照设备数收费 开发中心所在的测试环境,设备管理服务所在商用环境,两个环境的设备数据不能互通。已对接测试环境的设备/应用如果需要迁移至商用环境,需要在商用环境重新创建应用和注册设备,并修改设备/应用中平台的接入信息。 开发中心 基于设备管理提供的一站式开发工具,帮助开发者快速进行产品模型(Profile)和编解码插件的开发,同时提供在线自助测试、产品发布等多种能力。 测试环境 免费 开发中心上开发的产品(Profile文件和编解码插件)只适用于设备管理服务,不能在设备接入服务中导入和使用。 点击查看更多开发中心,设备接入和设备管理功能和使用限制差异。 父主题: 方案咨询(联通用户专用)
  • 如何获取应用ID和应用密钥?如何重置应用密钥? 设备接入和设备管理商用环境 应用ID和应用密钥在创建应用后生成,请将密钥保存在本地,密钥信息在应用详情中不可见。 如需修改应用密钥,请登录设备接入或设备管理服务管理控制台,点击“进入设备接入服务”或“进入设备管理服务”,在“应用列表”中单击应用,在应用定义中可重置应用密钥。 开发中心调测环境 应用ID和应用密钥在创建项目后生成,请将密钥保存在本地。 如需修改应用密钥,请登录开发中心,进入创建的应用或者项目,在“应用-对接信息”中重置应用密钥查看。 父主题: 应用集成(联通用户专用)
  • 物联网平台 的命令状态总共有几种? 物联网平台命令下发包含如下状态: 超期:表示命令在物联网平台缓存时间超期,未向设备下发。 成功:表示物联网平台已经将命令下发给设备,且收到设备上报的命令执行结果。 失败:表示编解码插件解析为空,或执行结果响应里面有“ERROR CODE”等。 超时:表示物联网平台等待ACK响应超时。 取消:表示应用侧已经取消命令下发。 等待:表示命令在物联网平台缓存,还未下发给设备。 已发送:表示物联网平台已经将命令下发给设备。 已送达:表示物联网平台已经将命令下发给设备,且收到设备返回的ACK消息。 各命令状态之间的转换如下图所示: 父主题: 命令下发(联通用户专用)
  • 使用模拟器接入 下载模拟器(默认是64位操作系统),并启动模拟器,如下图: 界面展示 模拟器提供了界面显示,填写Server地址、设备ID、设备密钥。请根据实际创建的设备信息填写。 Server地址:即 域名 ,参考平台对接信息获取; 设备ID和设备密钥:在这里获取。 不同的Server地址SSL加密接入时要与对应的证书文件匹配使用,证书获取请参考获取资源,需要替换certificate文件夹下的证书,如下图: 用户可以选择设备侧建链时是否为SSL加密,选择Qos方式是0还是1,当前不支持Qos2,可参考使用限制。 新建连接 设备或网关在接入物联网平台时首先需要和平台建立连接,从而将设备或网关与平台进行关联。开发者通过传入设备信息,将设备或网关连接到物联网平台。单击新建连接按钮,域名、设备ID和密钥正确的情况下,可以看到日志设备连接成功,可在平台查看设备状态,如下图: 图7 设备列表-设备在线 订阅Topic 订阅某topic的设备才能接收broker发布的关于该topic的消息,关于平台预置topic可参考Topic定义。 建链后,如果成功订阅Topic,主界面日志栏显示如下信息: 发布Topic 发布Topic是指设备主动向平台上报自己的属性或消息,详细见设备属性上报接口文档。 在模拟器中实现了上报Topic、属性上报功能。 发布Topic后,Demo界面显示如下: 设备上报属性成功后可在“设备详情”页面查看到上报的属性: 图8 查看上报数据-MQTT 接收下发命令 模拟器支持接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在控制台设备详情中对该设备进行同步命令下发。下发成功后,在MQTT的回调函数中接收到平台下发给设备的命令。 例如下发参数名为smokeDetector: SILENCE,参数值为50的命令。 图9 命令下发-同步命令下发 同步命令下发成功后,Demo界面显示如下:
  • 获取设备接入信息 在设备接入服务控制台获取设备接入平台所需的信息。 访问设备接入服务,单击“立即使用”进入设备接入控制台。 单击“立即使用”进入控制台,单击左侧导航栏的“总览”,点击“实例基本信息 - 接入信息”查看设备接入信息,记录域名和端口。 图1 总览-获取接入信息 针对不支持用域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。
  • 权限配置 单击设备接入控制台页面右上角的账号,选择“统一身份验证”。 图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 设备发放状态
  • 导入批量自注册样例代码 下载JAVA批量自注册样例文档。 解压后选择样例代码主目录下的pom.xml文件,并用IDEA 开发者工具 打开后,可以看到工程目录如下: 图7 工程目录 修改AKSK.properties中的ak/sk参数,scopeId参数,accesspointid参数 用户可以在此处获取ak/sk。 scopeId可以在此处获取。 图8 获取注册组scopeId accesspointid可以在IoTDA的“华南-广州-友好用户环境”的总览界面获取到。 图9 accesspointid获取 上述步骤替换后,代码导入和修改完毕。
  • 前提条件 已开通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 文件加入相应的依赖项即可。
  • 场景示例—智能家居煤气检测联动 场景简介:煤气检测器发现煤气浓度超标时,自动关联无线推窗器把窗户打开,起到通风的作用。 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台或通过应用侧接口创建设备联动规则,把设备上报的属性转发,通过物联网平台规则引擎转变成命令下发给其他指定设备。 核心知识点:产品模型、属性上报、命令下发、MQTT协议、设备联动规则。 最佳实践参考:煤气浓度过高自动打开推窗器。
  • 场景示例—智能网关 场景简介:已对接存量设备的网关,不用迁移就可以实现对既有设备和新设备的兼容控制。 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧用户主动去消费。 核心知识点:产品模型、消息上报、消息下发、MQTT协议、数据转发规则、自定义Topic。 最佳实践参考:使用自定义Topic管理室内空调
  • 场景示例—恒温空调 场景简介:通过恒温控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节。 该场景主要描述的是应用侧或控制台可以给离线设备下发缓存命令,待设备上线后执行,控制台通过设备影子配置属性,待设备上线后上报的属性不匹配的话,会自动下发属性修改的指令,直至修改成功。 核心知识点:产品模型、编辑码插件、设备影子、属性上报、属性修改。 最佳实践参考:预置设备影子自动调节空调温度。
  • 1.设备接入地址切换 IoT场景设备量大,设备能力弱。IoT的迁移需尽量减少对设备侧的改动。华为云IoT提供多种技术方案来解决这个问题。 对于自建IoT平台设备,设备连接平台使用的是原有IoT平台域名,则设备侧可以不用做任何修改,将域名通过DNS解析到华为云IoT平台接入地址即可完成迁移。 对于存量第三方平台的设备,如果设备支持修改接入平台地址,则可以将设备侧地址切换为华为云IoT平台接入地址完成迁移。 对于设备能力比较强,可以进行OTA升级的设备,华为云提供Device SDK支持设备通过OTA完成接入地址切换。
  • 2.设备接入鉴权适配 当前各个云厂商都会定义自己的鉴权方式,导致设备迁移时,需要在设备端做各种适配。华为云IoT在平台端提供多种鉴权能力,把鉴权适配的动作移到云端,减少设备改动带来的风险。 自定义鉴权:针对存量设备设备鉴权参数无法修改的场景,平台提供自定义鉴权能力,支持在平台自定义配置设备的鉴权逻辑,实现设备鉴权方式免改动接入华为云IoT。 系统鉴权:华为云Device SDK提供了系统默认的鉴权能力,对于支持修改代码的设备,可以集成SDK通过轻量化改动就可以实现设备的接入。 对于存量设备信息的迁移,华为云也提供了多种迁移能力满足不同的应用场景: 设备迁移服务:华为云IoTDA提供自动化,高效的迁移能力,支持第三方云平台的存量产品和设备信息全量同步到华为云IoT,实现设备信息无感自动迁移。迁移流程如下: 图2 设备迁移 设备自注册:通过在自定义鉴权中开启自注册功能,支持设备在连接到平台时自动注册设备到平台,而不需要提前进行设备的迁移。 批量注册设备:通过华为云提供的SDK调用创建设备接口,进行批量的设备注册。
  • 新增产品模型 Profile开发完成并测试验证后,可以将profile文件导入到控制台上使用,有三种导入方式: 产品中心导入:在开发中心上完成profile的定义并发布到产品中心。 本地导入:指线下完成profile的开发,通过上传profile包的方式导入。 注:通过本地导入的profile不含编解码插件,如果设备上报采用的是二进制码流,请使用产品中心导入的方式。 手动创建:手动创建一个产品(支持CoAP/LWM2M、MQTT或LoRaWAN),不定义设备属性(不需要开发profile及编解码插件),仅透传数据,不解析数据(透传模式具体请参考数据上报(联通用户专用))。如使用手动创建的产品模型,建议仅开通设备接入服务即可。 当协议类型选择LoRaWAN时,无法注册为普通设备,仅能注册为LoRaServer的子设备。 导入产品模型后,就无法对已导入产品模型的产品信息和服务能力进行修改,例如修改协议类型、新增一个服务等。可以通过设备配置更新、设备影子对设备服务属性值进行修改,通过界面修改OM维护能力。 登录物联网平台控制台,点击右上角“进入设备管理服务”。 单击左下角,选择“产品模型”,单击“新增产品模型”。 产品模型可通过从产品中心导入和从本地导入两种方式。 从产品中心导入: 选择“从产品中心导入”,进入到产品中心页面。 导入自有产品:产品中心默认显示自有产品列表,可通过产品名称或者设备类型搜索产品。 导入第三方公开产品:“产品范围”选择“第三方公开”,可通过产品名称、设备类型或者厂商名称搜索产品。 导入第三方私有产品:单击页面右上角“第三方私有产品”,在弹出的窗口中输入产品验证码,该验证码由设备厂商提供。 在搜索的产品模型列表中单击需要导入的产品名称。 从本地导入: 选择“本地导入”进入到本地导入产品的页面。 在弹出的窗口中输入产品名称,并上传资源文件。 单击“确定”,等待导入完成。 在“产品模型”页面查看导入结果。 导入失败:可在“失败原因”中查看导入失败的原因,用户可根据失败原因定位错误。 导入成功:可单击“详情”,查看产品模型详情。 用户可以在产品列表中删除不再使用的产品,单击“删除”即可。 单击“详情”,用户可查看产品模型详细信息,包括查看该产品模型具备的服务列表,产品维护能力配置,以及自定义topic。 关于自定义topic,每个产品模型最多可以自定义10个,只有MQTT协议接入的设备支持自定义,参数信息配置如下: 设备操作权限: 发布: 设备侧消息上报时,可按配置中自定义的topic进行消息上报;数据流转时,设备消息中会携带topic参数标识该消息从哪个topic上报。 订阅:设备侧消息下发时,可在消息内容中指定此消息下发使用哪个topic;消息发往设备时,可以根据指定的topic下发。 发布和订阅:同时具备发布和订阅的权限。 topic名称:自定义即可。支持英文字母、数字、下划线,+和#(仅权限是订阅时支持),长度限制64。 描述:关于该topic的描述。 如果还未使用该产品模型注册设备,则可以删除该产品模型。 如果已使用该产品模型注册过设备,则无法删除该产品模型。
  • 概述 产品模型(也称Profile)用于描述设备具备的能力和特性。开发者通过定义Profile,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。当定义完一款产品模型后,在进行设备注册时,就可以选择已在控制台上导入的产品模型。 Profile包括产品信息、服务能力、维护能力三部分: 产品信息 描述一款设备的基本信息,包括厂商ID、厂商名称、设备类型、型号、协议类型。其中厂商ID和型号唯一标识一款产品。 例如:水表的厂商名称为“HZYB”,厂商ID为“TestUtf8ManuId”,设备类型为“WaterMeter”,型号为“NBIoTDevice”,协议类型为“CoAP”。 服务能力 描述设备具备的业务能力。将设备业务能力拆分成若干个服务后,再定义每个服务具备的属性、命令以及命令的参数。 以水表为例,水表具有多种能力,如上报水流、告警、电量、连接等各种数据,并且能够接受服务器下发的各种命令。Profile文件在描述水表的能力时,可以将水表的能力划分五个服务,每个服务都需要定义各自的上报属性或命令。说明如下: 服务名 描述 基础(WaterMeterBasic) 用于定义水表上报的水流量、水温、水压等参数,如果需要命令控制或修改这些参数,还需要定义命令的参数。 告警(WaterMeterAlarm) 用于定义水表需要上报的各种告警场景的数据,必要的话需要定义命令。 电池(Battery) 定义水表的电压、电流强度等数据。 传输规则(DeliverySchedule) 定义水表的一些传输规则,必要的话需要定义命令。 连接(Connectivity) 定义水表连接参数。 注:具体定义几个服务是非常灵活的,如上面的例子可以将告警服务拆分成水压告警服务和流量告警服务,也可以将告警服务合入到水表基础服务中。 维护能力 描述设备具备的维护能力,包括固件升级、软件升级、配置更新。 关于Profile文件的规范、含义和样例等,可参考如何离线开发?
  • 检查软件升级能力 对终端设备进行软件升级,需要检查设备对应的产品模型中,是否支持设备的软件升级能力。您可以通过如下方式检查和设置设备软件升级的能力 登录设备管理服务的控制台,单击左下角,切换到设备管理页面。 在“产品模型”界面点击“详情”,进入“产品详情”界面。 在“维护能力配置”界面中,检查软件升级的能力。协议为LWM2M的产品模型,将软件升级设置为“支持”,协议为PCP。协议为MQTT的产品模型,将软件升级设置为“支持”,不校验软件升级协议类型。 该操作只是修改了产品模型的能力,该产品模型对应的终端设备也需要支持软件升级的能力。否则,当升级任务中选择了不支持软件升级的终端设备,会导致软件升级失败。
  • 制作软件升级版本包 设备升级的软件包文件由各设备厂商提供,在物联网平台上传设备的软件升级包前,需要制作软件升级的版本包,用于修改软件包的描述文件,如软件版本、厂商名称、设备类型、产品模型等信息。下面将详细介绍版本包的制作方法。 新建文件夹命名为“DM”,在DM文件夹下新建文件夹,命名为“linux”。 使用Notepad++文本工具新建一个文本文件,拷贝如下内容到文本中,在Notepad++工具的“编码”菜单中选择“使用UTF-8编码”,然后将文本进行存储,存储路径选择步骤1中的“linux”文件夹,文件名称命名为“UpgradeDesc”,保存类型选择“.json”。 { "specVersion": "", "fileName": "", "packageType": "", "version": "", "deviceType": "", "manufacturerName": "", "model": "", "protocolType":"", "description":"", "versionCheckCode":"", "deviceShard":"", "platform":"", "supportSourceVersionList":[], "date":"" } 打开创建的“UpgradeDesc.json”文件,修改软件升级描述文件,相关字段如下表所示。 字段名 字段描述 是否必填 specVersion 描述文件版本号,固定值:“1.0”。 是 fileName 软件包文件名,例如:“ExamplePackage_V1.0.10.xx”。 是 packageType 软件包类型,必须设置为:“softwarePackage”。 是 version 软件包版本号长度不超过16个字节,例如:“V1.0.10” 是 deviceType 设备类型,需要与产品模型保持一致。例如:“WaterMeter”。 是 manufacturerName 制造商名称,需要与产品模型保持一致。例如:“TestUtf8ManuName”。 是 model 产品型号,需要与产品模型保持一致。例如:“TestUtf8ModelM2M”。 是 protocolType 设备接入协议类型,需要与产品模型保持一致。例如:“CoAP”。 说明: 设备接入的协议类型有三种:“CoAP”、“LWM2M”、“MQTT”。 是 description 对软件包的自定义描述。 是 versionCheckCode 软件升级包校验码,长度为4个字符。软件包下载时支持断点续传,根据该字段标识前后两次下载的软件包分片是否为同一个软件包。 否 deviceShard 终端下载软件包的每个分片的大小,单位为byte,如果不设置默认为500byte。大小为32~500之间。 否 platform 标识设备的操作系统,如linux。 否 supportSourceVersionList 支持用于升级此版本包的设备源版本列表。 支持通配符配置,*代表匹配任意0~n个字符,?代表匹配单个任意字符,如果存在多个版本,请使用英文“;”隔开。 否 date 出包时间,格式为:“yyyy-MM-dd”。 否 在与“DM”同级目录下创建文件夹,命名为“linux”,该文件夹名称必须同步骤1中的文件夹命令保持一致,将厂商软件包(软件包格式无限制)置于该文件中。 选中“DM”和“linux”文件夹,使用压缩工具打包成ZIP格式的压缩包,建议命令为“xx_package.zip”。 文件“DM”和“linux”的命名是固定的。 “xx_package.zip”下不能包含package这层目录。 仅支持ZIP格式的压缩包,不能压缩成其他格式后,例如rar,再手动修改文件类型为zip。
  • MQTT协议软件升级流程 MQTT协议SOTA升级流程的详细说明: 1~2. 用户在设备管理服务的控制台上传软件包,并在控制台或者应用服务器上创建软件升级任务。 3. 平台感知设备是否在线,当设备在线时立即触发升级协商流程。当设备不在线时,等待设备上线订阅升级topic,平台感知设备上线,触发升级协商流程。 4~5. 平台向设备下发查询设备软件版本号的命令,查询成功后,物联网平台根据升级的目标版本判断设备是否需要升级 。如果返回的软件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理,升级任务置为成功。如果返回的软件版本信息与升级的目标版本信息不同,且该版本号支持升级,则继续进行下一步的升级处理。 6~7. 物联网平台下发下载包URL、token及包的相关信息,用户根据下载包URL和token通过HTTP协议来下载软件包,24小时后token无效。 8. 终端设备进行下载包升级操作,升级完成后终端设备向物联网平台反馈升级的结果。 9. 物联网平台向控制台/应用服务器通知升级的结果。
  • 概述 软件(Software)一般分为系统软件和应用软件,系统软件实现设备最基本的功能,比如编译工具、系统文件管理等;应用软件可以根据设备的特点,提供不同的功能,比如采集数据、数据分析处理等。 软件升级又称为SOTA(SoftWare Over The Air),是指用户可以通过OTA的方式支持对LWM2M协议和MQTT协议的设备进行软件升级。基于LWM2M协议的产品模型,软件升级遵循的协议为PCP协议(查看PCP协议介绍),设备侧需要遵循PCP协议进行软件升级的适配开发,适配方法请参考设备侧适配开发指导(联通用户专用);基于MQTT协议的产品模型,不校验软件升级协议类型。 物联网平台支持LWM2M协议和MQTT协议的产品模型的软件升级。
  • LWM2M协议软件升级流程 LWM2M协议SOTA升级流程的详细说明: 1~2. 用户在设备管理服务的控制台上传软件包,并在控制台或者应用服务器上创建软件升级任务。 3. NB-IoT设备上报数据,平台感知设备上线,触发升级协商流程。 4~5. 物联网平台向设备下发查询设备软件版本的命令,查询成功后,物联网平台根据升级的目标版本判断设备是否需要升级。 如果返回的软件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理。 如果返回的软件版本信息与升级的目标版本信息不同,则继续进行下一步的升级处理。 6. 物联网平台向设备订阅软件升级的状态。 7~8. 物联网平台查询终端设备所在的无线信号覆盖情况,获取小区ID、RSRP(Reference Signal Received Power,参考信号接收功率)和SINR(Signal to Interference Plus Noise Ratio,信号干扰噪声比)信息。 查询成功:则根据如下方式计算可同时升级的并发数计算,并按照步骤10进行处理。 如下图所示,如果设备的RSRP强度和SINR强度均落在等级“0”中,则同时可以对该小区的50个相同信号覆盖区间的设备进行同时升级。 如果设备的RSRP强度和SINR强度分别落在等级“0”和“1”中,则以信号较弱的等级“1”为准,则只能同时对该小区的10个设备进行升级。 如果设备的RSRP强度和SINR强度分别落在等级“1”和“2”中,则以信号较弱的等级“2”为准,则只能同时对该小区的1个设备进行升级。 如果设备的RSRP强度和SINR强度不在该3个等级范围内,且均可以查询到,则按照信号最弱覆盖等级“2”处理,则只能同时对1个设备进行升级。 如果用户在软件升级中发现同时进行升级的设备数较少,则可以联系当地运营商检查和优化设备所在小区的无线覆盖情况。 查询失败:则按照流程9进行处理。 9. 物联网平台继续下发查询小区ID信息的命令,获取终端设备所在的小区ID信息。 如果查询成功:物联网平台支持同时对该小区的10个相同情况的设备进行软件升级。 如果查询失败:则升级失败。 10~12. 物联网平台通知设备有新的软件包版本,设备启动软件包的下载。软件包的下载按照分片的方式进行下载,支持断点续传功能,通过软件包分片中携带的“versionCheckCode”确定是否属于同一个软件包。下载完成后,设备知会物联网平台软件包已下载完毕。 13~14. 物联网平台向设备下发升级的命令,终端设备进行升级操作,升级完成后终端设备向物联网平台反馈升级的结果。 15. 物联网平台向控制台/应用服务器通知升级的结果。
  • 执行软件升级 根据PCP协议约定的交互流程,物联网平台收到设备发送的软件包下载结果通知后,需要通知设备进行升级操作。 物联网平台发送的请求消息 根据PCP消息结构的定义可以得出,物联网平台向设备发送执行软件升级消息,各个消息字段的填写如下: 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致,为17。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段的数据类型得出无数据区,即为0字节,转换为十六进制为:0000。 数据区:无数据区,无需携带该字段。 字段 数据类型 描述及要求 无数据区 物联网平台向设备下发的执行软件升级的消息为:FFFE 01 17 0000 0000(CRC16校验前),经CRC16计算得到校验码为:CF90。则替换校验码后物联网平台向设备发送的消息为:FFFE0117CF900000。 设备发送的应答消息 设备收到物联网平台下发的执行升级消息后,将对收到消息后的执行动作进行应答,各消息字段的填写如下。 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致:17。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段定义得出该数据长度为1个字节,转换为十六进制为:0001。 数据区:处理成功,则返回00,其它处理结果请参考数据区定义。本示例以返回00处理成功为例进行说明。 字段 数据类型 描述及要求 结果码 BYTE 0X00处理成功。 0X01设备使用中。 0X04电量不足。 0X05剩余空间不足。 0X09内存不足。 设备向物联网平台应答的消息为:FFFE 01 17 0000 0001 00 (CRC16校验前),经CRC16计算得到校验码为:B725。则替换校验码后设备返回的响应消息为:FFFE0117B725000100 。
  • 上报升级结果 根据PCP协议约定的交互流程,设备在执行完软件升级后,将会向物联网平台上报升级的结果。 设备发送的请求消息 根据PCP消息结构的定义可以得出,设备向物联网平台上报升级结果,各个消息字段的填写如下: 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致,为18。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段的数据类型得出数据区长度为17字节,转换为十六进制为:0011。 数据区:结果码,以上报升级成功为例,结果码为00。当前版本号:升级完成后的版本号,与物联网平台下发的软件版本一致,即v1.0,转换为十六进制为:56312E30000000000000000000000000。 字段 数据类型 描述及要求 结果码 BYTE 0X00升级成功。 0X01设备使用中。 0X04电量不足。 0X05剩余空间不足。 0X09内存不足。 0X0A安装升级包失败。 0X7F内部异常。 当前版本号 BYTE[16] 设备当前版本号。 设备向物联网平台上报升级结果的消息为:FFFE 01 18 0000 0011 0056312E30000000000000000000000000(CRC16校验前),经CRC16计算得到校验码为:C7D2。则替换校验码后设备向物联网平台上报升级结果码流为:FFFE0118C7D200110056312E30000000000000000000000000。 物联网平台发送的应答消息 物联网平台收到设备上报的升级结果消息后,将对设备进行应答,各个消息字段的填写如下。 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致:18。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段定义得出该数据长度为1个字节,转换为十六进制为:0001。 数据区:处理成功,则返回00,升级任务不存在80。本示例以返回00处理成功为例进行说明。 字段 数据类型 描述及要求 结果码 BYTE 0X00处理成功。 0X80升级任务不存在。 物联网平台向设备的应答消息为:FFFE 01 18 0000 0001 00 (CRC16校验前),经CRC16计算得到校验码为:AFA1。则替换校验码后物联网平台返回的应答消息为:FFFE0118AFA1000100 。 至此,设备的软件升级功能适配就完成了,赶紧动手试一试吧。
  • 上报下载结果 根据PCP协议约定的交互流程,设备接收完所有分片数据并组装完软件包后,需要向物联网平台上报软件包的下载结果。 设备发送的请求消息 根据PCP消息结构的定义可以得出,设备向物联网平台发送的上报软件包下载结果消息,各个消息字段的填写如下: 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致,为16。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段的数据类型得出数据区长度为1个字节,转换为十六进制为:0001。 数据区:上报软件包的下载结果,比如下载成功,设备侧上报00。 字段 数据类型 描述及要求 下载状态 BYTE 0X00下载成功。 0X05剩余空间不足。 0X06下载超时。 0X07升级包校验失败。 0X08升级包类型不支持。 设备向物联网平台发送升级包下载结果的消息为:FFFE 01 16 0000 0001 00(CRC16校验前),经CRC16计算得到校验码为:850E。则替换校验码后设备发送的升级包下载结果的消息为:FFFE0116850E000100。 物联网平台的应答消息 物联网平台收到设备上报的软件包下载结果后,将会向设备返回应答消息,各个消息字段的填写如下。 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致:16。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段定义得出该数据长度为1个字节,转换为十六进制为:0001。 数据区:处理成功,则返回00,处理失败返回80。本示例以返回00处理成功为例进行说明。 字段 数据类型 描述及要求 结果码 BYTE 0X00处理成功。 0X80升级任务不存在。 物联网平台向设备应答的消息为:FFFE 01 16 0000 0001 00 (CRC16校验前),经CRC16计算得到校验码为:850E。则替换校验码后物联网平台向设备应答的消息为:FFFE0116850E000100。
  • 下载新版本软件包通知 根据PCP协议约定的交互流程,查询完版本号后,物联网平台下发指令让设备下载新版本的软件包。 物联网平台发送消息 根据PCP消息结构的定义可以得出,物联网平台向设备下发下载新版本软件包通知时,各消息字段的填写如下。 起始标识固定为:FFFE。 版本号固定为:01。 消息码:此处为新版本通知,查询消息码表可以知道新版本通知为20,转换为十六进制为14。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的消息字段可以得出,数据区长度为22个字节,转换为十六进制为:0016。 数据区:根据数据区的定义可知。 目标版本号:由16个字节组成,假设升级的目标版本号为v1.0版本,转换为十六进制并在后面14个字节补充0后得到:56312E30000000000000000000000000。 升级包分片大小:由2个字节组成,升级包分片大小由制作软件升级版本包中的“deviceShard”字段定义,假设为500byte,转换为十六进制后为:01F4。 升级包分片总数:由2个字节组成,由软件包大小除以每个分片的大小并向上取整获得。假设软件包大小为500byte,则分片数量为1,转换为十六进制后为:0001。 检验码:由2个字节组成,由制作软件升级版本包中的“versionCheckCode”字段定义,假设为1234。 字段 数据类型 描述及要求 目的版本号 BYTE[16] 目的版本号,由ASCII字符组成,位数不足时,后补“0X00”。 升级包分片大小 WORD 每个分片的大小 升级包分片总数 WORD 升级包分片总数 升级包校验码 WORD 升级包校验码。用户上传升级包时,需要在升级包描述文件里填写校验码 将下载新版本软件包通知的消息流组合起来得到:FFFE 01 14 0000 0016 56312E30000000000000000000000000 01F4 0001 0000。前面说了,还要将消息流进行CRC16算法计算得到校验码为02F7。因此,物联网平台向设备通知下载新版本软件包的信息,物联网平台向设备发送的消息流为FFFE011402F7001656312E3000000000000000000000000001F400011234。 设备返回的应答消息 设备收到下载新版本软件包通知后,设备向物联网平台返回应答消息,是否允许设备进行升级,各消息字段的填写如下。 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致,为14。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段的数据类型得出数据区长度为1个字节,转换为十六进制为:0001。 数据区:设备根据自身的情况对平台下发的新版本通知进行响应,本示例以设备应答“允许升级”为例进行介绍,得出数据区为:00。其它应答消息请根据应答消息字段进行适配。 字段 数据类型 描述及要求 结果码 BYTE “0X00”允许升级 “0X01”设备使用中 “0X02”信号质量差 “0X03”已经是最新版本 “0X04”电量不足 “0X05”剩余空间不足 “0X09”内存不足 “0X7F”内部异常 将设备给物联网平台的应答消息流组合起来得到:FFFE 01 14 0000 0001 00。前面说了,还要将消息流进行CRC16算法计算得到校验码为D768。因此,设备向平台返回的应答消息流为FFFE0114D768000100。
共100000条