Python Script to Open SJTU Dormitory Smart Lock
可以解锁交大智能寝室门锁的 Python 代码
本项目旨在提供一个思路原形 以便大家后续开发接入 iOS 自动化/米家/Apple Homekit
推荐 Python 版本: 3.9-3.10
pysjtu
requests
可通过 python3 -m pip install -r ./requirements.txt 一键安装
修改src/config.py
JACCOUNT_USERNAME = 'Amagi_Yukisaki' # 这里填入你的jAccount用户名 不含'@sjtu.edu.cn'
JACCOUNT_PASSWORD64 = 'PASSW0RD' # 这里填入你的jAccount密码的base64编码
ROOM_ID = '00112233445566778899aabbccddeeff' # 扫描你的门上的二维码 识别结果'roomid='后面的字符串,这里扫描结果会是40位,需要删除后8位密码 base64 编码获取方式
(base) Amagi@iMacPro ~ $ python3
Python 3.9.12 (main, Apr 5 2022, 01:53:17)
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> base64.b64encode(b'PASSW0RD')
b'UEFTU1cwUkQ='
ROOM_ID 获取方式
扫描门上二维码,复制roomid=后的字符串,删去最后 8 位。
python3 ./src/unlock.py
你需要的物品
- 一台可以 ssh 远程访问的服务器
- 一个可以远程执行 ssh 命令的自动化工具(例: iOS 快捷指令)
推荐使用venv为项目创建虚拟环境,并避免对同一服务器上其他应用的影响
所有命令默认运行在项目根目录下
sudo apt install python3-venv # for Debian and Ubuntu
sudo yum install python3-virtualenv # for CentOS and Fedora
sudo pacman -S python-virtualenv # for Arch Linux and Manjaropython3 -m venv venv此操作将在当前目录下创建名为venv的文件夹和虚拟环境
./venv/bin/activate
pip install -r ./requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple同本地配置
将
cd /home/automaton/jLock # your project directory修改为你项目根目录的绝对路径
调用脚本
/home/automaton/jLock/scripts/[unlock/status/refresh_session.sh]即可
unlock.sh: 开锁status.sh: 检查锁的状态,返回0表示开启,1表示关闭(仅包含本地脚本开锁的状态,也就是说,如果通过其他方式,比如扫码开锁,这里仍会显示为锁定)refresh_session.sh: 强行刷新登录状态,可加入crontab定时任务用于加快每次开锁速度
本部分仍待完善,这里先简单贴一个配置文件
switch:
- platform: command_line
scan_interval: 0.5
switches:
door_lock:
command_state: /home/automaton/jLock/script/status.sh
command_on: /home/automaton/jLock/script/unlock.sh
unique_id: io.yukisaki.jlock.whateveryoulike
lock:
- platform: template
name: Door Lock
value_template: "{{ is_state('switch.door_lock', 'off') }}"
unlock:
service: switch.turn_on
target:
entity_id: switch.door_lock
lock:
service: switch.turn_off
target:
entity_id: switch.door_lock鼓励大家利用本项目二次开发 将交大智能门锁接入各大智能家居平台
@PhotonQuantum for pysjtu
MIT 许可