如何让树莓派自动连接Wifi,并且将自己的IP汇报给公网(或者内网)服务器呢?每次都连接显示器,或者串口TTL去查IP,觉得太麻烦了。
我写了个程序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都是这个模式了。
连上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服务器。
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