这两年IOT概念一片红火,apple的homekit, google收购Nest, 下半年要发布os brillo, weave编程语言, 三星的the smart things, 还有各种框架平台组织alljoyn, iotivity, iot of eclipse等等(http://postscapes.com 一个追踪IOT行业情况,在http://postscapes.com/internet-of-things-award/winners/ 组织的一个每年投票 IOT awards,可以了解下里面当前IOT开源发展状况), 国内的家电厂商,以及云平台公司也在试图建立自己的IOT标准,平台,
鹅厂的qq物联平台, 阿里物联平台等等。我近段时间工作也涉及物联网方面,目前在原型阶段, 把当前开源的IOT平台openhab拿来对比,总结下自己可以借用改进哈.
直接从 http://www.openhab.org/features.html copy过来 openhab的介绍
More and more new cool devices and technologies arrive at our homes every day. But though they are all aimed at enhancing our lifestyle they all lack one important feature:
a common language
they could speak to each other to create a really automated and smart environment at home. The main goal of openHAB is to provide an integration platform to fix this issue。
What is openHAB?
openHAB is a software for integrating different home automation systems and technologies into one single solution that allows over-arching automation rules and that offers uniform user interfaces.
This means openHAB
- is designed to be absolutely vendor-neutral as well as hardware/protocol-agnostic
- can run on any device that is capable of running a JVM (Linux, Mac, Windows)(这个平台都是用java写的,需要跑个jvm,对于资源有限的承载硬件是负担)
- lets you integrate an abundance of different home automation technologies into one
- has a powerful rule engine to fulfill all your automation needs
- comes with different web-based UIs as well as native UIs for iOS and Android
- is fully open source
- is maintained by a passionate and growing community
- is easily extensible to integrate with new systems and devices
- provides APIs for being integrated in other systems
Considering the user perspective also means caring for
data privacy. With openHAB, all data (like sensor data or actuator commands) belongs to the user and it is up to him to decide, what data should potentially leave his house and where it is sent. Furthermore, there is no remote access possible, if it is not desired - everything works nicely within the intranet and does not even require an Internet connection. We therefore also like to call it the "
Intranet of Things".
It therefore assumes that the
sub-systems are setup and configured independently of openHAB as this is often a very specific and complex matter (including "pairing" processes, direct device links etc.). Instead, openHAB focuses on the "
daily use" side of things and abstracts from the devices themselves
A very important aspect of openHAB's architecture is its
modular design. It is very easy to add new features (like the integration with yet another system through a "binding") and you can
add and remove such features at runtime. This modular approach has been a huge enabler for the active community around openHAB with many engaged contributors.
The openHAB project is split into two parts:
openhab runtime , which you will actually run on your server and which does the "real" work and
openhab designer which is more or less a configuration tool for the openhab runtime. It comes with user-friendly editors to configure your runtime, to define your UIs and to implement your rules
The openHAB runtime is a set of OSGi bundles deployed on an OSGi framework (Equinox)
Every technology or device, social network or cloud platform integrated into openHAB is supported by a specific bundle. Those bundles are optional and pluggable, they can be added to your openHAB as soon as you need them.
Bindings provide integration with different home automation technologies and devices while there are quite a lot of other bundles providing integration and communication with social networks, instant messaging, cloud IoT platfroms and much more
openhab不仅仅能接入设备,它还能连接社交网络,IM,云平台,参考 http://www.openhab.org/features-tech.html
像 Dropbox, Asterisk, Nest, Twitter, SNMP等等,云平台,设备,协议都可以作为bundle添加到openhab.
openhab可以作为家庭智能网关中心, 通过它来操控家庭智能设备,各种交互。
从 http://www.openhab.org/gettingstarted.html 可以使用demo来实际体验下openhab, 部署简单。
参考 https://github.com/openhab/openhab/wiki/Hue-Binding,把hue灯接入,玩了一下, 感觉目前openhab是一个geek玩的,接入一个新的东西,流程需要编辑item, sitemap, 即需要手工设置设备实例信息。
设备信息包括两部分:1.设备的meta信息,2.设备的实例信息。
eg: hue, 它有 on/off, bri, color等meta属性,而实例信息包括:家庭中有几个hub, 每个hub又有多少bulb, 它们叫什么名字等等。
openhab把meta属性包含在了jar包内,而实例信息只能手工填写。
myopenhab( https://my.openhab.org)可以做远程控制管理家庭设备,以及存储用户产生的数据(参考 https://my.openhab.org/docs/persistence)。
好的应用场景是这样:
有一个服务器平台openhab-cloud, 它与每个家庭的openhab连接。
开发者添加新设备类型支持,提交bundle到cloud.
当用户有相应的设备,或感兴趣的应用添加到家庭智能网关,可通过web,或客户端方式搜索查询是否支持,注册(包括实例信息?), openhab-cloud就会推送相应的addon到openhab部署,包括item, sitemap自动更新, 当然还有像myopenhab那样可以存储用户的数据,做展示和分析。