2024-05-25 00:22:20 +08:00
|
|
|
|
|
|
|
|
|
## Linux嵌入板卡自发热点连接无线网络
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 介绍
|
|
|
|
|
|
|
|
|
|
Linux嵌入板卡发出热点供客户端连接,客户端通过浏览器访问热点,连接到Linux嵌入板卡的热点,并进行交互。
|
|
|
|
|
|
2024-05-25 21:59:11 +08:00
|
|
|
|
- 连接逻辑:
|
|
|
|
|
|
|
|
|
|
1. 扫描Wi-Fi,并将Wi-Fi list保存为json格式,存储在本地,命名为`scaned_wifi_list.json`;
|
|
|
|
|
2. 检查Wi-Fi连接状态,若已连接,则退出程序;
|
|
|
|
|
3. 关闭Wi-Fi,并启动热点和web服务器,web服务器监听80端口,并提供一个页面,页面中包含Wi-Fi列表;
|
|
|
|
|
4. 等待用户选择 Wi-Fi 网络并输入密码,并连接到用户选择的 Wi-Fi 网络;
|
|
|
|
|
5. 如果Wi-Fi连接成功,则显示Wi-Fi连接成功页面,并提供交互页面;
|
|
|
|
|
6. 如果Wi-Fi连接失败,则重新扫描Wi-Fi,并提示用户重新连接.
|
|
|
|
|
|
2024-05-25 23:25:49 +08:00
|
|
|
|
- 灯光指示逻辑:
|
|
|
|
|
|
|
|
|
|
1. 当红灯亮起时,热点开启,等待客户端连接,连接成功后,红灯熄灭;
|
2024-05-25 23:28:40 +08:00
|
|
|
|
2. 当蓝灯亮起时,程序正常启动,如果蓝灯不亮起,则程序未启动,如果蓝灯熄灭,则已连接Wi-Fi,程序已关闭.
|
2024-05-25 23:25:49 +08:00
|
|
|
|
|
2024-05-25 00:22:20 +08:00
|
|
|
|
### 环境准备
|
|
|
|
|
|
|
|
|
|
#### (1) 安装依赖项:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo apt-get update
|
2024-05-25 21:59:11 +08:00
|
|
|
|
sudo apt-get install -y hostapd dnsmasq
|
2024-05-25 00:22:20 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### (2) 克隆项目到本地并安装依赖:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
// 克隆项目到本地 https or ssh
|
|
|
|
|
git clone http://43.132.157.186:3000/gaohz/wifi_hotpot.git
|
|
|
|
|
cd wifi_hotpot
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### (3) 安装Python端环境依赖:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo pip install flask psutil
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### (4) 配置开机自启动服务项:
|
|
|
|
|
|
2024-05-25 21:59:11 +08:00
|
|
|
|
##### (4.1) 配置WiFi热点服务项:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. 创建一个service文件:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo vim /etc/systemd/system/hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. 在打开的文件中,添加以下内容:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[Unit]
|
|
|
|
|
Description=Hotspot Service
|
|
|
|
|
After=network.target
|
|
|
|
|
|
|
|
|
|
[Service]
|
2024-05-27 21:20:54 +08:00
|
|
|
|
ExecPre=/bin/sleep 5
|
2024-05-25 21:59:11 +08:00
|
|
|
|
ExecStart=create_ap wlan0 eth0 Takway-Toys --no-virt
|
|
|
|
|
User=root
|
|
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
|
WantedBy=multi-user.target
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
请确保将`wlan0`替换为你的无线网卡接口,将`eth0`替换为你的有线网卡接口,`Takway-Toys`替换为你想要设置的热点名称。
|
|
|
|
|
|
|
|
|
|
3. 保存并关闭文件。
|
|
|
|
|
|
|
|
|
|
4. 重新加载systemd配置:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo systemctl daemon-reload
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
5. 启用并启动Hotspot service:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# sudo systemctl enable hotspot.service
|
|
|
|
|
sudo systemctl start hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. 如果需要停止Hotspot service,可以使用以下命令:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo systemctl stop hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
7. 如果需要查看Hotspot service的状态:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo systemctl status hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
##### (4.2) 配置WiFi热点管理服务项:
|
|
|
|
|
|
2024-05-25 00:22:20 +08:00
|
|
|
|
|
|
|
|
|
- 编辑
|
|
|
|
|
```
|
|
|
|
|
sudo vim /etc/systemd/system/wifi_hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 内容:
|
|
|
|
|
```
|
|
|
|
|
[Unit]
|
|
|
|
|
Description=WiFi Hotspot Wrapper
|
|
|
|
|
After=network.target
|
|
|
|
|
Wants=network.target
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
Type=oneshot
|
|
|
|
|
ExecStart=python3 /home/orangepi/wifi_hotpot/wifi_manager.py
|
|
|
|
|
WorkingDirectory=/home/orangepi/wifi_hotpot
|
|
|
|
|
User=root
|
|
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
|
WantedBy=default.target
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置
|
|
|
|
|
```
|
|
|
|
|
sudo systemctl daemon-reload
|
|
|
|
|
sudo systemctl enable wifi_hotspot.service
|
|
|
|
|
# sudo systemctl disable wifi_hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 开始(测试)
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo systemctl start wifi_hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 查看输出
|
|
|
|
|
```
|
|
|
|
|
sudo systemctl status wifi_hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### (5) 配置热点信息:
|
|
|
|
|
|
2024-05-25 22:10:04 +08:00
|
|
|
|
|
2024-05-25 00:22:20 +08:00
|
|
|
|
- 手动连接`http://192.168.12.1/`
|
|
|
|
|
|
2024-05-25 21:59:11 +08:00
|
|
|
|
- 连接成功后,输入用户名密码,即可进入交互界面。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 其他参考命令
|
|
|
|
|
|
|
|
|
|
- 创建热点:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo systemctl start hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 关闭热点:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo systemctl stop hotspot.service
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 开启Wi-Fi连接:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
nmcli dev wifi connect Innoxsz-Public password innox2023
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 断开Wi-Fi连接:
|
|
|
|
|
|
|
|
|
|
```
|
2024-05-27 21:20:54 +08:00
|
|
|
|
nmcli dev disconnect wlan0
|
2024-05-25 21:59:11 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 扫描Wi-Fi:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
nmcli dev wifi
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 检查Wi-Fi连接状态:
|
|
|
|
|
```
|
|
|
|
|
nmcli dev status
|
|
|
|
|
```
|
2024-05-27 21:20:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### create_ap
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo create_ap wlan0 eth0 Takway-Toys --no-virt
|
|
|
|
|
+```
|