本文从宏观上介绍IoT的通信架构,让大家都日渐频繁的物联网设备工作原理有一个初步的理解,主要分为了直连、网关、云三种模式。
1. 直连模式(direct integration pattern)
通常我们使用的小米手环等物联网设备,和手机就是直连模式,但其使用的是蓝牙,并不能提供通用的接口来访问;解决这一问题的方法是使用已经成熟多年的Web技术,所以也有人提出了Web of Things的概念。
如果设备支持HTTP和TCP/IP,并且能够直接连接互联网,比如使用Wi-Fi,那么可以使用这种直连模式。通常设备需要较为强大的处理能力,并且有持续的电源,比如智能家居等。要通过Web直接控制设备,其自身需要实现类似下图的功能,从硬件控制、RESTFUL API的设计到HTTP服务器的实现。
2. 网关模式 (gateway integration pattern)
如果设备的资源受限,或者不能直接接入互联网(比如仅仅支持蓝牙、ZigBee),它们可以通过接入功能强大的网关(gateway)来实现通过Web访问;网关将其他类型的协议转换成统一的对外接口(如将设备的CoAP转换为HTTP提供给用户),同时还可以提供安全认证、集成、临时数据存储、对设备的语义描述等功能。开源的网关项目有Open Hab [2],此外很多大厂商也有自己的网关来支持自己的设备。
3. 云模式 (cloud integration pattern)
云模式可以看做网关模式的扩展,只不过网关在云端,提供协议的转换、数据处理等云服务,最大的特点在于可以通过外网访问各种设备。目前已经出现了各种提供物联网云服务的平台,如AWS、阿里、微软等巨头,还有专门的平台如Xively、机智云等,百家争鸣,但是他们大都采用类似下图的结构,通过MQTT协议来管理各种设备,云端有虚拟设备来保存设备状态,存储管理设备产生的数据,使用秘密的API KEY通过REST API来发送管理指令等。
4.总结
通过云的模式往往使指令传输很慢,所以一个物联网设备可能同时允许上述几种操作模式。使用Web来控制设备,还可以轻松的使用IFTTT这样的第三方自动化平台,来设计条件自动化的执行一些功能,并于常用App如Twitter互动。最后,盗几张书中对协议介绍的图,来方便理解物联网中涉及的各种协议,如蓝牙、MQTT、ZigBee、Apple Homekit等。
附录:
[1] Building the Web of Things: With examples in Node.js and Raspberry Pi
https://www.manning.com/books/building-the-web-of-things?a_bid=16f48f14&a_aid=wot
[2] http://www.openhab.org/
[3].国外各种平台汇总,有上百种
https://www.postscapes.com/internet-of-things-platforms/
[4] 一部分平台的稍微详细的总结介绍
http://www.cnblogs.com/ibrahim/p/iot-platform-outline.html
[5] 很多IoT的开源项目,其中AllJoyn提供了联通框架,或许值得额外关注
https://www.linux.com/news/21-open-source-projects-IoT
[6] http://www.cnblogs.com/ibrahim/p/iot-platform-outline.html