物聯(lián)網(wǎng)系統(tǒng)開發(fā):從0到1構(gòu)建IoT平臺
定 價:79 元
- 作者:付強(qiáng)
- 出版時間:2020/9/1
- ISBN:9787111662402
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP393.4
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
內(nèi)容簡介
這是一本從技術(shù)原理、工程實(shí)踐、設(shè)計(jì)模式和*佳實(shí)踐4個維度講解物聯(lián)網(wǎng)系統(tǒng)開發(fā)的著作,是作者10余年實(shí)踐經(jīng)驗(yàn)的總結(jié)。首先,通過代碼實(shí)例循序漸進(jìn)、深入淺出地介紹了物聯(lián)網(wǎng)協(xié)議的原理與實(shí)踐;然后,以一個功能完備的綜合性物聯(lián)網(wǎng)平臺的搭建過程為例,講解了如何從0到1搭建一個物聯(lián)網(wǎng)平臺,同時總結(jié)了物聯(lián)網(wǎng)平臺開發(fā)中常用的設(shè)計(jì)模式和*佳實(shí)踐。
全書一共12章,邏輯上可分為3大部分:
第壹部分(第1-2章) 物聯(lián)網(wǎng)基礎(chǔ)
對物聯(lián)網(wǎng)的一些關(guān)鍵常識和各種協(xié)議進(jìn)行了詳細(xì)的介紹。
第二部分(第3-5章) 物聯(lián)網(wǎng)協(xié)議
通過大量實(shí)例代碼詳細(xì)分析和講解了MQTT協(xié)議的規(guī)范、特性、原理和應(yīng)用。
第三部分(第6-12章)物聯(lián)網(wǎng)平臺開發(fā)
詳細(xì)講解了如何使用開源組件和云服務(wù)從0到1搭建一個具備完備功能的物聯(lián)網(wǎng)平臺。
前言
第一部分?物聯(lián)網(wǎng)基礎(chǔ)
第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 本章小結(jié) 10
第二部分?MQTT協(xié)議詳解與實(shí)戰(zhàn)
第3章?MQTT協(xié)議基礎(chǔ) 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 本章小結(jié) 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 關(guān)閉連接 25
4.1.4 代碼實(shí)踐 26
4.2 訂閱與發(fā)布 28
4.2.1 PUBLISH數(shù)據(jù)包 30
4.2.2 代碼實(shí)踐:發(fā)布消息 31
4.2.3 訂閱一個主題 32
4.2.4 代碼實(shí)踐:訂閱主題 35
4.2.5 取消訂閱 36
4.3 QoS及其最佳實(shí)踐 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 代碼實(shí)踐:使用不同的QoS發(fā)布消息 44
4.3.6 實(shí)際的Subscribe QoS 48
4.3.7 QoS的最佳實(shí)踐 48
4.4 Retained消息和LWT 49
4.4.1 Retained消息 49
4.4.2 代碼實(shí)踐:發(fā)布和接收Retained消息 50
4.4.3 LWT 51
4.4.4 代碼實(shí)踐:監(jiān)控Client連接狀態(tài) 52
4.5 Keepalive與連接; 54
4.5.1 Keepalive 54
4.5.2 代碼實(shí)踐 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 重復(fù)主題 60
4.6.5 Broker能力查詢 60
4.6.6 雙向DISCONNECT 61
4.7 本章小結(jié) 61
第5章?MQTT協(xié)議實(shí)戰(zhàn) 62
5.1 “AI+IoT”項(xiàng)目實(shí)戰(zhàn) 62
5.1.1 用TensorFlow在Android系統(tǒng)上進(jìn)行物體識別 62
5.1.2 如何在MQTT協(xié)議里傳輸大文件 63
5.1.3 消息去重 64
5.1.4 最終的消息數(shù)據(jù)格式 64
5.1.5 代碼實(shí)踐:上傳識別結(jié)果 64
5.1.6 在瀏覽器中運(yùn)行MQTT Client 66
5.1.7 代碼實(shí)踐:接收識別結(jié)果 67
5.1.8 搭建私有MQTT Broker 68
5.1.9 傳輸層安全 69
5.2 MQTT常見問題解答 70
5.3 開發(fā)物聯(lián)網(wǎng)應(yīng)用,學(xué)會MQTT協(xié)議就夠了嗎 71
5.4 本章小結(jié) 72
第三部分?實(shí)戰(zhàn):從0搭建一個IoT平臺
第6章?準(zhǔn)備工作臺 75
6.1 安裝需要的組件 75
6.2 Maque IotHub的組成部分 76
6.3 項(xiàng)目結(jié)構(gòu) 76
6.3.1 IotHub Server 77
6.3.2 IotHub DeviceSDK 77
6.4 本章小結(jié) 79
第7章?設(shè)備生命周期管理 80
7.1 設(shè)備注冊 80
7.1.1 設(shè)備三元組 80
7.1.2 EMQ X的認(rèn)證方式 81
7.1.3 設(shè)備接入流程 84
7.1.4 Server API:設(shè)備注冊 84
7.1.5 調(diào)整EMQ X配置 87
7.1.6 修改DeviceSDK 87
7.1.7 Server API:設(shè)備信息查詢 88
7.1.8 Server API:獲取接入IotHub的一次性密碼(JWT) 89
7.1.9 完善細(xì)節(jié) 91
7.2 設(shè)備連接狀態(tài)管理 93
7.2.1 Poor man’s Solution 93
7.2.2 使用EMQ X的解決方案 94
7.2.3 管理設(shè)備的連接狀態(tài) 97
7.3 設(shè)備的禁用與刪除 101
7.3.1 禁用設(shè)備 101
7.3.2 刪除設(shè)備 105
7.4 設(shè)備權(quán)限管理 106
7.4.1 為什么要控制Publish和Subscribe 106
7.4.2 EMQ X的ACL功能 106
7.4.3 集成EMQ X ACL 110
7.5 給IotHub加一點(diǎn)擴(kuò)展性 111
7.5.1 EMQ X的縱向擴(kuò)展 112
7.5.2 EMQ X的橫向擴(kuò)展 113
7.6 本章小結(jié) 114
第8章?上行數(shù)據(jù)處理 115
8.1 選擇一個可擴(kuò)展的方案 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è)務(wù)系統(tǒng) 119
8.1.7 上行數(shù)據(jù)查詢 119
8.1.8 上行數(shù)據(jù)處理流程 120
8.2 實(shí)現(xiàn)上行數(shù)據(jù)處理功能 120
8.2.1 DeviceSDK的功能實(shí)現(xiàn) 121
8.2.2 IotHub Server的功能實(shí)現(xiàn) 122
8.2.3 代碼聯(lián)調(diào) 125
8.2.4 通知業(yè)務(wù)系統(tǒng) 127
8.2.5 Server API歷史消息查詢 129
8.3 設(shè)備狀態(tài)上報(bào) 130
8.3.1 設(shè)備狀態(tài) 130
8.3.2 DeviceSDK的實(shí)現(xiàn) 131
8.3.3 IotHub Server 的實(shí)現(xiàn) 131
8.3.4 Server API:查詢設(shè)備狀態(tài) 134
8.3.5 代碼聯(lián)調(diào) 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 收集設(shè)備連接狀態(tài)變化的數(shù)據(jù) 137
8.5 本章小結(jié) 140
第9章?下行數(shù)據(jù)處理 141
9.1 選擇一個可擴(kuò)展的方案 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 設(shè)備端消息去重 145
9.1.7 指令回復(fù) 146
9.2 DeviceSDK端的實(shí)現(xiàn) 146
9.2.1 消息去重 146
9.2.2 提取元數(shù)據(jù) 147
9.2.3 處理指令 148
9.2.4 回復(fù)指令 149
9.3 服務(wù)端的實(shí)現(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 服務(wù)器訂閱 152
9.3.5 通知業(yè)務(wù)系統(tǒng) 154
9.3.6 代碼聯(lián)調(diào) 155
9.4 本章小結(jié) 158
第10章?IotHub的高級功能 159
10.1 RPC式調(diào)用 159
?10.1.1 主題規(guī)劃 160
?10.1.2 等待指令回復(fù) 161
?10.1.3 服務(wù)端實(shí)現(xiàn) 161
?10.1.4 Server API: 發(fā)送RPC指令 163
?10.1.5 更新設(shè)備ACL列表 164
?10.1.6 更新服務(wù)器訂閱列表 164
?10.1.7 DeviceSDK端實(shí)現(xiàn) 165
?10.1.8 代碼聯(lián)調(diào) 166
10.2 設(shè)備數(shù)據(jù)請求 167
?10.2.1 更新設(shè)備ACL列表 168
?10.2.2 服務(wù)端實(shí)現(xiàn) 168
?10.2.3 DeviceSDK端實(shí)現(xiàn) 169
?10.2.4 代碼聯(lián)調(diào) 170
10.3 NTP服務(wù) 171
?10.3.1 IotHub 的 NTP 服務(wù) 172
?10.3.2 DeviceSDK端實(shí)現(xiàn) 172
?10.3.3 服務(wù)端實(shí)現(xiàn) 173
?10.3.4 代碼聯(lián)調(diào) 174
10.4 設(shè)備分組 175
?10.4.1 功能設(shè)計(jì) 175
?10.4.2 服務(wù)端實(shí)現(xiàn) 177
?10.4.3 DeviceSDK端實(shí)現(xiàn) 180
?10.4.4 代碼聯(lián)調(diào) 183
10.5 M2M設(shè)備間通信 185
?10.5.1 主題名規(guī)劃 185
?10.5.2 服務(wù)端實(shí)現(xiàn) 186
?10.5.3 DeviceSDK端實(shí)現(xiàn) 186
?10.5.4 代碼聯(lián)調(diào) 187
10.6 OTA升級 188
?10.6.1 功能設(shè)計(jì) 189
?10.6.2 服務(wù)端實(shí)現(xiàn) 191
?10.6.3 DeviceSDK端實(shí)現(xiàn) 194
?10.6.4 代碼聯(lián)調(diào) 196
10.7 設(shè)備影子 199
?10.7.1 什么是設(shè)備影子 199
?10.7.2 設(shè)備影子的數(shù)據(jù)結(jié)構(gòu) 200
?10.7.3 設(shè)備影子的數(shù)據(jù)流向 200
?10.7.4 服務(wù)端實(shí)現(xiàn) 202
?10.7.5 DeviceSDK端實(shí)現(xiàn) 208
?10.7.6 代碼聯(lián)調(diào) 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 本章小結(jié) 215
第11章?擴(kuò)展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 插件的代碼結(jié)構(gòu) 224
?11.3.4 修改模板插件 226
11.4 實(shí)現(xiàn)基于RabbitMQ的Hook插件:emqx-rabbitmq-hook 227
?11.4.1 代碼結(jié)構(gòu) 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 應(yīng)用配置項(xiàng) 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 的全新架構(gòu) 239
11.6 本章小結(jié) 240
第12章?集成CoAP協(xié)議 241
12.1 CoAP協(xié)議簡介 241
?12.1.1 CoAP協(xié)議的消息模型 242
?12.1.2 CoAP協(xié)議的請求/應(yīng)答機(jī)制 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 設(shè)備端代碼 246
?12.2.3 代碼聯(lián)調(diào) 247
?12.2.4 CoAP協(xié)議的連接狀態(tài) 247
12.3 本章小結(jié) 248
結(jié)語?我們學(xué)到了什么 249
附錄?如何運(yùn)行Maque IotHub 253