描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302511168丛书名: 清华开发者书库
本书可以作为大学信息与通信工程及相关领域的高年级本科生及研究生的教材,也可以作为物联网、OCF技术开发人员的技术参考书,还可以为物联网方向的创客提供帮助。
第1章物联网技术概述
1.1物联网基本架构
1.1.1物联网的由来
1.1.2物联网的结构
1.2物联网相关技术
1.2.1接入技术
1.2.2基于网络的信息管理技术
1.2.3物联网语义
1.2.4M2M技术
1.3物联网的发展
1.3.1两化融合及互联网
1.3.2物联网联盟
1.3.3OCF技术
1.4RESTful
1.4.1概述
1.4.2实现
1.5Swagger
第2章OCF技术基础
2.1OCF术语和定义
2.2OCF技术简介
2.3OCF标识与寻址
2.4OCF数据类型
第3章OCF的资源模型
3.1基本概念
3.2OCF资源
3.3资源属性
3.4资源类型
3.4.1资源类型属性
3.4.2资源类型定义
3.4.3多“rt”值资源
3.5设备类型及资源接口
3.5.1接口属性
3.5.2接口方法
3.6资源结构
3.6.1资源关系
3.6.2集合
3.7第三方指定扩展
第4章OCF资源的操作
4.1概述
4.2创建
4.3检索
4.4更新
4.5删除
4.6通知
第5章网络连接及终端发现
5.1网络连接架构
5.2IPv6网络层需求
5.3终端定义
5.4终端发现
5.5基于CoAP的终端发现
第6章OCF的功能交互
6.1服务开通
6.2资源发现
6.2.1直接发现
6.2.2间接发现/基于资源目录
6.2.3广播发现
6.2.4资源信息发布过程
6.2.5资源发现信息
6.2.6使用“/oic/res”的资源发现
6.2.7基于资源目录的发现
6.3通知
6.4设备管理
6.5场景
6.6图标
6.7内省
第7章OCF中的消息传递
7.1CRUDN到CoAP的映射
7.1.1具有请求和响应的CoAP方法
7.1.2内容类型
7.1.3CoAP响应代码及块传输
7.2CoAP序列通过TCP
7.3CBOR中的负载编码
第8章OCF的应用实例
8.1OCF操作例程
8.2OCF交互场景与部署模型
8.3其他资源模型与OCF映射
8.3.1多资源模型
8.3.2支持多资源模型的OCF方法
8.3.3资源模型指示
8.3.4配置文件示例
第9章RAML定义核心资源类型
9.1OCF集合
9.2设备配置
9.3平台配置
9.4设备
9.5维护
9.6平台
9.7ping
9.8可发现资源基准接口
9.9可发现资源的链接表接口
9.10场景(顶层)
9.11场景集合
9.12场景成员
9.13资源目录资源
9.14图标
9.15内省资源
第10章Swagger定义核心资源类型
10.1图标
10.2内省资源
10.3OCF集合
10.4平台配置
10.5设备配置
10.6设备
10.7维护
10.8平台
10.9ping
10.10资源目录资源
10.11可发现资源
10.12场景
第11章应用资源类型规范
11.1基准模型构造
11.1.1概述
11.1.2属性定义
11.1.3示例资源定义
11.1.4可观察的资源类型
11.1.5复合资源类型
11.1.6基础资源
11.2资源类型定义概述
11.3应用资源类型举例
第12章OCF开发方法及案例
12.1基于Mac的开发方法
12.1.1Mac OSX环境下的编译方法
12.1.2APP实例
12.1.3实例代码
12.2基于Windows的开发方法
12.2.1软件工具的安装
12.2.2Windows环境下的编译方法
12.2.3APP实例
12.3基于Linux的开发方法
12.3.1软件工具的安装
12.3.2Linux环境下的编译方法
12.3.3APP实例
12.3.4实例代码
12.4基于Android的开发方法
12.4.1软件工具的安装
12.4.2Android环境下的编译方法
12.4.3APP实例
12.4.4实例代码
12.5基于Arduino的开发方法
12.5.1配置Arduino环境
12.5.2软件工具的安装
12.5.3程序编译
12.5.4实例代码
12.6综合实例
12.6.1Arduino实例
12.6.2Android实例
近年来物联网快速发展,各种标准、技术层出不穷,物联网的应用领域不断拓展,国际数据公司预测,到2020年,全世界联网装置将超过2120亿个,市值将达到万亿美元。技术多样化发展的同时,也为物联网互联互通带来隐患,业界制定统一标准的呼声也越来越高。2016年10月,OCF(Open Connectivity Foundation,开放互联基金会)成立,探索建立物联网统一标准,真正开发一套通用的物联网互联架构,为物联网未来的发展提供了新的思路。
OCF由Linux基金会负责运营,目前包括各种各样的会员,涉及芯片、模块、产品、安全、家电、系统、集成等多方面的物联网厂商,这种跨领域组成的OCF,有助于开发一套通用的物联网互联架构,为未来物联网更加广泛的应用提供了技术保障。
OCF最初的框架来源OIC和AllJoyn开源项目,采用Apache和BSD许可协议。无论是终端产品、应用、服务,通过OCF技术就可以互相通信。OCF是由开放、统一的框架和核心资源组成,让开发者通过其软件开发框架开发各种应用,以便使邻近的系统、应用或设备得以互联互通、控制及共享资源。OCF最终希望打造一个跨平台、接入方式、编程语言的开放软件架构,可以让不同的设备(例如电视、路由器、冰箱、洗衣机、智能照明系统)和其他设备无缝地连接起来,并跨越iOS、Android、Windows、Linux或Mac等不同的操作系统。
本书以当前物联网的发展为背景,总结OCF技术的原理及应用方法。从物联网技术开发方法出发,系统地介绍如何利用OCF技术进行不同系统下的产品研发,继而进行相应的应用。因此,本书面向未来的物联网工业创新与发展,通过OCF软件架构,紧紧跟随技术的发展,为物联网技术的发展提供创新型人才。同时,本书总结了实际科研中的应用技术,不仅包括处理能力较强的各种标准客户端系统应用,也包括能力相对较弱的瘦客户端系统应用,希望对教育教学及工业界有所帮助,起到抛砖引玉的作用。
本书的主要内容包括如下几个方面: 物联网的发展概述,主要介绍物联网的产生、架构、技术及发展情况; OCF技术的基本原理,阐述OCF技术框架及核心功能; OCF资源模型,主要描述OCF的资源定义以及资源的操作、功能交互和消息传递方法; OCF的具体开发方法,包括基于Mac、Windows、Linux、Android和Arduino开发的方法,主要描述软件工具、编译方法、实例代码和综合实例。
本书的内容和素材主要来自OCF的官方网站(www.openconnectivity.org)。首先,本书是作者近几年承担的科研成果和教育成果的总结,在此特别感谢林家儒教授的鼎力支持和悉心指导; 其次,本书是作者指导的研究生在物联网和智能硬件方面的研究工作及成果的总结,在此特别感谢万昊、谭扬、黄旭新、陈佳丰、王玥等同学的大力协助; 再次,OCF联盟为本书提供了第一手资料,在此向联盟的鼎力支持表示感谢; 最后,父母妻儿在精神上给予我极大的支持与鼓励,才使得此书得以问世,向他们表示感谢!
本书由北京市教育科学“十二五”规划重点课题(优先关注)、北京市职业教育产教融合专业建设模式研究(ADA15159)资助; 同时,本书也由北京邮电大学教育教学改革项目(2017JY04)资助,在此一并表示感谢!
本书内容由浅入深,先系统后实践,技术讲解与实践案例相结合,以满足不同层次人员的需求; 同时,本书附有实际开发的软件实现代码,供读者自我学习和自我提高使用。本书可作为大学信息与通信工程及相关领域的高年级本科生及研究生的教材,也可以作为物联网、OCF技术开发人员的技术参考书,还可以为物联网方向的创客提供帮助。
本书主要由李永华编著。此外,李昕烨、陈河泉、李和禹、陈向梅、张秋彤、张国利也参与了部分内容的编写。
由于作者的水平有限,书中难免存在疏漏之处,衷心地希望各位读者多提宝贵意见及具体的整改措施,以便作者进一步修改和完善。
李永华于北京邮电大学2018年4月
资源模型定义了一些概念和机制,这些概念和机制提供了OCF生态系统中设备之间的一致性和核心互操作性。在此基础上,资源模型的概念和机制被映射到传输协议上,使得两个设备之间可以进行通信,即每次传输都提供了通信协议的互操作性。因此,资源模型允许独立于传输来定义互操作性。
此外,资源模型中的概念支持基本设备及彼此之间关系的建模,并在一个环境中捕获互操作性所需的语义信息。通过这种方式,OCF超越了简单的协议互操作性,在可穿戴设备和物联网生态系统中,可以获取真正互操作性所需的丰富语义。
在OCF资源模型中,基本概念有实体、资源、统一资源标识符、资源类型、属性、表示、接口、集合和链接。此外,通用的操作有创建、检索、更新、删除和通知,也就是CRUDN。这些概念和操作以各种各样的方式组合,可以为OCF框架的各种应用场景定义所需的语义和互操作。
OCF资源模型框架中,在一个给定应用中的软硬件人工产品、值、用例和上下文被称为一个实体。当一个实体需要可视化、交互或者被操作时,它就会由一个抽象概念表示,这个抽象概念称为资源。一个资源的压缩和表示是一个实体的最重要部分,通过使用URI可以被标识、寻址和命名。
“属性”就是“键值对”,表示资源的主要部分。这些属性的一个“快照”就是资源的“表示”。“表示”是一个特定的视图,且可应用于该视图中的机制就是“接口”。与一个资源进行交互是由“请求”和“响应”完成的,其中就包含“表示”。
一个资源实例源于一个资源类型。一个资源和另一个资源之间的单向关系被定义为一个“链”。一个有“属性”和“链路”的资源就是一个“集合”。
一组“属性”可以用来定义一个资源的一个状态。通过使用合适的“表示”,使用该资源的响应或到该资源的请求,该资源的状态可以被检索或更新。
一个资源(和资源类型)可以表示,并用于暴露一种能力。通过与该资源的交互可以训练或使用这种能力。这样的能力可以用于定义类似发现、管理和广播这样的过程。例如,“在一个设备上发现资源”可以定义为一个特定资源表示的检索、该资源的属性值描述或者引用设备上的资源。
具有请求或响应的表示信息可以“在线”传输,这可以通过使用传输协议序列化或者封装到传输协议负载上的方式,具体的方法由请求或响应到传输协议的映射规范来决定。
在本书中,以RAML定义标准规范。同时,也可以使用JSON模式。有关OCF规范中定义的资源类型,将在第9和10章中介绍。
3.2OCF资源
一个资源可能会被定义为一种或多种资源类型,请求实例化/创建一个资源应该指明定义该资源的一个或多个资源类型。一个资源将被托管在一个设备中,如上所述,一个资源应该有一个URI,该URI可以在创建或实例化资源时由管理机构分配,也可以通过资源类型的规范预定义,如图31所示。
图31一个资源例子
核心资源是OCF规范中定义的、用于实现功能交互(如发现、设备管理等)的资源。其中,功能交互在第6章中定义。在核心资源中,“/oic/res”“/oic/p”和“oic/d”是所有的设备上都应该支持的; 同时,设备可能根据支持的交互功能,支持其他的核心功能。
3.3资源属性
一个属性描述了资源所暴露的一个方面或概念,包括与该资源相关的元信息。一个属性应该有一个名称(即属性名)和一个值(即属性值)。属性是以键值对的形式存在,“键”就是属性名,“值”就是属性值,键值对就类似于=。例如,如果“温度”属性有一个属性名“temp”和一个属性值“30F”,则该属性就表达为“temp=30F”。属性的特定形式是由编码模式决定的。例如,在JSON中,属性表示为“键”: 值(如“temp”: 30)。除此之外,属性的定义包括以下内容。
(1) 值类型: 定义了属性值可能采用的值。值类型可以是一个简单数据类型(如string、boolean等),如上文所定义,也可以是一个用特定模式定义的复杂数据类型。值类型可以定义值规则,即定义一些规则,属性值会采用这些规则,并将其用于属性值中。这些规则可以定义值的范围、最大、最小值、公式、枚举值集合、阵列、条件值,甚至是对其他属性值的依赖关系。这些规则可以用于验证属性值中的特定值,并且标记错误。
(2) 强制性: 指明对于一个给定的资源类型,该属性是否是强制的。
(3) 访问模式: 指明该属性是否可以被读写。更新等同于写入。“r”表示读,“w”表示写,二者都是可以被指定的; 同时,写操作并不会意味着就会自动进行读操作。
一个属性的定义可能包括下列附加信息,这些项可以提供有用的信息。
(1) 属性名: 指明一个属性人性化的名称,通常不会在线发送。
(2) 描述: 一个描述性的文本,定义该属性的目的和预期的使用。
一个属性可能被用在一个URI的查询部分,作为选择一个特定资源的标准。该过程可以通过将属性声明为查询的一个字段来完成(即=)。在OIC 1.1版本的规范中,查询过滤器中只允许ASCII字符串,不允许NUL字符串。这意味着,只有使用ASCII字符的属性值,才可以在查询过滤器中被匹配。当查询中声明的属性与目标资源的完整表示中对应的属性相匹配时,该资源就被选择。完整表示目标所有资源类型的属性集合,是这个集合的快照。如果在查询的“过滤”字段声明了一个属性,那么,声明的属性就会与接口定义表示相匹配,以隔离表示的特定部分。
通常来说,一个属性只有在与其相关的资源内才是有意义的。然而,有一些属性可能被所有的资源支持,称为公共属性,这些属性在资源之间保持资源完整性,即它们的“键=值”对在所有的资源中的含义都相同。下面介绍公共属性的字段。
公共属性可以在所有资源中定义。以下几种属性被定义为公共属性: 资源类型、资源接口、名称和资源标识。
一个公共属性的名称应该是唯一的,不应该被其他属性使用。当定义一个新的资源类型时,如果是非公共属性,则不应该使用已经存在的公共属性名称(如“rt”“if”“p”和“id”)。如果定义一个新的公共属性,应该确定其名称不应该被其他属性所使用。一个新公共属性名称的唯一性,可以通过检查所有已存在、OCF所定义的资源类型属性来核实。然而,随着资源类型的增长,这可能越来越难以处理。为了阻止未来出现这样的名称冲突,OCF为公共属性保留了一个特定的名称空间。
评论
还没有评论。