讓小米路由器變成一個聰明的WIFI(1):有人回家,它就發簡訊告訴你
我想讓我的小米路由器變成一個聰明的WIFI,idea是這樣的:當老婆回到家,小米路由器就自動發一條簡訊告訴我。
折騰了幾天,搞定,分享一下:
我的路由器型號:小米路由器mini (129元在官網淘的)
步驟一:首先要開啟小米路由器SSH, 獲得root
這個方面小米是開放的,操作方法網上有,不詳述了,見 點選開啟連結
步驟二:用SSH登入進去, 瞭解小米路由器是什麼樣
在你的電腦上輸入以下命令,登入小米路由器 (我的路由器IP是192.168.31.1)
ssh [email protected]然後輸入步驟一獲得的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!
-----------------------------------------------------
用 df 檢視一下儲存情況[email protected]:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 11008 11008 0 100% /
/dev/root 11008 11008 0 100% /
tmpfs 62872 2580 60292 4% /tmp
tmpfs 512 0 512 0% /dev
/dev/mtdblock7 1024 864 160 84% /data
/dev/mtdblock7 1024 864 160 84% /etc
tmpfs 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) 都是臨時儲存,如果把檔案寫在上面,重啟後將全部丟失
檢視一下作業系統情況
[email protected]:~# cat /etc/*release
DISTRIB_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, 晶片是mt7620aOpenWrt是為小型裝置用的linux
建議你先到各個目錄看一下,熟悉熟悉
看一下有哪些命令、程式可以用
用 help 檢視一下內建命令
[email protected]:~# help
help將返回一個可用命令列表
檢視一下, 有哪些程式可用[email protected]:~# 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 看一下有幾個網絡卡
[email protected]:~# ifconfig
br-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碼分別是什麼
[email protected]:~# iwinfo wl1 assoclist
D0: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
[email protected]:~# cd /etc
[email protected]:/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 wl
ifconfig | grep wl[0-9] | awk '{print $1}' | while read WLAN
do
#Use iwinfo to find MAC address of connected users
iwinfo $WLAN assoclist | grep dBm | awk '{print $1}' | while read MAC1
do
#if MAC1 address is the target we want
if [ $MAC1 = $MAC ]
then
#Calculate time passed since last_time
this_time=$(date +%y%m%d%H%M%S)
let time_passed=this_time-last_time
let interval_min=interval+1
if [ $time_passed -gt $interval_min ]
then
#construct the url , append the MAC address to the end
QUREY_URL="${URL}${MAC}"
#Use wget to query the url
wget -q -O web_response $QUREY_URL
echo "FIND $MAC"
return 1
fi
fi
done
done
return 0
}
#Main program: it's a dead loop, exec find_mac() every n seconds(defined by interval)
while [ 1 -lt 2 ]
do
if find_mac
then
#if found, update last_time
last_time=$(date +%y%m%d%H%M%S)
fi
sleep $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能執行,不要忘記賦予它執行的許可權,命令如下:
[email protected]:/etc # chmod +x smart_wifi
步驟四:寫一個網頁(URL), 用於接收併發送簡訊 (我用的是PHP)
<?php
if (isset($_GET['mac'])) {
mail("[email protected]","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中, 執行以下命令
[email protected]:~# /etc/smart_wifi &
命令中最後這個 "&" 符是讓它在後臺執行
要停止指令碼執行,可以用 ps | grep smart_wifi 命令檢視程序,再用 kill 命令幹掉它
執行效果: OK了,老婆一出現,連線上WIFI, 則我的手機將收到一條簡訊
有點聰明WIFI的感覺了!
最後小結:
1, 實際上,很多路由器都是OpenWrt的,這個指令碼同時可以在上面執行,不限於小米路由器。
2, 只要有想像力,這個指令碼乾點別的什麼也是可以的,比如:你一進門,燈就自動開了。你一靠近電視機,電視機就亮了。
3, 上述示例中,如果重啟路由器,指令碼並不會自動啟動。實際運用中,應該再寫一個服務,開機自啟動 (這個的做法俺賣個關子,不說了。。。)
參考:
相關推薦
讓小米路由器變成一個聰明的WIFI(1):有人回家,它就發簡訊告訴你
我想讓我的小米路由器變成一個聰明的WIFI,idea是這樣的:當老婆回到家,小米路由器就自動發一條簡訊告訴我。 折騰了幾天,搞定,分享一下: 我的路由器型號:小米路由器mini (129元在官網淘的) 步驟一:首先要開啟小米路由器SSH, 獲得root 這
小米路由器刷Xiaomi Mi WiFi Mini openwrt
Current Stable Release - OpenWrt 18.06.1,released on August, 18th 2018. there is also PandoraBox firmware for
每天一個liunx命令(1): echo命令
echo命令用於在終端顯示字串或變數 格式為:echo 【字串|變數】 1). 將 echo 命令的字串輸出到終端: [[email protected] ~]# echo helloworld h
寫一個遞迴函式DigitSum(n),輸入一個非負整數,返回組成它的數字之和, 例如,呼叫DigitSum(1729),則應該返回1+7+2+9,它的和是19
#include <stdio.h> #define _CRT_SECURE_NO_WARNINGS 1 int DigitSum(int i) { int sum = 0; int j = 0; if (i != 0) { j = i % 10; i = i /
小米手機承諾:如賺到了太多錢,它就會將部分利潤歸還給客戶
生態系統 生活方式 分享圖片 記錄 提升 智能家居 質量 設計 消費 中國智能手機制造商小米今年發布了一個公開上市計劃,並做出了一個獨特的承諾:如果它賺到了太多錢,它就會將大部分利潤歸還給客戶。 該公司表示,它將永遠將智能手機,智能家居設備和其他硬件的稅後凈利潤率
如何讓用戶主動分享小程序,極限工坊來告訴你
滿足感 ffffff 獲取 col color 測試 images 便宜 吸引 在不觸碰底線的情況下,如何讓小程序具備傳播和人感染性? 小程序上線至今,已經有了很多推廣方式,只要願意花錢花心思,推廣根本不是難事。 小程序寄生於微信生態,研究微信生態下的傳播規律成為重中之重。
【按鍵】[獨立按鍵] - 1: 單擊,雙擊,三擊以及N擊
此按鍵程式的實現的功能是單個獨立按鍵的[單擊],[長按],[雙擊],[三擊]以及[多擊]。本文分為三個部分, 第一個部分是說[單擊],[長按]的程式; 第二部分是講[雙擊]; 第三部分是講[三擊],[N擊]; 一、 [單擊]、[長按]程式 1. 簡單介紹
一個尖括號能幹什麼,畫一個笑臉開始(為了支援互動,它又增添了JavaScript。HTML頁面也越來越臃腫。於是CSS便誕生了。API和核心程式碼的出現使HTML能夠訪問更復雜的軟體功能--支援更高階的互動和雲服務整合。這就是今天的HTML5)
一個尖括號 < 一個尖括號能幹什麼 < ? 你可以編出一頂帽子 <(:-p 或一張笑臉 :-> 再或者更直接一些 20世紀90年代初,html作為一種簡單標記語言面世,用於在網際網路上顯示超文字。經過發展,html逐漸包含圖片和佈局設計功能。為了支援互動,
您如何設定一個在買家下訂單後的”第60秒“發簡訊通知賣家發貨,您需要考慮的是 像淘寶一樣的大併發量的訂單。
問題描述:讓您做一個電商平臺,您如何設定一個在買家下訂單後的”第60秒“發簡訊通知賣家發貨,您需要考慮的是 像淘寶一樣的大併發量的訂單。 1、具有排序功能的佇列 2、Redis+定時器 思路 1 原理:第一種思路是延遲佇列實現的原
並行作業1:MPI安裝,及示例程式執行
執行MPI程式 系統採用vm下ubuntu16.04 一、MPI系統安裝 1.1 安裝環境 (1)作業系統:Ubuntu 16.04.4 (64位)。 (2)g++ 版本:gcc version 5.4.0 1.2 安裝包下載地址及安裝包 (1)下載地址:http
一個好的管理者:場上暴君,場下朋友;工作魔鬼,生活好人
不要放縱紀律,不要對制度寬容,這是對員工的不負責;要幫助員工成長,提升收入,獲得更體面的生活,這是對員工最大的負責。胡林翼曾送給晚年的曾國藩一副壽聯:“以雷霆手段,顯菩薩心腸”。曾國藩閱後百感交集、熱淚盈眶。 管理者應該是什麼樣子的? 1、你是個好人,但不是個好的管理
(79)【按鍵】[獨立按鍵] - 1: 單擊,雙擊,三擊以及N擊
此按鍵程式的實現的功能是單個獨立按鍵的[單擊],[長按],[雙擊],[三擊]以及[多擊]。本文分為三個部分, 第一個部分是說[單擊],[長按]的程式; 第二部分是講[雙擊]; 第三部分是講[三擊],[N擊]; 一、 [單擊]、[長按]程式 1. 簡單介紹本按鍵程式的單擊和長按 首先說一下單擊,
問題: 5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第二,我第三; B選手說:我第二,E第四; C選手說:我第一,D第二; D選手說:C最後,我第三;
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第二,我第三; B選手說:我第二,E第四; C選手說:我第一,D第二; D選手說:C最後,我第三; E選手說:我第四,A第一; 比賽結束後,每位
俞敏洪:三件讓人幸福的事情:有人愛,有事做,有所期待——經典的人生需要效仿
1 這個世界上最正確的是跟自己比,想一想今天是不是比昨天進步了一點,想一想明年是不是比今年更加好一點。想一想,10年以後的你是不是比今年的你要更加出色; 2 一個人只要心中懷有詩意,就已經達到了詩的境界;而一個人生活的最高境界,就是詩意的生活。詩意的生活是一種感覺,是一種把現實生活中瑣碎的情感昇華為美好情感
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第二,我第三; B選手說:我第二,E第四; C選手說:我第一,D第二; D選手說:C最後,我第三; E選手說:我第四,A第一; 比
#include <stdio.h> int main() { int a = 0, b = 0, c = 0, d = 0, e = 0; for (a = 1; a
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第二,我第三; B選手說:我第二,E第四; C選手說:我第一,D第二; D選手說:C最後,我第三; E選手說:我第四,A第一
#include<stdio.h> #include<windows.h> int main() { int a = 0; int b = 0; int c = 0; int d = 0; int
Qt問題1:編譯出錯,退出程式碼2
初次使用Qt,建立了簡單的工程,編譯之後出現錯誤如下: Cannot find file: C:\Users\102\Desktop\codes\learnQt\QStackedWidg
等了 1 個多月,我就自己動手了
Photo @https://danielbachhuber.com/ 文 | 白科 有人問:開源是為了什麼? 這裡有一些
關於破解廣州天翼校園 + 小米路由器實現自動上網 突破wifi限制
關於破解廣州天翼校園 + 路由器刷韌體 實現自動上網 突破wifi限制 有位大神告訴我發現了github上有人破解了廣州天翼校園加密。具體倉庫請點選連結EsDialerGD 程式碼實現了認證和keep請求。 接下來我會介紹如何通過以上程式碼完成小米路由器3g
小米路由器3G如何解決USB3.0 5G WiFi速度慢的問題
經常玩電腦,希望家裡有個輕 nas,小米路由器是一個不錯的選擇,tbw買了一個小米路由器3G看重的是快速的速度(usb3.0 5G Wifi),及小米的可拓展性,使用usb3.0的usb介面,且使用