树莓派基于WiFi实现智能家居另类玩法

当你辛苦一天,晚上回到家,是否希望有人为你开门,为你打开灯,为你做好饭等你回来吃。。。但这对于一个漂泊在外的单身程序猿来说,一切都只能靠自己。

原理

当你到家,也许还未进家门,手机就自动连接到了家里的无线路由器上,通过ping 手机的ip地址可以知道是你回来了。 这里利用了手机WiFi芯片上的MAC地址作为身份识别ID,WiFi密码作为安全保障机制。

为了更安全,WiFi可以采用EAP-TLS认证机制,因为现在WiFi密码分享导致密码会被别人获取到,让别人也可以接入你家WiFi,但是他必须知道你的MAC地址、或者是绑定的IP地址才能实现身份认证,当然这也有一定难度。

PS:这样实现的成本低,可靠性、兼容性都非常好。

实现步骤

  1. 为手机在路由器DHCP中绑定一个固定IP地址,比如: 192.168.1.6
  2. 树莓派上写脚本程序(shell、nodejs、golang都可以),定时ping 192.168.1.6 如果能成功响应表示主人回来了
  3. 执行开灯、开门、打开电视指令

效果图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
                        XX
XXXX XXXX
XXXXX XXXX
XXXX XXXX
XXXXX XXXX
XXXXX XXXX
XXXXXX XXXXX
XXX+-------------------+----------------------+XXXX
+ + +
| XXX |
| X X |
| X |
| +----+----+ +------------------+ |
| | | | | | |
| +---------+ | Wireless router | |
| | | | | R6300v2 | |
| +----+----+ +---+---------+----+ |
| | | |
| | | |
| | | +
| +-------------+-----------+ +----+door+-----+----------+
| | RaspberryPi | + | iPhone |
| | Loop ping | | +----------+
| +-------------+ |
| |
| |
| |
+-------------------------------------------------+