基本介紹
- 書名:從物聯到萬聯:Node.js與樹莓派萬維物聯網構建實戰
- 作者:(美)Dominique D. Guinard(多米尼克·D·吉納德),Vlad M. Trifa(弗拉德·M·特里法)
- 譯者:月影
- ISBN:9787121327643
- 出版社:電子工業出版社
- 出版時間:2018-01
- 裝幀:精裝
- 開本:16開
圖書信息,內容簡介,圖書目錄,
圖書信息
著 者:(美)Dominique D. Guinard(多米尼克·D·吉納德),Vlad M. Trifa(弗拉德·M·特里法)
作 譯 者:月影
出版時間:2018-01
版 次:01-01
開 本:16開
印 次:01-01
I S B N :9787121327643
內容簡介
本書是介紹萬維物聯網的入門教材。作者通過將樹莓派作為物理設備網關,提出一種構建萬物互聯的可行方案——利用現有的全球資訊網標準、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