编辑推荐
适读人群 :对物联网、树莓派(Raspberry Pi)感兴趣的开发者与工程师、师生、爱好者、创客等。 物联网是趋势,要抓紧看看《物联网实战指南》这本书。
从本书中你将学到:
HTTP、UPnP、CoAP、MQTT和XMPP等协议的功能及局限性
请求/响应、发布/订阅、异步消息和组播模式等通信模式
使用设备注册和信任委托来保护对象在生命周期内的安全
使用物联网服务平台来降低复杂度和开发时间
基本的互联网威胁以及如何实行有效的应对措施
结合互操作性和安全性建立开放且安全的解决方案
实现安全、可扩展、去中心化和互操作的物联网架构及解决方案
内容简介
物联网是趋势,要抓紧看看《物联网实战指南》这本书。
本书从探讨流行的HTTP、UPnP、CoAP、MQTT和XMPP等物联网协议开始,并从实战角度介绍了现有的协议、通信模式、构架以及物联网安全的重要性。本书适合那些对物联网感兴趣的开发者和工程师阅读。那些对电子学、树莓派(RaspberryPi)或者卡片电脑有基本的了解(高中水平)以及有一些代码托管的编程经验的人,通过本书将会很快学到当前先进的物联网解决方案。
作者简介
Peter Waher,是Clayster公司的创始人之一,这家公司从斯堪的纳维亚半岛发展到了四大洲。Clayster公司专注于开发物联网应用,并为快速物联网应用开发提供了一个平台。现在,Peter是Clayster公司智利子公司Clayster Laboratorios Chile SA的CEO,他们向合作伙伴公司提供开发相关的专业知识,并促进研究机构提高物联网技术。其已经在计算机和通信设备领域工作了20年,拥有包括了从使用汇编语言进行开发的资源受限设备到高级系统设计、架构的经验。当前,其正努力参与各种物联网的标准化工作,包含IEEE、UPnP和XSF。
技术审阅者简介Fiore Basile 是一个程序员、系统管理员、创新者、企业家和创客。 从1996年开始,其在一些意大利以及欧洲范围内的工业项目和研究项目担任项目经理、咨询师、技术人员。现在其正在研究可穿戴技术、更有效率的计算和智能连接设备。
Dominique“Dom”Guinard 是EVRYTHNG公司的CTO兼联合创始人, Dom拥有苏黎世联邦理工学院的博士学位,在校期间其主要研究定义物联网构架、互联对象的全球性网络(传感器网络、设备、机器和标记物)。其还是 Web of Thingsorg 的联合创始人和物联网系列会议的创始人。2011年,Dom在世界100大物联网思想家中位列第五。2012年年初,其物联网博士研究被授予苏黎世联邦理工学院奖章。
黄峰达(Phodal Huang)目前是ThoughtWorks公司的一名软件工程师。其是物联网系统项目的创建者,同时也是电子书《一步步设计物联网》的作者。其喜欢设计、画画、写作、旅行以及Hacking,在其个人网站可看到更详细的信息。
目录
作者简介
技术审阅者简介
序言第1章物联网项目准备
1.1创建传感器项目
1.1.1准备Raspberry Pi
1.1.2Clayster库
1.1.3硬件
1.1.4与硬件交互
1.1.5硬件接口
1.1.6传感器值内部显示
1.1.7持久化数据
1.1.8传感器值的外部显示
1.1.9导出传感器数据
1.2创建执行器
1.2.1硬件
1.2.2硬件接口
1.3创建控制器
1.3.1表示传感器值
1.3.2解析传感器数据
1.3.3计算控制状态
1.4创建摄像头
1.4.1硬件
1.4.2在Raspberry Pi上访问
串口
1.4.3硬件接口
1.4.4创建持久的默认设置
1.4.5添加可配置的属性
1.4.6持久化设备
1.4.7在当前设置下工作
1.4.8初始化摄像头
1.5总结
第2章HTTP
2.1HTTP基础
2.2让HTTP支持传感器
2.2.1搭建基于传感器的HTTP
服务器
2.2.2在传感器上安装HTTPS
服务器
2.2.3添加根菜单
2.2.4在HTML页面显示测量
信息
2.2.5动态生成图形
2.2.6创建传感器数据资源
2.2.7解释读出请求
2.2.8测试数据导出
2.2.9用户认证
2.2.10为增强网络性能添加
事件
2.3添加HTTP支持的执行器
2.3.1创建Web服务资源
2.3.2访问单个输出
2.3.3获取全部输出
2.3.4访问报警输出
2.3.5使用测试形式
2.3.6访问WSDL
2.3.7使用REST Web服务接口
2.4为控制器添加HTTP支持
2.4.1订阅事件
2.4.2创建控制线程
2.4.3控制执行器
2.5总结
物联网实战指南目录第3章UPnP协议
3.1UPnP介绍
3.1.1提供服务体系结构
3.1.2设备和服务能力的
文档化
3.2创建设备描述文档
3.2.1选择设备类型
3.2.2更加友好
3.2.3给设备提供标识符
3.2.4添加图标
3.2.5为服务添加索引
3.2.6提供一个用于顶层网页
展示的URL
3.3创建服务描述文档
3.3.1添加操作
3.3.2添加状态变量
3.3.3添加唯一设备名
3.4提供一个Web接口
3.5创建UPnP接口
3.5.1注册UPnP资源
3.5.2替换占位符
3.5.3添加SSDP支持
3.5.4通知网络
3.5.5响应搜索
3.6实现静止图像服务
3.6.1初始化事件触发状态量
3.6.2提供Web服务属性
3.6.3添加服务属性
3.6.4添加动作
3.7使用摄像头
3.7.1设置UPnP
3.7.2发现设备和服务
3.7.3订阅事件
3.7.4接收事件
3.7.5执行动作
3.8总结
第4章CoAP
4.1生成HTTP二进制文件
4.1.1寻找开发工具
4.2为传感器添加CoAP
4.2.1定义第一个CoAP资源
4.2.2手动触发事件通知
4.2.3注册数据输出资源
4.2.4返回XML
4.2.5返回JSON
4.2.6返回纯文本
4.2.7发现CoAP资源
4.2.8测试CoAP资源
4.3为执行器添加CoAP
4.3.1定义简单控制资源
4.3.2在CoAP中解析URL
4.3.3使用CoAP控制输出
4.4在控制器中使用CoAP
4.4.1监测观测到的资源
4.4.2接收通知
4.4.3执行控制操作
4.5总结
第5章MQTT协议
5.1发布和订阅
5.2给传感器添加MQTT支持
5.2.1控制线程的生命周期
5.2.2标记重要事件
5.2.3连接到MQTT服务器
5.2.4发布内容
5.3给执行器添加MQTT支持
5.3.1初始化主题内容
5.3.2订阅主题
5.3.3接收发布内容
5.3.4解码和解析内容
5.4给控制器添加MQTT支持
5.4.1处理传感器发来的事件
5.4.2解码和解析传感器值
5.4.3订阅传感器事件
5.4.4控制执行器
5.5总结
第6章XMPP
6.1XMPP基础知识
6.1.1联合全局的可扩展性
6.1.2提供全局的身份标识
6.1.3授权通信
6.1.4在线存在的感知
6.1.5使用XML通信
6.1.6通信模式
6.1.7扩展XMPP
6.1.8连接到服务器
6.1.9附加安全的配置
6.2为对象添加XMPP
支持
6.2.1连接到XMPP网络
6.2.2监控连接状态事件
6.2.3通知你的朋友
6.2.4在XMPP之外处理HTTP
请求
6.3提供额外的安全层
6.3.1配置的基础知识
6.3.2初始化对象注册接口
6.3.3注册对象
6.3.4更新公开对象
6.3.5声名对象
6.3.6从注册表中移除对象
6.3.7否认对象
6.3.8初始化配置服务器
接口
6.3.9处理友好的推荐
6.3.10处理请求删除不友好
的人
6.3.11搜索配置服务器
6.3.12提供注册信息
6.3.13保持连接
6.3.14友好关系协商
6.3.15处理存在的订阅请求
6.3.16持续的中断协商
6.3.17为传感器添加XMPP
支持
6.3.18添加传感器的服务接口
6.3.19更新事件订阅
6.3.20发布合约
6.4为执行器添加XMPP支持
6.4.1添加控制器服务接口
6.5为摄像头添加XMPP支持
6.6为控制器添加XMPP支持
6.6.1设置传感器客户端接口
6.6.2设置控制器客户端接口
6.6.3设置摄像头客户端接口
6.6.4通过XMPP获取摄像头
图像
6.6.5识别同等功能
6.6.6对同类表示应答
6.6.7检测规则的变化
6.7串联全部
6.8总结
第7章使用物联网服务平台
7.1选择物联网平台
7.1.1Clayster平台
7.1.2下载Clayster平台
7.1.3创建一个服务项目
7.1.4添加引用
7.1.5制作Clayster模块
7.1.6执行服务
7.1.7使用包清单
7.1.8从Visual Studio执行
7.1.9配置Clayster系统
7.1.10使用管理工具
7.1.11浏览数据源
7.2使用XMPP接入我们的
设备
7.2.1为我们的传感器创建类
7.2.2找到好的类
7.2.3订阅传感器数据
7.2.4解读传入的传感器数据
7.2.5为我们的执行器创建一
个类
7.2.6自定义控制操作
7.2.7为我们的摄像头创建类
7.3创建我们的控制应用
7.3.1理解渲染
7.3.2定义应用程序类
7.3.3初始化控制器
7.3.4添加控制规则
7.3.5理解应用索引
7.3.6定义brieflet
7.3.7显示计量表
7.3.8显示二进制信号
7.3.9推送更新到客户端
7.3.10完成应用
7.3.11配置应用
7.3.12查看10ft界面应用
7.4总结
第8章创建协议网关
8.1理解协议桥接
8.2使用抽象模型
8.3Clayster抽象模型基础
知识
8.3.1理解可编辑数据源
8.3.2理解可编辑对象
8.3.3使用通用数据源
8.3.4覆盖关键属性和方法
8.3.5处理设备间通信
8.4理解CoAP网关架构
8.5总结
第9章安全和互操作性
9.1理解风险
9.1.1重新发明一个轮子,但是
是颠倒的
9.1.2了解你的邻居
9.2攻击模式
9.2.1拒绝服务
9.2.2猜测凭据
9.2.3访问存储凭据
9.2.4中间人
9.2.5嗅探网络通信
9.2.6端口扫描和网络爬行
9.2.7搜索功能和通配符
9.2.8密码破解
9.3实现安全的工具
9.3.1虚拟专用网络
9.3.2X.509证书和加密
9.3.3身份授权
9.3.4用户名和密码
9.3.5使用消息中间人和配置
服务器
9.3.6集中与分散
9.4互操作性的需要
9.4.1解决复杂性
9.4.2降低成本
9.4.3允许各种新的服务和重复
使用设备
9.4.4结合安全和互操作性
9.5总结
前言/序言
物联网是当前非常热门的技术术语之一。许多大公司认为它在接下来几年会有数以万亿的市场价值,因此开始投资数十亿美元研究与开发物联网。在此之上,有数以万计的发布计划在同一时期与数十亿的设备相连。
此外,似乎没有人就物联网实际是什么达成一致意见。他们肯定的是不管物联网是什么,它都很值钱。物联网能赚很多钱,但也会存在很大的竞争,这意味着许多的困惑。为了做行业的领头羊,一些公司突出其卓越的知识,发明新的流行语。在这些获取读者注意力的争夺战中,我们在全世界看到了各种各样的定义,一个更比一个好,例如,“万物互联(Internet of Everything,IoE)”“物体的网络(Web of Things)”“人与物体的互联网(Internet of People and Things)”等。无独有偶,在一些易重叠和混淆的术语中也有提及,如“大数据”“机器对机器(M2M)”“信息物理系统(CPS)”等。
物联网实际是什么,物联网究竟意味着什么,这些都没有形成一种共识,这也使得写一本关于物联网这个主题的书变得有些困难。并非在技术方面存在什么困难,而是你需要去界定你即将介绍物联网的哪些方面,而哪些方面是不需要讲的。在某种程度上,你需要以一种简单的、有效的、建设性的,同时也应尽量减少争议的方式去定义物联网(IoT)。
物联网定义为了能够定义它,让我们首先看看这个词是如何被创造的。Kevin Ashton 曾指出,因特网中的大多数数据一开始进入系统或者被系统捕获都是人为控制的。从系统的角度来看,人的作用无非是相当于对数据的质量和数量有所限制的一种缓慢的、易出错的、效率低的路由器,有时能够解释数据或者改正数据。相反,如果这些系统能够连接传感器并直接监测现实世界的事件或者性能,那将会很高效。因此,系统避开人这个中间层直接连接传感器,再将传感器连接到互联网来捕获真实世界的数据。
这一定义的问题在于,它不仅是一种定义还是一种愿景,尽管这是很重要的一点。如果系统可以访问直接由传感器捕获的数据,当然,这些数据将会更加丰富、准确。传感器网络几十年前就已经被知晓并且有其专门的研究领域。这两者之间的真正区别在哪儿?在海量数据的高效存储处理方面,物联网和大数据的区别在哪儿?在讨论物体之间的通信方面,物联网为何不同于机器对机器(M2M)或者设备对设备(D2D)?或者说,考虑到它和系统通过传感器和执行器与真实世界交互,与信息物理系统(CPS)的区别在哪儿?物联网和刚才提到的研究领域的真正差别在哪儿?物联网实战指南序言因此,我们有一个非常简单的定义,那就是:物联网就是当我们连接物体时所获得的东西,它由互联网控制,而非人。
互相竞争的定义物联网不同于传感器网络,物体不需要传感器,传感器网络也不需要连接到互联网。物联网也不同于大数据,因为物体不需要捕获或产生数据,也不需要在大数据存储云端集中存储数据。物联网不属于M2M,因为在互联网上意味着人类可以(并且想要)直接访问这些物体。此外,后者以及CPS还关系到非互联网协议,在封闭和控制环境下的网络中的机器和/或设备之间的消息传输以及自动化。连接到互联网远不止简单地连接和信息传输。互联网是开放的,意味着任何人都可以向里面添加物体。这也意味着他们想要物体以一个松散的耦合方式进行互操作。物体连接到互联网,你可以知道的是,如果可以的话,有人会只为了乐趣就试图利用它甚至摧毁它。将物联网与M2M通信就好像假设在一个受控的实验室环境中你让一帮3岁的俏皮孩子拿着高咖啡因含量的饮料和锤子,并许诺他们砸坏一切所有看得见的东西就将得到冰淇淋奖赏,而你的实验还将继续下去。
然而有些人担心物联网是有一些局限的,于是发明了新的术语,包括人和物体的互联网,这已经包含在我们刚才看到的定义里,我们注意到,当我们连接物体时,人们已经通过计算机连接到互联网。这样的定义其实是没有必要的。其他人讨论的物体的网络(WoT)是物联网(IoT)的一个子集,其通信仅限于网页技术例如HTTP、浏览器、脚本等。这种看法可能源于万维网(WWW)就等于互联网,接入互联网需要通过浏览器和URL。尽管我们将在本书中讨论Web技术,但是我们仍然认为Web技术有太多限制条件。
有一些更像商业流行用语的误导性的定义,而不是技术术语,例如万物互联,令人产生一种比物联网更宏大的想法。但是,万物互联所包含的是不是物联网已经包含了的?所有相连的物体已经包含在物联网里。物体不能直接连接(空气或者水)或者间接连接(真空或者快乐),也不能访问,尽管这个名字的字面意思就是这样。万物需要一个物体或一个人连接到互联网。有一种说法称万物互联包含过程,但是这样将与我们刚才看到的定义不符,这样的过程只是简单的推论,不需要新的定义。
直接的结果现在我们已经对物联网有了一个明确的定义,我们将物体接入互联网获得一些东西,非人为控制。现在我们开始我们的研究,定义包含四个重要的组成部分:
连接,其中涉及通信协议的研究;物体,涉及传感器、执行器和控制器的研究,其他物体除外;非人为操作相关的配置;互联网相关的安全性,如标识、认证和授权以及互操作。
本书将同一时间使用简单实用的例程介绍这些概念,以及怎样在Raspberry Pi平台说明并实现这些关键概念。
本书涵盖的内容第1章,物联网项目准备,介绍我们即将用到的项目,如基本项目架构、开发环境,怎样准备我们的Raspberry Pi,以及如何基于其实现基本输入输出操作,并将贯穿整本书。
第2章,HTTP,说明基本的HTTP以及怎样应用于物联网,同时也描述怎样与请求/响应和事件订阅通信模式相关。
第3章,UPnP协议,说明UPnP协议基础知识,怎样使用UPnP协议用于发现特定局域网设备,并且还讨论了如何调用设备上的服务和订阅活动。另外,UPnP协议也描述了如何构建发布易发现的服务和事件设备。
第4章,CoAP,说明CoAP基础知识,怎样应用于有限通信带宽设备上,并且会告诉你如何发布内容、如何订阅事件、如何使用块传输大容量项目以及如何发现设备上的现有资源。
第5章,MQTT协议,介绍MQTT协议和展示物联网应用怎样使用发布/订阅通信模式和消息代理绕过防火墙。
第6章,XMPP,介绍XMPP以及如何使用联合组消息代理提供全球身份和如何为物联网开发者提供一系列丰富的通信模式。
第7章,使用物联网服务平台,说明一些专为物联网设计的促进物联网服务的快速应用程序开发服务平台的原因,同时关注一些反复出现的问题,例如安全性、互操作性、可扩展性、管理和监视等。
第8章,创建协议网关,向你展示如何使用好的抽象模型去方便协议桥梁的创建,允许系统之间的互联和基于不同技术的服务,这将使你为基于物联网的智能城市设计一个安全和互操作的基础设施。
第9章,安全和互操作性,概述现有的威胁和常见的攻击模式以及怎样建立反制措施去保护你的物联网解决方案。它也显示了互操作性在物联网中的重要性和怎样避免限制一个有利于其他方面的方案。
附录A,控制台应用程序,展示控制台应用程序的基本结构,这个示例适用于整本书。
附录B,采样和历史,展示如何采样本书中出现的传感器项目的传感器数值和保存历史记录。
附录C,对象数据库,展示如何只通过类定义使数据保存在对象数据库中。
附录D,控制,展示本书的项目中是如何实现对一个执行器进行控制操作的。
附录E,HTTP基础,提供基本的HTTP概述。
附录F,传感器数
物联网实战指南 电子书 下载 mobi epub pdf txt