引言物联网平台的一个重要功能就是资产管理,产品或者设备都可以看成是资产中组成部分,所以有时候说物联网平台可以进行产品管理和设备管理。通常应用物联网平台开发一套具有产品或者设备管理功能的系统的时候,必须定义产品模型(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. sqlliab7-8

    less-7 https://www.jianshu.com/p/20d1282e6e1d ?id=0')) union select 1,'2','<?php @eval($_POST[&qu ...

  2. mysql闪回工具--binlog2sql实践

    DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚.传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据.此法费时费力,甚至需要停机维护 ...

  3. 以命令行界面启动 Ubuntu

    1. /etc/default/grub 将GRUB_CMDLINE_LINUX_DEFAULT一行中改为"quiet splash 3" 2. update-grub 3. 重启

  4. 显示 QStringList 的内容

    QStringList s; s << "your" << "string" << "list"; ; ...

  5. oracle获取表字段及表注释的相关操作

    一.获取表字段: select * from user_tab_columns where Table_Name='用户表' user_tab_columns 为当前用户的columns,除此之外还有 ...

  6. 浅析 JS 中的作用域链

    作用域链的形成 在 JS 中每个函数都有自己的执行环境,而每个执行环境都有一个与之对应的变量对象.例如: var a = 2 function fn () { var a = 1 console.lo ...

  7. vuex-persist数据持久化存储插件

    Vuex 解决了多视图之间的数据共享问题.但是运用过程中又带来了一个新的问题是,Vuex 的状态存储并不能持久化.也就是说当你存储在 Vuex 中的 store 里的数据,只要一刷新页面,数据就丢失了 ...

  8. 由JS数组去重说起

    一.问题描述: var array=[1,45,3,1,4,67,45],请编写一个函数reDup来去掉其中的重复项,即 reDup(array); console.log(array);//[1,4 ...

  9. The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 K题 center

    You are given a point set with nn points on the 2D-plane, your task is to find the smallest number o ...

  10. App 自动化环境搭建

    1.安装 Appium-desktop 工具 下载地址:https://github.com/appium/appium-desktop/releases 2.安装 Android 环境 安装 JDK ...