当前位置: 首页 > news >正文

【ESP32+Python】WIFI连接包括固定账号密码+选择WIFI在输入密码

import network
import time# 创建WLAN对象
wlan = network.WLAN(network.STA_IF)def scan_and_display_wifi_networks():# 激活接口wlan.active(True)# 扫描附近的WiFi网络networks = wlan.scan()print("可用的WiFi网络:")for i, net in enumerate(networks):ssid = net[0].decode('utf-8')  # 网络名称bssid = ''.join('%02x:' % b for b in net[1])[:-1]  # MAC地址channel = net[2]  # 信道RSSI = net[3]  # 信号强度authmode = net[4]  # 加密方式hidden = net[5]  # 是否隐藏SSID# 将加密方式转换为人类可读的格式auth_modes = ['OPEN', 'WEP', 'WPA-PSK', 'WPA2-PSK', 'WPA/WPA2-PSK', 'WPA2']authmode_str = auth_modes[authmode] if authmode < len(auth_modes) else '未知'# 打印网络信息print(f"{i + 1}: SSID: {ssid}, BSSID: {bssid}, 信道: {channel}, 信号强度: {RSSI}, 加密方式: {authmode_str}, 隐藏: {hidden}")return networksdef connect_to_wifi(max_attempts=10):attempt_count = 0
# ---- 固定wifi -------while not wlan.isconnected() and attempt_count < max_attempts:print(f"尝试连接WiFi... (第 {attempt_count + 1} 次尝试)")wlan.connect('wifi账号', 'wifi密码')# 只支持2.4的wifiattempt_count += 1time.sleep(3)  # 等待3秒后再次尝试连接if wlan.isconnected():print("WiFi连接成功!")print("IP地址:", wlan.ifconfig()[0])mqtt()send_post_request()start_websocket()else:print(f"WiFi连接失败,尝试了 {max_attempts} 次。")
# ---- 固定wifi -------
# ---- 选择wifi -------
# try:
#  selection = int(input("请选择要连接的WiFi网络编号:")) - 1
#  if 0 <= selection < len(networks):
#     ssid = networks[selection][0].decode('utf-8')
#     password = input(f"请输入{ssid}的密码:")
#     wlan.connect(ssid, password)
#    if wlan.isconnected():
#       print("WiFi连接成功!")
#       print("IP地址:", wlan.ifconfig()[0])
#       # 其他方法#   else:
#     print("WiFi连接失败,请检查密码是否正确,并重试。")
#  else:
#       print("选择的网络编号不正确。")
#   except ValueError:
#    print("请输入一个有效的数字。")
# ---- 选择wifi -------def main():while True:networks = scan_and_display_wifi_networks()# 如果扫描到的网络列表不为空,则提示用户选择并连接if networks:print("执行连接。")connect_to_wifi()if wlan.isconnected():break  # 如果连接成功,退出循环else:print("未扫描到可用的WiFi网络。")time.sleep(3)  # 等待1秒后重新扫描和连接if __name__ == "__main__":main()

相关文章:

  • spring boot学习第十一篇:发邮件
  • YOLOv8改进 | 检测头篇 | 独创RFAHead检测头超分辨率重构检测头(适用Pose、分割、目标检测)
  • macOS Sonoma 14系统安装包
  • Xray 工具笔记
  • NCCL源码解析: P2P 连接的建立
  • Leetcode 121 买卖股票的最佳时机
  • 2-8 单链表+双链表+模拟栈+模拟队列
  • Vue-57、Vue技术路由的参数如何传递
  • vue3 可视化大屏自适应屏幕组件
  • error: object ‘FastMNNIntegration‘ not found
  • 159基于matlab的基于密度的噪声应用空间聚类(DBSCAN)算法对点进行聚类
  • 【echarts】入门示例
  • 基于微信小程序的新生报到系统的研究与实现,附源码
  • dolphinDB使用select筛选时间字段
  • PKI - 03 密钥管理(如何进行安全的公钥交换)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【Leetcode】104. 二叉树的最大深度
  • 【翻译】babel对TC39装饰器草案的实现
  • Apache Pulsar 2.1 重磅发布
  • gulp 教程
  • JavaScript函数式编程(一)
  • JavaScript学习总结——原型
  • Linux下的乱码问题
  • Lsb图片隐写
  • PermissionScope Swift4 兼容问题
  • PHP的Ev教程三(Periodic watcher)
  • Spark RDD学习: aggregate函数
  • spring + angular 实现导出excel
  • SQLServer之索引简介
  • 工作手记之html2canvas使用概述
  • 事件委托的小应用
  • 算法系列——算法入门之递归分而治之思想的实现
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信支付JSAPI,实测!终极方案
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​2020 年大前端技术趋势解读
  • ​Java并发新构件之Exchanger
  • ###C语言程序设计-----C语言学习(6)#
  • ( 10 )MySQL中的外键
  • (39)STM32——FLASH闪存
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Micro Framework初体验
  • .net Signalr 使用笔记
  • ?.的用法
  • ?php echo ?,?php echo Hello world!;?
  • [ C++ ] STL---stack与queue