| 作者 |
| 付强 马克西米利亚诺·桑托斯 埃尼奥·莫拉 |
| 丛书名 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782008259372 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------物联网系统开发:从0到1构建IoT平台--------------------------- 内容简介 这是一本从技术原理、工程实践、设计模式和最佳实践4个维度讲解物联网系统开发的著作,是作者10余年实践经验的总结。首先,通过代码实例循序渐进、深入浅出地介绍了物联网协议的原理与实践;然后,以一个功能完备的综合性物联网平台的搭建过程为例,讲解了如何从0到1搭建一个物联网平台,同时总结了物联网平台开发中常用的设计模式和最佳实践。 全书一共12章,逻辑上可分为3大部分: 第一部分(第1-2章) 物联网基础 对物联网的一些关键常识和各种协议进行了详细的介绍。 第二部分(第3-5章) 物联网协议 通过大量实例代码详细分析和讲解了MQTT协议的规范、特性、原理和应用。 第三部分(第6-12章)物联网平台开发 详细讲解了如何使用开源组件和云服务从0到1搭建一个具备完备功能的物联网平台。 ---------------------------基于区块链的物联网项目开发--------------------------- . 本书首先概述了当前业务场景中的物联网概念。然后,它帮助你在IBM Watson物联网平台上开发自己的设备,并使用Watson and Intel Edison创建你的第一个物联网解决方案。一旦你熟悉了物联网,你就学会了区块链技术及其使用案例。你还能够利用Hyperledger framework平台开发你自己的区块链网络。随着学习的深入,你将通过书中对问题解决方案的阐述,学会如何设计你的解决方案架构,以便你能够创建你自己的集成区块链和物联网解决方案。接下来的章节将讲述如何在IBM云平台利用物联网来实现端到端的区块链解决方案。在本书结尾,你将掌握如何将物联网和区块链技术融合,利用最佳实践和驱动程序来开发实用集成解决方案。 |
| 目录 |
---------------------------物联网系统开发:从0到1构建IoT平台--------------------------- 前言 第一部分?物联网基础 第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 Client 14 3.3 MQTT Broker 15 3.4 MQTT协议数据包格式 17 3.5 本章小结 19 第4章?MQTT协议详解 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 订阅与发布 28 4.2.1 PUBLISH数据包 30 4.2.2 代码实践:发布消息 31 4.2.3 订阅一个主题 32 4.2.4 代码实践:订阅主题 35 4.2.5 取消订阅 36 4.3 QoS及其最佳实践 39 4.3.1 MQTT协议中的QoS等级 39 4.3.2 QoS0 40 4.3.3 QoS1 40 4.3.4 QoS2 42 4.3.5 代码实践:使用不同的QoS发布消息 44 4.3.6 实际的Subscribe 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 51 4.4.4 代码实践:监控Client连接状态 52 4.5 Keepalive与连接保活 54 4.5.1 Keepalive 54 4.5.2 代码实践 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 重复主题 60 4.6.5 Broker能力查询 60 4.6.6 双向DISCONNECT 61 4.7 本章小结 61 第5章?MQTT协议实战 62 5.1 “AI+IoT”项目实战 62 5.1.1 用TensorFlow在Android系统上进行物体识别 62 5.1.2 如何在MQTT协议里传输大文件 63 5.1.3 消息去重 64 5.1.4 最终的消息数据格式 64 5.1.5 代码实践:上传识别结果 64 5.1.6 在浏览器中运行MQTT Client 66 5.1.7 代码实践:接收识别结果 67 5.1.8 搭建私有MQTT Broker 68 5.1.9 传输层安全 69 5.2 MQTT常见问题解答 70 5.3 开发物联网应用,学会MQTT协议就够了吗 71 5.4 本章小结 72 第三部分?实战:从0搭建一个IoT平台 第6章?准备工作台 75 6.1 安装需要的组件 75 6.2 Maque IotHub的组成部分 76 6.3 项目结构 76 6.3.1 IotHub Server 77 6.3.2 IotHub DeviceSDK 77 6.4 本章小结 79 第7章?设备生命周期管理 80 7.1 设备注册 80 7.1.1 设备三元组 80 7.1.2 EMQ X的认证方式 81 7.1.3 设备接入流程 84 7.1.4 Server API:设备注册 84 7.1.5 调整EMQ X配置 87 7.1.6 修改DeviceSDK 87 7.1.7 Server API:设备信息查询 88 7.1.8 Server API:获取接入IotHub的一次性密码(JWT) 89 7.1.9 完善细节 91 7.2 设备连接状态管理 93 7.2.1 Poor man’s Solution 93 7.2.2 使用EMQ X的解决方案 94 7.2.3 管理设备的连接状态 97 7.3 设备的禁用与删除 101 7.3.1 禁用设备 101 7.3.2 删除设备 105 7.4 设备权限管理 106 7.4.1 为什么要控制Publish和Subscribe 106 7.4.2 EMQ X的ACL功能 106 7.4.3 集成EMQ X ACL 110 7.5 给IotHub加一点扩展性 111 7.5.1 EMQ X的纵向扩展 112 7.5.2 EMQ X的横向扩展 113 7.6 本章小结 114 第8章?上行数据处理 115 8.1 选择一个可扩展的方案 115 8.1.1 完全基于MQTT协议的方案 116 8.1.2 基于Hook的方案 117 8.1.3 数据格式 118 8.1.4 主题名规划 118 8.1.5 上行数据存储 118 8.1.6 通知业务系统 119 8.1.7 上行数据查询 119 8.1.8 上行数据处理流程 120 8.2 实现上行数据处理功能 120 8.2.1 DeviceSDK的功能实现 121 8.2.2 IotHub Server的功能实现 122 8.2.3 代码联调 125 8.2.4 通知业务系统 127 8.2.5 Server API历史消息查询 129 8.3 设备状态上报 130 8.3.1 设备状态 130 8.3.2 DeviceSDK的实现 131 8.3.3 IotHub Server 的实现 131 8.3.4 Server API:查询设备状态 134 8.3.5 代码联调 134 8.3.6 为何不用Retained Message 135 8.4 时序数据库 135 8.4.1 时序数据 136 8.4.2 时序数据库 136 8.4.3 收集设备连接状态变化的数据 137 8.5 本章小结 140 第9章?下行数据处理 141 9.1 选择一个可扩展的方案 142 9.1.1 完全基于 MQTT协议的方案 142 9.1.2 基于 EMQ X RESTful API的方案 143 9.1.3 下行数据格式 143 9.1.4 主题名规划 144 9.1.5 如何订阅主题 145 9.1.6 设备端消息去重 145 9.1.7 指令回复 146 9.2 DeviceSDK端的实现 146 9.2.1 消息去重 146 9.2.2 提取元数据 147 9.2.3 处理指令 148 9.2.4 回复指令 149 9.3 服务端的实现 150 9.3.1 更新ACL 列表 150 9.3.2 EMQ X发布功能 150 9.3.3 Server API:发送指令 151 9.3.4 服务器订阅 152 9.3.5 通知业务系统 154 9.3.6 代码联调 155 9.4 本章小结 158 第10章?IotHub的高级功能 159 10.1 RPC式调用 159 10.1.1 主题规划 160 10.1.2 等待指令回复 161 10.1.3 服务端实现 161 10.1.4 Server API: 发送RPC指令 163 10.1.5 更新设备ACL列表 164 10.1.6 更新服务器订阅列表 164 10.1.7 DeviceSDK端实现 165 10.1.8 代码联调 166 10.2 设备数据请求 167 10.2.1 更新设备ACL列表 168 10.2.2 服务端实现 168 10.2.3 DeviceSDK端实现 169 10.2.4 代码联调 170 10.3 NTP服务 171 10.3.1 IotHub 的 NTP 服务 172 10.3.2 DeviceSDK端实现 172 10.3.3 服务端实现 173 10.3.4 代码联调 174 10.4 设备分组 175 10.4.1 功能设计 175 10.4.2 服务端实现 177 10.4.3 DeviceSDK端实现180 10.4.4 代码联调 183 10.5 M2M设备间通信 185 10.5.1 主题名规划 185 10.5.2 服务端实现 186 10.5.3 DeviceSDK端实现 186 10.5.4 代码联调 187 10.6 OTA升级 188 10.6.1 功能设计 189 10.6.2 服务端实现 191 10.6.3 DeviceSDK端实现 194 10.6.4 代码联调 196 10.7 设备影子 199 10.7.1 什么是设备影子 199 10.7.2 设备影子的数据结构 200 10.7.3 设备影子的数据流向 200 10.7.4 服务端实现 202 10.7.5 DeviceSDK端实现 208 10.7.6 代码联调 209 10.8 IotHub 的状态监控 211 10.8.1 使用RESTful API 211 10.8.2 使用系统主题 212 10.8.3 EMQ X 的 Listener Zone 213 10.8.4 代码演示 214 10.9 本章小结 215 第11章?扩展EMQ X Broker 216 11.1 EMQ X的插件系统 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 数据类型 220 11.2.4 模式匹配 221 11.2.5 模块与函数 221 11.2.6 宏定义 222 11.2.7 OTP 222 11.3 搭建开发和编译环境 222 11.3.1 下载和编译 EMQ X222 11.3.2 使用插件模板 223 11.3.3 插件的代码结构 224 11.3.4 修改模板插件 226 11.4 实现基于RabbitMQ的Hook插件:emqx-rabbitmq-hook 227 11.4.1 代码结构 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 应用配置项 235 11.5 使用emqx-rabbitmq-hook 236 11.5.1 发布emqx-rabbitmq-hook插件 236 11.5.2 集成emqx-rabbitmq-hook 238 11.5.3 IotHub 的全新架构 239 11.6 本章小结 240 第12章?集成CoAP协议 241 12.1 CoAP协议简介 241 12.1.1 CoAP协议的消息模型 242 12.1.2 CoAP协议的请求/应答机制 243 12.1.3 CoAP OBSERVE 244 12.1.4 CoAP HTTP Gateway 244 12.2 集成CoAP协议 245 12.2.1 EMQ X的CoAP插件 245 12.2.2 CoAP 设备端代码 246 12.2.3 代码联调 247 12.2.4 CoAP协议的连接状态 247 12.3 本章小结 248 结语?我们学到了什么 249 附录?如何运行Maque IotHub 253 ---------------------------基于区块链的物联网项目开发--------------------------- 译者序 前言 作者简介 审稿者简介 第1章 了解物联网并在IBM Watson物联网平台上开发 1 1.1 什么是物联网 2 1.2 物联网通用案例 3 1.2.1 车互联 3 1.2.2 人互联 3 1.3 物联网技术要素 4 1.3.1 设备 4 1.3.2 边缘计算 5 1.3.3 网络 6 1.3.4 应用程序协议 11 1.3.5 分析与人工智能 12 1.4 IBM Watson物联网平台特性 12 1.4.1 仪表盘 13 1.4.2 设备、网关和应用 14 1.4.3 安全性 14 1.5 创建你的第一个物联网解决方案 14 1.5.1 创建网关 16 1.5.2 创建应用 17 1.5.3 创建设备 20 1.6 小结 24 1.7 补充阅读 24 第2章 创建物联网解决方案 25 2.1 技术要求 26 2.2 园艺解决方案 26 2.2.1 需求概述 26 2.2.2 解决方案概览 27 2.2.3 设备选择 27 2.2.4 设备布线 32 2.3 对设备固件进行编码 33 2.3.1 测量土壤湿度 34 2.3.2 检测环境温度 36 2.3.3 打开继电器 37 2.3.4 发布事件 38 2.3.5 监测事件 39 2.3.6 订阅行动 43 2.4 创建后端应用 45 2.4.1 在IBM Cloud平台上创建Cloud Foundry应用程序 45 2.4.2 上传代码 47 2.5 小结 50 2.6 补充阅读 51 第3章 区块链技术概述及使用超级账本 53 3.1 区块链是什么 54 3.2 区块链和超级账本 56 3.2.1 Hyperledger项目 57 3.2.2 Hyperledger Fabric 59 3.3 选择一个经典应用案例 64 3.4 小结 66 3.5 问答 67 3.6 补充阅读 67 第4章 创建自己的区块链网络 69 4.1 先决条件 70 4.2 使用Hyperledger Composer创建自己的区块链网络 70 4.2.1 获取Hyperledger Composer 70 4.2.2 探讨一个区块链网络案例的结构 72 4.3 使用Hyperledger Fabric和Composer安装区块链网络 83 4.3.1 设置Docker 83 4.3.2 安装Hyperledger Composer 84 4.3.3 使用Docker安装HyperledgerFabric 1.3 87 4.3.4 在Kubernetes环境中部署Hyperledger Fabric 1.3 88 4.4 小结 88 4.5 补充阅读 89 第5章 运用区块链解决食品安全问题 91 5.1 现代食品链中的规则、挑战和问题 91 5.1.1 来自食品安全的挑战 92 5.1.2 食品安全管理体系:ISO 22000 92 5.2 区块链和物联网如何在食品链中发挥作用 93 5.2.1 食品生态系统 94 5.2.2 食品生态系统中的机遇与挑战 95 5.2.3 食品链是物联网和区块链技术应用的经典案例吗 102 5.3 小结 103 5.4 补充阅读 104 第6章 设计解决方案架构 105 6.1 食品产业 105 6.1.1 食品生态系统的挑战 106 6.1.2 食品加工环节 107 6.1.3 食品配送环节 108 6.1.4 食品零售环节 110 6.2 技术方案 111 6.2.1 前端应用 112 6.2.2 基于物联网的资产跟踪技术 113 6.2.3 API/SDK 115 6.2.4 Hyperledger Composer—高级概述 116 6.3 软件组件 117 6.3.1 Composer REST服务器 117 6.3.2 Hyperledger Composer模型 121 6.3.3 Hyperledger Composer访问控制语言 123 6.3.4 Hyperledger Composer交易处理函数 124 6.4 小结 125 6.5 问答 126 6.6 补充阅读 127 第7章 创建自己的区块链和物联网解决方案 129 7.1 技术要求 130 7.2 解决方案概览 130 7.3 创建区块链网络 131 7.3.1 概念和枚举 132 7.3.2 资产定义 133 7.3.3 参与者 134 7.3.4 为Hyperledger部署和测试业务网络 134 7.3.5 通过区块链中的交易操控资产 137 7.3.6 创建并导出参与者业务卡片 139 7.3.7 定义访问控制列表 141 7.3.8 升级业务网络 144 7.3.9 为每个参与者设置Composer REST服务器 146 7.4 创建解决方案的物联网部分 147 7.4.1 硬件设置 147 7.4.2 固件开发 149 7.4.3 应用开发 150 7.5 端到端测试 153 7.5.1 创建食品盒 154 7.5.2 将资产移交给运输者 155 7.5.3 运输时测量温度 156 7.5.4 将资产转移到仓库 156 7.5.5 创建一个搬运托盘并添加食品盒 157 7.5.6 运输搬运托盘时测量温度 158 7.5.7 跟踪食品盒 158 7.6 小结 160 第8章 物联网、区块链和工业4.0 161 8.1 工业4.0 162 8.2 作为创新平台的云计算 162 8.2.1 云计算模型 162 8.2.2 云计算对于工业4.0的重要性 164 8.3 物联网 165 8.4 区块链—简化业务链 165 8.5 小结 167 第9章 开发区块链和物联网解决方案的最佳实践 169 9.1 开发云应用 170 9.1.1 参考架构 171 9.1.2 使用12因子应用模型进行开发 172 9.1.3 无服务器计算 173 9.2 使用Hyperledger Composer进行区块链开发 174 9.2.1 Hyperledger Composer工具包 174 9.2.2 Hyperledger ComposerREST服务器 174 9.3 小结 176 9.4 补充阅读 176 |