实践-使用ESP32提醒打卡
# 前言
由于我司使用钉钉人脸打卡,打开只能在公司门口打,但下班时,因为总总原因忘记打卡,即便弄了下班提醒,但因为加了一会班、打车接单就在楼下等原因,还是忘记打开,三次不打卡就要扣钱。
为了不让本就不富裕的我,雪上加霜,我计划弄个什么东西提醒我打卡,而这种提醒是能够感知我真的走了的时候才提醒,而不是单纯基于时间,比如设置 19 点下班提醒打卡,但我可能还不能走,而频繁的提醒又很打扰我。
# 计划
# 基于蓝牙 + 钉钉 API 的实现(不可行)
最开始我打算使用蓝牙来扫描我的手机蓝牙信号强弱来确认我是否已经走了,再通过钉钉 API 检查我是否已经打开,如果还没打卡就发消息询问我是否已经走了。
但经过查阅钉钉的 API 文档,考勤情况只有企业应用或第三方企业应用才有获取权限,那就莫得办法了,抓包的办法暂时不考虑。
# 基于蓝牙 + 询问实现
由于钉钉 API 接口暂时没办法拿到,那就只能在上面的基础上,改为当我人在特定的时间离开,就发消息询问我是否已离开并打卡,如果否(如上厕所)那就等待我回来复位,再一次离开时询问,一直提示到我给出明确反馈为止。
# 硬件选择
我使用合宙的 ESP32C3 来解决,这个开发板内置了 WIFI、低功耗蓝牙,足以满足需要。
# 代码实现
基于 MicroPython 实现
# 蓝牙
# Windows终端
# 可能需要python3.8+
scoop install python38
# 安装mpremote
pip install --user mpremote
# 安装bluetooth到开发板
python -m mpremote mip install bluetooth
python -m mpremote mip install aioble-central
笔记
安装 mpremote 卡了很久,可能是因为我电脑的 py 环境乱七八糟的原因,安装好后在终端输入 mpremote
根本没反应,重置也不行,最终在参考中获得解决办法。
参考
# 查看当前内置的模块
help('modules')
# 检查是否有bluetooth,有说明安装模块成功
# 参考
上次更新: 2023/10/30, 12:19:18