从物联到万联:Node.js与树莓派万维物联网构建实战
  • 推荐0
  • 收藏4
  • 浏览1.0K

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

Dominique Guinard,Vlad Trifa (作者)  吴亮 (译者)

  • 书  号:978-7-121-32764-3
  • 出版日期:2017-12-26
  • 页  数:332
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Building the Web of Things: With examples in Node.js and Raspberry Pi
  • 原书号:9781617292682
  • 维护人:张春雨
纸质版 ¥89.00
本书是介绍万维物联网的入门教材。作者通过将树莓派作为物理设备网关,提出一种构建万物互联的可行方案——利用现有的万维网标准、HTTP 协议,以及HTML、CSS 和JavaScript 技术,让智能产品终端成为开放的万维网的一部分,最终形成物联网和万维网的结合体——万维物联网。
本书分为两个部分,第1 章到第5 章是第I 部分,内容涵盖万维物联网基本概念、JavaScript 和Node.js 介绍,通过一个简单的例子来说明如何使用Node.js 的Web 框架与远程设备进行交互。第6 章到第10 章是第II 部分,详细介绍万维物联网技术栈中的各层架构及如何用现有的Web 技术实现各层架构,最终能够形成物理网聚合应用,能够快速创建复杂应用程序,整合各种设备和数据。
本书涉猎的技术范围广泛,包括各种Web 和物联网协议、Web 标准及树莓派的原理与实践。适合之前没有丰富嵌入式开发经验,但希望探索物联网世界的Web 开发人员阅读,也适合作为一本初级教程指导树莓派开发者和Node.js 爱好者进行物联网开发实践。
IoT世界级领军人物开创性大作 用Web实现全球智能产品|应用程序|数据|人的万物互联
译者序
物联网(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 和一些传感器将你的喵星人或者私人汽车连上互联网,然而当你想要建立一个端到端的、可扩展的安全系统,并将硬件、数据集、存储器、处理过程、可视化及人机交互放到一起的时候,那就得另说了!
有一些很棒的书籍介绍了可用的物联网技术,其中一些非常具体并有技术含量。比如,它们非常详细地讨论硬件或者数据处理,但是没有展示更大的图景及如何完整地建立物联网。其余一些书籍则写得非常高大上,讨论了物联网的绝大多数原理,但只是蜻蜓点水,所以你学不会如何使用它们。
这正是我们写这本书想要填补的空白。我们想让这本书足够简单,简单到能够让一个物联网新手阅读,它涵盖建立一个完整的端到端物联网的必要工具,并且有足够的技术含量,因此你可以实际学到如何自己创建每一个元素。
有了这个目标,我们决定提炼出十多年来我们作为工程师、研究员和企业家,在从事物联网工作的过程中所学到的一切,这样通过学习本书你至少能够成为一名熟练的物联网开发者。我们的目标是讲授需要的技术,用这些技术能够基于万维网生态系统和基础设施来建立物联网的原型、产品及应用软件。因此我们很高兴地说,本书是学习关于物联网与万维网技术交集的一本全面的实际指导书。在泛泛介绍物联网的具体细节后(这些细节包括设备、传感器、标准及工具),我们将快速转到协议栈,把焦点集中在万维物联网——物联网的应用层上。
路线图
本书将为你提供架构和实现物联网产品、应用软件和服务所需的技术,这些技术基于可扩展和灵活的万维网。为了追求理论和实践的平衡,你将能够快速浏览万维物联网的复杂性,广泛学习一些工具和技术用来将物联网设备接入万维网并在其上建立可交互的应用软件。本书会分成两部分,加起来一共有10 个章节。
第I 部分介绍万维物联网的基础。你将学习底层相关的技术、协议、工具及有关连接各种设备到万维网上的问题。通过阅读第I 部分,你会对今天的物联网存在的许多问题、可用的各种技术及什么时候该用什么技术有一个准确的理解。
y 第 1 章总体介绍万维物联网——介绍它是什么,为什么它有别于物联网,什么情况下使用它比较理想。
y 第2 章提供万维物联网的动手实践。你将同一个远程的网络连接设备交互,并且通过写几行代码建立一个简单的 Web 应用。
y 第 3 章是一个简单的概述,即为什么 Node.js 是一个很好的框架,可以用来实现网络连接(Web-connected)的设备。这一章还介绍了Node.js 的关键概念,以及如何将它运行于嵌入式系统。
y 第 4 章是物联网硬件部分的一个快速概览。你将学到如何配置一个树莓派(或者其他 Linux 设备)并且将它连接到万维网,同时也学习如何将各种传感器和执行器连接到树莓派,以及如何写 Node.js 代码来使用它们。
y 第 5 章会对今天的物联网图景做一个广泛和简明的概述,聚焦于网络方面。
你将学习到各种网络和通信协议,它们彼此之间有什么关系,以及什么情况下用哪一个。这为了解万维物联网体系结构栈、它的各个层及每一层所扮演的角色打下基础。
第II 部分建立于你在第I 部分所学到的一切之上,教你如何实现万维物联网栈中的各层。经过第I 部分的学习,你应该已经有了一个真正连接到互联网的设备。现在,你将学习如何为那些设备设计一个优美的 Web API,以及如何使用各种工具来建立可交互的、弹性可扩展的万维物联网产品和应用软件。
y 第 6 章介绍万维物联网架构的第 1 层(接入层),并翔实地介绍 HTTP 和REST API。你将学到 HTTP 的各种特性,例如内容协商、错误码、 HTTP 动作,以及如何使用它们来为网络连接产品实现良好的 API。你也将学习到如何使用 WebSocket 来覆盖实时传感器和执行器。
y 第 7 章演示如何在不同的场景下实现接入层,以及如何将第 6 章介绍的概念实际应用在产品中。你将学习集成模式并研究将其他协议(例如 MQTT 和CoAP)集成到万维物联网的情况。
y 第 8 章重点研究万维物联网的第 2 层(发现层),并且描述如何使用网络连接产品的特性,让它们能够被 Web 客户端自动发现和使用。本章也提供一个关于语义化万维网及与物联网相关的简短概述。
y 第 9 章描述了万维物联网的第 3 层(共享层),并讨论涉及连接真实世界和Web 的各种注意事项和问题。你将学习 Web 安全的最佳实践,以及产品如何安全地给一个可信任的应用软件和用户共享数据和服务。你也将学习关于社
交万维物联网的内容,或者说如何使用社交网络来建立实物的网络。
y 第 10 章重点研究万维物联网的第 4 层(整合层),并演示如何快速建立复杂的应用程序来合并来自各种数据源的数据。你将学习关于物理网聚合应用以及如何建立和扩展它们。
我们使用树莓派作为书中例子的参考设备。尽管如此,本书也包含了一个附录,提供集成另外3 个流行的嵌入式系统的基础知识,这3 个系统是 BeagleBone、Intel Edison 及 Arduino。
谁应该阅读本书
本书的定位是关于物联网的内容丰富但又不失可读性的入门书籍。我们写作的时候假定读者之前没有构建嵌入式设备和应用开发的经验,预期读者只对 Web 如何工作有基本的了解,以及会一些基础的编程技能。我们的首要目标是让读者快速获取对物联网技术的一个广泛和足够深入的认知,并了解建立复杂的基于 Web 的应用软件与物理世界交互时所面临的挑战。你不会成为一个嵌入式传感领域或者 Web 应用设计的专家,但你一定会获得一个关于框架、工具、标准及应用设计模式的丰富工具集,并了解如何将这些技术点结合起来,构建产品化的、基于万维网的物联网
应用和系统。
怎样使用这本书
你应当首先阅读第 1 章以获得一个关于万维物联网的宽泛的概述,了解它与物联网有什么区别,以及为什么这个区别很重要。如果你不熟悉 Web API 和JavaScript,我们鼓励你做一下第 2 章的各种练习。如果你对 Node.js 不熟悉,你应该阅读第 3 章。如果你对嵌入式设备(例如传感器或者处理器)没有经验,一定要读第 4 章。如果你对网络协议和标准比较陌生,不能通过 TCP/IP 访问你的蓝牙设备,一定要读第 5 章的5.1 节和5.2 节,否则你可以直接从 5.3 节开始。即使你有一些 REST API 的经验,你也应该读一读第 6 章来理解如何为设备创建 REST API,然
后阅读第 7 章学会如何实现这些 API。之后,你可以阅读第 8 章或第 9 章,直到最后阅读第 10 章。
代码约定和下载
本书有许多例子提供源代码,有的在单独带编号的列表中,有的在正常的文本之间。不论哪一种情况,源代码都会使用等宽字体同一般的文本区分开来。
你可以在 GitHub 链接 github.com/webofthings/wot-book 上找到所有例子使用的代码,也可以通过本书的网站 manning.com/books/building-the-web-of-things 找到它们。
本书中所有列举出来的链接(比如新闻和更多信息)都可以通过访问 http://book.webofthings.io 获得。
其他在线资源
有许多网站,你可以在那里找到新的灵感:
y 万维物联网社区是发源地,早在 2007 年万维物联网便从这个社区诞生。你可以在上面找到很多文章、新闻及其他技术内容,网址是http://webofthings.org。
y W3C 正在积极寻求标准化万维物联网。你可以在它的网站上找到最新的进展,网址是http://www.w3.org/WoT/。EVRYTHNG 作为 W3C 成员,Dom 和Vlad也参与了一部分标准化工作。
y Postscapes 是为物联网新闻而设的比较好的网站。它的内容并不局限于万维物联网,你也可以在上面找到许多充满灵感和有趣的项目,网址是http://postscapes.com/。
y 社区网站 Element14 上有建立各种网络连接设备的好项目和好教程,网址是http://www.element14.com/community/。要了解更多硬件和电子产品的项目,你一定要看一看Make 杂志网站(http://makezine.com/) 和 Instructables(http://www.instructables.com/)。
作者在线
购买本书包含免费使用一个私有网上论坛的权利,这个论坛由 Manning 出版社运营,你可以在上面评论本书,提技术问题,以及获得作者本人和其他用户的帮助。要使用论坛并订阅其中的内容,可以用你的浏览器打开 manning.com/books/buildingthe-web-of-things 。这个网页提供了在你注册之后如何进入论坛及从论坛能获得什么
帮助的信息,还有论坛的行为守则。
Manning 出版社承诺为读者提供一个平台,在这个平台上,个人读者之间及读者和作者之间可以进行有意义的对话。但是我们不保证作者参与其中的时间,作者在线多长时间是自愿的(也是没有报酬的)。我们建议你尝试问作者一些有挑战性的问题,以免他没有兴趣在论坛冒泡。
作者在线论坛和以前的讨论存档,在本书出版之后就可以在出版社的网站上访问。
关于作者
Dominique Guinard 和 Vlad Trifa 是 EVRYTHNG 的联合创始人,EVRYTHNG是一个大规模的万维物联网云服务,为数以百万计的万维网设备提供服务。他们也联合创立了 http://webofthings.org ,这个组织是最早的针对网络连接设备从业者和研究员的社区和系列会议的组织。他们都是万维物联网和物联网的老兵,在 SAP、ETH 和 MIT 倡导推动这个领域的发展。在 2011 年,他们在 Postscapes 列出的世界前100 位物联网思想家排行榜上名列第50 位。
Dominique “Dom” Guinard 是 EVRYTHNG 的 CTO 和联合创始人,EVRYTHNG 是一个大规模的万维物联网云平台,通过连接产品到万维网可以让它们变得更智能化。Dom 拥有苏黎世联邦理工学院(ETH Zurich)的博士学位,他在校期间致力于万维物联网架构的早期研究:万维物联网架构是物联网的一个开放应用层。早在 2012 年,他的博士论文便被授予了ETH 勋章。在这之前,Dom 花了10 年时间研究了许多物联网项目:与 SunMicrosystems 公司合作探索大规模 RFID 网络,研究移动电话作为物联网网关的作用,在苏黎世联邦理工学院的 Auto-ID 实验室参与诺基亚的一些研究,在麻省理工学院的 Auto-ID 实验室将 EPCglobal RFID 网络用于万维物联网,并用4 年时间在 SAP 的企业级软件中整合标记的对象和无线传感器网络。
Vlad Trifa 是 EVRYTHNG 的联合创始人、产品研发的执行副总裁。他是分布式嵌入传感器和交互式设备与使用 Web 技术的企业应用软件集成方面公认的专家。他曾经是麻省理工学院的感知城市实验室的研究员,在美国和新加坡研究城市与移动计算,在加州大学洛杉矶分校研究生物和分布式信号处理,并在日本东京的国际电器通信基础研究所(ATR)研究人机交互和神经系统科学。他也曾经作为 SAP 的助理研究员,在工厂自动化与企业计算方面获得了工业经验。Vlad 以博士学位毕业于苏黎世联邦理工学院计算机科学专业,并拥有瑞士洛桑联邦理工学院机器人学、人工智能和机器学习方向的计算机科学硕士学位。
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
yy提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
yy交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/32764

目录

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

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

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

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

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

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

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

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

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

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

附录A Arduino、BeagleBone、Intel Edison 与WoT............. 301

读者评论

相关博文

  • #小编推书# IoT世界级领军人物开创性大作!

    Jessica瑾妞 2018-01-10

    《从物联到万联:Node.js与树莓派万维物联网构建实战》是介绍万维物联网的入门教材。作者通过将树莓派作为物理设备网关,提出一种构建万物互联的可行方案——利用现有的万维网标准、HTTP协议,以及HTML、CSS和JavaScript技术...

    Jessica瑾妞 2018-01-10
    562 0 0 0
  • 为什么说万维物联网(WoT)是增强版物联网(IoT)

    为什么说万维物联网(WoT)是增强版物联网(IoT)

    Jessica瑾妞 2018-01-24

    万维物联网是物联网的一个特殊分支,它将成功的 Web 技术应用于嵌入式设备,以使尽可能多的开发者得以涉足物联网的最新发展领域。本文描述了物联网现有方法的局限性和存在的问题,对于这些局限性,我们将一一展示使用万维物联网的好处。 大多...

    Jessica瑾妞 2018-01-24
    1674 0 0 0