树莓派基于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. 执行开灯、开门、打开电视指令

效果图(通过 asciiflow.com 绘制):

                        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  |                             |       +----------+
|     +-------------+                             |
|                                                 |
|                                                 |
|                                                 |
+-------------------------------------------------+