1. 项目背景与核心需求
最近在和朋友闲聊时发现一个有趣的现象:不少自由职业者或远程工作者都面临同一个难题——缺乏上班的仪式感导致工作效率低下。我自己作为长期居家办公的从业者,也经常陷入"床和电脑之间两点一线"的恶性循环。于是萌生了一个想法:能不能用技术手段给自己创造一个"上班打卡"的仪式感?
这个"标志位"项目的本质是通过程序化手段模拟上班的物理界限。就像传统办公室的工卡机一样,我们需要一个明确的"开始工作/结束工作"分界点。但不同于企业级的复杂考勤系统,个人使用的解决方案应该满足:
- 极简交互:最好一键完成状态切换
- 视觉反馈:明确区分工作/非工作状态
- 防作弊机制:避免自欺欺人的情况
- 数据记录:可回溯工作时间分布
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案选型
2.1 基础架构设计
经过对比几种实现方式,最终选择"物理设备+云端同步"的混合架构:
code复制[物理按钮] -> [Raspberry Pi] -> [Firebase] -> [跨端界面]
选择理由:
- 物理按钮提供真实的操作触感(比虚拟按钮更有仪式感)
- 树莓派作为本地中继确保响应速度
- 云端同步实现状态多端共享
- 网页界面方便随时查看状态
2.2 硬件组件清单
| 组件 | 型号 | 用途 | 成本 |
|---|---|---|---|
| 主控板 | Raspberry Pi 4B | 状态处理中枢 | ¥350 |
| 按钮模块 | 常开触点按钮 | 物理触发器 | ¥15 |
| LED灯环 | WS2812B | 视觉状态反馈 | ¥30 |
| 外壳 | 3D打印盒子 | 设备容器 | ¥50 |
提示:如果预算有限,可以用ESP8266替代树莓派,成本可控制在¥100以内
3. 核心功能实现
3.1 状态机建模
定义三种工作状态:
python复制class WorkState:
IDLE = 0 # 休息状态(红灯)
WORKING = 1 # 工作中(绿灯)
OVERTIME = 2 # 超时工作(黄灯闪烁)
状态转换逻辑:
- 短按按钮:IDLE↔WORKING切换
- 长按3秒:强制进入IDLE状态
- 持续工作>8小时自动
