Zigbee何时成为主流

一个月以前和德国同事开会的时候,我提起是不是应该考虑一下物联网IoT时代通讯协议的事情,然后就自然而然的谈起了Zigbee。比较意外的反应有两个,一个是大多数人的茫然,完全不知道我在说什么。只有一个同事低头笑了一下,苦笑着说一句:都二十年了,这个该死的协议还活着啊?

第一拨同事的表现其实在我的预想中,因为Zigbee基本上是一种工业领域碰不到的东西。开玩笑说:我们给产品命名从来都是用凶猛的动物,比如老鹰,老虎。再怎么着也不会用这么偏门的蜜蜂名字。其实来Zigbee的目标市场从来都是家住商用领域(也不能完全这么说,北京4号线延长段已采用Zigbee),和工业真是没有多少交际。

而那个同事所说的话让我思考了半天。

Zigbee协议是1990年就提出了,2004年成为IEEE 802.15.4-2003标准。算起来真是不算很短的历史了。可是,为什么这个如此被人推崇的协议,却有如此被人“唾弃”呢?

Zigbee
目标无所不包的Zigbee标准,实际中却不惹人爱

这里进行一个情景分析:如果我自己用Arduino做一个项目,我会采用什么样的协议来做模块间的通讯呢?

  • NRF24L01 2.4G 无线模块,淘宝价格10块,Arduino有现成的库
  • W5100 以太网扩展+SD扩展+Web服务, 30块
  • ESP8266 WiFi模块,15块
  • 蓝牙模块,20块,直接使用串口读写,可以和手机连接
  • XBee模块,50块,需要master+router方式将通讯转入以太网

考虑到10个节点规模的一个室内环境监测和安防物联网,如果采用XBee这个Zigbee的方案,光是通讯就比所有其他的主要器件加起来还要昂贵了。为什么主打家居市场的Zigbee如此昂贵呢,我们看到了目前主流支持Zigbee的芯片SOC供应商只有那么几个,和蓝牙,以太网控制器SOC的供应商相比简直惨不忍睹。

mesh networking
Zigbee的自组网能力是蓝牙和Wi-Fi缺乏的,但其节点类型的要求却成为设计者的难题。

开放上呢,Zigbee是不是有什么巨大的优势,可以减轻MCU侧的开发量呢?就Arduino来说,其他的协议有着非常直白清晰的开发接口——直接将这个通讯接口当作串口来读写即可,其他的收发验证,重发都无需处理。而Zigbee的难度简直就要上升到操作系统的级别。对于我提到这这个case,末端模块的工作只是每五分钟读取一下温度,湿度传送上来这样的工作,在Zigbee本身上开发的时间远远超过核心任务本身。

这样头重脚轻的样子,看来Zigbee就变成了一种不是很讨好的标准。而事实上的情况也说明了这一切。随着蓝牙4.0的推出,低功耗的优势在慢慢的退却,只有自组网这个特点还能让人有所期待。

能下的断言就是:Zigbee,你还没有为迎接IoT的到来下定决心。

比较Wi-Fi,蓝牙协议这些年的改进真是可以说日新月异。几乎每一两年就有新的标准推出,不但修正了以前的问题,还从对手那里学习到了很多新的特点。经过这几年Wi-Fi和蓝牙的不断竞争,两个协议都没有死,而且都更加健壮了。例如蓝牙不断突出自己节能的特点,而Wi-Fi也是步步紧逼,最近瑞芯发布的RKi6000就直接将功耗瞄准蓝牙4.0 LE。反观Zigbee几十年走下来,却基本上还是老样子,出生时候的毛病还都在,直到2007年才推出了PRO版本的增长型升级。

更加重要的就是作为一个协议,你需要的是参与者。恨你的人不是敌人,沉默才是你的敌人。时下做产品的,都希望有一个活跃的社区,大量的会员,众多的厂商来参与。其方法就是尽量采用更加开放的姿态,积极的鼓励这些参与者为这个协议添砖加瓦,最终营造一个摩天大厦。开放的TCP/IP 从娘胎里面就是抱着这个姿态出来的,这也是为什么基本上是全面压倒性的获得了市场地位。蓝牙在最早的时候还是很封闭的,直到被Wi-Fi的大量同类功能震撼到,感到了危机感马上也改变了策略。而Zigbee我只能说还在自己的黄粱美梦中,忘记了世界正在改变,这还真是像极了很多工业产品的特征。缺少参与者和贡献者的Zigbee变得越来越曲高和寡,开发平台和成本都成为了短板。

一个案例就是关于GPL兼容的问题。Zigbee的license和GPL等很多开源协议有冲突,这个问题经过协会的board讨论后,结论是Zigbee没有做出任何妥协。我猜测原因就是会员费基本是这个标准最大的收入来源,所以不能妥协。所以冲突的那条就是:商业用途的Zigbee软件是要收会员费的(每年3500刀)。不知道这个会员费是按什么计算到了,如果Linux集成了这个协议栈进去,到底会收谁的钱?就这样通向物联网的大门几乎可以说是Zigbee自己关闭的。最近 Google Brillo华为LiteOS还有更多的厂家纷纷推出了针对物联网的操作系统,大部分还是基于Linux和其他开源平台的,可以说封闭起来的Zigbee慢慢的缩小了自己通往成功的道路。

前有堵截,后又追兵,Z-Wave的兴起为嵌入式设备带来了一阵新风。单元这两个Z开头的标准能够在即将开始的厮杀中渐渐真正成长起来,为我们带来稳定、低价、方便的物联网通讯新标准。

怎么批量修改Outlook联系人?

我的8900在和Gmail地址簿用Google sync同步后就没有正确显示过。也不知道为什么Google的地址簿总是把姓名显示倒过来,甚至连姓名都不分开存储。于是放弃了,还是转投outlook方案了。

不过windows7不知道为什么,把所有地址都自己保存了,放在”user/contacts”目录下面。于是同步来同步去,就乱套了。

  • 所有联系人全都重复显示:姓 名,名 姓,各单独一条
  • 自动为所有人添加一个头像,还无辜删除了很多人的头像
  • 为一些没有姓名的联系人(比如叫车电话,订票电话)创造了姓名,而且多条存储

看看手机上多了几百条电话信息,只好自己手工恢复了。

  • 首先在备份了你的手机后,在blackberry desktop manager上设置同步方式为与outlook同步。
  • 保证你的outlook联系人是空白的,这样最好一些。
  • 把手机联系人全部同步到outlook联系人上
  • 按照电话列表方式显示,并显示姓和名列,然后按照姓氏排列,找到那些奇怪的姓氏(两个字的,或者单字名字)删除这些记录
  • 手工删除其他多余的条目
  • 除了你自己要保留的那些,挨个删除所有人的头像
  • 做完一切后,再次和blackberry同步。

在列表中操作的话,前几个工作还算是顺利,不过最后一条,在网上搜了一圈竟然没有批量删除头像的方法。我只能采用最愚蠢的方法了。

在电话列表中,按照附件排列联系人(就是那个小别针的图标)。然后挨个打开在头像上右键,点击删除头像菜单,保存关闭。有鉴于这个动作要进行几百回,一些工具还是必要的:AHK,使用录制工具记录你一次操作,生成代码框架,稍加修改后就可以自动执行了。代码如下(只能适用于我自己的机器):

#n::
SetTitleMatchMode RegEx
loop
{
	WinWait, .*- 联系人  , ,3

	if ErrorLevel
	{
		MsgBox, WinWait timed out.
		return
	}
	else
	{
		IfWinNotActive, .*- 联系人  , , WinActivate, .*- 联系人  ,
		WinWaitActive, .*- 联系人  ,
		MouseClick, left,  460,  14
		Sleep, 100
		MouseClick, right,  646,  248
		Sleep, 100
		MouseClick, left,  687,  288
		Sleep, 100
		MouseClick, left,  420,  307
		Sleep, 150
		MouseClick, left,  40,  112
		Sleep, 100
	}
}

我这个脚本中采用了正则表达式方式来寻找窗口,然后按Win+n快捷键执行。由于不能一次打开太多的联系人卡片(否则会死机),每次打开几十个,然后按一下快捷键即可。

不过问题依然存在,保存在自己电脑上,到底还是有些担心的。除了google contacts 之外,还有什么比较靠谱的联系人在线同步工具呢?

协作,例如 Google Wave

寻找了很多可以用于企业内部协作的网络工具。必须采用Web的方式,是由于原来的邮件通信方式实在是有点杂乱无章,收发邮件的选在太过于随意,邮件打印出来好几米长,没有终点和格式,关键人死活不知道,CC的人也弄不懂邮箱里面的信件是不是和自己真的有关系。没有标签,没有归档能力。几年后,邮箱里面有十几个G的邮件,查找起来简直就是灾难一场。

想要把Wave用在企业应用中

公司内缺少协作工具,目前想到的有如下一些:

  • Wiki太麻烦,实时性太差,交互功能太弱。
  • SharePoint,实时性也是太差。而且维护太麻烦,还需要专门安排一个人干这个。(但目前貌似是最佳选择)
  • Jive、MindTouch等国外企业应用,在国内定制和维护支持的力量实在是太差。不敢买,害怕以后没人支持。

目前想到需要的功能:

  • 实时消息工具
  • Wiki方式的文章编辑
  • 数据、图表的显示,并可用于PPT中(企业中,Excel和PPT可是必须的)
  • 支持Word、Excle等数据的导入(公司中大量的数据是用Excel保存的,也方便一般人员在不能访问系统的时候,按照模板填写)
  • 邮件支持(订阅、通知等行为的支持)

今天说Wave,是因为这个工具的出发点是为了替代邮件的。现在还处于内部测试状态,

通过插件,可以将Wave嵌入到Wordpress中。不过,没有Wave帐号的人无法看到下面嵌入的内容。

[wave id=”2B94x3VaUvD”]