《物联网实战指南》从探讨流行的HTTP、UPnP、CoAP、MQTT和XMPP等物联网协议开始,并从实战角度介绍了现有的协议、通信模式、构架以及物联网安全的重要性。本书适合那些对物联网感兴趣的开发者和工程师阅读。那些对电子学、树莓派(RaspberryPi)或者卡片电脑有基本的了解(高中水平)以及有一些代码托管的编程经验的人,通过本书将会很快学到当前的物联网解决方案。
目录
- 作者简介
- 技术审阅者简介
- 序言
- 第1章物联网项目准备
- 1.1创建传感器项目
- 1.1.1准备RaspberryPi
- 1.1.2Clayster库
- 1.1.3硬件
- 1.1.4与硬件交互
- 1.1.5硬件接口
- 1.1.6传感器值内部显示
- 1.1.7持久化数据
- 1.1.8传感器值的外部显示
- 1.1.9导出传感器数据
- 1.2创建执行器
- 1.2.1硬件
- 1.2.2硬件接口
- 1.3创建控制器
- 1.3.1表示传感器值
- 1.3.2解析传感器数据
- 1.3.3计算控制状态
- 1.4创建摄像头
- 1.4.1硬件
- 1.4.2在RaspberryPi上访问串口
- 1.4.3硬件接口
- 1_4.4创建持久的默认设置
- 1.4.5添加可配置的属性
- 1.4.6持久化设备
- 1.4.7在当前设置下工作
- 1.4.8初始化摄像头
- 1.5总结
- 第2章HTTP
- 2.1HTTP基础
- 2.2让HTTP支持传感器
- 2.2.1搭建基于传感器的HTTP服务器
- 2.2.2在传感器上安装HITPS服务器
- 2.2.3添加根菜单
- 2.2.4在HTML页面显示测量信息
- 2.2.5动态生成图形
- 2.2.6创建传感器数据资源
- 2.2.7解释读出请求
- 2.2.8测试数据导出
- 2.2.9用户认证
- 2.2.10为增强网络性能添加事件
- 2.3添加HTTP支持的执行器
- 2.3.1创建Web服务资源
- 2.3.2访问单个输出
- 2.3.3获取全部输出
- 2.3.4访问报警输出
- 2.3.5使用测试形式
- 2.3.6访问WSDL
- 2.3.7使用RESTWeb服务接口
- 2.4为控制器添加HTTP支持
- 2.4.1订阅事件
- 2.4.2创建控制线程
- 2.4.3控制执行器
- 2.5总结
- 第3章UPnP协议
- 3.1UPnP介绍
- 3.1.1提供服务体系结构
- 3.1.2设备和服务能力的文档化
- 3.2创建设备描述文档
- 3.2.1选择设备类型
- 3.2.2更加友好
- 3.2.3给设备提供标识符
- 3.2.4添加图标
- 3.2.5为服务添加索引
- 3.2.6提供一个用于顶层网页展示的URL
- 3.3创建服务描述文档
- 3.3.1添加操作
- 3.3.2添加状态变量
- 3.3.3添加WEIYI设备名
- 3.4提供一个Web接口
- 3.5创建UPnP接口
- 3.5.1注册UPnP资源
- 3.5.2替换占位符
- 3.5.3添加SSDP支持
- 3.5.4通知网络
- 3.5.5响应搜索
- 3.6实现静止图像服务
- 3.6.1初始化事件触发状态量
- 3.6.2提供Web服务属性
- 3.6.3添加服务属性
- 3.6.4添加动作
- 3.7使用摄像头
- 3.7.1设置UPnP
- 3.7.2发现设备和服务
- 3.7.3订阅事件
- 3.7.4接收事件
- 3.7.5执行动作
- 3.8总结
- 第4章CoAP
- 4.1生成HTTP二进制文件
- 4.1.1寻找开发工具
- 4.2为传感器添加CoAP
- 4.2.1定义第一个CoAP资源
- 4.2.2手动触发事件通知
- 4.2.3注册数据输出资源
- 4.2.4返回XML
- 4.2.5返回JSON
- 4.2.6返回纯文本
- 4.2.7发现CoAP资源
- 4.2.8测试CoAP资源
- 4.3为执行器添加CoAP
- 4.3.1定义简单控制资源
- 4.3.2在CoAP中解析URL
- 4.3.3使用CoAP控制输出
- 4.4在控制器中使用CoAP
- 4.4.1监测观测到的资源
- 4.4.2接收通知
- 4.4.3执行控制操作
- 4.5总结
- 第5章MQTT协议
- 5.1发布和订阅
- 5.2给传感器添加MQTT支持
- 5.2.1控制线程的生命周期
- 5.2.2标记重要事件
- 5.2.3连接到MQTT服务器
- 5.2.4发布内容
- 5.3给执行器添加MQTT支持
- 5.3.1初始化主题内容
- 5.3.2订阅主题
- 5.3.3接收发布内容
- 5.3.4解码和解析内容
- 5.4给控制器添加MQIT支持
- 5.4.1处理传感器发来的事件
- 5.4.2解码和解析传感器值
- 5.4.3订阅传感器事件
- 5.4.4控制执行器
- 5.5总结
- 第6章XMPP
- 6.1XMPP基础知识
- 6.1.1联合全局的可扩展性
- 6.1.2提供全局的身份标识
- 6.1.3授权通信
- 6.1.4在线存在的感知
- 6.1.5使用XML通信
- 6.1.6通信模式
- 6.1.7扩展XMPP
- 6.1.8连接到服务器
- 6.1.9附加安全的配置
- 6.2为对象添加XMPP支持
- 6.2.1连接到XMPP网络
- 6.2.2监控连接状态事件
- 6.2.3通知你的朋友
- 6.2.4在XMPP之外处理HTTP请求
- 6.3提供额外的安全层
- 6.3.1配置的基础知识
- 6.3.2初始化对象注册接口
- 6.3.3注册对象
- 6.3.4更新公开对象
- 6.3.5声名对象
- 6.3.6从注册表中移除对象
- 6.3.7否认对象
- 6.3.8初始化配置服务器接口
- 6.3.9处理友好的推荐
- 6.3.10处理请求删除不友好的人
- 6.3.11搜索配置服务器
- 6.3.12提供注册信息
- 6.3.13保持连接
- 6.3.14友好关系协商
- 6.3.15处理存在的订阅请求
- 6.3.16持续的中断协商
- 6.3.17为传感器添加XMPP支持
- 6.3.18添加传感器的服务接口
- 6.3.19更新事件订阅
- 6.3.20发布合约
- 6.4为执行器添加XMPP支持
- 6.4.1添加控制器服务接口
- 6.5为摄像头添加XMPP支持
- 6.6为控制器添加XMPP支持
- 6.6.1设置传感器客户端接口
- 6.6.2设置控制器客户端接口
- 6.6.3设置摄像头客户端接口
- 6.6.4通过XMPP获取摄像头图像
- 6.6.5识别同等功能
- 6.6.6对同类表示应答
- 6.6.7检测规则的变化
- 6.7串联全部
- 6.8总结
- 第7章使用物联网服务平台
- 7.1选择物联网平台
- 7.1.1Clayster平台
- 7.1.2下载Clayster平台
- 7.1.3创建一个服务项目
- 7.1.4添加引用
- 7.1.5制作Clayster模块
- 7.1.6执行服务
- 7.1.7使用包清单
- 7.1.8从VisualStudio执行
- 7.1.9配置Clayster系统
- 7.1.10使用管理工具
- 7.1.11浏览数据源
- 7.2使用XMPP接入我们的设备
- 7.2.1为我们的传感器创建类
- 7.2.2找到最好的类
- 7.2.3订阅传感器数据
- 7.2.4解读传入的传感器数据
- 7.2.5为我们的执行器创建一个类
- 7.2.6自定义控制操作
- 7.2.7为我们的摄像头创建类
- 7.3创建我们的控制应用
- 7.3.1理解渲染
- 7.3.2定义应用程序类
- 7.3.3初始化控制器
- 7.3.4添加控制规则
- 7.3.5理解应用索引
- 7.3.6定义brieflet
- 7.3.7显示计量表
- 7.3.8显示二进制信号
- 7.3.9推送更新到客户端
- 7.3.10完成应用
- 7.3.11配置应用
- 7.3.12查看lOft界面应用
- 7.4总结
- 第8章创建协议网关
- 8.1理解协议桥接
- 8.2使用抽象模型
- 8.3Clayster抽象模型基础知识
- 8.3.1理解可编辑数据源
- 8.3.2理解可编辑对象
- 8.3.3使用通用数据源
- 8.3.4覆盖关键属性和方法
- 8.3.5处理设备间通信
- 8.4理解CoAP网关架构
- 8.5总结
- 第9章安全和互操作性
- 9.1理解风险
- 9.1.1重新发明一个轮子,但是是颠倒的
- 9.1.2了解你的邻居
- 9.2攻击模式
- 9.2.1拒绝服务
- 9.2.2猜测凭据
- 9.2.3访问存储凭据
- 9.2.4中间人
- 9.2.5嗅探网络通信
- 9.2.6端口扫描和网络爬行
- 9.2.7搜索功能和通配符
- 9.2.8密码破解
- 9.3实现安全的工具
- 9.3.1虚拟专用网络
- 9.3.2X.509证书和加密
- 9.3.3身份授权
- 9.3.4用户名和密码
- 9.3.5使用消息中间人和配置服务器
- 9.3.6集中与分散
- 9.4互操作性的需要
- 9.4.1解决复杂性
- 9.4.2降低成本
- 9.4.3允许各种新的服务和重复使用设备
- 9.4.4结合安全和互操作性
- 9.5总结