DIY智能家居和乐联网开放平台对接-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 32866|回复: 42

DIY智能家居和乐联网开放平台对接

[复制链接]
发表于 2013-6-12 08:30 | 显示全部楼层 |阅读模式
本帖最后由 chzhewl 于 2013-6-12 21:34 编辑

打造自己的智能家居有木有!!!
请先看三个视频(如无法正常播放请单击链接查看):
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智能家居系统开发经历和同乐为物联管理平台的对接方案。
注:无用技术有限,文中难免有错误,如有错误,欢迎拍砖^-^
查看乐联网已经对接上的设备
先上图:
这是我在乐联网上公开的家里温度、空气质量和湿度传感器等实时信息曲线图,是不是很酷^-^

011725pudoxoadnou8800b.png
通过手机微信绑定个人账户后查看室内传感器实时信息
001805gn1awezn8or5rrx5.png
通过微信命令打开/关闭家里的设备
001810fs2shb2fq2s2zqs0.png
通过手机端APP应用查看传感器实时信息
001813ykmhgglf66iwhwea.png
登录乐联网官方网站查看传感器实时信息
http://www.lewei50.com/dev/docList
001817dwabxxg0vbwx5zes.png
数据对比分析
001818e3fljutztgtzmlxj.png
通过网页控制家里的设备

001820npwqqzfzipbbiw30.png
看到这些心动的有木有!!!我对乐联网简直是一见钟情啊,当然还有很多好玩的等着我们一起去探索,
点这里查看更多信息http://www.lewei50.com/dev/docList
看到这里很多朋友可能开始好奇了,怎么实现的这些功能呢?下面一步一步来解开这些疑问。
当然乐联网已经为爱好者提供了非常快捷的解决方案,使用它你可以快速搭建传感器数据上传和设备控制,
点这里查看更多信息 http://www.lewei50.com/dev
不过无用有自己的一套解决方案,在遇到乐联网之前已经在用啦,碰到乐联网后毫无压力的与乐联网开放平台对接到了一块。
上架构图:
001826amegemhm8phm8btt.png
是不是有点智能家居的味道了,呵呵。
1版的诞生(v1.0)
故事的开始,2012年北京的冬天(在北京的兄弟们都知道这年冬天特别的冷),我家暖气出现了故障,整个冬天停止供暖-_-。后来我和我老婆实在坚持不住了,去家电城买了个电暖气,这才缓解受冻之苦。但是问题又来了,每天下班到家在打开暖气等到屋里暖起来还是要等好长一段时间的。 有一次突然灵机一动,为何不自己动手做一套简单的系统呢:在下班回家的路上用手机提前把电暖气打开,让它先暖着屋里,提前打开饮水机,回到家就能喝上暖暖的开水^_^, 提前打开热水器,回到家就可洗个热水澡,在加个温度传感器方便查看电暖气的效果,Oh Yea 说干就干,于是DIY智能家居的第1个版本(v1.0)就这样诞生了。上设备图:
001833lwi1kiqxxxdzxxdl.png
Db120 路由器,刷Openwrt 系统(之前拿来上网用的49RMB)
001839i6u69yc68sj26u94.png
433无线模块(25RMB)
001842ztr0xwhq27fuza7e.png
每个终端设备一个arduino pro mini 占用空间特小(18RMB)
001848zexv3c4akubfknfb.png
继电器模块(5RMB)
001848cuo3auqebauiowdo.png
DS18B20温度传感器(4.5RMB)
001853j2t9z8kkfoloklof.png
开关电源模块 5v 700ma 稳定性很强(5RMB)
路由器改造:
001902zvplmhtgjjdljidq.png
将433模块接到路由器的串口上
饮水机改造:
001905fgwwjtsgzddfzwtz.jpg
因为是放到饮水机内部使用,就不做美化了,呵呵。
插排改造:
002411ayhrzoyyqqzkr0o6.jpg
001912ax9ajhjtlx0m9ezl.png
美化一下,呵呵。
使用db120 openwrt 作为家庭网关,
使用433 做为无线网络模块,由于433 只支持半双式,两个模块同时发数据会造成数据混乱,一个模块发送数据其它模块都能收到,所以使用了请求回应的方式,openwrt 上的433模块作为逻辑上的主模块,数据请求由它发起并带上一个地址,接收方收到数据时判断这个地直址如果是自己就作出回应,整个网络中不会使用重复地址,为了不会使数据混乱openwrt 上的程序负责保证同时只有一个请求通过433 发送出去。
继电器、温度传感器和433无线使用一个arduino 放到饮水机内部( 虽然这样做饮水机打开时会影响正常测温,但是当时为了节省开支只好这样了),另一个继电器、433无线和arduino都塞进一个插排里面,这样做不仅可以控制电暖气,而且还可以控制其它电器。
串口指令结构如下:
0x11 0x22 [] + 设备地址 +  功能标识 + 附加数据
Arduino 中的代码片段:
001914hyox8bxydpptb1x9.png
Openwrt 程序使用c++编写,主要负责提供中间层的作用,它不处理业务,通过433无线模块同其它arduino 设备通讯,并以tcp 协议方式对外提供接口。
C++代码片段:
001917r9cu8g5a8unbs6n3.png
手上有一台美国vps外网服务器(30rmb/)
通过ssh openwrt 提供的端口在vps 上打通,让vps 上的php程序能直接使用c++提供的端口.
主要逻辑处理在php上,这样开发和修改起来相对容易了很多。
Php代码片段:
001923zl0vej1ef9jccjge.png
001924qgijaezu7eaf8o2i.png
编写网页程序,对外提供操作UI:
003452dt1ttq19jl922jjf.png
2版(v2.0)的诞生:
在这里非常感谢乐联网老刘的支持,当他看到我用433无线模块组装的插排时跟我约稿,鼓励我将制作过程写一份文章发表出来,当时乐联在做DSM501A 空气颗粒物检测活动,除了送我一个DSM501A 外,还送我一个设备做为奖励,有老刘的支持才有这篇文章的发表,非常感谢!!! 之前我也一直想把这些分享出来,可是出于时间等原因一直没有去做,这次既然要做就做好一些把功能都完善一下,于时第2版出来了,主要改进了以下几点:
1. 由于433 模块很不稳定,有时会出现丢数据的现象,所以使用zigbee 模块换掉433模块。
2. 增加卧室温度检测、湿度检测、空气颗粒物检测(DSM501A,乐联网做活动送的)、空调控制(夏天到家前可以先打开空调了^-^)。
3.外网服务器换用国内阿里云主机,包年690RMB,国内ip速度快!
zigbee模块(49RMB 有些小贵):
001934rpa8joaneh66jhpx.png
换掉路由器内部的433模块
001950jrrzkhr2103r1rrr.png
插排里也换一下:
002005o775xbcc65n4jz5u.png
饮水机也换一下:

002015jlk8sfc80gei0ljj.png
使用洞洞板集成zigbee模块、arduino、温度传感、温度传感器、DSM501A 颗粒物传感器和红外学习模块:
002019c8cylvbcrccv28t8.jpg
002026eaau5zrrrnc53haw.png
美化了下UI操作界面
002027ou8wm11h5rauggex.png
与乐联网的对接
传感器数据上传
openwrt 上写php 代码实现(openwrt 可以装php很方便),代码片段:
上传温度数据
002028d3u8sswislbstapw.png
上传DSM501A 颗粒物数据
002032zxxfuslc870b0xnb.png
使用crontab 定时上传,每2分钟执行一次:
002033zswstbt05wvhtr9w.png
控制设备对接
采用乐联网tcp 长连接方式,不怕防火墙,响应速度快,也是运行在 openwrt 上,采用python 编写,代码片段:
返回网关上的所有控制设备信息
002034uev8ad82efpv8812.png
控制某个设备:
002035s39d97334mlcm4bw.png
远程控制还不够?来点智能的怎么样?
经过一段时间的使用,无用发现远程控制并不是对智能家居的真正需要,比如下班后在路上有时会忘记拿出手机来打开家里的电器,有时感觉这种方式操作起来还有些繁琐。这时乐联网上的定时执行计划功能是个不错的选择,一般下班8点到家,通过配置7点时打开家里的热水器,饮水机:
002036vc5yjtcucyavk822.png
如果下班后没有按时回家,比如公司加班,朋友聚会,那些这些按时打开的设备不就白白的浪费着国家能源了,无用在这里想到了一个办法: 在离家还有两公里的时候打开家里的设备,离家两公里以外的话关闭已经打开的设备,是不是有点节能的感觉,呵呵,无用已经实现了并且自己在用,体验还不错,这里简单介绍下实现方法:
1.编写一个android 后台程序,类似于微信那种后台程序(android 不熟,硬着头皮边学边做的),通过移动网络每1分钟将自己的地理位置上传到外网服务器上,代码片段:
002037bq7qjqhfbqxjhhx5.png
2.编写服务器上的php程序,代码片段:
002038atkddchq0xxbti22.png [size=0.83em]7 小时前 上传
下载附件 [size=0.83em](80.75 KB)



关于开源、下一篇文章和未来
       无用很乐于奉献源代码,首先看下这篇文章的响应情况,如果大家喜欢,准备在下一篇文章里具体介绍下各个功能模块的实现方法和代码细节,顺便整理下源码,将代码在Github上开放,关于未来无用只能继续努力进行探索,随着不断的探索和积累,未来相信智能家居会成为每个普通用户的可能,走进千家万户,真正服务人类,造福人类!!!
好了就到这里了,下篇文章见!!!

发表于 2013-6-12 14:01 | 显示全部楼层
牛叉。
发表于 2013-6-12 20:59 | 显示全部楼层
niubility.
发表于 2013-6-13 09:26 | 显示全部楼层
非常好,我也正想学习一下,大力支持!希望能将详细的教程共享与交流一下。
发表于 2013-6-13 13:37 | 显示全部楼层
好文章、
发表于 2013-6-13 17:28 | 显示全部楼层
顶你啊!
发表于 2013-6-14 11:09 | 显示全部楼层
很想学习一下空调这部分的内容,希望能与chzhewl学习一下,不知道有没有具体的资料可以分享一下呢?
 楼主| 发表于 2013-6-14 18:05 | 显示全部楼层
范工【节能评估 发表于 2013-6-14 11:09
很想学习一下空调这部分的内容,希望能与chzhewl学习一下,不知道有没有具体的资料可以分享一下呢? ...

你好,空调控制是从淘宝上买的现成的红外学习模块做成的,它可以学习遥控器的红外信号.  淘宝地址:  http://item.taobao.com/item.htm? ... &id=12638385611
发表于 2013-6-17 00:49 | 显示全部楼层
很不错!
发表于 2013-6-17 00:51 | 显示全部楼层
红外模块贵了点。用arduino DIY就便宜多了、
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 00:40 , Processed in 0.151534 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表