本书在介绍物联网的组成、典型架构和应用的基础上,采用实例代码讲述python编程基础和应用实例,包括用micropython进行物联网单片机的开发、用python开发物联网网关的方法、python django框架开发物联网web后台和前端知识及物联网常用通信方案2G、lora、zigbee和物联网通信协议MQTT、COAP等,*重要的内容是通过一个完整的大型物联网项目实例讲解python开发物联网的细节。
本书内容写作安排:
第1章物联网邂逅Python
本章大致介绍物联网的组成、架构、发展现状及当前市面上典型的物联网应用方案,阐述Python这门编程语言的特性和优点,讲述用Python语言开发物联网终端设备、网关设备、Web后台程序的具体方法及优势。
第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等网络通信协议;其次介绍常用的硬件设备种类,包括处理器、传感器、通信模块等;最后介绍几种市面上常用的物联网云平台,如中国移动的OneNet平台、AWS IoT平台、IBM的Waston IoT平台。
第6章MicroPython开发物联网终端
终端是物联网连接真实世界的第一层,是物联网产品中数量最为庞大的部件。本章重点讲解目前非常火爆的MicroPython,可用于开发单片机程序,单片机是物联网终端设备的核心,除了介绍MicroPython的基本使用外,还会用MicroPython构建一个液晶屏显示程序实例。
第7章构建物联网网关
网关是连接终端设备和后台的枢纽,同时还负责局域网的组建和维护、本地数据存储、通信规则制定、业务逻辑管理等。在实际项目中,网关通常是一个运行Linux操作系统并搭载物联网通信模块及其他外设的嵌入式设备。本章将介绍网关上嵌入式Linux的相关知识及Python环境的构建方法,为后续讲解网关Python的开发提供基本的软、硬件环境。
第8章网关数据编码与处理
网关作为物联网应用中的通信枢纽,在通信过程中有多种格式的数据需要处理。其方式包括转发、编解码、解析等。本章讲述网关如何通过Python语言处理各种格式的数据,包括CSV、JSON、XML、二进制数据、Base64格式的数据。
第9章网关多进程与多线程
物联网网关往往需要管理大量的终端设备,还要承担通信、运算、IO操作等多种任务。本章介绍Python编程时实现多任务的方式及多进程、多线程、协程、异步IO等多种Python程序模型,并对它们做出对比,针对CPU密集型和IO密集型不同应用场景下方案的选择,使网关程序性能更优。
第10章网关数据持久化
网关是运算中心与通信枢纽,也是局域网数据存储中心。数据持久化是一个系统稳定运行的必要条件。所有数据存放在内存中时,一旦设备发生软、硬件故障,将发生数据丢失。为了避免这种情况,某些关键数据需要固化到磁盘上。本章介绍两种数据固化到磁盘上的两种方式普通文件和数据库,并介绍Python程序对这两种数据存储方式的实际运用。
第11章Python扩展
Python在物联网行业的应用与其他行业的应用有很大不同:物联网涉及硬件操作且物联网设备的CPU处理能力通常非常有限。因此,在某些特殊场景,需要使用C语言编写操作硬件的程序从而提供Python调用接口以实现Python对硬件的操作,而且在某些效率要求非常高的场景,使用运行效率更高的C语言编写程序,再编译成Python扩展库,可提高程序执行效率。本章主要讲解使用C语言扩展Python的方法。
第12章网关网络编程
网关负责局域网的组建和维护,同时需要与后台通信以完成数据、指令的传输。本章首先介绍使用Python进行基本的Socket编程,接着以实战项目为例,分别讲解基于requests模块的文件传输及基于MQTT协议实现的hbmqtt编程。
第13章物联网后台Web开发
本章介绍基于Python的 Django Web框架基础知识,包括视图与URL配置、模板、模型、表单、静态文件处理、用户注册与登录,主要介绍Django框架Web编程的基础知识储备,以便能够理解实战项目中的Web程序。
第14章物联网Python项目实战
本章介绍一个基于物联网的智能种植项目,从项目架构、功能及项目所包含的终端设备、网关、后台程序等方面全面展示开发过程。该项目在GitHub提供了完整的源码,读者通过该实战项目能够了解一个完整物联网项目的全貌,掌握物联网Python开发的细节。目录
东北大学电子信息专业,曾就职于叠拓、GE、长虹从事多个领域的软件开发工作,擅长嵌入式Linux和Python开发,目前在中移物联网负责物联网操作系统的设计和研发。热爱开源、分享和技术写作,CSDN博客专家,著有《Micropython加速物联网开发》、《python Django web实战》、《树莓派体验》等专栏。
第1章物联网邂逅Python
11物联网组成架构
12物联网发展现状
121终端设备
122物联网操作系统
123通信手段
124网络建设
125应用协议
126物联网云平台
13物联网典型应用
131共享单车
132智能家居
133智慧农业
14使用Python的理由
141Python特性
142Python无处不在
143开发速度有时更重要
15美丽的相遇
151Python与终端
152Python与网关
153Python与云平台
154物联网Python全栈开发
第2章开启Python之旅
21Python版本的选择
22搭建开发环境
221安装VMware
222在VMware上安装Ubuntu
223安装VMware Tools工具
224虚拟机的网络配置
225Samba共享设置
226修改Python版本
23开始编写Python程序
231交互式解释器
232源代码执行
233注释
234代码块和缩进
235继续和分隔
236输入和输出
24变量和数据类型
241变量赋值
242常量
243数据类型
25条件和循环
251if语句
252while循环
253forin循环
254跳出循环
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多态
446运算符重载
第5章物联网核心组件
51网络通信方案
511WIFI网络
512移动网络
513Zigbee
514BLE
515LoRa
516NB-IoT
52网络通信协议
521HTTP
522WebSocket
523XMPP
524CoAP
525MQTT
53硬件
54物联网云平台
541OneNet
542AWS IoT
543Waston IoT
第6章MicroPython开发物联网终端
61MicroPython简介
611MicroPython项目
612MicroPython特点
613MicroPython源码
62MicroPython开发板
621官方开发板PYBoard
622国内开发板TPYBoard
623OpenMV
624LoPy
63第一个MicroPython程序
64交互式解释器
65按键中断与回调
66定时器的使用
67串口测试
68SPI接口驱动液晶屏
681硬件连接
682LCD屏驱动
683字库说明
684主程序
69源码编译与固件升级
691准备编译环境
692源码下载与编译
693固件烧写
610MicroPython多线程
6101MicroPython线程简介
6102MicroPython线程使用
6103多线程中的锁
611安全模式及恢复出厂设置
6111安全模式
6112恢复出厂设置
第7章构建物联网网关
71网关概述
711网关的构成
712常用物联网网关
72自主构建网关
721交叉编译
722编译引导程序
723内核配置与编译
724制作文件系统
725分区与下载
726系统启动流程简介
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创建与修改
84二进制数据的读写
85Base64编解码
86正则表达式
861正则表达式简介
862re模块
863贪婪匹配
第9章网关多进程与多线程
91多进程
911multiprocessing模块
912进程同步
913进程间通信
92多线程
921threading模块
922线程同步
923线程间通信
93多线程和多进程的思考
931多核CPU利用率实验
932GIL全局锁
933切换的开销
934多线程与多进程的选择
94异步IO
941协程
942协程与多线程对比
943asyncio
第10章网关数据持久化
101文件操作
1011读写文本数据
1012操作文件和目录
1013读写压缩文件
1014内存映射
1015临时文件与目录
1016序列化Python对象
102SQLite数据库
1021SQLite简介
1022命令行操作SQLite
1023创建数据库
1024创建表
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数据监听与接收
1253数据缓存
第13章物联网后台Web开发
131Django简介
132创建一个网站
1321Django安装
1322创建项目
1323运行与访问
133网站首页
1331源码文件结构
1332视图与URL配置
134Django模板
1341Django模板系统
1342模板继承
135Django模型
1351安装MySQL数据库
1352创建模型
1353必要的配置
136用户注册
137账号登录
第14章物联网Python项目实战
141项目简介
142终端设备程序开发
1421采集空气温湿度
1422获取环境光强度
1423雨量检测
1424水位检测
1425土壤湿度检测
1426水泵的控制
1427入侵检测
1428灯光控制
1429电量检测
14210LoRa通信
14211JSON消息
143网关程序开发
1431终端通信
1432数据库管理
1433文件备份
1434服务器通信
14352G模块的使用
145服务器端程序开发
1451与网关通信
1452环境数据可视化
1453滴灌控制
1454灯光控制
1455报警显示与设置
1456设备管理
1457备份文件管理