本書在介紹物聯網的組成、典型架構和應用的基礎上,采用實例代碼講述python編程基礎和應用實例,包括用micropython進行物聯網單片機的開發(fā)、用python開發(fā)物聯網網關的方法、python django框架開發(fā)物聯網web后臺和前端知識及物聯網常用通信方案2G、lora、zigbee和物聯網通信協(xié)議MQTT、COAP等,*重要的內容是通過一個完整的大型物聯網項目實例講解python開發(fā)物聯網的細節(jié)。
本書內容寫作安排:
第1章物聯網邂逅Python
本章大致介紹物聯網的組成、架構、發(fā)展現狀及當前市面上典型的物聯網應用方案,闡述Python這門編程語言的特性和優(yōu)點,講述用Python語言開發(fā)物聯網終端設備、網關設備、Web后臺程序的具體方法及優(yōu)勢。
第2章開啟Python之旅
本章從零開始講解如何使用Python語言進行編程,通過大量的實例代碼帶領Python初學者掌握基本的Python編程技巧。
第3章Python數據結構
Python除了擁有比較通用的字符串、列表等數據結構外,還有元組、字典、集合等特有的數據結構。熟練掌握和運用Python的各種數據結構是編寫高質量Python程序的基礎。
第4章Python高級特性
Python作為一門高級編程語言,擁有眾多自身特有的高級特性,如生成器、迭代器、裝飾器等。同時,Python也可面向對象編程,只有掌握Python高級特性的使用方法,才能抓住Python編程的精髓。
第5章物聯網核心組件
本章介紹物聯網的核心組成部分及關鍵技術點,首先介紹WIFI、移動網絡、Zigbee通信、BLE、LoRa、NB-IoT等網絡通信方案,以及HTTP、Websocket、XMPP、CoAP、MQTT等網絡通信協(xié)議;其次介紹常用的硬件設備種類,包括處理器、傳感器、通信模塊等;最后介紹幾種市面上常用的物聯網云平臺,如中國移動的OneNet平臺、AWS IoT平臺、IBM的Waston IoT平臺。
第6章MicroPython開發(fā)物聯網終端
終端是物聯網連接真實世界的第一層,是物聯網產品中數量最為龐大的部件。本章重點講解目前非;鸨腗icroPython,可用于開發(fā)單片機程序,單片機是物聯網終端設備的核心,除了介紹MicroPython的基本使用外,還會用MicroPython構建一個液晶屏顯示程序實例。
第7章構建物聯網網關
網關是連接終端設備和后臺的樞紐,同時還負責局域網的組建和維護、本地數據存儲、通信規(guī)則制定、業(yè)務邏輯管理等。在實際項目中,網關通常是一個運行Linux操作系統(tǒng)并搭載物聯網通信模塊及其他外設的嵌入式設備。本章將介紹網關上嵌入式Linux的相關知識及Python環(huán)境的構建方法,為后續(xù)講解網關Python的開發(fā)提供基本的軟、硬件環(huán)境。
第8章網關數據編碼與處理
網關作為物聯網應用中的通信樞紐,在通信過程中有多種格式的數據需要處理。其方式包括轉發(fā)、編解碼、解析等。本章講述網關如何通過Python語言處理各種格式的數據,包括CSV、JSON、XML、二進制數據、Base64格式的數據。
第9章網關多進程與多線程
物聯網網關往往需要管理大量的終端設備,還要承擔通信、運算、IO操作等多種任務。本章介紹Python編程時實現多任務的方式及多進程、多線程、協(xié)程、異步IO等多種Python程序模型,并對它們做出對比,針對CPU密集型和IO密集型不同應用場景下方案的選擇,使網關程序性能更優(yōu)。
第10章網關數據持久化
網關是運算中心與通信樞紐,也是局域網數據存儲中心。數據持久化是一個系統(tǒng)穩(wěn)定運行的必要條件。所有數據存放在內存中時,一旦設備發(fā)生軟、硬件故障,將發(fā)生數據丟失。為了避免這種情況,某些關鍵數據需要固化到磁盤上。本章介紹兩種數據固化到磁盤上的兩種方式普通文件和數據庫,并介紹Python程序對這兩種數據存儲方式的實際運用。
第11章Python擴展
Python在物聯網行業(yè)的應用與其他行業(yè)的應用有很大不同:物聯網涉及硬件操作且物聯網設備的CPU處理能力通常非常有限。因此,在某些特殊場景,需要使用C語言編寫操作硬件的程序從而提供Python調用接口以實現Python對硬件的操作,而且在某些效率要求非常高的場景,使用運行效率更高的C語言編寫程序,再編譯成Python擴展庫,可提高程序執(zhí)行效率。本章主要講解使用C語言擴展Python的方法。
第12章網關網絡編程
網關負責局域網的組建和維護,同時需要與后臺通信以完成數據、指令的傳輸。本章首先介紹使用Python進行基本的Socket編程,接著以實戰(zhàn)項目為例,分別講解基于requests模塊的文件傳輸及基于MQTT協(xié)議實現的hbmqtt編程。
第13章物聯網后臺Web開發(fā)
本章介紹基于Python的 Django Web框架基礎知識,包括視圖與URL配置、模板、模型、表單、靜態(tài)文件處理、用戶注冊與登錄,主要介紹Django框架Web編程的基礎知識儲備,以便能夠理解實戰(zhàn)項目中的Web程序。
第14章物聯網Python項目實戰(zhàn)
本章介紹一個基于物聯網的智能種植項目,從項目架構、功能及項目所包含的終端設備、網關、后臺程序等方面全面展示開發(fā)過程。該項目在GitHub提供了完整的源碼,讀者通過該實戰(zhàn)項目能夠了解一個完整物聯網項目的全貌,掌握物聯網Python開發(fā)的細節(jié)。目錄
東北大學電子信息專業(yè),曾就職于疊拓、GE、長虹從事多個領域的軟件開發(fā)工作,擅長嵌入式Linux和Python開發(fā),目前在中移物聯網負責物聯網操作系統(tǒng)的設計和研發(fā)。熱愛開源、分享和技術寫作,CSDN博客專家,著有《Micropython加速物聯網開發(fā)》、《python Django web實戰(zhàn)》、《樹莓派體驗》等專欄。
第1章物聯網邂逅Python
11物聯網組成架構
12物聯網發(fā)展現狀
121終端設備
122物聯網操作系統(tǒng)
123通信手段
124網絡建設
125應用協(xié)議
126物聯網云平臺
13物聯網典型應用
131共享單車
132智能家居
133智慧農業(yè)
14使用Python的理由
141Python特性
142Python無處不在
143開發(fā)速度有時更重要
15美麗的相遇
151Python與終端
152Python與網關
153Python與云平臺
154物聯網Python全棧開發(fā)
第2章開啟Python之旅
21Python版本的選擇
22搭建開發(fā)環(huán)境
221安裝VMware
222在VMware上安裝Ubuntu
223安裝VMware Tools工具
224虛擬機的網絡配置
225Samba共享設置
226修改Python版本
23開始編寫Python程序
231交互式解釋器
232源代碼執(zhí)行
233注釋
234代碼塊和縮進
235繼續(xù)和分隔
236輸入和輸出
24變量和數據類型
241變量賦值
242常量
243數據類型
25條件和循環(huán)
251if語句
252while循環(huán)
253forin循環(huán)
254跳出循環(huán)
255pass語句
26函數
261定義函數
262函數調用
263函數的參數
264內置函數
27變量進階
271全局變量與局部變量
272global關鍵字
273nonlocal關鍵字
274變量作用域
28模塊與包
281使用模塊
282包
29異常處理
第3章Python數據結構
31字符串
311索引和切片
312字符串運算符
313字符串格式化
314字符編碼
32列表
321訪問列表
322更改列表
323列表操作符
324列表常用函數
33元組
331訪問元組
332元組操作符
333元組內置函數
34字典
341訪問字典
342修改字典
343字典鍵的特性
344字典函數
35集合
351忽略重復元素
352無序
353常用操作
第4章Python高級特性
41生成器
411列表推導式
412生成器表達式
413生成器函數
42迭代器
43函數式編程
431高階函數
432內置高階函數
433閉包
434裝飾器
435匿名函數
436偏函數
44面向對象編程
441類與對象
442訪問限制
443繼承
444多重繼承
445多態(tài)
446運算符重載
第5章物聯網核心組件
51網絡通信方案
511WIFI網絡
512移動網絡
513Zigbee
514BLE
515LoRa
516NB-IoT
52網絡通信協(xié)議
521HTTP
522WebSocket
523XMPP
524CoAP
525MQTT
53硬件
54物聯網云平臺
541OneNet
542AWS IoT
543Waston IoT
第6章MicroPython開發(fā)物聯網終端
61MicroPython簡介
611MicroPython項目
612MicroPython特點
613MicroPython源碼
62MicroPython開發(fā)板
621官方開發(fā)板PYBoard
622國內開發(fā)板TPYBoard
623OpenMV
624LoPy
63第一個MicroPython程序
64交互式解釋器
65按鍵中斷與回調
66定時器的使用
67串口測試
68SPI接口驅動液晶屏
681硬件連接
682LCD屏驅動
683字庫說明
684主程序
69源碼編譯與固件升級
691準備編譯環(huán)境
692源碼下載與編譯
693固件燒寫
610MicroPython多線程
6101MicroPython線程簡介
6102MicroPython線程使用
6103多線程中的鎖
611安全模式及恢復出廠設置
6111安全模式
6112恢復出廠設置
第7章構建物聯網網關
71網關概述
711網關的構成
712常用物聯網網關
72自主構建網關
721交叉編譯
722編譯引導程序
723內核配置與編譯
724制作文件系統(tǒng)
725分區(qū)與下載
726系統(tǒng)啟動流程簡介
727移植Python3
73樹莓派作網關
731初次啟動樹莓派
732串口登錄樹莓派
733SSH訪問樹莓派
734升級Python版本
735必備工具安裝
736板載WIFI配置
737串口通信
第8章網關數據編碼與處理
81讀寫CSV文件
811讀取CSV文件
812寫入CSV文件
82JSON解析
821JSON數據格式
822編碼
823解碼
83XML操作
831XML簡介
832解析XML
833創(chuàng)建與修改
84二進制數據的讀寫
85Base64編解碼
86正則表達式
861正則表達式簡介
862re模塊
863貪婪匹配
第9章網關多進程與多線程
91多進程
911multiprocessing模塊
912進程同步
913進程間通信
92多線程
921threading模塊
922線程同步
923線程間通信
93多線程和多進程的思考
931多核CPU利用率實驗
932GIL全局鎖
933切換的開銷
934多線程與多進程的選擇
94異步IO
941協(xié)程
942協(xié)程與多線程對比
943asyncio
第10章網關數據持久化
101文件操作
1011讀寫文本數據
1012操作文件和目錄
1013讀寫壓縮文件
1014內存映射
1015臨時文件與目錄
1016序列化Python對象
102SQLite數據庫
1021SQLite簡介
1022命令行操作SQLite
1023創(chuàng)建數據庫
1024創(chuàng)建表
1025SQL語句
1026SQLite的Python編程
第11章Python擴展
111Python擴展的原因
112連接硬件的紐帶
113C語言擴展Python
1131簡單的C語言Python擴展
1132傳遞整型參數
1133傳遞字符串參數
第12章網關網絡編程
121網關網絡通信方案
122Socket編程
123requests
1231上傳文件
1232下載文件
124hbmqtt
1241安裝
1242hbmqtt命令操作
1243hbmqtt API編程
125LoRa網絡通信
1251LoRa模塊初始化
1252數據監(jiān)聽與接收
1253數據緩存
第13章物聯網后臺Web開發(fā)
131Django簡介
132創(chuàng)建一個網站
1321Django安裝
1322創(chuàng)建項目
1323運行與訪問
133網站首頁
1331源碼文件結構
1332視圖與URL配置
134Django模板
1341Django模板系統(tǒng)
1342模板繼承
135Django模型
1351安裝MySQL數據庫
1352創(chuàng)建模型
1353必要的配置
136用戶注冊
137賬號登錄
第14章物聯網Python項目實戰(zhàn)
141項目簡介
142終端設備程序開發(fā)
1421采集空氣溫濕度
1422獲取環(huán)境光強度
1423雨量檢測
1424水位檢測
1425土壤濕度檢測
1426水泵的控制
1427入侵檢測
1428燈光控制
1429電量檢測
14210LoRa通信
14211JSON消息
143網關程序開發(fā)
1431終端通信
1432數據庫管理
1433文件備份
1434服務器通信
14352G模塊的使用
145服務器端程序開發(fā)
1451與網關通信
1452環(huán)境數據可視化
1453滴灌控制
1454燈光控制
1455報警顯示與設置
1456設備管理
1457備份文件管理