我想让我的小米路由器变成一个聪明的WIFI,idea是这样的:当老婆回到家,小米路由器就自动发一条短信告诉我。

折腾了几天,搞定,分享一下:

我的路由器型号:小米路由器mini (129元在官网淘的)

步骤一:首先要开启小米路由器SSH, 获得root

这个方面小米是开放的,操作方法网上有,不详述了,见 点击打开链接

步骤二:用SSH登录进去, 了解小米路由器是什么样

在你的电脑上输入以下命令,登录小米路由器 (我的路由器IP是192.168.31.1)

ssh root@192.168.31.1

然后输入步骤一获得的root的密码(如果密码输入正确后仍看到permission denied,别管它,按回车)进去后会看到

BusyBox v1.19.4 (2015-01-22 17:52:04 CST) built-in shell (ash)Enter 'help' for a list of built-in commands.

 -----------------------------------------------------    Welcome to XiaoQiang! -----------------------------------------------------root@XiaoQiang:~# 

用 df 查看一下存储情况

root@XiaoQiang:~# dfFilesystem           1K-blocks      Used Available Use% Mounted onrootfs                   11008     11008         0 100% //dev/root                11008     11008         0 100% /tmpfs                    62872      2580     60292   4% /tmptmpfs                      512         0       512   0% /dev/dev/mtdblock7            1024       864       160  84% /data/dev/mtdblock7            1024       864       160  84% /etctmpfs                    62872      2580     60292   4% /userdisk/sysapihttpd/dev/root                 1024       864       160  84% /mnt/dev/mtdblock7            1024       864       160  84% /mnt/dev/sda1            976762580 297860468 678902112  30% /extdisks/sda1

小米路由器存储的根目录是只读的, 只有 /etc   /data  可写,剩余空间很小(上表显示只有160K),只能写小程序。

如果要大空间,可以插个U盘或移动硬盘。像上表显示的这个盘:  /dev/sda1,这是我的移动硬盘

放在 tmpfs 上的所有目录(如: /tmp    /userdisk/sysapihttpd) 都是临时存储,如果把文件写在上面,重启后将全部丢失

查看一下操作系统情况

root@XiaoQiang:~# cat /etc/*releaseDISTRIB_ID="OpenWrt"DISTRIB_RELEASE="Attitude Adjustment"DISTRIB_REVISION="r40348"DISTRIB_CODENAME="attitude_adjustment"DISTRIB_TARGET="ramips/mt7620a"DISTRIB_DESCRIPTION="OpenWrt Attitude Adjustment 12.09.1"

操作系统是OpenWrt 12.09.1,   芯片是mt7620a

OpenWrt是为小型设备用的linux

建议你先到各个目录看一下,熟悉熟悉

看一下有哪些命令、程序可以用

用 help 查看一下内置命令

root@XiaoQiang:~# help

help将返回一个可用命令列表

查看一下, 有哪些程序可用

root@XiaoQiang:~# echo $PATH/bin:/sbin:/usr/bin:/usr/sbin

常用程序大多数都在这几个  bin 目录中, 常用的linux程序大体上都有(如: grep awk wget find 等)

步骤三:写一个Shell脚本,检测某个手机是否连接进了这个路由器

小米路由器有两个WIFI SSID, 一个频率是2.4G Hz的, 一个频率是5G Hz的。

思路是这样的:

1, MAC码是识别手机的标志

2, 手机连进某个WIFI SSID,则WIFI将知道手机的MAC码

3, 检查每个SSID当前的连接用户, 看有没有指定的MAC码。如有,则用 wget 访问一个外部网站URL, 触发一个网页

4, 这个网页再去触发短信通知。我的手机是189的,向我的189手机邮箱发一个邮件,利用189邮箱的短信通知功能,我的手机就会收到一条短信。

先用 ifconfig 看一下有几个网卡

root@XiaoQiang:~# ifconfigbr-lan    Link encap:Ethernet  HWaddr 64:09:80:18:7B:C0            ...

eth0      Link encap:Ethernet  HWaddr 64:09:80:18:7B:C0            ...

pppoe-wan Link encap:Point-to-Point Protocol            ...

wl0       Link encap:Ethernet  HWaddr 64:09:80:18:7B:C2            inet6 addr: fe80::6609:80ff:fe18:7bc2/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:1003 errors:0 dropped:0 overruns:0 frame:0          TX packets:602 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:176410 (172.2 KiB)  TX bytes:103339 (100.9 KiB)          Interrupt:13 

wl1       Link encap:Ethernet  HWaddr 64:09:80:18:7B:C1            inet6 addr: fe80::6609:80ff:fe18:7bc1/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:4042 errors:0 dropped:0 overruns:0 frame:0          TX packets:2064 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:869980 (849.5 KiB)  TX bytes:832223 (812.7 KiB)          Interrupt:4 

wl0, wl1 分别是两张WIFI网卡,每个生成一个SSID

再用命令 iwinfo 查看一下某个网卡下有多少个连接用户、MAC码分别是什么

root@XiaoQiang:~# iwinfo wl1 assoclistD0:33:AE:5F:63:AE  -50 dBm / -95 dBm (SNR 45)  0 ms ago    RX: 1.0 MBit/s                                     0 Pkts.   TX: 65.0 MBit/s                                    0 Pkts.

7C:E1:D3:EA:81:D5  -57 dBm / -95 dBm (SNR 38)  0 ms ago   RX: 130.0 MBit/s                                   0 Pkts.   TX: 130.0 MBit/s                                   0 Pkts.

每三行是一个连接用户的信息:   D0:33:AE:5F:63:AE  这个是MAC码,-50 dBm 这个是它的信号强度(根据这个值可以判定手机与路由器的距离及其变化)

开始编写Shell脚本,保存到 /etc 目录下,文件名为 smart_wifi

root@XiaoQiang:~# cd /etc
root@XiaoQiang:/etc # vi smart_wifi

脚本内容如下:

#!/bin/sh
MAC="E0:19:1D:E4:22:25"
URL="http://192.168.31.131/miwifi/find.php?mac="#check duration, in seconds
interval=2#To avoid notify continously, last_time is the last time we find the MAC
last_time=$(date +%y%m%d%H%M%S)
let last_time=last_time-interval-interval#Function: Find MAC address in associated users , query the url while matched. return 1 if found, return 0 if not found
find_mac() {#Use ifconfig to find interface which name starts with wlifconfig | grep wl[0-9] | awk '{print $1}' | while read WLANdo#Use iwinfo to find MAC address of connected usersiwinfo $WLAN assoclist | grep dBm | awk '{print $1}' | while read MAC1do#if MAC1 address is the target we wantif [ $MAC1 = $MAC ]then       #Calculate time passed since last_timethis_time=$(date +%y%m%d%H%M%S)let time_passed=this_time-last_timelet interval_min=interval+1if [ $time_passed -gt $interval_min ]then #construct the url , append the MAC address to the endQUREY_URL="${URL}${MAC}"#Use wget to query the urlwget -q -O web_response $QUREY_URLecho "FIND $MAC"return 1fifidonedonereturn 0
}#Main program: it's a dead loop,  exec find_mac() every n seconds(defined by interval)
while [ 1 -lt 2 ]
doif find_macthen#if found, update last_timelast_time=$(date +%y%m%d%H%M%S)fisleep $interval
done

MAC是要找的MAC地址(即老婆大人的手机MAC码)

URL是外部网站URL,  访问时会把实际MAC作为一个参数送给网站。

脚本中URL为LAN的,实际使用时设在公网上即可

脚本注释用了英文

程序采用了轮询制,每隔一段时间找一次。

主程序是一个死循环,每隔 interval 秒执行一次 find_mac 函数,

interval值定义了每隔多少秒找一次

find_mac() 函数是查找MAC码的函数。如果当前WIFI用户中找到MAC码,  则访问URL(该URL将发出短信),返回值1. 如找不到,返回0

如果一个手机持续连接WIFI,则每次查找时均可找到它,如果不断发短信是很烦人的,所以程序中采用了一个变量last_time记录上一次找到MAC码的时间,如果是连续找到,则不会触发网页。

不多解释了,自己看吧

为了让smart_wifi能运行,不要忘记赋予它运行的权限,命令如下:

root@XiaoQiang:/etc # chmod +x smart_wifi

步骤四:写一个网页(URL), 用于接收并发送短信 (我用的是PHP)

<?phpif (isset($_GET['mac'])) {mail("189XXXXXXXX@189.cn","Warning: Your wife is home.", "You know what to do");echo "ok";
} else echo "error";?>

发短信的实现:我的手机是189的,程序中向我的189手机邮箱发了一个邮件,利用189邮箱的短信通知功能,我的手机就会收到一条短信, 内容如下:

Warning: Your wife is home.

步骤五: 运行Shell脚本,看看实际效果

再回到 小米路由器 SSH中, 运行以下命令

root@XiaoQiang:~# /etc/smart_wifi &

命令中最后这个 "&" 符是让它在后台运行

要停止脚本运行,可以用 ps | grep smart_wifi 命令查看进程,再用 kill 命令干掉它

运行效果:  OK了,老婆一出现,连接上WIFI, 则我的手机将收到一条短信

有点聪明WIFI的感觉了!

最后小结:

1, 实际上,很多路由器都是OpenWrt的,这个脚本同时可以在上面运行,不限于小米路由器。

2, 只要有想像力,这个脚本干点别的什么也是可以的,比如:你一进门,灯就自动开了。你一靠近电视机,电视机就亮了。

3, 上述示例中,如果重启路由器,脚本并不会自动启动。实际运用中,应该再写一个服务,开机自启动 (这个的做法俺卖个关子,不说了。。。)

参考:

http://wiki.openwrt.org/doc/techref/start

让小米路由器变成一个聪明的WIFI(1):有人回家,它就发短信告诉你相关推荐

  1. 大聪明教你学Java | 调用腾讯云短信接口,实现短信通知

    前言 提到短信接口,相信每一位程序猿都不会陌生,它可以来帮助我们实现短信验证码.短信通知等等功能,刚好最近在帮朋友开发一套会员管理系统,里面也集成了短信功能(短信接口平台选择的是腾讯云平台),借此机会 ...

  2. (西工程-金花)小米路由器连接哆点设置WiFi保姆式教程

    小米路由器连接电源,用根网线一端插入寝室的网口处,另一端插入小米路由器的WAN口 手机或者电脑连接WiFi,我这里是通过手机浏览器打开192.168.31.1进入无线路由器管理页面进行配置小米路由器, ...

  3. android手机不能发短信,小米4手机收短信正常但无法发送短信怎么办?

    小编的手机最近突然出现了这样一个问题,什么也没动,突然就无法发送短信了,而状况是一切都正常,收短信也正常,只是发不出去.后来去网上查询,原来很多网友都和小编遇到同样的问题,经过一番折腾,终于找到了解决 ...

  4. 手机短信转发到另一个手机接收_吓人!手机收到“处理尸体”短信 警方调查揭开真相!...

    如果突然收到一条 让你"处理尸体"的手机短信, 你会如何处理? 近日,江津区的18岁小伙小郭就遇到此事,他与对方联系无果后,选择了立即报警求助.警方调查后发现,这原是一场恶作剧. ...

  5. 用电脑发短信_重磅!一个软件实现电脑上接打手机电话、收发短信、传文件、屏幕镜像!...

    点击箭头处"蓝色字",关注我们哦!! Dell Mobile Connect 本身是一款专门为 Dell 指定设备提供的专门为计算机与 iOS 或者 Android 智能手机之间进 ...

  6. 使用Android Studio写一个发短信的小案例

    废话不多说,直接贴图 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayoutan ...

  7. 小米无线路由器服务器用户名和密码忘了,小米路由器无线密码(wifi密码)忘记了怎么办? | 192路由网...

    问:小米路由器无线密码忘记了怎么办?小米路由器WiFi密码忘记了怎么办?家里使用的是小米的无线路由器,由于手机.笔记本电脑自动保存了WiFi密码:时间长了,自己忘记了之前设置的WiFi密码是多少了,请 ...

  8. linux连接小米随身wifi密码忘记了,小米路由器无线密码(wifi密码)忘记了怎么办?...

    问:小米路由器无线密码忘记了怎么办?小米路由器WiFi密码忘记了怎么办?家里使用的是小米的无线路由器,由于手机.笔记本电脑自动保存了WiFi密码:时间长了,自己忘记了之前设置的WiFi密码是多少了,请 ...

  9. 小米路由器3G如何解决USB3.0 5G WiFi速度慢的问题

    经常玩电脑,希望家里有个轻 nas,小米路由器是一个不错的选择,tbw买了一个小米路由器3G看重的是快速的速度(usb3.0 5G Wifi),及小米的可拓展性,使用usb3.0的usb接口,且使用5 ...

最新文章

  1. SQL性能优化没有那么神秘
  2. 怪不的软件开发这么挣钱,原来是有这么多职位
  3. OpenLayers事件处理Event.js(七)
  4. VSFTP之不能登录
  5. [JSOI2008]最大数 线段树解法
  6. ReadFile 和 补充CreateFile
  7. Linux安装配置Java1.8开发环境
  8. windows下安装配置mongodb
  9. 整理了90个Pandas案例,强烈建议收藏!
  10. 【中生代技术】1024程序员节快跑,提需求的来了
  11. 在ASP.NET中防止注入攻击
  12. CF(427D-Match amp; Catch)后缀数组应用
  13. 张俊芳电机学17章计算题以及答案
  14. WEP密码破解BT3-spoonwep2教程及下…
  15. Oracle 数据库限制IP地址连接
  16. ie打开本地html页面慢,win7使用ie浏览器访问网页显示缓慢、卡死的解决方法
  17. 软考成绩什么时候出?
  18. 【web安全学习篇1】VBS脚本基础编写总结
  19. 【MATLAB】MATLAB 可视化之极坐标图
  20. 刷新浏览器后不进行任何点击操作时,不播放声音 | 解决方案(VUE-Element)

热门文章

  1. MAC 安装flutter环境
  2. yolov5踩过的初坑(关于detect代码可以调用gpu而训练代码无法调用gpu的问题)
  3. L1-057 PTA使我精神焕发 (5 分) 天梯赛 详解
  4. sco unix 管理员速成
  5. 谈谈客户关系管理系统的应用与发展
  6. 1168: 6112不吉利的日期
  7. WLAN技术入门(二):WLAN基本概念
  8. 全部第三方工具简介 和网址 下载
  9. vite.config.ts 配置
  10. 基于Detectron2的BlendMask训练 BlendMask环境配置 COCO数据集