浅谈产品模型(Profile)在程序设计中的作用
引言:物联网平台的一个重要功能就是资产管理,产品或者设备都可以看成是资产中组成部分,所以有时候说物联网平台可以进行产品管理和设备管理。通常应用物联网平台开发一套具有产品或者设备管理功能的系统的时候,必须定义产品模型(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文件,这是必须的,重要的。
以上仅个人理解,欢迎大家,批评讨论,技术难点往往越辩越明。