引言物联网平台的一个重要功能就是资产管理,产品或者设备都可以看成是资产中组成部分,所以有时候说物联网平台可以进行产品管理和设备管理。通常应用物联网平台开发一套具有产品或者设备管理功能的系统的时候,必须定义产品模型(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. 转:浅谈CSS在前端优化中一些值得注意的关键点

    前端优化工作中要考虑的元素多种多样,而合理地使用CSS脚本可以在很大程度上优化页面的加载性能,以下我们就来浅谈CSS在前端优化中一些值得注意的关键点: 当谈到Web的“高性能”时,很多人想到的是页面加 ...

  2. 浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  3. 【WebApi系列】浅谈HTTP在WebApi开发中的运用

    WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...

  4. 浅谈箭头函数和setTimeout中的this

    箭头函数会改变this的指向,这个大家看文档都看到过,可是有没有具体理解呢?我发现自己应该可能大概是......emmmm,然后我整理了一遍,加强一下概念吧顺带再讲一下setTimeout这个函数改写 ...

  5. 浅谈 MVVM 设计模式在 Unity3D 中的设计与实施

    初识 MVVM 谈起 MVVM 设计模式,可能第一映像你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding),命令(Command)等功能,这让 MVVM 模式得到 ...

  6. 浅谈TCP/IP网络编程中socket的行为

    我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...

  7. 浅谈JavaScript的面向对象程序设计(四)

    本文继续讲解JavaScript的面向对象程序设计.继承是面向对象语言中的一个基本概念,面向对象语言支持两种继承实现方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.但是在 ...

  8. 浅谈《守望先锋》中的 ECS 构架

    https://blog.codingnow.com/2017/06/overwatch_ecs.html 今天读了一篇 <守望先锋>架构设计与网络同步 .这是根据 GDC 2017 上的 ...

  9. 浅谈JavaScript的面向对象程序设计(三)

    前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性.对象的工厂模式.构造函数和原型等.通过介绍,这些创建对象的方法依然有不少优化和改进的地方. 组合使用构造函数模式和原型 ...

随机推荐

  1. vector做形参时的三种传参方式

    vector在做形参的时候传参的方式和普通的变量是一样的,要么传值.要么传引用.要么传指针. 现在分别定义三个以vector为形参的函数: (1) fun1(vector <int> v) ...

  2. thinkphp5.1+layui2.x 时间戳转换为日期格式

    layui.use(['table','util'],function(){ var table = layui.table,form = layui.form; table.render({ ele ...

  3. discuz-目录

    由于工作原因,开始学习discuz,0基础开发,学了一会总结了一些

  4. 定期清理nohup.out

    事件背景 服务应用weblogic通过nohup启动. nohup的使用全部都在weblogic域中的bin目录下 但是没有做定期nohup.out的清理 导致核心服务的日志过大,在出现问题时候难以打 ...

  5. Spring5参考指南:SpringAOP简介

    文章目录 AOP的概念 Spring AOP简介 Spring AOP通知类型 写过程序的都知道OOP即面向对象编程. 从最开始的面向过程编程,到后面的面向对象编程,程序的编写方式发生了重大的变化,面 ...

  6. springmvc返回不带引号的字符串

    springmvc返回不带引号的字符串项目使用springboot开发的,大部分出参为json,使用的fastJson,现在有的接口需要返回一个success字符串,发现返回结果为“success”, ...

  7. mac OS 搭建PHP项目开发环境

    系统 macOS Mojave 版本10.14.6 mac OS 自带Apache和PHP 非常便利 sudo apachectl -v //查看apache版本 php -v //查看php版本 启 ...

  8. 外媒解读Web安全核心PKI的四大致命问题

    Web安全的立足根基在于复杂的PKI部署体系,但实际生活中得到正确部署的比例却非常有限,而且这一切都将随着摩尔定律的滚滚洪流灰飞烟灭. 我个人算是PKI(即公共密钥基础设施)的忠实拥护者.我热爱数学与 ...

  9. Vs Code在Vue项目中v-for指令提示错误的解决办法

    最近在做一个Vue项目,在其中用到v-for指令时,发现Vs Code报错,如下图(代码是没有任何问题的),在网上找了一下解决办法,希望能帮助到更多人. 解决方法: 打开    文件-首选项-设置 将 ...

  10. angularJS中$http.get( ).success( )报错原因及解决方案

    一.问题描述: 电脑安装的angular1.6.7版本,项目中使用了$http.get( ).success( ),控制台报错: $http.get(...).success is not a fun ...