本書循序漸進,從設計一個極其簡單的物聯網系統,再到以網際網路為基礎的物聯網系統,最後打造了一個以物聯網協定為基礎的物聯網系統。在這個過程中還將教會讀者打造物聯網的相關應用—手機APP、溫度趨勢、網頁端控制等。
由於設計這個物聯網系統本身有太多的基礎知識,並且涵蓋各方面,本書將盡可能地向讀者推薦一些擴充閱讀資料,並且建議讀者多多實作。
本書特色
本書完整呈現物聯網系統設計和實現的實際過程,剖析各種技術細節,快速掌握打造物聯網系統的設計和實現思路;設計一個完整的系統,是本書的核心。教會使用者如何去設計的思維,以及如何打造物聯網系統的過程。至於系統底層硬體的實現細節則需要使用者去把握。
作者介紹
作者簡介
黃峰達
任職ThoughtWorks,長期活躍於開放原始碼軟體社區GitHub,專注於物聯網和前端領域,長期為InfoQ編寫《物聯網週報》,著有電子書《一步步搭建物聯網系統》、《GitHub 漫遊指南》,被CSDN授予前端博客專家稱號。以技術專家身份受邀審閱Packt出版社物聯網書《Learning Internet of Things》,並翻譯該書。
黃峰達
任職ThoughtWorks,長期活躍於開放原始碼軟體社區GitHub,專注於物聯網和前端領域,長期為InfoQ編寫《物聯網週報》,著有電子書《一步步搭建物聯網系統》、《GitHub 漫遊指南》,被CSDN授予前端博客專家稱號。以技術專家身份受邀審閱Packt出版社物聯網書《Learning Internet of Things》,並翻譯該書。
目錄
Chapter01 概覽
1.1 物聯網發展歷史
1.2 物聯網概念
1.3 聯網—各式各樣的聯網裝置
1.4 物聯網系統的核心是網路
1.5 小結
Chapter02 一個極簡的物聯網:hello,world
2.1 資料的傳輸過程
2.2 一個文字的物聯網
2.3 裝置狀態改變
2.4 小結
2.5 練習建議
2.6 問題回顧.
2.7 相關閱讀資料
Chapter03 分解物聯網系統
3.1 物聯網的層級結構
3.2 小結
3.3 相關閱讀資料
Chapter04 以Web 為基礎的物聯網系統
4.1 Web 應用架構
4.2 資料持久化
4.3 視圖與應用層
4.4 部署
4.5 小結
4.6 練習建議
4.7 相關閱讀資料
Chapter05 連接裝置
5.1 連接控制器
5.2 連接執行器
5.3 連接感測器
5.4 小結
5.5 相關閱讀資料
Chapter06 物聯網應用範例
6.1 資料視覺化
6.2 儀表板類型範例:溫度趨勢圖
6.3 建立手機應用
6.4 使用AWS 雲端平台建置物聯網
6.5 小結
6.6 相關閱讀資料
Chapter07 真正的物聯網:MQTT 與CoAP 協定
7.1 MQTT
7.2 CoAP
7.3 小結
7.4 相關閱讀資料
Chapter08 智慧與安全
8.1 回顧我們的物聯網系統
8.2 智慧化
8.3 安全與隱私
8.4 小結
8.5 相關閱讀資料
Appendix A Raspberry Pi 快速指南
Appendix B JavaScript 基礎
Appendix C Ionic 簡單說明文件
Appendix D 相關資源
1.1 物聯網發展歷史
1.2 物聯網概念
1.3 聯網—各式各樣的聯網裝置
1.4 物聯網系統的核心是網路
1.5 小結
Chapter02 一個極簡的物聯網:hello,world
2.1 資料的傳輸過程
2.2 一個文字的物聯網
2.3 裝置狀態改變
2.4 小結
2.5 練習建議
2.6 問題回顧.
2.7 相關閱讀資料
Chapter03 分解物聯網系統
3.1 物聯網的層級結構
3.2 小結
3.3 相關閱讀資料
Chapter04 以Web 為基礎的物聯網系統
4.1 Web 應用架構
4.2 資料持久化
4.3 視圖與應用層
4.4 部署
4.5 小結
4.6 練習建議
4.7 相關閱讀資料
Chapter05 連接裝置
5.1 連接控制器
5.2 連接執行器
5.3 連接感測器
5.4 小結
5.5 相關閱讀資料
Chapter06 物聯網應用範例
6.1 資料視覺化
6.2 儀表板類型範例:溫度趨勢圖
6.3 建立手機應用
6.4 使用AWS 雲端平台建置物聯網
6.5 小結
6.6 相關閱讀資料
Chapter07 真正的物聯網:MQTT 與CoAP 協定
7.1 MQTT
7.2 CoAP
7.3 小結
7.4 相關閱讀資料
Chapter08 智慧與安全
8.1 回顧我們的物聯網系統
8.2 智慧化
8.3 安全與隱私
8.4 小結
8.5 相關閱讀資料
Appendix A Raspberry Pi 快速指南
Appendix B JavaScript 基礎
Appendix C Ionic 簡單說明文件
Appendix D 相關資源
序
前言
在最開始的時候,人們使用CGI來開發動態網頁;也使用CGI 來開發一些聯網應用。早先及現有的物聯網應用使用Web技術作為基礎的技術,接著開始將一些不錯的協定使用在物聯網中,如MQTT。又有一些組織在制定一些協定,如CoAP。同時越來越多的國家和組織在擬定自己的標準。
幸運的是,這些都是依據現有的技術發展而來的。技術在過去的幾十年裡發生了快速的變化,但是它們的本質是解決問題。而問題並沒有發生快速的變化—還是一樣的問題,只是我們有了更多可用的解決方案。
✤ 本書目標
這不是一本詳細介紹物聯網系統的書籍,也不會和一些教學一樣主要集中於射頻、ZigBee、WiFi、藍芽等。我相信這些知識你已經在其他書中學了,而這些書籍更多的是偏重於硬體層級的建置,沒有從系統等級、架構等級對系統進行設計。設計一個完整的系統,則是本書的核心。本書旨在教會使用者如何去設計的思維,以及如何打造物聯網系統的過程。至於系統底層硬體的實現細節則需要使用者去把握。
本書遵循循序漸進的思想,從設計一個極其簡單的物聯網系統,再到以網際網路為基礎的物聯網系統,最後打造了一個以物聯網協定為基礎的物聯網系統。在這個過程中我們還將教會讀者打造物聯網的相關應用—手機APP、溫度趨勢、網頁端控制等。
由於設計這個物聯網系統本身有太多的基礎知識,並且涵蓋各方面的知識,本書將盡可能地向讀者推薦一些擴充閱讀資料,並且建議讀者多多實作。同時,由於章節間是一步步加深的關係,如果你在這其中遇到問題可以及時與作者聯繫。
目標讀者:對物聯網有興趣的創客、極客、程式設計師、設計師;對物聯網有興趣的大學、中學師生;想自己動手設計完整物聯網的相關從業人員。
✤ 為什麼是JavaScript
在思考著用哪種語言來撰寫程式的時候,我考慮到了Python、Java、JavaScript。Python 是我最喜歡的語言,JavaScript 是我最擅長的,Java 是我最常用(工作)的。它們都是非常不錯的跨平台語言,都有廣泛的使用者。
如果考慮將其商業化,我會考慮使用Java 語言。Java 語言是一種「正統」的語言,在電腦科學領域,各個院校都將之列為必學語言。除去Java Web 的流行帶來的需求,Android 也增大了對Java 語言的需求。由於Java 語言是一種編譯語言,並且經過二十多年的發展,累積了大量的技術和智慧,使得它相當穩定。因而多數企業都採用作為其主要語言。儘管Java 語法簡單,但是語法卻比較煩瑣、開發效率低,並不利於我們表述。
如果僅是考慮學習服務端,我會考慮使用Python來寫我們的物聯網系統。Python是一種簡單、易學、易懂的指令碼語言,非常受歡迎。在書中的一些實例裡我會使用Python 語言。Python 語言富有表現力,可以更容易地讓我們將自然語言轉為機器語言。然而,對讀者來說可能存在更多的學習成本。
JavaScript有什麼優點?無論使用Java還是Python語言來開發我們的物聯網應用,凡是有關網頁前端相關的內容,我們都需要JavaScript,這就足夠了!
為什麼我們不使用JavaScript來完成所有的這些工作呢?它有:
■ Node.js 架構 最流行的JavaScript服務端平台,可以建立Web應用。
■ Cordova 架構 最流行的混合應用架構,可以使用Web技術來開發手機應用(iOS、Android、Windows Phone 等)。
這就表示,我們可以用這門語言完成所有的開發工作—服務端、用戶端、行動應用。如果你想,也可以用來完成硬體端的開發。三星推出可以適用於嵌入式裝置的小型JerryScript,Google的兩名前員工推出了適用於物聯網領域的軟體平台Smart.js。並且已經有幾個開發板,如Tessel 2、Espruino,可以讓你使用JavaScript為你的晶片程式設計。
✤ 其他語言
在服務端、用戶端和行動應用的實例裡,我們會用JavaScript、HTML、CSS 來介紹其中的原理。在硬體部分,我們會用C/C++ 語言。在Raspberry Pi 上程式設計的時候,會使用Python。其他部分,如Dashborad和NodeMCU 的介紹,會有一些Lua 或Ruby 語言的實例。
我們之所以在Raspberry Pi 上使用Python 語言,不僅是因為使用Python語言更容易讀懂,而且在這個領域中主要使用的也是Python 語言。同理於Dashboard 的範例,我們使用Dashing 這個流行的架構,因為它更容易上手,並且使用的人較多。這就表示,在遇到問題的時候更容易解決。
我們並不希望這些語言會阻礙你前進。在適當的時候你可以先跳過這一部分—如Dashing,我們展示了如何自己去寫類似的介面,使用這個架構只是為了開發更快。隨後在真正使用它的時候去深入它們。
✤ 本書內容
如下所示,本書分為8 個章節和4 個附錄。
第1 章 概覽
本章介紹了物聯網的歷史背景和相關技術,以及其與網際網路的關係。
第2 章 一個極簡的物聯網:hello,world
本章以一個文字檔的資料為中心,快速架設一個極簡的物聯網原型。其中將介紹物聯網的一些基礎知識。
第3 章 分解物聯網系統
本章將描述常用的物聯網系統架構,並對每一個層級進行詳細的描述和介紹。
第4 章 以Web 為基礎的物聯網系統
本章將介紹常用API 的模式RESTful,並將帶領讀者打造以HTTP 協定為基礎的物聯網系統。
第5 章 連接裝置
本章將介紹一些容易上手的裝置,並將這些裝置連接到物聯網。不僅可以控制LED,也可以上傳感測器資料。
第6 章 物聯網應用範例
本章將介紹用趨勢圖來顯示感測器的資料,還將展示如何打造一個跨平台的APP 來控制物聯網裝置。同時,使用一些目前的雲端服務來降低開發難度。
第7 章 實現超越網際網路的物聯網
本章將介紹MQTT、CoAP 等物聯網協定,它們可以幫助我們更進一步地處理物聯網系統中的訊息通訊。
第8 章 智慧與安全
本章將關注於一些額外的話題,如安全、智慧、私有化。
附錄
附錄提供了簡單的JavaScript 入門指引、Ionic 的一些介紹、物聯網資料及Raspberry Pi 的初始化等。
✤ 程式
本書的程式都可以從Github 上(github.com/phodal/iot-code) 或CSDN Code 上(code.csdn.net/designiot/code)下載。
程式以MIT 協定公開,你可以將其中的程式用於你的開發或專案中。如果你在這個過程中遇到一些問題,請在網頁上建立一個相關的Issues,以便我們能收到這個問題,並幫助其他遇到同樣問題的人解決問題。
在最開始的時候,人們使用CGI來開發動態網頁;也使用CGI 來開發一些聯網應用。早先及現有的物聯網應用使用Web技術作為基礎的技術,接著開始將一些不錯的協定使用在物聯網中,如MQTT。又有一些組織在制定一些協定,如CoAP。同時越來越多的國家和組織在擬定自己的標準。
幸運的是,這些都是依據現有的技術發展而來的。技術在過去的幾十年裡發生了快速的變化,但是它們的本質是解決問題。而問題並沒有發生快速的變化—還是一樣的問題,只是我們有了更多可用的解決方案。
✤ 本書目標
這不是一本詳細介紹物聯網系統的書籍,也不會和一些教學一樣主要集中於射頻、ZigBee、WiFi、藍芽等。我相信這些知識你已經在其他書中學了,而這些書籍更多的是偏重於硬體層級的建置,沒有從系統等級、架構等級對系統進行設計。設計一個完整的系統,則是本書的核心。本書旨在教會使用者如何去設計的思維,以及如何打造物聯網系統的過程。至於系統底層硬體的實現細節則需要使用者去把握。
本書遵循循序漸進的思想,從設計一個極其簡單的物聯網系統,再到以網際網路為基礎的物聯網系統,最後打造了一個以物聯網協定為基礎的物聯網系統。在這個過程中我們還將教會讀者打造物聯網的相關應用—手機APP、溫度趨勢、網頁端控制等。
由於設計這個物聯網系統本身有太多的基礎知識,並且涵蓋各方面的知識,本書將盡可能地向讀者推薦一些擴充閱讀資料,並且建議讀者多多實作。同時,由於章節間是一步步加深的關係,如果你在這其中遇到問題可以及時與作者聯繫。
目標讀者:對物聯網有興趣的創客、極客、程式設計師、設計師;對物聯網有興趣的大學、中學師生;想自己動手設計完整物聯網的相關從業人員。
✤ 為什麼是JavaScript
在思考著用哪種語言來撰寫程式的時候,我考慮到了Python、Java、JavaScript。Python 是我最喜歡的語言,JavaScript 是我最擅長的,Java 是我最常用(工作)的。它們都是非常不錯的跨平台語言,都有廣泛的使用者。
如果考慮將其商業化,我會考慮使用Java 語言。Java 語言是一種「正統」的語言,在電腦科學領域,各個院校都將之列為必學語言。除去Java Web 的流行帶來的需求,Android 也增大了對Java 語言的需求。由於Java 語言是一種編譯語言,並且經過二十多年的發展,累積了大量的技術和智慧,使得它相當穩定。因而多數企業都採用作為其主要語言。儘管Java 語法簡單,但是語法卻比較煩瑣、開發效率低,並不利於我們表述。
如果僅是考慮學習服務端,我會考慮使用Python來寫我們的物聯網系統。Python是一種簡單、易學、易懂的指令碼語言,非常受歡迎。在書中的一些實例裡我會使用Python 語言。Python 語言富有表現力,可以更容易地讓我們將自然語言轉為機器語言。然而,對讀者來說可能存在更多的學習成本。
JavaScript有什麼優點?無論使用Java還是Python語言來開發我們的物聯網應用,凡是有關網頁前端相關的內容,我們都需要JavaScript,這就足夠了!
為什麼我們不使用JavaScript來完成所有的這些工作呢?它有:
■ Node.js 架構 最流行的JavaScript服務端平台,可以建立Web應用。
■ Cordova 架構 最流行的混合應用架構,可以使用Web技術來開發手機應用(iOS、Android、Windows Phone 等)。
這就表示,我們可以用這門語言完成所有的開發工作—服務端、用戶端、行動應用。如果你想,也可以用來完成硬體端的開發。三星推出可以適用於嵌入式裝置的小型JerryScript,Google的兩名前員工推出了適用於物聯網領域的軟體平台Smart.js。並且已經有幾個開發板,如Tessel 2、Espruino,可以讓你使用JavaScript為你的晶片程式設計。
✤ 其他語言
在服務端、用戶端和行動應用的實例裡,我們會用JavaScript、HTML、CSS 來介紹其中的原理。在硬體部分,我們會用C/C++ 語言。在Raspberry Pi 上程式設計的時候,會使用Python。其他部分,如Dashborad和NodeMCU 的介紹,會有一些Lua 或Ruby 語言的實例。
我們之所以在Raspberry Pi 上使用Python 語言,不僅是因為使用Python語言更容易讀懂,而且在這個領域中主要使用的也是Python 語言。同理於Dashboard 的範例,我們使用Dashing 這個流行的架構,因為它更容易上手,並且使用的人較多。這就表示,在遇到問題的時候更容易解決。
我們並不希望這些語言會阻礙你前進。在適當的時候你可以先跳過這一部分—如Dashing,我們展示了如何自己去寫類似的介面,使用這個架構只是為了開發更快。隨後在真正使用它的時候去深入它們。
✤ 本書內容
如下所示,本書分為8 個章節和4 個附錄。
第1 章 概覽
本章介紹了物聯網的歷史背景和相關技術,以及其與網際網路的關係。
第2 章 一個極簡的物聯網:hello,world
本章以一個文字檔的資料為中心,快速架設一個極簡的物聯網原型。其中將介紹物聯網的一些基礎知識。
第3 章 分解物聯網系統
本章將描述常用的物聯網系統架構,並對每一個層級進行詳細的描述和介紹。
第4 章 以Web 為基礎的物聯網系統
本章將介紹常用API 的模式RESTful,並將帶領讀者打造以HTTP 協定為基礎的物聯網系統。
第5 章 連接裝置
本章將介紹一些容易上手的裝置,並將這些裝置連接到物聯網。不僅可以控制LED,也可以上傳感測器資料。
第6 章 物聯網應用範例
本章將介紹用趨勢圖來顯示感測器的資料,還將展示如何打造一個跨平台的APP 來控制物聯網裝置。同時,使用一些目前的雲端服務來降低開發難度。
第7 章 實現超越網際網路的物聯網
本章將介紹MQTT、CoAP 等物聯網協定,它們可以幫助我們更進一步地處理物聯網系統中的訊息通訊。
第8 章 智慧與安全
本章將關注於一些額外的話題,如安全、智慧、私有化。
附錄
附錄提供了簡單的JavaScript 入門指引、Ionic 的一些介紹、物聯網資料及Raspberry Pi 的初始化等。
✤ 程式
本書的程式都可以從Github 上(github.com/phodal/iot-code) 或CSDN Code 上(code.csdn.net/designiot/code)下載。
程式以MIT 協定公開,你可以將其中的程式用於你的開發或專案中。如果你在這個過程中遇到一些問題,請在網頁上建立一個相關的Issues,以便我們能收到這個問題,並幫助其他遇到同樣問題的人解決問題。
網路書店
類別
折扣
價格
-
新書71折$391
-
新書79折$435
-
新書85折$468
-
新書9折$495
-
新書9折$495
-
新書$550