RaspberryPi自動連線多個無線,並且自動彙報IP
如何讓樹莓派自動連線Wifi,並且將自己的IP彙報給公網(或者內網)伺服器呢?每次都連線顯示器,或者串列埠TTL去查IP,覺得太麻煩了。
自動連線Wifi
買了這個無線網絡卡,然後插上USB後,需要將raspi-wlan下載到樹莓派,並新增到自動啟動。
第一步,安裝GIT:
sudo apt-get install -y git
cd ~ && git clone https://github.com/winlinvip/raspi-tools.git
python ~/raspi-tools/raspi-wlan.py winlin-1st liling
程式的引數就是要連線的Wifi的SSID,後面是密碼。可以跟多個,這樣會先掃描下哪個是可以連線的,然後一個一個嘗試連線。譬如:
python ~/raspi-tools/raspi-wlan.py winlin-1st liling winlin-2st stone
第四步,完成
執行上面的程式後,會不斷檢測WIFI,至少保證有一個wifi是可用的。可以使用ifconfig看看當前無線的ip:
winlin@raspberrypi:~$ ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr e8:4e:06:1c:2d:a7
inet addr: 192.168.1.125 Bcast:255.255.255.255
inet6 addr: fe80::4416:f637:4425:7abb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1726 errors:0 dropped:7 overruns:0 frame:0
TX packets:1529 errors:0 dropped:0 overruns:0 carrier:0
collisions: 0 txqueuelen:1000
RX bytes:255636 (249.6 KiB) TX bytes:302757 (295.6 KiB)
可以看到Wifi連線成功了。
備註: 目前程式支援的是WPA-PSK和WPA2-PSK,一般WIFI都是這個模式了。
主動彙報IP
連上WIFI後,如何主動彙報給伺服器呢?這就需要用到另外一個專案了go-oryx,這個專案是流媒體伺服器,同時這個流媒體伺服器還具備彙報的功能,能將自己的資訊彙報給外部的API伺服器,而這個專案裡面也有個API伺服器可以供彙報。
心跳彙報
我們使用go-oryx的心跳功能,將資訊彙報到API伺服器(後面會講如何搭建API伺服器)。注意是在樹莓派上執行心跳彙報的go-oryx。
cd ~ && git clone https://github.com/ossrs/go-oryx.git
第二步,安裝go環境。
sudo apt-get install -y golang
cd ~/go-oryx && go build -o objs/oryx .
第四步,寫配置檔案~/go-oryx/pi.json
,內容如下:
{
"listen": 1935,
"daemon": true,
"log": {
"tank": "console",
"level": "trace"
},
"go": {
"gc_interval": 5
},
"heartbeat": {
"enabled": true,
"interval": 9,
"url": "http://192.168.1.10:8085/api/v1/servers",
"device_id": "my-respberry-pi2",
"summaries": true
},
"stats": {
"network": 1
}
}
其中,把192.169.1.10
換成你的伺服器IP,把my-raspberry-pi2
換成你想要的樹莓派標識。
第五步,啟動。
cd ~/go-oryx && ./objs/oryx -c pi.json
完成了,等搭建好API伺服器,就可以看到自動彙報的樹莓派IP了。
API伺服器
需要找臺和樹莓派在一個內網的伺服器,或者放在公網的伺服器。在伺服器上,而不是樹莓派上,安裝API伺服器。
第一步,獲取API伺服器。
cd ~ && git clone https://github.com/ossrs/go-oryx.git
第二步,啟動API伺服器。
python ~/go-oryx/research/api-server/server.py 8085
第三步,檢視彙報的樹莓派裝置。
注意:將
192.168.1.10
換成你的伺服器的IP。
以後不管到哪裡,只要提前把Wifi的SSID和密碼寫入啟動引數,就能看到這個樹莓派的IP了。
自動啟動
上面的命令都是手動啟動的,若需要自動啟動,可以編輯檔案:
sudo vi /etc/rc.local
輸入上面的命令,就可以自動執行,可以使用nohup後臺啟動,具體參考相關資料。例如我的樹莓派的自動啟動命令是:
# start htbt
(cd /home/winlin/go-oryx && nohup ./objs/oryx -c pi.json >/dev/null 2>&1 &)
# start wlan configer.
(cd /home/winlin/raspi-tools && nohup ./raspi-wlan.py winlin-1st liling winlin-2nd stone Chnvideo chnvideo >/dev/null 2>&1 &)
exit 0