GTLC全球技术领导力峰会·上海站,首批讲师正式上线! 了解详情
写点什么

浅谈产品模型 (物模型) 在智能硬件设计中的作用

2020 年 6 月 12 日

浅谈产品模型(物模型)在智能硬件设计中的作用

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


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


2020 年 6 月 12 日 20:28540

评论

发布
暂无评论
发现更多内容

程序员的美丽假期(并不)

Philips

敏捷开发 快速开发

NET-Core中的配置文件操作

为体验更多

C# .net .net core ASP.NET Core

CloudQuery v1.1.1 修复版本发布

CloudQuery社区

数据库 sql 安全 工具软件

出炉!华为18A自爆SpringCloud微服务分布式笔记

996小迁

Java 编程 架构 面试 SpringCloud

日常工作问题集锦

hasWhere

华为云数据安全中心正式公测,8大核心数据安全能力守护你的数据

华为云开发者社区

华为 安全 数据

详细分析定制企业应用的价格

Learun

敏捷开发 快速开发 软件架构

深入理解 JVM 垃圾回收算法 - 复制算法

Java架构师迁哥

SpringBoot有多重要?面试用SpringBoot把面试官唬住了要30k都行!

Java架构之路

Java 程序员 架构 面试 编程语言

你听过CatBoost吗?本文教你如何使用CatBoost进行快速梯度提升

计算机与AI

Python 学习 优化

来自阿里面试官的Java面试连珠炮,让你自由发挥你能撑到哪一步?

Java成神之路

Java 程序员 架构 面试 编程语言

让黑产无处遁形 京东智联云推出风险识别服务

京东科技开发者

人工智能 学习 风险识别

台湾地区为什么会丢包高?

德胜网络-阳

LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(三)

陈泽云

人工智能 大数据 计算机网络 操作系统 网络

websocket 是怎么连接的

lockdown56

nginx 网络 HTTP websocket

面试大厂被面试官用MyBatis怼到“哑口无言”?这份MyBatis源码笔记助你吊打面试官!

Java架构之路

Java 程序员 架构 面试 编程语言

GO 类型接口及反射间的转换

superman

go golang golang新手

云计算简史(上)- 15分钟读完15年

明道云

架构训练营 - 第4周课后作业 - 学习总结

Pudding

Github惊现高星神作,两份算法宝典让你横扫大厂算法面试题

云流

编程 程序员 算法 计算机

mongodb 源码实现、调优、最佳实践系列-百万级高并发mongodb集群性能数十倍提升优化实践(下篇)

杨亚洲(专注mongodb及高性能中间件)

MySQL nosql mongodb 架构 分布式 分布式数据库mongodb

从分布式到微服务成长手册,助我面试跳槽斩获字节Offer

Java架构追梦

Java 学习 架构 面试 架构微服务

诸多老牌数据仓库厂商当前,Snowflake如何创近12年最大IPO金额

华为云开发者社区

数据仓库 数据 存储

阿里P8大牛呕心沥血总结整理的《Java面经手册》,通过实践的方式向你深度讲解Java核心知识点

Java架构之路

Java 程序员 架构 面试 编程语言

直播预告 | 云时代的数据库客户端——CloudQuery最佳实践

CloudQuery社区

数据库 sql 安全 工具软件

华为鲲鹏专家解读:90%代码如何移植到鲲鹏平台

华为云开发者社区

软件 鲲鹏

十七、深入Python异常处理

刘润森

Python

Week 4 命题作业及总结

阿泰

技术实践丨GaussDB(DWS)运维管理功能“升级”的原理和使用

华为云开发者社区

运维 数据 集群

“一个APP竟然可以适配这么多设备?!”《优酷响应式布局技术全解析》开放下载

破绽

阿里巴巴 阿里云 开发者 优酷 电子书

架构师训练营 - 第 4周课后作业(1 期)

Pudding

DNSPod与开源应用专场

DNSPod与开源应用专场

浅谈产品模型(物模型)在智能硬件设计中的作用-InfoQ