物聯(lián)網(wǎng)系統(tǒng)開發(fā):從0到1構建IoT平臺
定 價:79 元
- 作者:付強
- 出版時間:2020/9/1
- ISBN:9787111662402
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP393.4
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
內容簡介
這是一本從技術原理、工程實踐、設計模式和*佳實踐4個維度講解物聯(lián)網(wǎng)系統(tǒng)開發(fā)的著作,是作者10余年實踐經(jīng)驗的總結。首先,通過代碼實例循序漸進、深入淺出地介紹了物聯(lián)網(wǎng)協(xié)議的原理與實踐;然后,以一個功能完備的綜合性物聯(lián)網(wǎng)平臺的搭建過程為例,講解了如何從0到1搭建一個物聯(lián)網(wǎng)平臺,同時總結了物聯(lián)網(wǎng)平臺開發(fā)中常用的設計模式和*佳實踐。
全書一共12章,邏輯上可分為3大部分:
第壹部分(第1-2章) 物聯(lián)網(wǎng)基礎
對物聯(lián)網(wǎng)的一些關鍵常識和各種協(xié)議進行了詳細的介紹。
第二部分(第3-5章) 物聯(lián)網(wǎng)協(xié)議
通過大量實例代碼詳細分析和講解了MQTT協(xié)議的規(guī)范、特性、原理和應用。
第三部分(第6-12章)物聯(lián)網(wǎng)平臺開發(fā)
詳細講解了如何使用開源組件和云服務從0到1搭建一個具備完備功能的物聯(lián)網(wǎng)平臺。
前言
第一部分?物聯(lián)網(wǎng)基礎
第1章?什么是物聯(lián)網(wǎng) 2
1.1 物聯(lián)網(wǎng)和人工智能 3
1.2 物聯(lián)網(wǎng)的現(xiàn)狀與前景 4
第2章?常見的物聯(lián)網(wǎng)協(xié)議 6
2.1 MQTT協(xié)議 6
2.2 MQTT-SN協(xié)議 7
2.3 CoAP協(xié)議 8
2.4 LwM2M協(xié)議 9
2.5 HTTP協(xié)議 9
2.6 LoRaWAN協(xié)議 9
2.7 NB-IoT協(xié)議 10
2.8 本章小結 10
第二部分?MQTT協(xié)議詳解與實戰(zhàn)
第3章?MQTT協(xié)議基礎 13
3.1 MQTT協(xié)議的通信模型 13
3.2 MQTT Client 14
3.3 MQTT Broker 15
3.4 MQTT協(xié)議數(shù)據(jù)包格式 17
3.5 本章小結 19
第4章?MQTT協(xié)議詳解 20
4.1 建立到Broker的連接 20
4.1.1 CONNECT數(shù)據(jù)包 20
4.1.2 CONNACK數(shù)據(jù)包 23
4.1.3 關閉連接 25
4.1.4 代碼實踐 26
4.2 訂閱與發(fā)布 28
4.2.1 PUBLISH數(shù)據(jù)包 30
4.2.2 代碼實踐:發(fā)布消息 31
4.2.3 訂閱一個主題 32
4.2.4 代碼實踐:訂閱主題 35
4.2.5 取消訂閱 36
4.3 QoS及其最佳實踐 39
4.3.1 MQTT協(xié)議中的QoS等級 39
4.3.2 QoS0 40
4.3.3 QoS1 40
4.3.4 QoS2 42
4.3.5 代碼實踐:使用不同的QoS發(fā)布消息 44
4.3.6 實際的Subscribe QoS 48
4.3.7 QoS的最佳實踐 48
4.4 Retained消息和LWT 49
4.4.1 Retained消息 49
4.4.2 代碼實踐:發(fā)布和接收Retained消息 50
4.4.3 LWT 51
4.4.4 代碼實踐:監(jiān)控Client連接狀態(tài) 52
4.5 Keepalive與連接; 54
4.5.1 Keepalive 54
4.5.2 代碼實踐 55
4.5.3 連接; 57
4.6 MQTT 5.0的新特性 58
4.6.1 用戶屬性 59
4.6.2 共享訂閱 59
4.6.3 消息過期 60
4.6.4 重復主題 60
4.6.5 Broker能力查詢 60
4.6.6 雙向DISCONNECT 61
4.7 本章小結 61
第5章?MQTT協(xié)議實戰(zhàn) 62
5.1 “AI+IoT”項目實戰(zhàn) 62
5.1.1 用TensorFlow在Android系統(tǒng)上進行物體識別 62
5.1.2 如何在MQTT協(xié)議里傳輸大文件 63
5.1.3 消息去重 64
5.1.4 最終的消息數(shù)據(jù)格式 64
5.1.5 代碼實踐:上傳識別結果 64
5.1.6 在瀏覽器中運行MQTT Client 66
5.1.7 代碼實踐:接收識別結果 67
5.1.8 搭建私有MQTT Broker 68
5.1.9 傳輸層安全 69
5.2 MQTT常見問題解答 70
5.3 開發(fā)物聯(lián)網(wǎng)應用,學會MQTT協(xié)議就夠了嗎 71
5.4 本章小結 72
第三部分?實戰(zhàn):從0搭建一個IoT平臺
第6章?準備工作臺 75
6.1 安裝需要的組件 75
6.2 Maque IotHub的組成部分 76
6.3 項目結構 76
6.3.1 IotHub Server 77
6.3.2 IotHub DeviceSDK 77
6.4 本章小結 79
第7章?設備生命周期管理 80
7.1 設備注冊 80
7.1.1 設備三元組 80
7.1.2 EMQ X的認證方式 81
7.1.3 設備接入流程 84
7.1.4 Server API:設備注冊 84
7.1.5 調整EMQ X配置 87
7.1.6 修改DeviceSDK 87
7.1.7 Server API:設備信息查詢 88
7.1.8 Server API:獲取接入IotHub的一次性密碼(JWT) 89
7.1.9 完善細節(jié) 91
7.2 設備連接狀態(tài)管理 93
7.2.1 Poor man’s Solution 93
7.2.2 使用EMQ X的解決方案 94
7.2.3 管理設備的連接狀態(tài) 97
7.3 設備的禁用與刪除 101
7.3.1 禁用設備 101
7.3.2 刪除設備 105
7.4 設備權限管理 106
7.4.1 為什么要控制Publish和Subscribe 106
7.4.2 EMQ X的ACL功能 106
7.4.3 集成EMQ X ACL 110
7.5 給IotHub加一點擴展性 111
7.5.1 EMQ X的縱向擴展 112
7.5.2 EMQ X的橫向擴展 113
7.6 本章小結 114
第8章?上行數(shù)據(jù)處理 115
8.1 選擇一個可擴展的方案 115
8.1.1 完全基于MQTT協(xié)議的方案 116
8.1.2 基于Hook的方案 117
8.1.3 數(shù)據(jù)格式 118
8.1.4 主題名規(guī)劃 118
8.1.5 上行數(shù)據(jù)存儲 118
8.1.6 通知業(yè)務系統(tǒng) 119
8.1.7 上行數(shù)據(jù)查詢 119
8.1.8 上行數(shù)據(jù)處理流程 120
8.2 實現(xiàn)上行數(shù)據(jù)處理功能 120
8.2.1 DeviceSDK的功能實現(xiàn) 121
8.2.2 IotHub Server的功能實現(xiàn) 122
8.2.3 代碼聯(lián)調 125
8.2.4 通知業(yè)務系統(tǒng) 127
8.2.5 Server API歷史消息查詢 129
8.3 設備狀態(tài)上報 130
8.3.1 設備狀態(tài) 130
8.3.2 DeviceSDK的實現(xiàn) 131
8.3.3 IotHub Server 的實現(xiàn) 131
8.3.4 Server API:查詢設備狀態(tài) 134
8.3.5 代碼聯(lián)調 134
8.3.6 為何不用Retained Message 135
8.4 時序數(shù)據(jù)庫 135
8.4.1 時序數(shù)據(jù) 136
8.4.2 時序數(shù)據(jù)庫 136
8.4.3 收集設備連接狀態(tài)變化的數(shù)據(jù) 137
8.5 本章小結 140
第9章?下行數(shù)據(jù)處理 141
9.1 選擇一個可擴展的方案 142
9.1.1 完全基于 MQTT協(xié)議的方案 142
9.1.2 基于 EMQ X RESTful API的方案 143
9.1.3 下行數(shù)據(jù)格式 143
9.1.4 主題名規(guī)劃 144
9.1.5 如何訂閱主題 145
9.1.6 設備端消息去重 145
9.1.7 指令回復 146
9.2 DeviceSDK端的實現(xiàn) 146
9.2.1 消息去重 146
9.2.2 提取元數(shù)據(jù) 147
9.2.3 處理指令 148
9.2.4 回復指令 149
9.3 服務端的實現(xiàn) 150
9.3.1 更新ACL 列表 150
9.3.2 EMQ X發(fā)布功能 150
9.3.3 Server API:發(fā)送指令 151
9.3.4 服務器訂閱 152
9.3.5 通知業(yè)務系統(tǒng) 154
9.3.6 代碼聯(lián)調 155
9.4 本章小結 158
第10章?IotHub的高級功能 159
10.1 RPC式調用 159
?10.1.1 主題規(guī)劃 160
?10.1.2 等待指令回復 161
?10.1.3 服務端實現(xiàn) 161
?10.1.4 Server API: 發(fā)送RPC指令 163
?10.1.5 更新設備ACL列表 164
?10.1.6 更新服務器訂閱列表 164
?10.1.7 DeviceSDK端實現(xiàn) 165
?10.1.8 代碼聯(lián)調 166
10.2 設備數(shù)據(jù)請求 167
?10.2.1 更新設備ACL列表 168
?10.2.2 服務端實現(xiàn) 168
?10.2.3 DeviceSDK端實現(xiàn) 169
?10.2.4 代碼聯(lián)調 170
10.3 NTP服務 171
?10.3.1 IotHub 的 NTP 服務 172
?10.3.2 DeviceSDK端實現(xiàn) 172
?10.3.3 服務端實現(xiàn) 173
?10.3.4 代碼聯(lián)調 174
10.4 設備分組 175
?10.4.1 功能設計 175
?10.4.2 服務端實現(xiàn) 177
?10.4.3 DeviceSDK端實現(xiàn) 180
?10.4.4 代碼聯(lián)調 183
10.5 M2M設備間通信 185
?10.5.1 主題名規(guī)劃 185
?10.5.2 服務端實現(xiàn) 186
?10.5.3 DeviceSDK端實現(xiàn) 186
?10.5.4 代碼聯(lián)調 187
10.6 OTA升級 188
?10.6.1 功能設計 189
?10.6.2 服務端實現(xiàn) 191
?10.6.3 DeviceSDK端實現(xiàn) 194
?10.6.4 代碼聯(lián)調 196
10.7 設備影子 199
?10.7.1 什么是設備影子 199
?10.7.2 設備影子的數(shù)據(jù)結構 200
?10.7.3 設備影子的數(shù)據(jù)流向 200
?10.7.4 服務端實現(xiàn) 202
?10.7.5 DeviceSDK端實現(xiàn) 208
?10.7.6 代碼聯(lián)調 209
10.8 IotHub 的狀態(tài)監(jiān)控 211
?10.8.1 使用RESTful API 211
?10.8.2 使用系統(tǒng)主題 212
?10.8.3 EMQ X 的 Listener Zone 213
?10.8.4 代碼演示 214
10.9 本章小結 215
第11章?擴展EMQ X Broker 216
11.1 EMQ X的插件系統(tǒng) 217
?11.1.1 Erlang語言 217
?11.1.2 安裝Erlang 編譯工具 218
11.2 我們會用到的Erlang特性 218
?11.2.1 Erlang簡介 218
?11.2.2 變量和賦值 219
?11.2.3 特殊的 Erlang 數(shù)據(jù)類型 220
?11.2.4 模式匹配 221
?11.2.5 模塊與函數(shù) 221
?11.2.6 宏定義 222
?11.2.7 OTP 222
11.3 搭建開發(fā)和編譯環(huán)境 222
?11.3.1 下載和編譯 EMQ X 222
?11.3.2 使用插件模板 223
?11.3.3 插件的代碼結構 224
?11.3.4 修改模板插件 226
11.4 實現(xiàn)基于RabbitMQ的Hook插件:emqx-rabbitmq-hook 227
?11.4.1 代碼結構 227
?11.4.2 建立RabbitMQ連接和連接池 227
?11.4.3 處理client.connected事件 228
?11.4.4 處理client.disconnected事件 230
?11.4.5 處理message.publish事件 230
?11.4.6 編譯插件 231
?11.4.7 插件的配置文件 233
?11.4.8 應用配置項 235
11.5 使用emqx-rabbitmq-hook 236
?11.5.1 發(fā)布emqx-rabbitmq-hook插件 236
?11.5.2 集成emqx-rabbitmq-hook 238
?11.5.3 IotHub 的全新架構 239
11.6 本章小結 240
第12章?集成CoAP協(xié)議 241
12.1 CoAP協(xié)議簡介 241
?12.1.1 CoAP協(xié)議的消息模型 242
?12.1.2 CoAP協(xié)議的請求/應答機制 243
?12.1.3 CoAP OBSERVE 244
?12.1.4 CoAP HTTP Gateway 244
12.2 集成CoAP協(xié)議 245
?12.2.1 EMQ X的CoAP插件 245
?12.2.2 CoAP 設備端代碼 246
?12.2.3 代碼聯(lián)調 247
?12.2.4 CoAP協(xié)議的連接狀態(tài) 247
12.3 本章小結 248
結語?我們學到了什么 249
附錄?如何運行Maque IotHub 253