从物联到万联:Node.js与树莓派万维物联网构建实战pdf下载pdf下载

从物联到万联:Node.js与树莓派万维物联网构建实战百度网盘pdf下载

作者:
简介:本篇主要提供从物联到万联:Node.js与树莓派万维物联网构建实战pdf下载
出版社:电子工业出版社
出版时间:2018-01
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

编辑推荐

适读人群 :Node.js硬件与物联网开发的学习者及相关从业人员。

√ 物联网的潜能绝不止于解决特定场景的小问题,而是用务实|结构化的方法论来构建大型系统、实现创新、重建秩序。
√ 对 WoT 及其工具链的深刻理解和良好把握,让你得以用成熟的万维网协议建立更大、更智能、更简单的万维物联网。
√ IoT 离不开更大图景及完整生态,作者要用超前视野和大局观,解决无数工具|标准|协议及云服务构成的高度碎片化。
√ 易读到物联网新手可按图索骥建立一个完整的端到端物联网;深刻到创建完所有元素后你已成为熟练的物联网开发者。

内容简介

本书是介绍万维物联网的入门教材。作者通过将树莓派作为物理设备网关,提出一种构建万物互联的可行方案――利用现有的万维网标准、HTTP 协议,以及HTML、CSS 和JavaScript 技术,让智能产品终端成为开放的万维网的一部分,最终形成物联网和万维网的结合体――万维物联网。本书分为两个部分,第1 章到第5 章是第I 部分,内容涵盖万维物联网基本概念、JavaScript 和Node.js 介绍,通过一个简单的例子来说明如何使用Node.js 的Web 框架与远程设备进行交互。第6 章到第10 章是第II 部分,详细介绍万维物联网技术栈中的各层架构及如何用现有的Web 技术实现各层架构,最终能够形成物理网聚合应用,能够快速创建复杂应用程序,整合各种设备和数据。本书涉猎的技术范围广泛,包括各种Web 和物联网协议、Web 标准及树莓派的原理与实践。适合之前没有丰富嵌入式开发经验,但希望探索物联网世界的Web 开发人员阅读,也适合作为一本初级教程指导树莓派开发者和Node.js 爱好者进行物联网开发实践。

作者简介

Dominique “Dom” Guinard 是 EVRYTHNG 的 CTO 和联合创始人,EVRYTHNG 是一个大规模的万维物联网云平台,通过连接产品到万维网让它们变得更智能化。Dom 拥有苏黎世联邦理工大学的博士学位,他在学校期间致力于万维物联网架构的早期研究:万维物联网架构是物联网的一个开放的应用层。早在 2012 年,他的博士论文被授予 ETH 勋章。在这之前,Dom 花了十年时间研究了许多物联网项目:与 Sun Microsystems 公司合作探索大规模 RFID 网络,研究移动电话作为物联网网关的作用,在苏黎世联邦理工大学的 Auto-ID 实验室参与诺基亚的一些研究,在麻省理工学院的 Auto-ID 实验室将 EPCglobal RFID 网络用于万维物联网,以及用四年时间在 SAP 的企业级软件中整合标记的对象和无线传感器网络。

Vlad Trifa 是 EVRYTHNG 的联合创始人、产品研发的执行副总裁。他是分布式嵌入传感器和交互式设备与使用 Web 技术的企业应用软件集成方面的公认专家。曾经他是麻省理工学院的感知城市实验室的研究员,在美国和新加坡研究城市与移动计算,在加州大学洛杉矶分校研究生物和分布式信号处理,以及在日本东京的国际电器通信基础研究所(ATR)研究人与机器人交互和神经系统科学。他也曾经作为 SAP 的助理研究员,在工厂自动化与企业计算方面获得工业经验。Vlad 以博士学位毕业于苏黎世联邦理工大学计算机科学专业并拥有瑞士洛桑联邦理工学院机器人学、人工智能和机器学习方向的计算机科学硕士学位。

吴亮(月影)奇虎360高级技术经理,360前端团队 奇舞团 负责人,w3ctech顾问。曾先后在微软亚洲研究院做过访问学生、金蝶软件担任项目经理,百度电子商务事业部担任Web开发项目经理。多年来致力于Web标准和JavaScript技术的推广,活跃于国内各技术社区。

精彩书评

一系列奇妙的点子,也是对IoT工具集的一个极好的补充。
——Mike Kuniavsky 帕洛阿尔托研究中心创新服务部

IoT需要一个应用层,而改造Web的应用层是明智的做法!这本不错的书将向你展示如何在几周内达成目标。
——Sanjay Sarma
麻省理工大学AutoID实验室

Dom和Vald是IoT界的精神领袖,他们专注于如何通过实践达到目标。
——Andy Chew
思科(英国)

本书对WoT这样复杂的主题进行了由浅入深的介绍,而且还写得非常通俗易懂!
——Steve Grey-Wilson
PTC公司旗下Thingworx

目录

第I 部分 物联网与万维物联网基础
1 从物联网到万维物联网
1.1 定义物联网
1.2 进入万维物联网
1.2.1 万维物联网场景:连接旅店
1.2.2 对比物联网和万维物联网
1.2.3 物联网简史
1.3 使用案例――为什么连接设备
1.3.1 无线传感器网络和分布式传感
1.3.2 可穿戴和自我量化
1.3.3 智能家居和建筑
1.3.4 智能城市和能源网络
1.3.5 智能制造与工业4.0
1.3.6 智能物流和供应链
1.3.7 营销2.0
1.4 万维物联网――增强版的物联网
1.4.1 更容易编程
1.4.2 开放和可扩展标准
1.4.3 快速且易于部署、维护与集成
1.4.4 元素之间的松耦合
1.4.5 广泛使用的安全和隐私机制
1.4.6 万维物联网的弊端
1.5 总结

2 你好,万维物联网
2.1 初识万维物联网设备
2.1.1 主角登场:树莓派
2.2 练习1――在万维物联网上浏览一个设备
2.2.1 第1 部分――Web 作为用户界面
2.2.2 第2 部分――Web 作为API
2.2.3 小结
2.3 练习2――从一个WoT 传感器中轮询数据
2.3.1 第1 部分――轮询当前传感器读数
2.3.2 第2 部分――轮询和绘制传感器读数
2.3.3 第3 部分――实时更新数据
2.3.4 小结
2.4 练习3――作用于现实世界
2.4.1 第1 部分――使用一个表单来更新显示的文字
2.4.2 第2 部分――创建你自己的表单来控制设备
2.4.3 小结
2.5 练习4――让别人知道你的设备存在
2.5.1 小结
2.6 练习5――创建你的第一个物理网聚合应用
2.6.1 小结
2.7 总结

3 Node.js 与万维物联网
3.1 JavaScript 崛起:从客户端到服务端到智能产品
3.1.1 在智能产品中引入JavaScript
3.2 Node.js 简介
3.2.1 在电脑上安装Node.js
3.2.2 用Node.js 写一个Web 服务器
3.2.3 以JSON 格式返回传感器数据
3.3 Node.js 的模块化
3.3.1 npm――Node 的包管理器
3.3.2 通过package.json 和npm 完全管理依赖
3.3.3 你的第一个Node 模块
3.4 理解Node.js 事件循环
3.4.1 多线程Web 服务器
3.4.2 单线程、非阻塞Web 服务器
3.5 开始异步编程
3.5.1 匿名回调
3.5.2 具名回调
3.5.3 控制流库
3.6 总结和课外阅读

4 嵌入式系统入门
4.1 进入嵌入式设备的世界
4.1.1 业余爱好者的设备与工业级设备
4.1.2 实时操作系统与Linux
4.1.3 小结及超越树莓派
4.2 建立你的第一台WoT 设备――树莓派
4.2.1 入手树莓派
4.2.2 选择你的树莓派
4.2.3 购物清单
4.2.4 设置你的树莓派
4.2.5 连接你的设备
4.3 安装Node.js 到树莓派
4.3.1 在树莓派上使用Git 和GitHub
4.3.2 小结
4.4 连接传感器和执行器到树莓派
4.4.1 理解GPIO 端口
4.4.2 使用面包板连接电子元件
4.4.3 用Node.js 访问GPIO
4.4.4 课外阅读
4.5 总结

5 构建智能产品网络
5.1 连接智能产品
5.1.1 网络拓扑结构
5.1.2 网络分层模型
5.2 智能产品的网络层协议
5.2.1 从空间的角度考虑
5.2.2 网络协议和IoT
5.2.3 IoT 个人局域网
5.2.4 IoT 广域网
5.2.5 网络层协议的选择
5.3 智能产品的应用层协议
5.3.1 ZigBee 和蓝牙的应用层
5.3.2 Apple HomeKit 和Google Weave
5.3.3 消息队列遥测传输
5.3.4 资源受限的应用协议
5.3.5 应用层协议的选择
5.4 万维物联网架构
5.4.1 第1 层:接入层
5.4.2 第2 层:发现层
5.4.3 第3 层:共享层
5.4.4 第4 层:整合层
5.4.5 为什么WoT 是重要的
5.4.6 课外阅读
5.5 总结

第II 部分 构建万维物联网
6 接入层:智能产品的API
6.1 设备、资源和Web 智能产品
6.1.1 表述性状态转移
6.1.2 为什么需要一致的接口
6.1.3 原则1 :可访问资源
6.1.4 原则2 :通过表述来操作资源
6.1.5 原则3 :自描述信息
6.1.6 原则4 :超媒体作为应用程序状态引擎
6.1.7 小结――Web 智能产品设计过程
6.2 超越REST :实时万维物联网
6.2.1 WoT 需要事件
6.2.2 发布/ 订阅
6.2.3 webhook――HTTP 回调
6.2.4 Comet――用hack 的方式让HTTP 支持实时Web
6.2.5 WebSocket
6.2.6 未来:从HTTP/1.1 到HTTP/2
6.3 总结

7 实现 Web 智能产品
7.1 连接设备到Web
7.2 直接集成模式――在设备上实现 REST
7.2.1 创建WoT 服务器
7.2.2 资源设计
7.2.3 表述设计
7.2.4 接口设计
7.2.5 通过WebSocket 实现pub/sub 接口
7.2.6 小结――直接集成模式
7.3 网关集成模式――CoAP
7.3.1 运行一个CoAP 服务器
7.3.2 通过网关代理CoAP
7.3.3 小结――网关集成模式
7.4 云端集成模式――EVRYTHNG 的MQTT
7.4.1 设置EVRYTHNG 账号
7.4.2 创建MQTT 客户端应用程序
7.4.3 使用action 来控制智能插座
7.4.4 创建一个简单的Web 控制应用
7.4.5 小结――云端集成模式1
7.5 总结

8 发现层:描述和发现Web 智能产品
8.1 可发现性问题
8.2 发现智能产品
8.2.1 网络发现(Network discovery)
8.2.2 Web 上的资源发现
8.3 描述Web 智能产品
8.3.1 Web 智能产品模型简介
8.3.2 元数据
8.3.3 属性
8.3.4 行为
8.3.5 智能产品
8.3.6 在树莓派上实现Web 智能产品模型
8.3.7 小结――Web 智能产品模型
8.4 语义化的Web 智能产品
8.4.1 关联数据和RDFa
8.4.2 约定的语义:schema.org
8.4.3 JSON-LD
8.4.4 课外阅读
8.5 总结

9 共享层:安全地分享Web 智能产品
9.1 保障智能产品安全性
9.1.1 加密基础
9.1.2 Web 安全与TLS :HTTPS 的S
9.1.3 在树莓派中启用TLS 以支持HTTPS 和WSS
9.2 授权和访问控制
9.2.1 通过 REST 和 API token 进行访问控制
9.2.2 OAuth :一个Web 身份验证框架
9.3 社交化万维物联网
9.3.1 社交化万维物联网认证代理
9.3.2 实现社交化万维物联网认证代理
9.4 课外阅读
9.5 总结

10 整合层:物理网聚合应用
10.1 构建一个简单的App――自动生成UI
10.1.1 Web 智能产品的通用用户界面
10.2 物理网聚合应用
10.2.1 使用Node-RED 工具创建物理网聚合应用
10.3 使用向导式工具来创建物理网聚合应用:IFTTT
10.3.1 将入侵者警报推送到 Google 电子表格上
10.3.2 使用自建通道发送请求
10.3.3 将入侵警报信息从Twitter 推送到Google 电子表格
10.4 课外阅读
10.4.1 从简单的聚合应用到大数据聚合应用
10.4.2 更好的用户体验
10.5 总结


附录A Arduino、BeagleBone、Intel Edison 与WoT

精彩书摘

  《从物联到万联:Node.js与树莓派万维物联网构建实战》:
  万维网集成和开放性
  最后,你选择的协议栈的开放性也是一个重要的考量。这些协议遵循的是开放的还是私有的标准?这些规范有多开放?它们的可访问性如何?这些协议在真实世界中的支持情况如何?它们与万维网集成得有多好?如果一个协议栈不能提供方便地转换到万维网协议(IP、TCP或者UDP)的方法,那么它可能适用于封闭的网络(比如一座工厂里的工业机器),但是如果这些设备需要通过万维网访问的话,就不适用了。
  由于IoT要求协议栈和万维网兼容,因此所有前面所描述过的协议栈都有各自的方法可以被集成到万维网上。但是,问题的关键是在哪一层集成,以及部署起来有多难?在越高的层次上集成,它要复用万维网基础设施就越难。例如,在传输层上实现集成(比如实现TCP)意味着你无法使用传输层之下的已有的基础设施,比如互联网接入点、桥接、哪、路由器及交换机,而这些设施就不得不用协议栈自己实现的类似角色替代。
  ……

前言/序言

译者序

物联网(IoT)正在悄然改变着整个世界。以前收快递,快递员要拿着单子给收货人手签,现在只要扫描一下就可以了。在图书馆里借阅和归还图书,不再需要人工一本一本地记录,只需要将一叠书放在扫描器上,贴着RFID 标签的书就能被图书管理员的电脑记录和自动跟踪。连接到智能手机的健康手环能够随时监控你的健康状况。自己不在家时,如果家中有异常,安装在家里的智能摄像机会第一时间拍下险情或入侵者照片并发送警报给你。家中的一些小家电开始具备上网的功能,当你下班将要回家时,可以通过手机控制家中的暖气或空调开始工作,以便于你进入家门时,家中已经达到了令人舒适的温度。这一切都多亏了物联网的发展。

人们对于生活的追求是无止尽的。随着身边的智能产品逐渐增加,我们总想要这些设备更加方便和智能。比如,有这样一个需求:“当我人在客厅时,如果是白天,则调节窗帘打开的尺度,以保证一个让我感到舒适的亮度”,又或者“当我打开衣柜时,我的智能语音助手能为我播报一下今天的天气”,再或者“当晚上8 点半时,如果我坐在书桌前,请热水器为我开始加热洗澡水,等水温到达60 度时,有闹铃提醒我去洗澡”。想象上面这些场景,或许这些场景在未来会渐渐多起来。这里遇到的一个问题是,我如何让窗帘知道我人在客厅,并且时间是白天?我打开衣柜时,又如何知道今天的天气?我坐在书桌前,如何知道是晚上8 点半,又如何通知热水器加热和设置闹钟?这是比物联网更高一层次的问题,它涉及“如何建立一种通用的语言,让不同厂商的智能产品能够彼此通信并协同工作”的问题,而这就是本书的核心概念,即万维物联网(WoT)。如果说,万维网是通过浏览器连接人与内容、人与人,那么WoT 就是连接智能产品与智能产品、智能产品与应用程序、智能产品与数据,以及智能产品与人,这样就能形成一个全球化的、万物互联的公共网络。

作者在本书中提出WoT 这样的设想,即利用现成的Web 标准,以树莓派这样的单板计算机或者Arduino 这样更低成本的RTOS 设备作为网关,让众多设备以HTTP 协议进行通信,内容以JSON 或HTML 形式呈现。这样的话,未来开发和维护IoT 设备,让IoT 设备彼此通信,就和Web 工程师维护网页没有太大的区别。更关键的是,通过本书的分析,作者指出,使用现有的Web 标准和相关技术,完全可以解决IoT 相互通信面临的各种问题,让智能产品进入WoT 时代!

回到前面的三个场景,如果用WoT 来解决,也就是智能红外传感器检测到客厅有人,则推送一个事件给网关的Web 服务,随后Web 服务发送一个POST 请求给窗帘控制器,它控制窗帘打开一定的幅度,并将结果返回;衣柜门锁检测到被开启,则推送一个事件给网关的Web 服务,随后Web 服务请求网络上的天气服务,获得当地此刻的天气,将数据发送给语音助手,语音助手开始播报天气;桌面上的智能摄像机检测到我坐在书桌前,则推送一个事件给网关的Web 服务,随后Web 服务发送一个GET 请求获得当前时间,判断时间是否是八点半,如果已经到八点半,POST 请求就被发送给热水器控制器,让热水器开始加热。如果红外传感器、窗帘控制器、衣柜门、语音助手、智能摄像机、热水器控制器都能与Web 网关通信,那么它们之间的相互控制逻辑就可以用JavaScript 发送简单的HTTP 请求来轻松完成,而且可以用HTML 和CSS 来生成控制界面,将各个智能产品由封闭的孤岛转变成可以任意组合的物理网聚合应用。这就是WoT 最大的魅力!

本书的两位作者Dominique Guinard 和Vlad Trifa 是IoT 世界的领军人,也是WoT 的先行者,提出以Web 的思路解决IoT 的互通问题,为我们描绘了万物互联的美好前景。而像树莓派这样体积小巧、功耗低并且廉价的单板计算机,也许是未来智能家居网关最合适的选择。

如果你想探索未知的智能产品世界,同时又想让生活更美好,那么只要阅读本书,你就能通过一张名片大小的“电脑”和前端程序员熟悉的HTML、CSS 和JavaScript 技术来实现,这是多么棒的一件事!

本书没有难懂晦涩的专业术语和多么高深的理论,所有的技术内容都没有脱离Web 技术的范畴,一位稍有经验的Web 工程师应该能轻松理解和掌握书中所讲述的内容。作者还为本书提供了丰富的例子,甚至考虑到没有购买树莓派硬件的情况,为例子提供了PC 模拟的方式,便于读者理解书中的概念。当然,购买一款树莓派和一些外设来自己动手实践,无疑会更有趣一些。

由于Node.js 和树莓派在最近几年发展很快,一些标准和API 也可能发生变化,作者也考虑了这种情况,将书中所有例子以开源的形式放在了GitHub 上,如果你发现书中例子代码不能正常运行,可以访问 github.com/webofthings/wot-book 获取代码的最新版本。

本书作者在Web 和IoT 领域都有丰富的经验,知识面广泛,行文流畅,介绍的内容深入浅出。非常感谢博文视点侠少(张春雨)将这样一本好书给我翻译。我拿到本书时,就被书中内容深深吸引,迫不及待地入手树莓派深入学习。这是我独自翻译的第一本技术书籍,我深知自己知识面有限,翻译过程难免疏漏。对我翻译的书稿,奇舞团李松峰老师、博文视点恩惠编辑帮忙耐心审阅,提出了许多中肯的修改意见,非常感谢他们。希望读者能从书中得到知识,收获乐趣,用树莓派做出更有趣的WoT 应用。期待未来WoT 让这个世界变得更美好!

月影



我们对这本书最大的希望是它可以很好地让你深入了解物联网(Internet of Things,IoT)的未来大概是什么样的。尽管网络上各种谈资铺天盖地,但是关于这个话题的实用性和权威性内容仍然很少。我们希望这本书能够通过提出一个务实的和结构化的方法论来建立物联网设备和服务,为混沌的物联网领域带来一些秩序,这个方法论来自我们为连接设备构建大型商业系统的经验。

人人都想从未来的发展中分一杯羹,因此有数以百计的连接设备标准参与竞争。“我的协议比你的更好”的态度是物联网世界分裂的主因,也是不断重复发明轮子和严重缺乏创新的缘由。现有的应用、工具和机制需要支持每一个新协议,而如今已有数以百计的协议需要被集成和维护——好吧,我想你明白了!

从10 年前我们开始致力于物联网起,我们的目标就是时不时停下来反思什么可以做,从而发挥物联网的全部潜力。当时,很明显大多数项目都只解决了物联网的小问题。几乎没有项目尝试从物联网大局出发并询问:“我们真正要解决什么问题,以及我们如何才能更容易创新?”

几乎每个人都在尝试从头开始建立一个针对设备优化的全局网络及数据驱动的应用程序!另一边,像我们这样从事万维物联网(Web of Things,WoT)的人,决定审视和学习这其中最成功的应用层:万维网。万维网具有规模,它是开放的且易于参与,而最重要的是,它是通用的。如果它能足够好地支持银行服务、游戏、聊天室并且改变传媒业,那么它为什么不能足够好地支持物联网呢?对,就是它了!我们写这本书,不仅告诉你为什么,也告诉你怎么做。我们希望它能带给你对万维物联网的深刻理解,并了解必要的工具,让你在因为有了万维网协议,大多数物理对象都被数字化的世界里能够茁壮成长。这本书也让你知道不必要的时候不要重复发明轮子。而且,如你将看到的,重新用坚实的万维网协议来建立更大的、更智能的、更简单的万维物联网会很有乐趣!

DOM & VLAD



前言

在过去的几年里,物联网(IoT)已经成为技术和商业领域的一个热门话题。从博客到执行报告再到各种会议,每个人都在问同样的问题:“物联网这东西是什么,又如何在我的生意和生活中使用它?”

由于物联网的巨大潜力,每一个人都急于为它建立策略或解决方案,这通常听起来像是在说:“喂,让我们将建筑、供应链、工厂和办公室等一切都连接起来,这样我们就能追踪和分析这些海量的数据了!”听起来很美,但是每个人需要回答的第一个问题是:“我们究竟想要连接什么,更重要的是,为什么要连接它们?”物联网面临的真实挑战与技术(怎么做)关系不大,与实际用例(是什么)关系比较大。真的,物联网是如此年轻,以至于它的技术图景是高度碎片化的。物联网技术领域有数百种工具、标准、协议及物联网云服务可供选择,而且这个数量每天还在不断增加。自我标榜的所谓物联网专家和一夜之间冒出来的博主鱼龙混杂。确实,你可以很容易找到看起来很棒的在线教程,它能够教会你如何通过 Arduino 和一些传感器将你的喵星人或者私人汽车连上互联网,然而当你想要建立一个端到端的、可扩展的安全系统,并将硬件、数据集、存储器、处理过程、可视化及人机交互放到一起的时候,那就得另说了!

有一些很棒的书籍介绍了可用的物联网技术,其中一些非常具体并有技术含量。比如,它们非常详细地讨论硬件或者数据处理,但是没有展示更大的图景及如何完整地建立物联网。其余一些书籍则写得非常高大上,讨论了物联网的绝大多数原理,但只是蜻蜓点水,所以你学不会如何使用它们。

这正是我们写这本书想要填补的空白。我们想让这本书足够简单,简单到能够让一个物联网新手阅读,它涵盖建立一个完整的端到端物联网的必要工具,并且有足够的技术含量,因此你可以实际学到如何自己创建每一个元素。

有了这个目标,我们决定提炼出十多年来我们作为工程师、研究员和企业家,在从事物联网工作的过程中所学到的一切,这样通过学习本书你至少能够成为一名熟练的物联网开发者。我们的目标是讲授需要的技术,用这些技术能够基于万维网生态系统和基础设施来建立物联网的原型、产品及应用软件。因此我们很高兴地说,本书是学习关于物联网与万维网技术交集的一本全面的实际指导书。在泛泛介绍物联网的具体细节后(这些细节包括设备、传感器、标准及工具),我们将快速转到协议栈,把焦点集中在万维物联网——物联网的应用层上。