-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
防疫期間 門市僅限取書, 不開放參觀
並提早到6點打烊, 星期日公休
8/3 新書到! 7/27 新書到! 7/20 新書到! 7/14 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

從物聯到萬聯:Node.js與樹莓派萬維物聯網構建實戰

( 簡體 字)
作者:月影類別:1. -> 程式設計 -> VB C0493
   2. -> 程式設計 -> 網路編程 -> Node.js
   3. -> 程式設計 -> 物聯網
譯者:
出版社:電子工業出版社從物聯到萬聯:Node.js與樹莓派萬維物聯網構建實戰 3dWoo書號: 48259
詢問書籍請說出此書號!

有庫存
NT定價: 445
折扣價: 418

出版日:1/1/2018
頁數:332
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121327643
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯者序
物聯網(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 模擬的方式,便于讀者理解書中的概念。當然,購買一款樹莓派和一些外設來自己動手實踐,無疑會更有趣一些。
本書作者在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 章。
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 以博士學位畢業于蘇黎世聯邦理工學院計算機科學專業,并擁有瑞士洛桑聯邦理工學院機器人學、人工智能和機器學習方向的計算機科學碩士學位。
內容簡介:

本書是介紹萬維物聯網的入門教材。作者通過將樹莓派作為物理設備網關,提出一種構建萬物互聯的可行方案——利用現有的萬維網標準、HTTP 協議,以及HTML、CSS 和JavaScript 技術,讓智能產品終端成為開放的萬維網的一部分,最終形成物聯網和萬維網的結合體——萬維物聯網。本書分為兩個部分,第1 章到第5 章是第I 部分,內容涵蓋萬維物聯網基本概念、JavaScript 和Node.js 介紹,通過一個簡單的例子來說明如何使用Node.js 的Web 框架與遠程設備進行交互。第6 章到第10 章是第II 部分,詳細介紹萬維物聯網技術棧中的各層架構及如何用現有的Web 技術實現各層架構,最終能夠形成物理網聚合應用,能夠快速創建復雜應用程序,整合各種設備和數據。本書涉獵的技術范圍廣泛,包括各種Web 和物聯網協議、Web 標準及樹莓派的原理與實踐。適合之前沒有豐富嵌入式開發經驗,但希望探索物聯網世界的Web 開發人員閱讀,也適合作為一本初級教程指導樹莓派開發者和Node.js 愛好者進行物聯網開發實踐。

目錄:

第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
序: