從物聯到萬聯 : Node.js 與樹莓派萬維物聯網構建實戰 Building the Web of Things: With examples in Node.js and Raspberry Pi

Dominique Guinard, Vlad Trifa 吳亮(月影)

買這商品的人也買了...

商品描述

本書是介紹萬維物聯網的入門教材。
作者通過將樹莓派作為物理設備網關,提出一種構建萬物互聯的可行方案——利用現有的萬維網標準、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技術的推廣,活躍於國內各技術社區。

目錄大綱

目錄
第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