在不失去押金的情况下让普通空调变智能

TL;DR – 该改装可行,费用约 $15

使用 ESP32 控制的步进电机旋转空调温度旋钮的 DIY 改装,让租客能够通过 Home Assistant 自动化完全模拟的 PTAC 设备,且无需在机体上钻孔或违约。


为什么步进电机改装是最简方案

结论: 对现有旋钮进行机械驱动可避免高压布线、智能插座不兼容以及房东的反对。

  • PTAC 的控制电路使用市电且没有低压控制脚,直接电气改装既不安全也可能导致违约。
  • 智能插座无法匹配该机的 NEMA 5‑20P 插头,且在压缩机运行时切断电源会损坏设备。
  • 将步进电机装在温度旋钮上(原文中的方案 2)只需要低压电源、几块廉价零件,且不需要对机壳进行永久性改动。

"我越是玩 ESP32 和家庭自动化,就越意识到对软件工程师来说看起来很‘烂’的东西,其实就是这些东西的工作方式。" – timvdalen(HN 评论)

零件清单与成本拆分(V0 & V1)

结论: 使用现成组件即可在 15 美元以下完成整个系统的组装。

零件 V0 成本 V1 成本 来源
ESP32 开发板 $6.00 $3.30(更小的板) Amazon / Temu
轴联轴器 $6.69 $2.42 Amazon / Temu
步进电机 + 驱动器 $2.66(3 件装) $2.66 Amazon
L 型支架 免费(回收 IKEA) $0.50 Amazon
螺丝 / 螺母 免费(备用) 可忽略不计 Amazon
USB 数据线 & 充电器 免费(抽屉旧货) $5.00 Temu
活页夹 & 纸板垫片 免费 可忽略不计 办公用品
总计: V0 约 $16,V1 约 $14。

机械设计 – 无需钻孔的安装方式

结论: 使用 L 型支架、活页夹和纸板垫片即可构建可拆卸的支架,满足租约限制。

  • 步进电机固定在 L 型支架上;支架的边缘压在空调控制腔壁上,将电机扭矩转换为旋钮转动。
  • 活页夹将整体固定在机体内部的金属板上,纸板垫片防止金属之间磨损。
  • 这种“烂”方案对租房来说已经足够,因为可以在不留下痕迹的情况下拆除。

"如果你只需要把电位器换成电子控制,vactrol 或数字电位器也能工作,但那样更具侵入性。" – kazinator(HN 评论)

固件 – 极简 MQTT 桥接

结论: 几十行代码即可让 ESP32 将电机暴露为 MQTT cover,实现 Home Assistant 控制。

// Pseudocode excerpt
void mqttCallback(char* topic, byte* payload, unsigned int len) {
  String msg = String((char*)payload).substring(0, len);
  if (String(topic) == COMMAND_TOPIC) handleCoverCommand(msg);
}

void handleCoverCommand(const String& cmd) {
  if (cmd == "OPEN")  moveMotor(stepsPerRev, speed);
  else if (cmd == "CLOSE") moveMotor(-stepsPerRev, speed);
  else if (cmd == "STOP") stopMotor();
}

设备会发布 MQTT discovery payload,Home Assistant 会自动创建一个 cover 实体。cover 的 OPEN/CLOSE 命令分别将旋钮正向或反向转动一整圈,对应“最冷”和“关闭”位置。

"https://esphome.io/ 会让软件这块只需要 10 分钟就能完成。" – vayun(HN 评论)

Home Assistant 集成 – 通用恒温器

结论: 将 MQTT cover 映射到 generic_thermostat 实体即可在无需自定义代码的情况下获得完整的恒温器逻辑。

climate:
  - platform: generic_thermostat
    name: Living Room AC
    heater: cover.ac_stepper_cover
    target_sensor: sensor.airgradient_temperature
    min_temp: 65
    max_temp: 80
    ac_mode: true
    cold_tolerance: 0.5
    hot_tolerance: 0.5

恒温器监控房间温度传感器(例如 AirGradient ONE),并向 cover 发送 OPEN/CLOSE 命令,实现温度超过设定点时自动开启空调,低于设定点时关闭。

实际表现与局限性

结论: 系统可用,但会出现机械下垂和偶尔电机卡住的情况,这在手动调节旋钮的麻烦面前仍算可接受。

  • 随着时间推移,活页夹的固定会松动,摩擦增大导致电机卡住,需要手动重新定位。
  • 尽管有下垂,用户仍报告整体手动工作量下降,并且电费有小幅节省。
  • 未来可以考虑 3D 打印支架或更刚性的固定方式来改进。

"如果你只需要一个按钮组件,ESPHome 完全可以取代自定义固件。" – timvdalen(HN 评论)

社区观点

  • 标准化接口: 多位评论者(如 EvanAnderson)希望制造商提供模拟/数字控制脚位,以免出现此类改装。
  • 替代方案: 有用户通过红外(见 vrighter)或直接将 ESPHome 接到恒温器端子(ethnt)来控制 PTAC,但这些方法通常需要更侵入性的布线。
  • 可靠性担忧: scottlamb 指出,如果 Linux 主机挂掉,MQTT/HA 组合会变得脆弱,并建议使用 ESPHome 内置的恒温器组件实现更自给自足的方案。

最后要点

结论: 低成本、非破坏性的机械改装(使用 ESP32 与步进电机)为租客提供了实用的智能空调方案,展示了 DIY 家庭自动化如何弥补传统模拟设备的不足。

  • 成本:< $15 的全部零件。
  • 安装:无需钻孔,可拆卸支架。
  • 控制:通过 MQTT 完全集成到 Home Assistant。
  • 权衡:机械磨损和偶尔卡机,但相比手动转动旋钮带来的不便要小得多。

该项目表明,“烂”硬件配合现代 IoT 软件能够在不违约或超预算的前提下,解决租房环境中的真实需求。

Sources