摘要:华为云物联网平台承载着南北向数据互通的功能职责。

本文分享自华为云社区《如何基于华为云IoT物联网平台进行产品开发》,作者: Super.雯 。

华为云物联网平台承载着南北向数据互通的功能职责。在华为云物联网平台基础上实现端到端物联网业务的过程中,开发者需要基于该平台进行二次开发。本文先跟大家一起聊一聊产品开发。

产品开发

在物联网平台集成解决方案中,物联网平台作为承上启下的中间部分,向应用服务器开放API接口,向各种协议的设备提供API对接。为了提供更加丰富的设备管理能力,物联网平台需要理解接入设备具备的能力以及设备上报数据的消息格式,因此,用户需要在控制台上完成产品模型和编解码插件的开发。基于IoT平台去实现一个物联网解决方案时,需完成的详细操作如下表所示:

开通设备接入服务后,使用设备接入服务的完整流程主要分为产品开发、应用侧开发、设备侧开发和日常管理。

产品开发:开发者在进行设备接入前,基于控制台进行相应的开发工作,包括创建产品、创建设备、在线开发产品模型、在线开发插件、在线调试、自助测试和发布产品。

设备侧开发:设备侧可以通过集成SDK、模组或者原生协议接入物联网平台。

应用侧开发:通过API的形式对外开放物联网平台丰富的设备管理能力,应用开发人员基于API接口开发所需的行业应用,如智慧城市、智慧园区、智慧工业、车联网等行业应用,满足不同行业的需求

日常管理:真实设备接入后,基于控制台或者API接口,进行日常的设备管理。

产品模型介绍

产品模型又称Profile,用于定义一款接入设备所具备的属性(如颜色、大小、采集的数据、可识别的指令或者设备上报的事件等信息),然后通过厂家、设备类型和设备型号,唯一标识一款设备,便于平台识别。产品模型可以在设备接入控制台进行无码化开发。

产品模型是用来描述一款设备“是什么”、“能做什么”以及“如何控制该设备”的文件。开发者通过定义产品模型,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。当定义完一款产品模型后,在进行注册设备时,就可以使用在控制台上定义的产品模型。

在华为云物联网平台中,产品模型是设备接入的关键内容,里面包含了这个设备所提供的能力与服务,同时还包含了设备上下行的数据格式。例如,在设备上报数据到平台时,平台会根据上报数据的关键字进行产品模型匹配,并将数据格式与匹配上的产品模型文件进行校验,只有匹配成功的数据才会在平台上保存。如果匹配不成功,物联网平台会将上报的数据作为非法数据进行抛弃。

产品信息:描述一款设备的基本信息,包括厂商ID、厂商名称、设备类型、协议类型。例如:水表的厂商名称为“HZYB”,厂商ID为“TestUtf8ManuId”,设备类型为“WaterMeter”,协议类型为“CoAP”。

服务能力:描述设备具备的业务能力。将设备业务能力拆分成若干个服务后,再定义每个服务具备的属性、命令以及命令的参数。以水表为例,水表具有多种能力,如上报水流、告警、电量、连接等各种数据,并且能够接受服务器下发的各种命令。产品模型文件在描述水表的能力时,可以将水表的能力划分五个服务,每个服务都需要定义各自的上报属性或命令。

产品模型案例:智能水表

华为云物联网平台提供了多种定义产品模型的方法,开发者可以根据自己需求,选择对应的方法定义产品模型:

  • 导入库模型(平台预置产品模型)
  • 上传模型文件(离线开发)
  • Excel导入
  • 自定义功能(在线开发)

设备编解码插件

编解码插件简介

什么是编解码插件?

编解码插件能够将终端上报的数据(二进制格式)解码为应用服务器所能“阅读”的数据(JSON格式),将服务器端下行命令数据(JSON格式)编码为终端设备所能“理解执行”的数据(二进制格式)。

为什么要使用编解码插件?

NB-IoT设备采用二进制格式或者tlv格式数据。

NB-IoT设备和IoT平台之间采用的是CoAP协议通讯,CoAP消息的payload为应用层协议数据,应用层数据的格式由设备自行定义。鉴于NB-IoT设备一般对省电要求较高,所以应用层数据一般不采用JSON格式数据。

应用服务器端并不理解二进制格式或者tlv格式数据。

如何开发编解码插件?

编解码插件的开发手段有图形化开发、离线开发和脚本化开发三种,由于插件离线开发较为复杂,且耗时比较长,推荐使用图形化开发编解码插件。

图形化开发是指在设备接入控制台,通过可视化的方式快速开发一款产品的编解码插件。

离线开发是指使用编解码插件的Java代码Demo进行二次开发,实现编解码功能、完成插件打包和质检等。

脚本化开发是指使用JavaScript脚本实现编解码的功能。

华为云物联网平台图形化编解码插件开发采用了将原有的插件开发代码进行抽象封装技术,开发者无需了解java编程语言,只需在开发界面将设备码流的格式完成定义,并将码流与profile中的属性关系通过拖拽的方式完成映射,点击部署后Portal会根据开发者的设计自动生成插件并打包部署到物联网平台。

对于设备发来的上行消息,首先解析CoAP报文得到应用层数据,然后调用设备厂商提供的插件解码,从而将消息发送到应用平台;对于来自应用平台的下行消息,需要调用设备厂商提供的编解码插件,组装CoAP消息发送到设备,如下图所示。此外编解码插件还负责对平台下发命令和对上报数据的响应进行编码。

数据上报

消息处理流程包括数据上报处理流程和命令下发处理流程,数据上报处理流程如下图所示。

当设备和物联网平台完成对接后,一旦设备上电,设备基于在设备上定义的业务逻辑进行数据采集和上报,可以是基于周期或者事件触发。设备可通过以下方式发送数据到物联网平台:

设备消息上报:设备可以通过消息上报接口将设备的自定义数据上报到平台,平台对设备上报的消息不进行解析和存储,通过数据转发规则转发到华为云其他云服务上进行存储和处理,然后通过其他云服务的控制台或者API接口进行进一步的数据处理。

设备原始数据(二进制)上报:设备可以通过二进制上报接口上报设备的原始码流,平台通过编解码插件将设备原始数据解析为产品模型定义的JSON格式,解析后的数据上报给设备接入服务进行相关业务处理。

设备属性上报:设备通过属性上报接口,将产品模型中定义的属性数据上报给平台,平台解析后的数据上报给设备接入服务进行相关业务处理。

网关批量属性上报:网关设备将批量设备的数据一次性上报到平台,平台解析后的数据上报给设备接入服务进行相关业务处理。

在数据上报处理流程中,有两处需要用到编解码插件。

  1. 将设备上报的二进制码流的数据解码成JSON格式的数据,发送给应用服务器。
  2. 将应用服务器响应的JSON格式数据编码成二进制码流格式的数据,下发给设备。

命令下发

命令下发是指平台将命令下发到设备,设备响应并执行命令,从而达到平台到设备远程控制的效果。

这里分别列举了LwM2M/CoAP和MQTT这两种协议的立即下发和缓存下发的流程,如图所示。

应用下发命令到物联网平台,平台会根据对应的产品信息找到对应的编解码插件,对命令请求进行编码,将命令下发给设备;下发命令成功或失败,会根据下发结果更新命令状态,若设备对命令做出了响应,会将命令状态更新为“执行成功”或“执行失败”。

由于使用MQTT是不需要编解码插件的,直接使用透传的形式,当命令立即下发时,应用下发命令到物联网平台,平台将命令下发至设备,返回执行结果,消息执行结果通知。

应用缓存下发命令,当设备不在线时,将命令写入缓存队列,更新消息状态,直到设备上报数据,设备上线,订阅消息下发Topic,消息下发,更新消息状态。

设备编解码插件示例:

更多学习内容,请[关注IoT物联网社区]

添加华为云IoT小助手微信号(hwc-iot),回复“阅读”获取更多资讯

点击关注,第一时间了解华为云新鲜技术~

聊聊如何在华为云IoT平台进行产品开发的更多相关文章

  1. 基于华为云IoT Studio自助生成10万行代码的奥秘

    华为IoT小助手们搬好板凳.备好笔记本.听了HDC.Cloud的几场华为云技术架构师的直播讲课,感觉获益匪浅却又似懂非懂,直后悔自己没有好好打下基础.为了避免再次出现这样的情况,小助手偷偷跑去找了华为 ...

  2. OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?

    摘要:本文主要介绍基于OpenHarmony 3.0版本来对接华为云IoT设备接入IoTDA,以小熊派BearPi-HM_Nano开发板为例,使用huaweicloud_iot_link SDK对接华 ...

  3. 华为云MVP熊保松谈物联网开发:华为云IoT是首选,小熊派是神器

    摘要:在AI.5G的技术驱动下,物联网行业的发展愈加如火如荼,开发者在技术的快速更迭间,也得乘风破浪跟上新技术的节奏. 在AI.5G的技术驱动下,物联网行业的发展愈加如火如荼,开发者在技术的快速更迭间 ...

  4. 直击Huawei Mate 40产线背后的华为云IoT智能制造

    摘要:数字孪生?在数字世界找到物理世界的设备! 本文分享自华为云社区<[云驻共创]Huawei Mate 40产线直击之华为云IoT智能制造助力工厂数字化转型>,原文作者:启明. Part ...

  5. 基于STM32+华为云IOT设计智能称重系统

    摘要:选择部署多个重量传感器和必要的算法.通过WiFi 通信模块.GPS定位模块,采集车辆称重数据一地理位置信息,并通过网络发送至云平台,设计图形化UI界面展示称重.地图位置等重要信息,实现对称重系统 ...

  6. CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统

    摘要:以CC2530单片机为核心器件,设计一个冷链环境信息采集系统,利用传感器技术对冷藏仓内的环境参数进行采集,上传到华为云物联网云平台,然后通过手机端或移动端进行显示,便于分析,观察冷链环境信息. ...

  7. 阿里云 IOT 对接设备开发 C# 开发设备对接阿里云 IOT平台

    一,创建阿里云 IOT 产品.设备 目前阿里云每月赠送 100 万条流量,可以免费使用基础版.高级版,开通后即可免费使用. 阿里云 IOT 平台地址 https://iot.console.aliyu ...

  8. 基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一

    [摘要]仓储管理存在四大细分场景:出入库管理.盘点.分拣和货物跟踪.本系列将介绍利用华为云IOT全栈云服务,端侧采用华为收发分离式RFID解决方案,打造端到端到IOT智慧仓储解决方案的最佳实践. 仓储 ...

  9. SAAS云平台搭建札记: (一) 浅论SAAS多租户自助云服务平台的产品、服务和订单

    最近在做一个多租户的云SAAS软件自助服务平台,途中遇到很多问题,我会将一些心得.体会逐渐分享出来,和大家一起探讨.这是本系列的第一篇文章. 大家知道,要做一个全自助服务的SAAS云平台是比较复杂的, ...

随机推荐

  1. 为什么 char 数组比 Java 中的 String 更适合存储密码?

    另一个基于 String 的棘手 Java 问题,相信我只有很少的 Java 程序员可以正确回答这个问题.这是一个真正艰难的核心Java面试问题,并且需要对 String 的扎实知识才能回答这个问题. ...

  2. Web,RESTful API 在微服务中的作用是什么?

    微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能.因 此,要实现这一点,每个微服务必须具有接口.这使得 Web API 成为微服务的一 个非常重要的推动者.RESTful API 基 ...

  3. JDBC 中如何进行事务处理?

    Connection 提供了事务处理的方法,通过调用 setAutoCommit(false)可以设置 手动提交事务:当事务完成后用 commit()显式提交事务:如果在事务处理过程中 发生异常则通过 ...

  4. 什么是 Redis?

    Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis 支持数据的持久化,可以 ...

  5. H5活动全屏滚动页面在安卓智能电视TV调试

    前段时间公司做一个线上活动,在电视上商品促销.产品的要求是每个商品介绍刚好满一屏,按下遥控器向下键可以整屏切换.这种功能如果实在PC端,实现起来非常容易,引用jQuery插件就能实现.但是在安卓智能电 ...

  6. 微信小程序实时通讯(websocket)问题

    这几天值班忙的不要不要,人工智能这块看的都是零零散散,今天就来写写小程序的实时通讯吧.小程序端://这个是连接 lianjie:function(){ var socketOpen = false / ...

  7. python-使用函数求余弦函数的近似值

    本题要求实现一个函数,用下列公式求cos(x)近似值,精确到最后一项的绝对值小于eps(绝对值小于eps的项不要加): cos(x)=0!x0​−2!x2​+4!x4​−6!x6​+... 函数接口定 ...

  8. Android优化应用启动速度

    一.应用的启动 启动方式 通常来说,在安卓中应用的启动方式分为两种:冷启动和热启动. 1.冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动 ...

  9. 微信小程序超出后...

    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;

  10. 手撕spring核心源码,彻底搞懂spring流程

    引子 十几年前,刚工作不久的程序员还能过着很轻松的日子.记得那时候公司里有些开发和测试的女孩子,经常有问题解决不了的,不管什么领域的问题找到我,我都能帮她们解决.但是那时候我没有主动学习技术的意识,只 ...