智能家居通讯协议一、前言随着手机智能化的提高,基于手机的APP越来越多。
我一直在思考,如果有一款应用能让我控制我家里的所有电器设备,而且能根据家里的电器布局自定义控制界面,该有多好啊。
我这么思考是有理由的,家里遥控器一大堆,说明书一大堆,要经常换电池,经常找遥控器,说明书倒是难得找,但要找时往往是找不到的。
当然大的互联网公司正在联合大的家电厂家推出智能云家居计划,但我发现大家各自为政,并没有行成一个联盟首先制定一个统一的协议标准。
也许有人会问,外国人不是制定了吗?但我觉得我们是有能力做这件事的,就看大家愿不愿意做了。
智能手机的核心是外国人的,难道智能家居的核心协议也要是外国人的。
国产空调,国产洗衣机,国产照明,国产电视机,国产电饭锅等在世界上已经占据了很多的市场份额,我想在智能家居这一块,我们如果不能做到引领世界,但也不能让外国人先入为主。
二、网络七层协议OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。
OSI模型有7层结构,每层都可以有几个子层。
OSI的7层从上到下分别是7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层其中高层,即7、6、5、4层定义了应用程序的功能,下面3层,即3、2、1层主要面向通过网络的端到端的数据流。
三、物理层物理层包括有线(网线)、WIFI、电力猫。
这三种我觉得各有利弊。
有线我个人认为是最可靠的,但前提是你是新装修房子或着是舍得花大代价重新装修房子,对于像移动家电就不太实用,你得买一个至少24口的交换机。
WIFI比较方便,移动性比较强,但就目前我没买到过在每个房间都有三格信号的无线路由器,当然我不舍得花钱。
电力猫可以利用现有电源线,这是一个不错的选择。
因此我觉得物理层可以是这三种互相弥补。
采用有线和电力猫时,用户无需配置,家电设为默认DHCP。
采用WIFI时,该家电WIFI需支持热点模式和客户端模式,初始状态为热点模式,用户登录后可配置成客户端模式并设置所连接的热点。
四、数据链路层、网络层这两层硬件已经实现了,这里就不讨论了。
五、传输层TCP,UDP属于这一层。
UDP不是面向连接的协议,会丢包,用在控制不合适,因此首选TCP。
六、会话层HTTP协议是这一层比较核心和重要的协议,与大家的互联网生活息息相关。
而xml协议则是走在http大道上的宝马。
Xml可以是报文的重要组成格式,xml还用于作为界面的描述,Android、QT等都用它来描述界面。
因此这一层理所当然要选择http+xml。
Xml可以用来描述界面,遥控器可以由硬的变成软的,甚至变成自己喜欢的风格,展示在你的手机上,当然风格可以变,LOGO最好还是用厂商的,不然光自己喜欢了,厂家会有意见的,你忘记了它的品牌,这就是你的过失。
接下来描述一下http+xml的报文格式,http头和xml头请参考相关文档。
1、获取能力集请求:http://192.168.1.x/cgi-home/getcapability正确回应:<capabilitys><capability>BUTTON</capability><capability>STATIC</capability></capabilitys>便于协议的扩展,先支持按钮和静态显示面板功能。
2、请求遥控请求:http://192.168.1.x/cgi-home/login?username=xxx,password=xxx(MD5加密)正确回应:ok3、退出遥控请求:http://192.168.1.x/cgi-home/loginout正确回应:ok4、获取厂商logo获取图片的功能http自带,需要定义的是该图片的位置,暂定/home/factorylog.jpg 5、获取厂商遥控面板图片获取图片的功能http自带,需要定义的是该图片的位置,暂定/ home/controlpanel.jpg 6、获取遥控面板描述请求:http://192.168.1.x/cgi-home/getpaneldescribe正确回应:<controlpanel><buttons><button><ID>1</ID><name>+</name><area> //对应按钮在厂商遥控面板图片的位置,以像素为单位<left></left><top></top><right></right><bottom></bottom></area><ctrlcode> //控制码123</ctrlcode></button>…<buttons><static> //显示区域<ID>1</ID><name>温度</name><area> //对应按钮在厂商遥控面板图片的位置,以像素为单位<left></left><top></top><right></right><bottom></bottom></area><unit>度</unit></static>…</statics><ID>N</ID>…</button></buttons></controlpanel>7、发送控制码请求:http://192.168.1.x/cgi-home/sendctrlcode?ID=1,ctrlcode=123正确回应:ok8、获取显示数据请求:http://192.168.1.x/cgi-home/getshowdata正确回应:<static> //显示区域<ID>1</ID><value>23</value></static>…</statics>9、说明书页面http://192.168.1.x/home/ instructions.xml简单服务发现协议(SSDP,Simple Service Discovery Protocol)是一种应用层协议,是构成通用即插即用(UPnP)技术的核心协议之一。
家电的搜索采用该协议。
协议的具体的实现可以查找相关资源。
为了区别网络上的其它(UPNP)应用,我们这里做如下限定,家电工作在多播地址239.255.255.250和UDP端口号1901上侦听,等待APP的发现请求。
我这里主要强调的是ssdp:alive响应中content 的xml定义:<property><factory>某某公司</factory><type>空调</type><model>型号</model><SSID>设备标识,为了避免标识的冲突,该标识可设</SSID><IP>192.168.1.x</IP></property>摄像头的应用也可以归纳到智能家居的范围内。
音视频的传输可以采用成熟的RTSP协议和RTP OVER HTTP协议,而视频的编解码协议可以采用H.264。
对于这些协议这里不做过多描述。
但不得不提我国的宽带现状,光纤入户,嘘头很足,但真真的网速大家心知肚明,其实我的要求也不是很高,啥时上传的带宽能达到4M,或许才能勉强说好。
4M才能传输2路高清实时视频而已。
七、应用层、表示层各家电厂商可以基于标准协议设计出智能家电,智能手机软件可以基于标准协议开发出各具特色的APP控制家电,互联网公司可以基于标准协议开发盒子进行远程控制。
应用举例:1、取代传统的遥控器,一个手机在家里可以控制所有的智能家电;当然还可以实现一些遥控器不支持的功能。
2、大家都曾住过宾馆,如果宾馆里的智能房间让你可以用手机控制所有的灯,空调,电视,不知道会不会让你在外的孤独感少几分呢。
3、大热天在外,如果在回家前的几分钟可以通过手机把空调打开,回到家后,你会不会更爽呢。
4、孩子做作业的时间,你正好在外,如果能看到书房里的高清视频,你就可以远程监督孩子学习,甚至还能看看孩子的题做的对不对。
八、总结国人擅长打价格战,真正的好的东西很少。
标准很多,但衡量标准的工具很少。
就智能家居而言,当标准协议制定后,信息产业部可以公布一个标准的检测APP,当我们去超市选购家电时,我们可以用这个APP去验证这个家电协议是否合格。
要得富,先修路,啥时咱的网络之路能超过发达国家。
本文纯粹有感而发,如有雷同,纯属巧合。
王冬林2015.4.2QQ: 214201590。