高级检索结果页
欢迎来到工程科技数字图书馆
登录 | 注册
 
您当前的位置:图书 > 物联网系统开发:从0到1构建IoT平台 第2版

物联网系统开发:从0到1构建IoT平台 第2版

内容简介
本书是一部从技术原理、工程实践、设计模式和最佳实践等多个维度详细讲解物联网系统和产品开发的著作。它涵盖物联网应用开发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构建一个功能完备的物联网平台。

封面
前折页
书名页
版权
前言
第一部分 物联网基础
 第1章 什么是物联网
  1.1 物联网和人工智能
  1.2 物联网的现状与前景
 第2章 常见的物联网协议
  2.1 MQTT协议
  2.2 MQTT-SN协议
  2.3 CoAP
  2.4 LwM2M协议
  2.5 HTTP
  2.6 LoRaWAN协议
  2.7 NB-IoT协议
  2.8 本章小结
第二部分 MQTT协议详解与实战
 第3章 MQTT协议基础
  3.1 MQTT协议的通信模型
  3.2 MQTT的不同版本
  3.3 MQTT Client
  3.4 MQTT Broker
  3.5 MQTT协议数据包格式
  3.6 本章小结
 第4章 MQTT 3.1.1协议详解
  4.1 建立到Broker的连接
   4.1.1 CONNECT数据包
   4.1.2 CONNACK数据包
   4.1.3 关闭连接
   4.1.4 代码实践
  4.2 订阅与发布
   4.2.1 PUBLISH数据包
   4.2.2 代码实践:发布消息
   4.2.3 订阅一个主题
   4.2.4 代码实践:订阅主题
   4.2.5 取消订阅
  4.3 QoS及其最佳实践
   4.3.1 MQTT协议中的QoS等级
   4.3.2 QoS0
   4.3.3 QoS1
   4.3.4 QoS2
   4.3.5 代码实践:使用不同的QoS发布消息
   4.3.6 实际的QoS
   4.3.7 QoS的最佳实践
  4.4 Retained消息和LWT
   4.4.1 Retained消息
   4.4.2 代码实践:发布和接收Retained消息
   4.4.3 LWT
   4.4.4 代码实践:监控Client连接状态
  4.5 Keep Alive与连接保活
   4.5.1 Keep Alive
   4.5.2 代码实践
   4.5.3 连接保活
  4.6 本章小结
 第5章 MQTT 5.0协议详解
  5.1 协议包内容扩展
   5.1.1 属性集
   5.1.2 原因码
  5.2 更完善的连接管理
   5.2.1 获取MQTT Broker的连接属性
   5.2.2 代码实践:建立MQTT 5.0连接
   5.2.3 Client主动断开连接
   5.2.4 代码实践:主动断开连接,触发遗愿机制
   5.2.5 Broker主动断开连接
   5.2.6 代码实践:处理客户端标识符冲突
  5.3 更完善的会话管理
   5.3.1 清理会话启动
   5.3.2 会话过期时间
   5.3.3 代码实践:在CONNECT数据包中设定会话过期时间
   5.3.4 代码实践:在DISCONNECT数据包中更新会话过期时间
  5.4 新增消息过期机制
   5.4.1 消息过期时间
   5.4.2 代码实践:发布带有过期时间的消息
  5.5 协议级别支持共享订阅
   5.5.1 如何使用共享订阅
   5.5.2 代码实践:使用共享订阅
   5.5.3 代码实践:使用带通配符的共享订阅
   5.5.4 代码实践:多个共享订阅组
  5.6 数据包可携带用户属性
   5.6.1 为什么要引入用户属性
   5.6.2 典型的使用场景
  5.7 可声明消息体格式
   5.7.1 为什么要声明消息体格式
   5.7.2 如何声明消息体格式
   5.7.3 代码实践:发布带有消息体格式的消息
  5.8 可设置主题别名
   5.8.1 主题名映射
   5.8.2 代码实践:使用主题别名
  5.9 新增请求/响应模式
   5.9.1 MQTT 5.0之前的解决方案
   5.9.2 MQTT 5.0的解决方案
   5.9.3 代码实践:使用请求/响应模式进行数据交互
  5.10 订阅时可指定订阅标识符
   5.10.1 订阅标识符
   5.10.2 代码实践:使用订阅标识符
  5.11 更完善的订阅选项
   5.11.1 QoS等级选项
   5.11.2 非本地选项
   5.11.3 保留Retain标识符选项
   5.11.4 保留消息处理选项
   5.11.5 代码实践:设置非本地选项
   5.11.6 代码实践:设置保留Retain标识符选项
   5.11.7 代码实践:设置保留消息处理选项
  5.12 更完善的认证机制
  5.13 本章小结
 第6章 MQTT协议实战
  6.1 “AI+IoT”项目实战
   6.1.1 用TensorFlow在Android系统上进行物体识别
   6.1.2 如何在MQTT协议里传输大文件
   6.1.3 消息去重
   6.1.4 最终的消息数据格式
   6.1.5 代码实践:上传识别结果
   6.1.6 在浏览器中运行MQTT Client
   6.1.7 代码实践:接收识别结果
   6.1.8 搭建私有MQTT Broker
   6.1.9 传输层安全
  6.2 MQTT常见问题解答
  6.3 开发物联网应用,学会MQTT协议就够了吗
  6.4 本章小结
第三部分 实战:从零开始搭建一个IoT平台
 第7章 准备工作台
  7.1 安装需要的组件
  7.2 Maque IotHub的组成部分
  7.3 项目结构
   7.3.1 IotHub Server
   7.3.2 IotHub DeviceSDK
  7.4 本章小结
 第8章 设备生命周期管理
  8.1 设备注册
   8.1.1 设备三元组
   8.1.2 EMQX的认证方式
   8.1.3 设备接入流程
   8.1.4 Server API:设备注册
   8.1.5 调整EMQX配置
   8.1.6 修改DeviceSDK
   8.1.7 Server API:设备信息查询
   8.1.8 Server API:获取接入IotHub的一次性密码(JWT)
   8.1.9 完善细节
  8.2 设备连接状态管理
   8.2.1 Poor man's Solution
   8.2.2 使用EMQX的解决方案
   8.2.3 管理设备的连接状态
  8.3 设备的禁用与删除
   8.3.1 禁用设备
   8.3.2 删除设备
  8.4 设备权限管理
   8.4.1 为什么要控制Publish和Subscribe权限
   8.4.2 EMQX的ACL功能
   8.4.3 集成EMQX的ACL功能
  8.5 给IotHub加一点扩展性
   8.5.1 EMQX的纵向扩展
   8.5.2 EMQX的横向扩展
  8.6 本章小结
 第9章 上行数据处理
  9.1 选择一个可扩展的方案
   9.1.1 完全基于MQTT协议的方案
   9.1.2 基于WebHook的方案
   9.1.3 数据格式
   9.1.4 主题名规划
   9.1.5 上行数据存储
   9.1.6 通知业务系统
   9.1.7 上行数据查询
   9.1.8 上行数据处理流程
  9.2 实现上行数据处理功能
   9.2.1 DeviceSDK的功能实现
   9.2.2 IotHub Server的功能实现
   9.2.3 代码联调
   9.2.4 通知业务系统
   9.2.5 Server API历史消息查询
  9.3 设备状态上报
   9.3.1 设备状态
   9.3.2 DeviceSDK的实现
   9.3.3 IotHub Server的实现
   9.3.4 Server API:查询设备状态
   9.3.5 代码联调
   9.3.6 为何不用Retained消息
  9.4 时序数据库
   9.4.1 时序数据
   9.4.2 时序数据库概述
   9.4.3 收集设备连接状态变化的数据
  9.5 本章小结
 第10章 下行数据处理
  10.1 选择一个可扩展的方案
   10.1.1 完全基于MQTT协议的方案
   10.1.2 基于EMQX RESTful API的方案
   10.1.3 下行数据格式
   10.1.4 主题名规划
   10.1.5 如何订阅主题
   10.1.6 设备端消息去重
   10.1.7 指令回复
  10.2 DeviceSDK端的实现
   10.2.1 消息去重
   10.2.2 提取元数据
   10.2.3 处理指令
   10.2.4 回复指令
  10.3 服务端的实现
   10.3.1 更新ACL列表
   10.3.2 EMQX发布功能
   10.3.3 Server API:发送指令
   10.3.4 Broker自动订阅
   10.3.5 通知业务系统
   10.3.6 代码联调
  10.4 本章小结
 第11章 IotHub的高级功能
  11.1 RPC式调用
   11.1.1 主题规划
   11.1.2 等待指令回复
   11.1.3 服务端实现
   11.1.4 Server API:发送RPC指令
   11.1.5 更新设备ACL列表
   11.1.6 更新服务器订阅列表
   11.1.7 DeviceSDK端实现
   11.1.8 代码联调
  11.2 设备数据请求
   11.2.1 更新设备ACL列表
   11.2.2 服务端实现
   11.2.3 DeviceSDK端实现
   11.2.4 代码联调
  11.3 NTP服务
   11.3.1 IotHub的NTP服务
   11.3.2 DeviceSDK端实现
   11.3.3 服务端实现
   11.3.4 代码联调
  11.4 设备分组
   11.4.1 功能设计
   11.4.2 服务端实现
   11.4.3 DeviceSDK端实现
   11.4.4 代码联调
  11.5 M2M设备间通信
   11.5.1 主题名规划
   11.5.2 服务端实现
   11.5.3 DeviceSDK端实现
   11.5.4 代码联调
  11.6 OTA升级
   11.6.1 功能设计
   11.6.2 服务端实现
   11.6.3 DeviceSDK端实现
   11.6.4 代码联调
  11.7 设备影子
   11.7.1 什么是设备影子
   11.7.2 设备影子的数据结构
   11.7.3 设备影子的数据流向
   11.7.4 服务端实现
   11.7.5 DeviceSDK端实现
   11.7.6 代码联调
  11.8 本章小结
 第12章 扩展EMQX Broker
  12.1 EMQX的插件系统
   12.1.1 Erlang语言
   12.1.2 安装编译工具
  12.2 我们会用到的Erlang特性
   12.2.1 Erlang简介
   12.2.2 变量和赋值
   12.2.3 特殊的Erlang数据类型
   12.2.4 模式匹配
   12.2.5 模块与函数
   12.2.6 宏定义
   12.2.7 OTP
  12.3 搭建开发和编译环境
   12.3.1 使用插件模板
   12.3.2 代码结构
   12.3.3 编译和打包
  12.4 实现基于RabbitMQ的Hook插件:emqx_rabbitmq_plugin
   12.4.1 插件配置文件
   12.4.2 建立RabbitMQ的连接池
   12.4.3 处理client.connected事件
   12.4.4 处理client.disconnected事件
   12.4.5 处理message.publish事件
  12.5 使用emqx_rabbitmq_plugin插件
   12.5.1 安装和启用插件
   12.5.2 测试插件
   12.5.3 管理插件配置
   12.5.4 集成emqx_rabbitmq_plugin插件
   12.5.5 IotHub的全新架构
  12.6 本章小结
 第13章 集成CoAP
  13.1 CoAP简介
   13.1.1 CoAP的消息模型
   13.1.2 CoAP的请求/响应机制
   13.1.3 CoAP OBSERVE
   13.1.4 CoAP HTTP网关
  13.2 集成CoAP到IotHub
   13.2.1 EMQX的CoAP网关
   13.2.2 设备发起连接
   13.2.3 设备上报数据
   13.2.4 设备发送心跳
   13.2.5 设备主动断开连接
  13.3 本章小结
 第14章 使用其他语言扩展EMQX
  14.1 EMQX的gRPC钩子
  14.2 gRPC简介
  14.3 基于EMQX的gRPC钩子实现插件功能
   14.3.1 ExHook的服务定义
   14.3.2 代码结构
   14.3.3 OnProviderLoaded接口
   14.3.4 OnClientConnected接口
   14.3.5 OnClientDisconnected接口
   14.3.6 OnMessagePublish接口
  14.4 启用emqx_rabbitmq_node_plugin
  14.5 本章小结
结语 我们学到了什么
附录A 如何运行Maque IotHub
后折页
封底

机工科技数字图书馆