qbus00/mittzon-homeassistant
GitHub: qbus00/mittzon-homeassistant
通过 ESP32 和 ESPHome 将 IKEA Mittzon 站立式办公桌接入 Home Assistant,实现按钮模拟控制与 LIN 总线高度监听的开源智能家居集成方案。
Stars: 0 | Forks: 0
# 通过 ESPHome 将 Mittzon 站立式办公桌接入 Home Assistant
使用 ESP32 直接连接到控制面板按钮触点,从 Home Assistant 控制 IKEA Mittzon 站立式办公桌。
## 有效功能
- 通过 Home Assistant 开关进行**上升 / 下降**控制
- 通过 HA 按钮实体使用**记忆预设**按钮(M1,M2)
- 通过 LIN 总线 RX 监控实现**实时高度追踪**(厘米 + 原始编码器数值)
- **运动状态**传感器(空闲 / 上升 / 下降)
- **限位保护** —— 软限制可防止桌子超出安全范围
- **物理按钮安全性** —— 如果有人在面板上按下“下降”键超过了限制,ESP 会触发“上升”键,从而启动控制器的“双键 = 停止”行为
- **松手定时器** —— 最长保持 30 秒,之后自动释放
## 尚未实现的功能
- 完整的 LIN 总线控制(iDrive 专有校验和尚未破解 —— 详见 [PROTOCOL.md](PROTOCOL.md))
- 定位自动化(需要 LIN 注入或带位置反馈的定时驱动)
- 面板 LED 状态读取
## 快速入门
1. 打开 Mittzon 控制面板,将 4 根导线焊接到按钮焊盘上(UP,DOWN,M1,M2)+ GND
2. 以开漏模式连接到 ESP32 GPIO(参见 [HARDWARE.md](HARDWARE.md))
3. 将 LIN 总线(RJ45 针脚 3)直接连接到 GPIO16
4. 将 `esphome/qbus-desk.yaml` 复制到您的 ESPHome 配置目录中
5. 创建一个 `secrets.yaml`,包含您的 WiFi 凭据、API 密钥和 OTA 密码
6. 刷入固件并添加到 Home Assistant
有关完整的接线详情和面板拆解说明,请参阅 [HARDWARE.md](HARDWARE.md)。
## 硬件
- ESP32 WROOM-32 DevKit
- 细硅胶线(AWG28-30)
- 直接由 ROL 桌子控制器的 5V 电源轨供电
除了办公桌之外的额外总成本:如果您手头正好有一个 ESP32,大约为 3 美元。
## 接线概览
```
[ROL Group Controller]
|
| RJ45 cable (LIN bus + power)
|
[Mittzon Handset Panel]
| | | | |
UP DOWN M1 M2 GND
| | | | |
| | | | +-----+
| | | | |
| | | +---+ |
| | | | |
| | +---+ | |
| | | | |
| +---+ | | |
| | | | |
[GPIO26] [27] [33] [32] [GND] <-- ESP32 WROOM-32
(open-drain mode)
LIN bus tap (separate connection):
RJ45 pin 3 ----------- GPIO16 (UART2 RX)
RJ45 pin 8 ----------- ESP GND (shared with panel GND)
Power (from ROL desk controller):
RJ45 5V ------------ ESP32 VIN (5V)
RJ45 GND ------------ ESP32 GND
```
## Home Assistant 实体
| 实体 | 类型 | 描述 |
|---|---|---|
| Desk Up(桌子上升) | Switch(开关) | 按住上升,松开停止 |
| Desk Down(桌子下降) | Switch(开关) | 按住下降,松开停止 |
| Desk M1(桌子记忆 1) | Button(按钮) | 短按触发记忆 1 |
| Desk M2(桌子记忆 2) | Button(按钮) | 短按触发记忆 2 |
| Desk Height(桌子高度) | Sensor(传感器) | 当前高度,单位为厘米 |
| Desk Position(桌子位置) | Sensor(传感器) | 原始编码器数值 |
| Desk Movement(桌子运动) | Text Sensor(文本传感器) | 空闲 / 上升 / 下降 |
| Desk At Top(桌子位于顶端) | Binary Sensor(二值传感器) | 到达上限位 |
| Desk At Soft Bottom(桌子位于软下限) | Binary Sensor(二值传感器) | 到达下软限位 |
## 探索历程
这不是最初的方案。完整的故事 —— 包括 LIN 总线逆向工程、硬件中间人(MITM)桥接,以及为什么在开集电极总线上的注入在数学上是不可能的 —— 都记录在 [JOURNEY.md](JOURNEY.md) 中。
协议发现(解码的 PID、帧格式、尚未解决的问题)记录在 [PROTOCOL.md](PROTOCOL.md) 中。
## 项目结构
```
├── README.md # This file
├── HARDWARE.md # Wiring, components, panel teardown
├── PROTOCOL.md # iDrive/LIN bus findings
├── JOURNEY.md # Full story including failed attempts
├── esphome/
│ └── qbus-desk.yaml # Final working ESPHome config
├── scripts/
│ ├── sigrok-decode.py # LIN frame decoder for sigrok captures
│ └── lin-analyze.py # Per-second PID rate analysis
└── LICENSE # MIT
```
## 建议主题
`homeassistant` `esphome` `esp32` `ikea-mittzon` `standing-desk` `lin-bus` `reverse-engineering` `smart-home` `home-automation`
## 许可证
MIT
标签:DIY, ESP32, ESPHome, Home Assistant, IoT, LIN总线, Mittzon, 传感器, 升降桌, 单片机, 宜家, 开漏模式, 微控制器, 按钮模拟, 智能家居, 智能家居改造, 智能控制, 物联网, 硬件黑客, 高度追踪