搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
物联网系统开发:从0到1构建IOT平台 第2版
0.00     定价 ¥ 99.00
图书来源: 浙江图书馆(由JD配书)
此书还可采购15本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787111780397
  • 作      者:
    付强,傅静涛
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2025-06-01
收藏
编辑推荐
(1)作者背景权威:作者曾就职于趋势科技、诺基亚,现担任某物联网企业的CTO,在物联网领域有较大的影响力。 (2)作者经验丰富:作者在物联网领域从业近15年,一直致力于物联网软硬件产品和平台的设计和开发,经验丰富。 (3)畅销书全新升级:第1版是物联网领域的畅销书,累计印刷10余次,网店零差评,是读者公认的经典著作。 (4)零基础可上手:可指导没有任务物联网技术基础的读者理解物联网的核心协议,并从0到1开发功能齐备的物联网平台。 (5)注重实战:本书以实战为导向,手把手逐步教读者开发物联网平台,附案例代码,并给出了解释。
展开
作者简介

付强,资深物联网技术专家,有超过15年的物联网行业从业经验,现担任某物联网软硬件解决方案公司的创始人兼CTO。曾就职于趋势科技、诺基亚创新中心硅谷实验室,专注于物联网软硬件产品和平台的设计和开发。 CSDN专栏作者,撰写了多篇物联网和AI相关的专栏文章。
傅静涛,工信部高级项目经理,在一流高校从事相关专业科研和教学近30年, 在物联网领域有非常深厚的积累。主持和实施了多个物联网软硬件产品和平台的研发与落地。

展开
内容介绍
内容简介 本书是一部从技术原理、工程实践、设计模式和最佳实践等多个维度详细讲解物联网系统和产品开发的著作。它涵盖物联网应用开发80%的场景,能指导读者零基础的读者从0到1构建一个功能齐备的物联网平台,并附有代码和解释。本书既有作者在物联网行业多年实操经验的总结,也结合了作者在高校的多年教学实践经验,是一本既适合高校学生、物联网初学者,也适合有经验的物联网开发者和架构师阅读的佳作。 本书第1版是物联网系统开发领域的畅销书,几乎零差评。第2版新增了全面解析MQTT 5.0协议特性的内容,同时,为了适配EMQX最新版本,对书中的相关代码和配置均进行了更新。 全书共14章,分为三大部分: 第一部分(第1~2章)物联网基础 介绍物联网基础知识,涵盖物联网的概念和常用协议。 第二部分(第3~6章)MQTT协议详解与实战 详细讲解MQTT协议,通过详尽的示例代码对物联网的核心协议——MQTT协议的规范和特性进行讲解。内容包括MQTT 3.1.1和MQTT 5.0。 第三部分(第7~14章)实战:从零开始搭建一个IoT平台 物联网平台开发实战,讲解如何使用开源组件从0到1构建一个功能完备的物联网平台。
展开
目录
目  录 Contents
前言
第一部分 物联网基础
第1章 什么是物联网 2
1.1 物联网和人工智能 3
1.2 物联网的现状与前景 4
第2章 常见的物联网协议 6
2.1 MQTT协议 6
2.2 MQTT-SN协议 7
2.3 CoAP 8
2.4 LwM2M协议 9
2.5 HTTP 9
2.6 LoRaWAN协议 9
2.7 NB-IoT协议 10
2.8 本章小结 10
第二部分 MQTT协议详解与实战
第3章 MQTT协议基础 13
3.1 MQTT协议的通信模型 13
3.2 MQTT的不同版本  14
3.3 MQTT Client 14
3.4 MQTT Broker 16
3.5 MQTT协议数据包格式 17
3.6 本章小结 19
第4章 MQTT 3.1.1协议详解 20
4.1 建立到Broker的连接 20
4.1.1 CONNECT数据包 20
4.1.2 CONNACK数据包 23
4.1.3 关闭连接 25
4.1.4 代码实践 26
4.2 订阅与发布 29
4.2.1 PUBLISH数据包 30
4.2.2 代码实践:发布消息 32
4.2.3 订阅一个主题 32
4.2.4 代码实践:订阅主题 35
4.2.5 取消订阅 37
4.3 QoS及其最佳实践 40
4.3.1 MQTT协议中的QoS等级 40
4.3.2 QoS0 40
4.3.3 QoS1 41
4.3.4 QoS2 42
4.3.5 代码实践:使用不同的QoS
发布消息 45
4.3.6 实际的QoS 48
4.3.7 QoS的最佳实践 48
4.4 Retained消息和LWT 49
4.4.1 Retained消息 49
4.4.2 代码实践:发布和接收
Retained消息 50
4.4.3 LWT 52
4.4.4 代码实践:监控Client连接
状态 52
4.5 Keep Alive与连接保活 54
4.5.1 Keep Alive 54
4.5.2 代码实践 56
4.5.3 连接保活 57
4.6 本章小结 59
第5章 MQTT 5.0协议详解 60
5.1 协议包内容扩展 60
5.1.1 属性集 60
5.1.2 原因码 60
5.2 更完善的连接管理 63
5.2.1 获取MQTT Broker的连接
属性 63
5.2.2 代码实践:建立MQTT 5.0
连接 65
5.2.3 Client主动断开连接 65
5.2.4 代码实践:主动断开连接,
触发遗愿机制 66
5.2.5 Broker主动断开连接 67
5.2.6 代码实践:处理客户端标识符
冲突 67
5.3 更完善的会话管理 68
5.3.1 清理会话启动 69
5.3.2 会话过期时间 69
5.3.3 代码实践:在CONNECT数据包
中设定会话过期时间 70
5.3.4 代码实践:在DISCONNECT
数据包中更新会话过期时间 70
5.4 新增消息过期机制 71
5.4.1 消息过期时间 71
5.4.2 代码实践:发布带有过期
时间的消息 72
5.5 协议级别支持共享订阅 73
5.5.1 如何使用共享订阅 73
5.5.2 代码实践:使用共享订阅 74
5.5.3 代码实践:使用带通配符的
共享订阅 75
5.5.4 代码实践:多个共享订阅组 76
5.6 数据包可携带用户属性 77
5.6.1 为什么要引入用户属性 77
5.6.2 典型的使用场景 78
5.7 可声明消息体格式 79
5.7.1 为什么要声明消息体格式 79
5.7.2 如何声明消息体格式 79
5.7.3 代码实践:发布带有消息体
格式的消息 79
5.8 可设置主题别名 80
5.8.1 主题名映射 81
5.8.2 代码实践:使用主题别名 81
5.9 新增请求/响应模式 82
5.9.1 MQTT 5.0之前的解决方案 82
5.9.2 MQTT 5.0的解决方案 83
5.9.3 代码实践:使用请求/响应模式
进行数据交互 84
5.10 订阅时可指定订阅标识符 85
5.10.1 订阅标识符 85
5.10.2 代码实践:使用订阅标
识符 85
5.11 更完善的订阅选项 86
5.11.1 QoS等级选项 87
5.11.2 非本地选项 87
5.11.3 保留Retain标识符选项 87
5.11.4 保留消息处理选项 87
5.11.5 代码实践:设置非本地
选项 87
5.11.6 代码实践:设置保留Retain
标识符选项 88
5.11.7 代码实践:设置保留消息
处理选项 89
5.12 更完善的认证机制 91
5.13 本章小结 92
第6章 MQTT协议实战 93
6.1 “AI+IoT”项目实战 93
6.1.1 用TensorFlow在Android系统
上进行物体识别 93
6.1.2 如何在MQTT协议里传输大
文件 94
6.1.3 消息去重 95
6.1.4 最终的消息数据格式 95
6.1.5 代码实践:上传识别结果 95
6.1.6 在浏览器中运行
MQTT Client 97
6.1.7 代码实践:接收识别结果 97
6.1.8 搭建私有MQTT Broker 98
6.1.9 传输层安全 100
6.2 MQTT常见问题解答 101
6.3 开发物联网应用,学会MQTT
协议就够了吗 101
6.4 本章小结 103
第三部分 实战:从零开始搭建
 一个IoT平台
第7章 准备工作台 107
7.1 安装需要的组件 107
7.2 Maque IotHub的组成部分 108
7.3 项目结构 109
7.3.1 IotHub Server 109
7.3.2 IotHub DeviceSDK 109
7.4 本章小结 111
第8章 设备生命周期管理 112
8.1 设备注册 112
8.1.1 设备三元组 112
8.1.2 EMQX的认证方式 113
8.1.3 设备接入流程 117
8.1.4 Server API:设备注册 118
8.1.5 调整EMQX配置 120
8.1.6 修改DeviceSDK 121
8.1.7 Server API:设备信息
查询 122
8.1.8 Server API:获取接入IotHub
的一次性密码(JWT) 123
8.1.9 完善细节 125
8.2 设备连接状态管理 127
8.2.1 Poor man’s Solution 127
8.2.2 使用EMQX的解决方案 128
8.2.3 管理设备的连接状态 132
8.3 设备的禁用与删除 136
8.3.1 禁用设备 136
8.3.2 删除设备 141
8.4 设备权限管理 142
8.4.1 为什么要控制Publish和
Subscribe权限 142
8.4.2 EMQX的ACL功能 142
8.4.3 集成EMQX的ACL功能 146
8.5 给IotHub加一点扩展性 148
8.5.1 EMQX的纵向扩展 148
8.5.2 EMQX的横向扩展 149
8.6 本章小结 151
第9章 上行数据处理 152
9.1 选择一个可扩展的方案 152
9.1.1 完全基于MQTT协议的方案 153
9.1.2 基于WebHook的方案 154
9.1.3 数据格式 155
9.1.4 主题名规划 156
9.1.5 上行数据存储 156
9.1.6 通知业务系统 157
9.1.7 上行数据查询 157
9.1.8 上行数据处理流程 157
9.2 实现上行数据处理功能 158
9.2.1 DeviceSDK的功能实现 158
9.2.2 IotHub Server的功能实现 160
9.2.3 代码联调 162
9.2.4 通知业务系统 164
9.2.5 Server API历史消息查询 167
9.3 设备状态上报 168
9.3.1 设备状态 168
9.3.2 DeviceSDK的实现 169
9.3.3 IotHub Server 的实现 169
9.3.4 Server API:查询设备状态 171
9.3.5 代码联调 172
9.3.6 为何不用Retained消息 172
9.4 时序数据库 173
9.4.1 时序数据 173
9.4.2 时序数据库概述 174
9.4.3 收集设备连接状态变化的
数据 174
9.5 本章小结 177
第10章 下行数据处理 178
10.1 选择一个可扩展的方案 179
10.1.1 完全基于 MQTT协议的
方案 179
10.1.2 基于EMQX RESTful API的
方案 180
10.1.3 下行数据格式 180
10.1.4 主题名规划 181
10.1.5 如何订阅主题 182
10.1.6 设备端消息去重 182
10.1.7 指令回复 183
10.2 DeviceSDK端的实现 183
10.2.1 消息去重 183
10.2.2 提取元数据 184
10.2.3 处理指令 185
10.2.4 回复指令 186
10.3 服务端的实现 187
10.3.1 更新ACL 列表 187
10.3.2 EMQX发布功能 187
10.3.3 Server API:发送指令 188
10.3.4 Broker自动订阅 189
10.3.5 通知业务系统 190
10.3.6 代码联调 192
10.4 本章小结 195
第11章 IotHub的高级功能 196
11.1 RPC式调用 196
11.1.1 主题规划 197
11.1.2 等待指令回复 198
11.1.3 服务端实现 198
11.1.4 Server API:发送RPC指令 200
11.1.5 更新设备ACL列表 201
11.1.6 更新服务器订阅列表 201
11.1.7 DeviceSDK端实现 202
11.1.8 代码联调 203
11.2 设备数据请求 204
11.2.1 更新设备ACL列表 205
11.2.2 服务端实现 206
11.2.3 DeviceSDK端实现 207
11.2.4 代码联调 207
11.3 NTP服务 209
11.3.1 IotHub 的 NTP 服务 209
11.3.2 DeviceSDK端实现 210
11.3.3 服务端实现 211
11.3.4 代码联调 212
11.4 设备分组 212
11.4.1 功能设计 213
11.4.2 服务端实现 215
11.4.3 DeviceSDK端实现  218
11.4.4 代码联调 221
11.5 M2M设备间通信 223
11.5.1 主题名规划 223
11.5.2 服务端实现 224
11.5.3 DeviceSDK端实现 225
11.5.4 代码联调 225
11.6 OTA升级 227
11.6.1 功能设计 227
11.6.2 服务端实现 229
11.6.3 DeviceSDK端实现 233
11.6.4 代码联调 235
11.7 设备影子 238
11.7.1 什么是设备影子 238
11.7.2 设备影子的数据结构 238
11.7.3 设备影子的数据流向 239
11.7.4 服务端实现 241
11.7.5 DeviceSDK端实现 246
11.7.6 代码联调 248
11.8 本章小结 250
第12章 扩展EMQX Broker 251
12.1 EMQX的插件系统 251
12.1.1 Erlang语言 252
12.1.2 安装编译工具 252
12.2 我们会用到的Erlang特性 253
12.2.1 Erlang简介 253
12.2.2 变量和赋值 254
12.2.3 特殊的 Erlang 数据类型 255
12.2.4 模式匹配 255
12.2.5 模块与函数 256
12.2.6 宏定义 257
12.2.7 OTP 257
12.3 搭建开发和编译环境 257
12.3.1 使用插件模板 257
12.3.2 代码结构 257
12.3.3 编译和打包 260
12.4 实现基于RabbitMQ的Hook
插件:emqx_rabbitmq?_?plugin 260
12.4.1 插件配置文件 260
12.4.2 建立RabbitMQ的连接池 261
12.4.3 处理client.connected事件 263
12.4.4 处理client.disconnected
事件 263
12.4.5 处理message.publish事件 264
12.5 使用emqx_rabbitmq?_?plugin
插件 265
12.5.1 安装和启用插件 265
12.5.2 测试插件 266
12.5.3 管理插件配置 267
12.5.4 集成emqx_rabbitmq?_?plugin
插件 268
12.5.5 IotHub 的全新架构 269
12.6 本章小结 270
第13章 集成CoAP 271
13.1 CoAP简介 271
13.1.1 CoAP的消息模型 272
13.1.2 CoAP的请求/响应机制 272
13.1.3 CoAP OBSERVE 273
13.1.4 CoAP HTTP网关 273
13.2 集成CoAP到IotHub 274
13.2.1 EMQX的CoAP网关 274
13.2.2 设备发起连接 277
13.2.3 设备上报数据 279
13.2.4 设备发送心跳 280
13.2.5 设备主动断开连接 281
13.3 本章小结 282
第14章 使用其他语言扩展
 EMQX 283
14.1 EMQX的gRPC钩子 283
14.2 gRPC简介 284
14.3 基于EMQX的gRPC钩子实现
插件功能 284
14.3.1 ExHook的服务定义 284
14.3.2 代码结构 286
14.3.3 OnProviderLoaded接口 287
14.3.4 OnClientConnected接口 288
14.3.5 OnClientDisconnected
接口 290
14.3.6 OnMessagePublish接口 290
14.4 启用emqx_rabbitmq?_node_
plugin 293
14.5 本章小结 294
结语 我们学到了什么 295
附录A 如何运行Maque IotHub 299
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证