华为云用户手册

  • 2.设备接入鉴权适配 当前各个云厂商都会定义自己的鉴权方式,导致设备迁移时,需要在设备端做各种适配。华为云IoT在平台端提供多种鉴权能力,把鉴权适配的动作移到云端,减少设备改动带来的风险。 自定义鉴权:针对存量设备设备鉴权参数无法修改的场景,平台提供自定义鉴权能力,支持在平台自定义配置设备的鉴权逻辑,实现设备鉴权方式免改动接入华为云IoT。 系统鉴权:华为云Device SDK提供了系统默认的鉴权能力,对于支持修改代码的设备,可以集成SDK通过轻量化改动就可以实现设备的接入。 对于存量设备信息的迁移,华为云也提供了多种迁移能力满足不同的应用场景: 设备迁移服务:华为云IoTDA提供自动化,高效的迁移能力,支持第三方云平台的存量产品和设备信息全量同步到华为云IoT,实现设备信息无感自动迁移。迁移流程如下: 图2 设备迁移 设备自注册:通过在自定义鉴权中开启自注册功能,支持设备在连接到平台时自动注册设备到平台,而不需要提前进行设备的迁移。 批量注册设备:通过华为云提供的SDK调用创建设备接口,进行批量的设备注册。
  • 常见的软/固件升级错误有哪些? 在软/固件升级时,可以在“执行详情”的任务列表中查看错误描述,常见错误描述如下: 表1 软固件升级错误描述 失败原因 原因解释 处理建议 Device Abnormal is not online 设备未在线 请检查设备侧是否在线。 Task Conflict 任务冲突 请检查当前设备是否有软件升级、固件升级正在进行。 Waiting for the device online timeout 等待设备上线超时 请检查设备侧是否上线。 Waiting for report cellId timeout 等待上报cellId超时 请通过模组日志检查设备侧是否上报的小区ID。 Waiting for report device firmware version timeout 等待上报设备固件版本超时 请通过模组日志检查设备侧是否上报了固件版本号。 Wait for the device to report upgrade result timeout 等待设备上报升级结果超时 请通过模组日志检查设备侧是否上报了升级结果。 Updating timeout and query device version for check timeout 等待升级结果超时,且等待设备版本信息超时 请通过模组日志检查设备侧是否上报升级结果及上报设备版本信息。 Waiting for device downloaded package timeout 等待设备下载固件包超时 请通过模组日志检查设备侧是否下载固件包。 Integrity check failure for new downloaded package 下载的固件包完整性校验失败 请通过模组日志检查设备下载的固件包是否完整。 Unsupported package type 固件包类型不支持 请通过模组日志检查设备状态和厂商提供的固件包是否正确。 Not enough storage for the new firmware package 下载的固件包存储空间不足 请检查设备存储。 Out of memory during downloading process 下载过程中内存不足 请检查设备内存。 Connection lost during downloading process 下载过程中连接断开 请检查设备连接状态。 Invalid URI URI不可用 检查设备侧的固件包下载地址是否正确。 Firmware update failed 固件更新失败 请通过模组日志检查设备侧。
  • 新增产品模型 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。
  • 下载升级包 根据PCP协议约定的交互流程,物联网平台通知设备有新的软件版本时,设备向物联网平台请求下载软件包,按照分片的序号进行下载。 设备发送的请求消息 根据PCP消息结构的定义可以得出,设备向物联网平台发送的请求软件包分片的第一条消息,各消息字段的填写如下。 起始标识固定为:FFFE。 版本号固定为:01。 消息码:查询消息码表可知请求升级包的消息码为21,转换为十六进制为:15。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段的数据类型得出数据区长度为18个字节,转换为十六进制为:0012。 数据区:目标版本号为平台下发的新版本通知版本号,即v1.0,转换为十六进制为56312E30000000000000000000000000,分片序号为第0个分片,即0000。 字段 数据类型 描述及要求 目的版本号 BYTE[16] 目的版本号,由ASCII字符组成,位数不足时,后补“0X00”。 分片序号 WORD 表示请求获取的分片序号,从0开始计算,分片的总数为软件包大小除以每个分片的大小并向上取整获得。设备可以保存已经收到的分片,下次直接从缺失的分片开始请求,达到断点续传的效果。 设备向物联网平台发送请求软件包分片的第一条消息为:FFFE 01 15 0000 0012 56312E30000000000000000000000000 0000(CRC16校验前),经CRC16计算得到校验码为:5618。则替换校验码后设备发送的第一条请求分片消息为:FFFE01155618001256312E300000000000000000000000000000。 其它分片请求的消息流只需要替换分片序号后,重新计算并替换CRC16校验码即可,此处就不再展开。 物联网平台的应答消息 物联网平台收到设备的请求软件包分片消息后,将会给设备下发分片的数据。物联网平台向设备响应的第一条请求分片的消息,各消息字段的填写如下。 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致:15。 校验码:CRC16计算前先用0000替代。 数据区:先讲数据区再讲数据区长度。结果码:00,分片序号:第0个分片:0000,分片数据:跟软件包定义的内容有关,我们假设软件包内容为HELLO, IoT SOTA!,经ASCII码转换为十六进制为:48454C4C4F2C20496F5420534F544121,共16字节。由于制作软件升级版本包中的“deviceShard”字段定义分片大小为500byte,即最大长度为500字节。这种情况下,无需在数据的后面补充0。 字段 数据类型 描述及要求 结果码 BYTE 0X00处理成功。 0X80升级任务不存在。 0X81指定的分片不存在。 分片序号 WORD 表示返回的分片序号。 分片数据 BYTE[n] 分片的内容,n为实际的分片大小。如果结果码不为0,则不带此字段。 数据区长度:根据数据区的字段定义得出该数据长度为19,转换为十六进制为:0013。 物联网平台向设备发送的第一个软件包分片消息为:FFFE 01 15 0000 0013 00 0000 48454C4C4F2C20496F5420534F544121(CRC16校验前),经CRC16计算得到校验码为:E107。则替换校验码后物联网平台向设备发送的第一个软件包分片消息为:FFFE0115E107001300000048454C4C4F2C20496F5420534F544121。 其它软件包分片的消息流只需要替换分片序号和分片数据后,重新计算并替换CRC16校验码即可,此处就不再展开。
  • 查询设备版本号 从设备的软件升级流程(本流程只描述物联网平台与设备基于PCP协议交互的流程,完整的软件升级流程请参考LWM2M协议软件升级流程)可以看到,首先物联网平台向设备下发查询版本号信息,设备进行应答。 物联网平台发送消息 根据PCP消息结构的定义可以得出,物联网平台向设备下发查询版本号时,各消息字段的填写如下: 起始标识:固定为消息流的前2个字节,固定为FFFE。 版本号:数据类型为1个字节整数,且固定为1,即在消息流中为01。 消息码:数据类型为1个字节整数,查询设备版本的消息码为19,转换为十六进制为13。 校验码:数据类型为2个字节整数,先将校验码置为0000,然后将完整的消息码流进行CRC16的算法计算得到校验码,再将得到的校验码替换原消息中的0000。 数据区长度:数据类型为2个字节整数,代表数据区的消息长度,根据数据区的数据结构可以得出该条消息无数据区,即数据区长度为0000。 数据区:数据区代表要真正发送给设备的数据,根据查询版本信息的数据区定义,该条消息是没有实际要传送的数据的,即无需数据区字段。 字段 数据类型 描述及要求 无数据区 因此将查询版本消息的码流组合起来得到:FFFE 01 13 0000 0000。前面的校验码时讲了,需要将组合后的消息码流进行CRC16算法(物联网平台提供了基于JAVA和C语言的CRC16算法代码样例,您可以直接使用)得到校验码4C9A,然后将该校验码替换原码流中的0000后得到FFFE01134C9A0000,该消息码流即为物联网平台发送给设备的查询版本信息的消息码流。 设备返回的应答消息 设备收到物联网平台要查询设备的软件版本号消息,设备要向物联网平台反馈查询的结果,各消息字段的填写如下。 起始标识固定为:FFFE。 版本号固定为:01。 消息码:与请求的消息码一致,为13。 校验码:CRC16计算前先用0000替代。 数据区长度:根据数据区的字段的数据类型得出数据区长度为17个字节,转换为十六进制为:0011。 数据区:根据数据区的定义可知,处理成功的结果码为00,版本号信息假设为V0.9,将V0.9进行ASCII转码得到56302E39,由于版本号的数据类型为BYTE[16],即16个字节,当前只有4个字节,因此需要在版本号数据后面补0,得到56302E39000000000000000000000000。因此,数据区合并后为0056302E39000000000000000000000000。 字段 数据类型 描述及要求 结果码 BYTE “0X00”处理成功 当前版本号 BYTE[16] 当前版本号,由ASCII字符组成,位数不足时,后补“0X00”。 将查询版本信息的消息流组合起来得到:FFFE 01 13 0000 0011 0056302E39000000000000000000000000。前面讲到,还要将消息流进行CRC16算法计算得到校验码为8DE3。因此,物联网平台向设备查询版本号信息,设备向平台返回的消息流为FFFE01138DE300110056302E39000000000000000000000000。
  • 概述 设备的OTA软件升级是基于华为定义的PCP协议进行的,设备侧需根据PCP协议定义的交互流程进行适配开发。下面我们将结合物联网平台与设备的软件升级交互流程,介绍终端设备将如何基于PCP协议构建交互过程中的请求消息和应答消息,帮助您更好的根据PCP协议进行终端侧的软件升级功能开发。 下面我们先了解下PCP消息的结构,PCP协议的请求消息和应答消息都遵循相同的消息结构,主要由这几部分组成: PCP协议消息由:起始标识位、版本号、消息码、校验码、数据区长度和数据区组成,各字段的要求和描述如下表所示。 字段名 字段类型 描述和要求 起始标识 WORD 起始标识,固定为0XFFFE。 版本号 BYTE 高四位预留;低四位表示协议版本号,当前为1。 消息码 BYTE 标识物联网平台与设备之间的请求消息类型,应答消息的消息码和请求消息相同。消息码的定义为: 0-18:预留消息码,暂未使用。 19:查询设备版本。 20:下载新版本软件包通知。 21:请求下载升级包。 22:上报升级包下载结果。 23:执行软件升级。 24:上报升级结果。 25-127:预留消息码,暂未使用。 校验码 WORD 从起始标识到数据区的最后一个字节的CRC16校验值,计算前先把校验码字段置为0,计算完成后把结果写到校验码字段。 数据区长度 WORD 数据区的长度。 数据区 BYTE[n] 可变长度,具体由各个指令定义,可参考下面介绍的各个指令对应的请求消息和应答消息定义。 数据类型 描述 BYTE 无符号一字节整数 WORD 无符号二字节整数 DWORD 无符号四字节整数 BYTE[n] n字节的十六进制数 STRING 字符串
  • 概述 固件(Firmware)一般是指设备硬件的底层“驱动程序”,承担着一个系统最基础最底层工作的软件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System)。 固件升级又称为FOTA(Firmware Over The Air),是指用户可以通过OTA的方式对支持LWM2M协议和MQTT协议的设备进行固件升级。物联网平台支持LWM2M协议和MQTT协议的产品模型的固件升级。
  • LWM2M协议固件升级流程 LWM2M协议FOTA升级流程的详细说明: 1~2. 用户在设备管理服务的控制台上传固件包,并在控制台或者应用服务器上创建固件升级任务。 3. NB-IoT设备上报数据,平台感知设备上线,触发升级协商流程。 4~5. 物联网平台向设备下发查询设备固件版本的命令,查询成功后,物联网平台根据升级的目标版本判断设备是否需要升级。 如果返回的固件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理。 如果返回的固件版本信息与升级的目标版本信息不同,则继续进行下一步的升级处理。 6~7. 物联网平台查询终端设备所在的无线信号覆盖情况,获取小区ID、RSRP(Reference Signal Received Power,参考信号接收功率)和SINR(Signal to Interference Plus Noise Ratio,信号干扰噪声比)信息。 查询成功:则根据如下方式计算可同时升级的并发数计算,并按照步骤9进行处理。 如下图所示,如果设备的RSRP强度和SINR强度均落在等级“0”中,则同时可以对该小区的50个相同信号覆盖区间的设备进行同时升级。 如果设备的RSRP强度和SINR强度分别落在等级“0”和“1”中,则以信号较弱的等级“1”为准,则只能同时对该小区的10个设备进行升级。 如果设备的RSRP强度和SINR强度分别落在等级“1”和“2”中,则以信号较弱的等级“2”为准,则只能同时对该小区的1个设备进行升级。 如果设备的RSRP强度和SINR强度不在该3个等级范围内,且均可以查询到,则按照信号最弱覆盖等级“2”处理,则只能同时对1个设备进行升级。 如果用户在固件升级中发现同时进行升级的设备数较少,则可以联系当地运营商检查和优化设备所在小区的无线覆盖情况。 查询失败:则按照流程步骤8进行处理。 8. 物联网平台继续下发查询小区ID信息的命令,获取终端设备所在的小区ID信息。 如果查询成功:物联网平台支持同时对该小区的10个相同情况的设备进行固件升级。 如果查询失败:则升级失败。 9. 物联网平台向设备订阅固件升级的状态。 10~11. 物联网平台向设备下发下载固件包的URL地址,通知设备下载固件包。终端设备根据该URL地址下载固件包,固件包的下载支持分片下载,下载完成后,设备知会物联网平台固件包已下载完毕。 12~13. 物联网平台向设备下发升级的命令,终端设备进行升级操作,升级完成后终端设备向物联网平台反馈升级结束。 14~16. 物联网平台下发命令查询固件升级的结果,获取升级结果后,向终端设备取消订阅升级状态通知,并向控制台应用服务器通知升级的结果。
  • MQTT协议固件升级流程 MQTT协议FOTA升级流程的详细说明: 1~2. 用户在设备管理服务的控制台上传软件包,并在控制台或者应用服务器上创建软件升级任务。 3. 平台感知设备是否在线,当设备在线时立即触发升级协商流程。当设备不在线时,等待设备上线订阅升级topic,平台感知设备上线,触发升级协商流程。 4~5. 平台向设备下发查询设备固件版本号的命令,查询成功后,物联网平台根据升级的目标版本判断设备是否需要升级 。如果返回的固件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理,升级任务置为成功。如果返回的固件版本信息与升级的目标版本信息不同,且该版本号支持升级,则继续进行下一步的升级处理。 6~7. 物联网平台下发下载包URL、token及包的相关信息,用户根据下载包URL和token通过HTTP协议来下载软件包,24小时后token无效。 8. 终端设备进行下载包升级操作,升级完成后终端设备向物联网平台反馈升级的结果。 9. 物联网平台向控制台/应用服务器通知升级的结果。
  • 检查固件升级能力 对终端设备进行固件升级,需要检查设备对应的产品模型中,是否支持设备的固件升级能力。您可以通过如下方式检查和设置设备固件升级的能力。 该操作只是修改了产品模型中定义的固件升级能力,该产品模型对应的终端设备也需要支持固件升级的能力。否则,当升级任务中选择了不支持固件升级的终端设备,会导致固件升级失败。 登录物联网平台控制台,点击右上角“进入设备管理服务”。单击左下角,切换到设备管理页面。 在“产品模型”界面点击“详情”,进入“产品详情”界面。 在“维护能力配置”界面中,检查固件升级的能力。协议类型为LWM2M的产品模型,将固件升级设置为“支持”,协议为LWM2M。协议类型为MQTT的产品模型,将固件升级设置为“支持”,不校验固件升级协议类型。
  • PCP消息识别 由于PCP协议消息和设备业务消息共用一个端口和URL通讯,平台收到设备的消息时,按照如下步骤判断是PCP协议消息还是业务消息: 检查设备是否支持软件升级(根据设备profile的omCapability.upgradeCapability定义),如果不支持,则认为是业务消息。 检查设备软件升级协议是否是PCP,如果不是,则认为是业务消息。 检查消息前两个字节是否为0XFFFE,如果不是,则认为是业务消息。 检查版本号是否合法,如果不合法,则认为是业务消息。 检查消息码是否合法,如果不合法,则认为是业务消息。 检查校验码是否正确,如果不正确,则认为是业务消息。 检查数据区长度是否正确,如果不正确,则认为是业务消息。 如果以上检查都通过,认为是PCP协议消息。 对设备的要求:需要设备保证业务消息的起始字节不是0XFFFE。
  • 消息结构 字段名 字段类型 描述和要求 起始标识 WORD 起始标识,固定为0XFFFE。 版本号 BYTE 高四位预留;低四位表示协议版本号,当前为1。 消息码 BYTE 标识物联网平台与设备之间的请求消息类型,应答消息的消息码和请求消息相同。消息码的定义为: 0-18:预留消息码,暂未使用。 19:查询设备版本。 20:下载新版本软件包通知。 21:请求下载升级包。 22:上报升级包下载结果。 23:执行软件升级。 24:上报升级结果。 25-127:预留消息码,暂未使用。 校验码 WORD 从起始标识到数据区的最后一个字节的CRC16校验值,计算前先把校验码字段置为0,计算完成后把结果写到校验码字段。 数据区长度 WORD 数据区的长度。 数据区 BYTE[n] 可变长度,具体由各个指令定义,可参考下面介绍的各个指令对应的请求消息和应答消息定义。
  • 编号规则 【功能说明】 查看编号规则具体设置,统计每个编号规则的使用情况 【操作说明】 编号规则添加:进入对象建模/表单对象管理,选择要设置的表单,进入“布局设计”页面,选择“文本框”类型的组件,组件属性默认值类型选择“自动编号”,可设置编号规则。根据设置的编号的“段规则”实时进行规则预览,预览的规则号码为编号设置生成的初始号码。 图5 编号规则设置 编号规则查看:已在表单设计中创建的编号规则,自动纳入编号规则统计; 图6 编号规则查看 双击编号规则,进入编号规则详情页面,可查看编号使用情况。 图7 双击编号规则
  • 整机测试 【操作说明】 在【检验项目】中,行选中检验项目,并输入计量数值,当计量数值不在计量范围内时,自动回显“NG”至检验项目网格中对应行,并在实际判定时显示“NG”,待检验项目输入完毕,单击【过站】按钮,会传送至【M000-维修采集】工位;但如果所有检验项目均符合检验标准,则在检验项目网格中会自动回显“PASS”,并将最终判定结果“PASS”回显至最右端【实际判定】文本框和图片中; 图2 检验项目 如果不想手动输入检验项目,可使用【一键通过】功能,触发后会自动将所有检验项目通过,并在右上角【实际判定】中回显“PASS”; 图3 一键通过
  • 上料装配 【操作说明】 扫描批号,可使用扫码枪进行扫码,对应回显出该工位操作员所在工位的相关信息; 扫描物料批号进行; 行选中左边的物料上料网格,在右边网格会出现对应领料明细批号,即已上料的领料号; 【已上料数/上料总数】根据该工位总上料数情况进行累加,初始为“0/5”,当上料完成之后会变为“5/5”; 【物料批号】在装配完成之后,会自动转变为“装配事务已完成”; 单击【锁定/解锁】,对【请扫描批号】文本框进行锁定或者解锁; 单击【作业模式】,该文本框会从“UP”变为“DOWN”; 单击【数据刷新】,可对物料网格进行刷新。 图1 上料装配
  • 系统登录 【功能说明】 目前系统支持账号登录、二维码登录 【操作说明】 账号登录:输入组织编号、用户名、密码,单击“登录”按钮登录系统; 图1 账号登录 二维码登录:登录系统之后,进入“个人中心/安全设置”模块,单击“刷新二维码”,输入账号密码进入验证,验证完成后,会自动生二维码,可将二维码进行打印;回到登录页面,切换单击“二维码”登录页签,用扫描枪扫描刚才打印的二维码进行登录。 图2 二维码登录
  • 包装/称重 【操作说明】 当没有装配数据线时,打开称重秤左下角的开关,打开串口,对产品进行称重,会在【质量代码】中提示“数据线未装配,请检查”;当没有装配风扇主体时,则提示“未装配风扇主体,请检查”;当没有装配盒子时,则提示“未装配外包装小盒,请检查”;当没有装配盒子与数据线时,则提示“外包装小盒与数据线均未装配,请检查”;当有错误信息时,会有对应的语音播报 图2 包装/称重1 当装配产品无问题时,会自动回显出【重量】为“143g”左右,【质量代码】“0000”,【自检结果】“PASS”,并自动打印小包标签,传送至【完工入库】; 图3 包装/称重2
  • 上料装配 【操作说明】 扫描批号,可使用扫码枪进行扫码,对应回显出该工位操作员所在工位的相关信息; 扫描物料批号进行; 行选中左边的物料上料网格,在右边网格会出现对应领料明细批号,即已上料的领料号; 【已上料数/上料总数】根据该工位总上料数情况进行累加,初始为“0/5”,当上料完成之后会变为“5/5”; 【物料批号】在装配完成之后,会自动转变为“装配事务已完成”; 单击【锁定/解锁】,对【请扫描批号】文本框进行锁定或者解锁; 单击【作业模式】,该文本框会从“UP”变为“DOWN”; 单击【数据刷新】,可对物料网格进行刷新。 图1 上料装配
  • 方案优势 跨行业实践能力:基于ISA-SP95标准,深入结合华磊迅拓在智能制造领域近20多年的行业实践沉淀,迭代出电子/元器件、机加工、新能源等行业套件,累计服务了700多家客户,具有从材料、元件、部件、整机的全产业链的跨行业方案的交付能力 跨行业建模能力:基于当先的“元模型动态建模”思想,采用可配置化模型参数+低代码脚本来描述多业态的SP95领域模型,并与周边系统实现全面集成。 跨平台底座能力:基于开源自主可控的微服务架构,满足信创标准,全面满足MOM平台上层工业模型/流程的敏迭代与高性能场景的需求。 云计算能力:方案选用华为云的基础设施服务作为系统的运行环境,大量整合了华为云服务包括GaussDB(for MySQL)、Redis、CCE、OBS、DLV等云原生应用,使得系统在数据存储、计算和运维部署方面的能力都得到大大的提升。
  • 方案架构 图1 华磊迅拓MOMpro企业智造运营管理解决方案业务架构 华为云公有云部署和华为云基础设施服务,包括计算、存储、网络、安全等服务,作为该系统软件的运行环境; 整合了包括华为云的云数据库 GaussDB(for MySQL)、分布式缓存服务Redis、云容器引擎CCE、对象存储服务OBS、数据可视化服务DLV 等云服务,很好的保证了系统的数据存储和处理能力,提高了系统的性能和并发处理的能力; 基于安全、柔性与敏捷的平台底座打造的面向于离散类制造企业的跨行业MOM解决方案,涵盖了物流、制造、设备和质量等多个环节; 提供实时的数据可视化服务能力,通过管理驾驶舱、现场云看板、可视化图形报表等工具为用户提供实时的信息反馈,为企业的各项决策提供实时的依据和保障; 提供强大的联网和组态能力,实现对现场设备的联网和实时监视,通过对生产设备海量数据的采集和分析,让数据真正成为企业的财富,并提供更多的机遇;
共100000条