引言:物联网平台的一个重要功能就是资产管理,产品或者设备都可以看成是资产中组成部分,所有有时候说物联网平台可以进行产品管理和设备管理。通常应用物联网平台开发一套具有产品或者设备管理功能的系统的时候,必须定义产品模型(Profile)。很多物联网平台的使用文档中大都会介绍了如何建立满足平台要求的产品模型,但是很少说明为什么要建立产品模型,建立的产品模型跟程序设计有啥关系。因此很多开发者都会按照介绍完成产品模型的定义,但是不太理解为什么要建这个模型,时不时会想想,为啥要这个Profile。本文从产品模型(Profile)的定义的理解,Profile文件内容的分析,Profile文件与程序设计的联系三个部分的描述,力图能让开发者对Profile在程序设计中的作用有更深入的理解。个人经验有限,理解不正确的地方,希望大家多多包涵,一起讨论。

1.什么是Profile

在华为云的开发文档中能看到,Profile(即产品模型)是用来描述一款产品中的设备“是什么”、“能做什么”以及“如何控制该设备”的文件。如何理解这句话?

通常一款产品或者设备本身具有很多的物理属性或者功能,人们在这个产品的说明书中经常能看到。但是要在物联网平台中管理这些设备,得让物联网平台知道这个设备的相关的物理属性或者功能,即是“什么设备”,“能做什么”,“怎么控制它”等等。而物联网平台是什么呢?其他它本质上还是属于计算机,或者说是具有很强计算能力的复杂的计算机系统。怎么才能让计算机理解真实物理世界的产品或者设备呢?这就得需要一种模型,计算机能理解得模型。计算机最擅长得就是处理数据,例如int型的数据,char型数据,string数据,float型的数据,double型的数据,等等。用这些数据来表示产品的属性和功能,这样计算机就能理解了. 具体怎么表示呢?看下面profile文件的具体内容分析

2.Profile文件内容分析

产品模型Profile本质是一个JSON文件。通过这个文件中的内容来表述一个产品或者设备的属性和功能,并且必须按照文件的格式要求来编写才可以被计算机来识别和处理(其实是依靠计算机中运行的程序来处理)。这个文件的编写规则可以参考华为云的文档,这里不在讲述了。

通常一个Profile文件包含如下方面的内容(其实就是对要表示的产品或者设备的功能和属性进行了一些分类要求,来自华为云)

下面这个是智慧路灯项目中的路灯的Profile文件中的部分内容

类似这些基本信息,是产品或者设备管理系统中需要知道的基础内容。

上面是一个具体的属性说明。

产品模型Profile就是按照文件格式的要求,将产品的属性和功能进行描述,这个描述信息可以由计算机软件进行自动解析(这都是在物联网平台的软件程序执行的,平台用户是看不到的)。解析之后能做什么呢?

3. Profile文件与程序设计的联系

Profile文件被物联网平台的软件自动解析后,要做什么呢?我们说过物联网平台的一个主要功能就是产品或者设备管理。在开发产品和设备管理系统的程序的时候,或许采用面向对象的编程方法,来定义如下的类,一个简单的示例

这些类实例化赋初值时,就使用从产品的Profile文件解析而来的数据值。

例如实例化了一个产品,它的基础信息中的 manufactureName 这个变量的值,就可以是从Profile文件中解析到的 China_Factory_01;

又如再通过MQTT协议或者COAP协议传送过来的产品的属性 lightDimmingValue,进行解析就可以用到从Profile文件中解析到的这个属性的数据类型 dateType. 也可以通过解析时判断这个属性是否是需要的属性等。这些程序功能的设计都可以使用从Profile文件中解析的信息。

4.总结

综上,产品模型Profile就是一个按照一定的格式要求,对产品的属性和功能进行描述的JSON文件。这个文件计算机程序可以自动解析。Profile里面描述的信息为物联网平台管理产品或者设备的必须的一些信息。通过这些信息可以对一些程序中的类进行初始化,可以用于解析通讯来的数据等等。不同的物联网平台对Profile中信息的使用方法可能会不同,但是有一点是很多对于Profile文件的处理和使用对平台用户来说是看不到的。但是用户在基于物联网平台开发自己的产品或者设备管理系统时,一定要编写正确的满足自己管理要求的产品模型,即Profile文件,这是必须的,重要的。

以上仅个人理解,欢迎大家,批评讨论. 技术难点往往越辩约明。

点击这里,了解更多精彩内容

【华为云技术分享】浅谈产品模型(Profile)在程序设计中的作用相关推荐

  1. 【华为云技术分享】Scrum Master如何引导团队中的刺头

    背景 拜访企业的过程中,不少企业领导提到过一个相似的问题:"我们团队有个人平时总是和我(或者其他成员)对着干,把团队氛围搞得很差,Scrum Master应该怎么引导他们,让他们好好工作?& ...

  2. 【华为云技术分享】三大前端技术(React,Vue,Angular)探密(下)

    [华为云技术分享]三大前端技术(React,Vue,Angular)探密(上) [Angular] Angular(通常被称为 "Angular 2+"或 "Angula ...

  3. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 1

    前言 以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响.信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长:另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加, ...

  4. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 3

    4. 微观层面 4.1 个体动机 在开源软件发展之初, 商业组织的投入很少甚至没有, 完全是靠Richard Stallman 或者 linus Torvalds 这样的个人在努力推动开源软件艰难前行 ...

  5. 计算机网络在教学方面的作用是什么意思,浅谈发挥网络在教学中的作用

    浅谈发挥网络在教学中的作用 时间: 2007-04-01 栏目: 浅谈发挥网络在教学中的作用 蒋丽     新余市五一路小学 内容摘要: 随着科学技术的不断发展,网络技术也不断的更新,它在社会各领域都 ...

  6. 【华为云技术分享】直播回顾丨激发数据裂变新动能,HDC.Cloud云数据库前沿技术解读

    3月24日14:00-17:00,HDC.Cloud开发者沙龙系列云数据库专场直播线上开启,此次华为云数据库通过三场直播从NoSQL数据库新技术.数据库迁移.行业解决方案等方面对云端数据库进行深度解读 ...

  7. 【华为云技术分享】云小课 | 华为云镜像服务扫盲帖——汇集5大功能,21个常见案例

    关于镜像,很多人只知道它可以为云服务器提供操作系统,是云服务器的"装机盘".其实,它还是一个迁移神器,比如,将云服务器从账号A迁移到账号B,从区域1迁移到区域2,都离不开镜像.华为 ...

  8. 【华为云技术分享】成熟度模型:企业规模化推广敏捷和DevOps利器

    摘要: 本文介绍了成熟度模型在软件开发行业的应用,重点阐述了成熟度模型对于敏捷和DevOps在企业中进行规模化推广的价值,探讨了成熟度模型的设计原则,并对于如何明智使用成熟度模型给出了建议. 导言 在 ...

  9. 【华为云技术分享】解析:物联网数据分析服务如何做?

    [摘要] 物联网设备正在产生大量的数据,如何为开发者提供简单有效的数据分析服务,简化开发过程,提升开发效率,让IoT数据快速变现是一个摆在我们面前的问题. 没有疑问,我们已经身处物联网时代了,每天都有 ...

最新文章

  1. 关于final局部变量引用的研究
  2. bootcss echarts_数据可视化插件使用(Echarts)
  3. AQuery学习笔记(一)
  4. java robot 控制 不用用户 界面_编写一个基于Java Robot类的屏幕捕获工具
  5. React开发(254):react项目理解 ant design 注意参数传递格式
  6. php边框圆角,css3圆角和圆角边框使用方法总结
  7. 这或许才是产品人真实的工资情况
  8. Android挂断、接听电话
  9. 杨国勋:云计算颠覆现有市场和产业格局
  10. 2019必学的10大顶级Python库!
  11. 总结Verilog中always语句的使用
  12. python发送请求给服务器参数传递方式以及服务器响应方式
  13. matlab各向异性高斯核方向导数滤波器,基于各向异性高斯方向导数滤波器提取图像粗边缘的方法...
  14. HazelEngine 学习记录 - 2D Renderer Transforms and 2D Renderer Textures
  15. 汇编语言lcall d200c,有没有哪位大佬能帮我把汇编语言帮我转为c或者c++的 求帮助...
  16. 互斥锁(mutex)的使用
  17. 安卓手机怎么设置蓝牙耳机弹窗动画_链接重推其他团无线蓝牙耳机
  18. Windows微信文本压缩算法分析
  19. 数据库应用+SQL优化+Git
  20. 机构不会教的python入门学习路线

热门文章

  1. 江苏自考计算机组成原理多少分及格,自考《计算机组成原理》基本概念第七章...
  2. Git笔记(29) 搜索
  3. mysql灰度更新_灰度发布系统架构设计
  4. linux安装qq_体验一下,看看 Linux 系统中的 QQ 是什么样子的
  5. mysql实际应用在哪里_MySQL数据库的实际应用步骤
  6. list、tuple
  7. js模板引擎 之handlebars.js
  8. Hibernate一张图
  9. include 与 Widget
  10. 乌版图 read-only file system