【一个想法】微信门锁

2015-02-072万
AI 快速预览详细 收起
微信门锁是一个基于树莓派和摄像头的智能门锁项目。用户通过微信公众号发送请求,SAE服务器验证用户ID并生成随机密匙二维码。用户将二维码放在摄像头前,树莓派验证二维码有效性后控制门锁开启或报警。该项目提高了家居的安全性和便捷性,适合智能家居爱好者和初学者。
【一个想法】微信门锁【一个想法】微信门锁图1
基本想法
回到家门口,点击微信公众号的开门按钮,然后收到服务器发回的随机开锁二维码。
将二维码放到摄像头前,门锁打开,该二维码报废。
或者60s未使用该二维码,自动报废。
材料
硬件:树莓派+摄像头
SAE服务器
微信公众号
技术过程
  • 通过微信号发送请求
  • SAE服务器验证用户ID,返回随机生成的密匙二维码或者警告信息
  • 用户让摄像头扫描该二维码
  • 树莓派向SAE服务器验证二维码有效性
  • 若二维码有效,返回开门指令;无效返回警告消息。
  • 树莓派根据返回做相应动作,开门或“报警”

(遗憾的是树莓派还在学校,先实现1、2步吧)
--------------------------------------------------------------------------------------------------


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(12)
visionsl
visionsl
晚上没灯怎么扫?
qomoliao
qomoliao
作者
[align=left]过了好几个月,这个微信门锁终于可以亮一下了。虽然看起来还是有点bug,不过基本上实现了最初的想法。[/align]成品演示[align=left]如图所示,门锁由Arduino做主控,通过Ethernet shield上网。[/align][align=left]


在门外,拥有权限的使用者通过微信扫描门上的二维码,可以实现开门。
进入家里后,合上门,门上的感应器(其实就是个干簧管)被触发,自动关门。
在家里,不需要通过扫描二维码开门,而是直接按门上的唯一一个开门按钮,就可以开门。
另外,若开锁后,没有推开门,过2秒后,门会自动锁上。防止关门忘记上锁的情况发生。[/align][align=left]对于没有权限的人(比如说在家里寄居几天的亲戚朋友),扫描门上的二维码会得到一个警告,同时得到一个二维码,门锁管理者,扫描这个二维码可以将这个客人添加到数据库中。
在这个客人要离开之前,用他自己的手机扫描门内侧的二维码,可以删除他的权限。[/align][align=left]这里有个演示的视频:[/align][align=left][media=x,500,375]http://v.youku.com/v_show/id_XOTMyOTQzNTA4.html[/media]
[/align][indent][align=left][font=inherit]视频里有点蹩脚的感觉,不过基本想法是实现了。[/font][/align][/indent]门锁的结构[align=left]大的来说,门锁有三个部分,他们的关系如下:
硬件 <⇐=>> SAE <⇐=>> 微信测试号
关于硬件:
Arduino做主控,通过Ethernet Shield与SAE通信,获得开锁命令,或者将门锁状态发送到SAE。(本来打算用机智云的模组或者ESP2866Wi-Fi模块的,最终发现现在使用的方式是最简单的。其他待以后有时间再做)[/align][align=left]

[/align][align=left]舵机作为开关门的机械部件[/align][align=left]

[/align][align=left]门上有个LED灯用于指示门的状态,开门-亮,关门-灭[/align][align=left]

[/align][align=left]干簧管和磁铁配合,用于感知门的状态 ,当门被合上时自动上锁
屋里门上有唯一的一个按钮,用于从内部开门[/align][align=left]

[/align][align=left]关于SAE:
这个demo采用SAE的云服务,免费好用
用tornado编写服务程序,用于接受微信测试号发来的事件,作出相应的反应
MySQL做数据库,储存门锁状态,门锁ID,管理者ID,开门二维码ticket等二维码ticket等数据。有数据库就有了为N个门锁和M个用户服务的可能。
这里放两个数据表给大家看看。[/align]
[align=left]

[/align]
[align=left]具体代码见github: https://github.com/qomo/welock[/align][align=left]微信测试号:
测试号产生3类二维码:开锁二维码、添加用户二维码、删除用户二维码[/align][align=left]

[/align][list]
[*]开锁二维码贴在门外侧,合法用户扫描可以开门,这是个长期有效的二维码
[*]非法用户扫描,会收到警告信息连同一个短期有效的添加用户二维码,让锁的管理者扫描这个二维码可以添加该用户的开锁权限
[*]另一个长期有效的二维码贴在门的内侧,当一个用户不再需要开锁权限,可以扫描该二维码,将自己的权限从SAE数据库中删除。
[/list]
qomoliao
qomoliao
作者
之前因为个人的微信号没有生成二维码的权限导致流程显得有点繁琐
后来看机智云的ppt,发现微信公众平台有个微信测试号的东西
可以使用微信公众平台的所有功能
所以把开锁的过程做成直接扫描二维码开锁
老刘
老刘
流程可以更简单一些,特定的号码向微信发送“开门”指令,门就开了。
老刘
老刘回复qomoliao
对的,我的意思是,直接发送文字 “开门”门就开了,不用扫描二维码,如果有多扇门需要控制,那么发送“开1门”“开2门”等等。。
qomoliao
qomoliao
作者
回复老刘
是对openid设置权限的。二维码是门锁的唯一识别。
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
hnyzcj
hnyzcj
回到家门口,点击微信公众号的开门按钮,然后收到服务器发回的随机开锁二维码。
将二维码放到摄像头前,门锁打开,该二维码报废。
或者60s未使用该二维码,自动报废。
这个让我想到了超市门口的临时存包处。
hnyzcj
hnyzcj回复qomoliao
好的
qomoliao
qomoliao
作者
回复hnyzcj
做个微信存包货柜也不错
qomoliao
qomoliao
作者
创客空间可以做,加微信会员即有开锁权限
touchfree
touchfree
很有趣的想法啊,make it real
R2D2
R2D2
公共场所可以用这种方式。自己家里会有点不安全。
Youyou
Youyou
backdoor一定要设置好,紧急情况下说不定能排上用场。
hnyzcj
hnyzcj
期待作品
qq815076543322
qq815076543322
网络出现问题了 岂不是要所在门外了:lol
qomoliao
qomoliao
作者
后来,又有了变化,还是希望简单一点。
最简单的方式是使用,带参数带微信二维码,直接扫描就可以把门打开。

但是,这需要一个服务号,而我个人的微信号只是订阅号。
现在的情况是,将raspberry 换成arduino
微信发送开锁指令,然后收到一个四位数验证码,再门锁的键盘上输入这个验证码,完成开锁。
SAE上的代码基本上完成,等淘宝的arduino到手,就可以写arduino代码了。
- 没有更多了 -