WiFi 模块
模块介绍
Wi-Fi 连接管理类,提供简化的 Wi-Fi 连接功能,支持超时控制、重试机制、主机名设置和网络信息获取。适用于需要网络连接的物联网项目。
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| ssid | str | 'stemstaroffice' | Wi-Fi 名称(SSID) |
| password | str | 'ilovestem' | Wi-Fi 密码(开放网络则为空字符串) |
| timeout | int | 10 | 单次连接等待时间(秒) |
| retry | int | 1 | 重试次数(默认不重试) |
| hostname | str | None | 本地主机名(可选) |
导入和实例创建
python
from wifi import WiFi
# 使用默认配置(连接斯坦星球办公网络)
wifi = WiFi()
# 自定义配置
wifi = WiFi(ssid='your_ssid', password='your_password', timeout=10, retry=1, hostname='mydevice')核心属性方法
| 属性或方法 | 参数 | 返回类型 | 说明 |
|---|---|---|---|
| ip | 无 | str | 获取分配的 IP 地址 |
| subnet | 无 | str | 获取子网掩码 |
| gateway | 无 | str | 获取网关地址 |
| dns | 无 | str | 获取 DNS 服务器地址 |
| local_hostname | 无 | str | 获取本地主机名(如果设置了 hostname) |
| is_connected | 无 | bool | 当前是否已连接到 Wi-Fi 网络 |
| connect() | 无 | bool | 连接到指定的 Wi-Fi 网络,返回 True/False |
| disconnect() | 无 | None | 断开当前的 Wi-Fi 连接 |
| scan() | 无 | list | 类方法:扫描并打印可用的 Wi-Fi 网络列表,返回网络列表 |
使用示例
基本连接
python
from wifi import WiFi
# 自定义连接配置
wifi = WiFi(ssid='your_ssid', password='your_password', hostname='mydevice')
# 连接 Wi-Fi
success = wifi.connect()
if success:
print("连接成功!")
else:
print("连接失败")获取网络信息
python
from wifi import WiFi
wifi = WiFi(ssid='your_ssid', password='your_password')
if wifi.connect():
# 获取网络信息
print(f"IP 地址: {wifi.ip}")
print(f"子网掩码: {wifi.subnet}")
print(f"网关地址: {wifi.gateway}")
print(f"DNS 服务器: {wifi.dns}")
if wifi.local_hostname:
print(f"本地主机名: {wifi.local_hostname}")扫描可用网络
python
from wifi import WiFi
# 扫描可用 Wi-Fi 网络
networks = WiFi.scan()
# 查看扫描结果
for network in networks:
print(f"SSID: {network['ssid']}, 信号强度: {network['rssi']} dBm")断开连接
python
from wifi import WiFi
wifi = WiFi(ssid='your_ssid', password='your_password')
# 连接网络
wifi.connect()
# 执行一些网络操作...
# 断开连接
wifi.disconnect()
print(f"是否已断开: {'是' if not wifi.is_connected else '否'}")注意事项
网络环境
确保设备在 Wi-Fi 信号覆盖范围内,信号强度应在 -80 dBm 以上以获得稳定连接
密码设置
- 请确保 SSID 和密码正确,区分大小写
- 开放网络(无密码)请将 password 参数设置为空字符串
''
连接优化
- timeout 参数:单次连接等待时间(秒),可根据网络环境调整
- retry 参数:连接失败后的重试次数,建议根据实际需求设置
主机名使用
设置 hostname 后可通过 hostname.local 访问设备(需网络支持 mDNS 协议)