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, 传感器, 升降桌, 单片机, 宜家, 开漏模式, 微控制器, 按钮模拟, 智能家居, 智能家居改造, 智能控制, 物联网, 硬件黑客, 高度追踪