RaspberryPi自动连接多个无线,并且自动汇报IP

如何让树莓派自动连接Wifi,并且将自己的IP汇报给公网(或者内网)服务器呢?每次都连接显示器,或者串口TTL去查IP,觉得太麻烦了。

自动连接Wifi

我写了个程序raspi-wlan,可以自动连接Wifi,测试可以和EDUP N8508GS直接使用。

买了这个无线网卡,然后插上USB后,需要将raspi-wlan下载到树莓派,并添加到自动启动。

第一步,安装GIT:

sudo apt-get install -y git

第二步,获取raspi-wlan:

cd ~ && git clone https://github.com/winlinvip/raspi-tools.git

第三步,启动raspi-wlan

 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。

第一步,获取go-oryx。

cd ~ && git clone https://github.com/ossrs/go-oryx.git

第二步,安装go环境。

sudo apt-get install -y golang

第三步,编译go-oryx。

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

第三步,查看汇报的树莓派设备。

直接打开地址http://192.168.1.10:8085/api/v1/servers就可以看到树莓派汇报的信息了。

注意:将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

你可能感兴趣的:(RaspberryPi自动连接多个无线,并且自动汇报IP)