说明:此文于2013年6月份发表在其他论坛,由于后续的文章也准备放在csdn上并与此文有很大的关联性,故将此文在此也发布一份,阅读时请注意^_^。
打造自己的智能家居有木有!!!
请先看三个视频(csdn无法嵌入视频,请单击链接查看-_-):
DIY
智能家居
v2.0
操作演示
http://v.youku.com/v_show/id_XNTY5MzcwNzMy.html
乐联网手机
APP
和微信操作演示
http://v.youku.com/v_show/id_XNTY5NjUwODQ4.html
乐联网管理平台操作演示,注意下自定义微信命令
http://v.youku.com/v_show/id_XNTY5NjI2OTky.html
大家好,我叫无用在这里我主要介绍下DIY智能家居系统开发经历和同乐为物联管理平台的对接方案。
注:无用技术有限,文中难免有错误,如有错误,欢迎拍砖
^-^
。
查看乐联网已经对接上的设备
先上图:
这是我在乐联网上公开的家里温度、空气质量和湿度传感器的实时数据曲线图,是不是很酷
^-^
可以点这里查看 http://www.lewei50.com/home/gatewaystatus/586
通过手机微信绑定个人账户后查看室内传感器实时信息
通过微信命令打开/
关闭家里的设备
通过手机端APP
应用查看传感器实时信息
登录乐联网官方网站查看传感器实时信息
http://www.lewei50.com/dev/docList
数据对比分析
通过网页控制家里的设备
看到这些心动的有木有!!!我对乐联网简直是一见钟情啊,当然还有很多好玩的等着我们一起去探索,
点这里查看更多信息 http://www.lewei50.com/dev/docList
看到这里很多朋友可能开始好奇了,怎么实现的这些功能呢?下面一步一步来解开这些疑问。
当然乐联网已经为爱好者提供了非常快捷的解决方案,使用它你可以快速搭建传感器数据上传和设备控制,
点这里查看更多信息 http://www.lewei50.com/dev
不过无用有自己的一套解决方案,在遇到乐联网之前已经在用啦,碰到乐联网后毫无压力的与乐联网开放平台对接到了一块。
上架构图:
是不是有点智能家居的味道了,呵呵。
第1版的诞生(v1.0)
故事的开始,
2012
年北京的冬天(在北京的兄弟们都知道这年冬天特别的冷),我家暖气出现了故障,整个冬天停止供暖
-_-
。后来我和我老婆实在坚持不住了,去家电城买了个电暖气,这才缓解受冻之苦。但是问题又来了,每天下班到家在打开暖气等到屋里暖起来还是要等好长一段时间的。 有一次突然灵机一动,为何不自己动手做一套简单的系统呢:在下班回家的路上用手机提前把电暖气打开,让它先暖着屋里,提前打开饮水机,回到家就能喝上暖暖的开水
^_^
, 提前打开热水器,回到家就可洗个热水澡,在加个温度传感器方便查看电暖气的效果,
Oh Yea
说干就干,于是
DIY
智能家居的第
1
个版本(
v1.0
)就这样诞生了。上设备图:
Db120
路由器,刷
Openwrt
系统(之前拿来上网用的
49RMB)
433
无线模块(
25RMB)
每个终端设备一个
arduino pro mini
占用空间特小
(18RMB)
继电器模块(5RMB)
DS18B20温度传感器(4.5RMB)
开关电源模块 5v 700ma
稳定性很强
(5RMB)
路由器改造:
将433
模块接到路由器的串口上
饮水机改造:
因为是放到饮水机内部使用,就不做美化了,呵呵。
插排改造:
美化一下,呵呵。
使用
db120 openwrt
作为家庭网关,
使用
433
做为无线网络模块,由于
433
只支持半双式,两个模块同时发数据会造成数据混乱
,
一个模块发送数据其它模块都能收到,所以使用了请求回应的方式,
openwrt
上的
433
模块作为逻辑上的主模块,数据请求由它发起并带上一个地址,接收方收到数据时判断这个地直址如果是自己就作出回应,整个网络中不会使用重复地址,为了不会使数据混乱
openwrt
上的程序负责保证同时只有一个请求通过
433
发送出去。
继电器、温度传感器和
433
无线使用一个
arduino
放到饮水机内部( 虽然这样做饮水机打开时会影响正常测温,但是当时为了节省开支只好这样了),另一个继电器、
433
无线和
arduino
都塞进一个插排里面,这样做不仅可以控制电暖气,而且还可以控制其它电器。
串口指令结构如下:
0x11 0x22 [
头
] +
设备地址
+
功能标识
+
附加数据
Arduino
中的代码片段:
Openwrt
程序使用
c++
编写,主要负责提供中间层的作用,它不处理业务,通过
433
无线模块同其它
arduino
设备通讯,并以
tcp
协议方式对外提供接口。
C++
代码片段:
手上有一台美国
vps
外网服务器
(30rmb/
月
)
通过
ssh
将
openwrt
提供的端口在
vps
上打通,让
vps
上的
php
程序能直接使用
c++
提供的端口
.
主要逻辑处理在
php
上,这样开发和修改起来相对容易了很多。
Php
代码片段:
编写网页程序,对外提供操作
UI:
第2版(v2.0)的诞生:
在这里非常感谢乐联网老刘的支持,当他看到我用
433
无线模块组装的插排时跟我约稿,鼓励我将制作过程写一份文章发表出来,当时乐联在做
DSM501A
空气颗粒物检测活动,除了送我一个
DSM501A
外,还送我一个设备做为奖励,有老刘的支持才有这篇文章的发表,非常感谢!!! 之前我也一直想把这些分享出来,可是出于时间等原因一直没有去做,这次既然要做就做好一些把功能都完善一下,于时第
2
版出来了(操作演示请查看视频1),主要改进了以下几点:
1.
由于
433
模块很不稳定,有时会出现丢数据的现象,所以使用
zigbee
模块换掉
433
模块。
2.
增加卧室温度检测、湿度检测、空气颗粒物检测(
DSM501A
,乐联网做活动送的)、空调控制(夏天到家前可以先打开空调了
^-^
)。
3.
外网服务器换用国内阿里云主机,包年
690RMB
,国内
ip
速度快!
zigbee
模块(
49RMB
有些小贵):
换掉路由器内部的433
模块:
插排里也换一下:
饮水机也换一下:
使用洞洞板集成zigbee
模块、
arduino
、温度传感、温度传感器、
DSM501A
颗粒物传感器和红外学习模块:
美化了下UI操作界面
与乐联网的对接
传感器数据上传
在
openwrt
上写
php
代码实现
(openwrt
可以装
php
很方便
)
,代码片段:
上传温度数据
上传DSM501A
颗粒物数据
使用
crontab
定时上传,每
2
分钟执行一次:
控制设备对接
采用乐联网
tcp
长连接方式,不怕防火墙,响应速度快,也是运行在
openwrt 上
,采用
python
编写,代码片段:
返回网关上的所有控制设备信息
控制某个设备:
远程控制还不够?来点智能的怎么样?
经过一段时间的使用,无用发现远程控制并不是对智能家居的真正需要,比如下班后在路上有时会忘记拿出手机来打开家里的电器,有时感觉这种方式操作起来还有些繁琐。这时乐联网上的定时执行计划功能是个不错的选择,一般下班8
点到家,通过配置
7
点时打开家里的热水器,饮水机:
如果下班后没有按时回家,比如公司加班,朋友聚会,那些这些按时打开的设备不就白白的浪费着国家能源了,无用在这里想到了一个办法:
在离家还有两公里的时候打开家里的设备,离家两公里以外的话关闭已经打开的设备,是不是有点节能的感觉,呵呵,无用已经实现了并且自己在用,体验还不错,这里简单介绍下实现方法:
1.编写一个android 后台程序,类似于微信那种后台程序(android 不熟,硬着头皮边学边做的),通过移动网络每
1
分钟将自己的地理位置上传到外网服务器上,代码片段:
2.编写服务器上的
php
程序,代码片段:
关于开源、下一篇文章和未来
无用很乐于奉献源代码,首先看下这篇文章的响应情况,如果大家喜欢,准备在下一篇文章里具体介绍下各个功能模块的实现方法和代码细节,顺便整理下源码,将代码在Github上开放,关于未来无用只能继续努力进行探索,随着不断的探索和积累,未来相信智能家居会成为每个普通用户的可能,走进千家万户,真正服务人类,造福人类!!!
好了就到这里了,下篇文章见!!!