1. 程式人生 > >RaspberryPi自動連線多個無線,並且自動彙報IP

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