本帖最后由 trz0332 于 2022-11-27 21:32 编辑
起因是想在家中创建一个访客的wifi,能生成二维码,客人来了扫码就能自动登录。然后设置定时任务,每天更改访客wifi密码,也就是说密码在固定时间重置效果展示,自动生成16位的字母+数字组合的随机密码。生成二维码,实测原生安卓,小米的二维码扫码,或者支付宝扫码可以直接连接,但是微信扫码不能自动连接,只能识别字符串显示wifi账号密码
环境:
a\hass安装在docker中。如果是其他方式安装的,需要手动修改代码中文件保存路径
b\使用aruba的iap。固件8.10
部署
1\在Aruba的控制器中添加一个访客ssid。比如我创建的就是Guest的名字
2、将压缩包解压后放入configuration.yaml同级目录目录结构
script.zip
(39.34 KB, 下载次数: 1)
修改show_qr.py里面的内容
import qrcode
import ap_aruba
if __name__=='__main__':
SSID='Guest' #需要修改密码的ssid
config={'host':'10.18.17.30','username':'admin','password':'xxxxxxxxx'}
ts=ap_aruba.aruba(config)
text=ap_aruba.v_code(16) #生成16位长度的随机字符
ts.modif_wlan_password(SSID,text) #修改ssid的密码
t2='WIFI:T:WPA;P:{};S:{};'.format(text,SSID) #生成自动连接的字符串
qr_code=qrcode.QRCode(version=3,box_size=12,border=1)
qr_code.add_data(t2)
qr_code.make(fit=True)
img=qr_code.make_image() #生成二维码
img.save('/config/www/passwd.png') #保存二维码位置
with open('/config/script/change_wifipasswd/passwd','w') as file:
file.write(text) #将密码保存到文件中,用于hass读取这个文件生成一个传感器用于展示密码
将里config这一行的ip,用户名,密码填写成自己的如果你访客的ssid不是Guest,那么需要SSID这一行改成自己的ssid
如果你不是用docker安装的,需要手动修改代码中2处文件保存的路径
3、在configuration.yaml的同级目录添加www文件夹。如果已经存在,跳过
4、hass配置文件中添加如下实体
camera: #创建一个摄像头的实体,用于显示二维码
- platform: local_file
name: qr_wifi
file_path: /config/www/passwd.png
sensor: #创建一个传感器,读取密码文件中的字符,直接展示密码
- platform: command_line
name: 访客wifi密码
command: "cat /config/script/change_wifipasswd/passwd"
scan_interval: 60
shell_command: #创建一个脚本
changewifipasswd: 'python /config/script/change_wifipasswd/show_qr.py'
5、重启hass
6、添加一个按钮,用来启动shell脚本来重置wifi密码
生成按钮之后,点击一下,就可以重置密码,并生成二维码了。
一般来说运行这个shell之后差不多要60s才能生成二维码和一个包含密码的文件
7、在表盘上添加一个摄像头,显示刚刚我们添加的qr_wifi这个摄像头和传感器 访客wifi密码8、在自动化中添加一个定时任务用于每天定时修改密码
大功告成了
如果你在aruba后台修改wifi密码,这里是不会同步更新,所以访客的密码就不建议在aruba后台修改,直接在hass页面去重置就行了
。。。。
后记
准备再淘一块墨水屏用来显示二维码,挂墙上直接展示
由于疫情快递到不了,等到了再更新屏幕展示二维码。
|