空调开着27度,我却能睡感冒?打造AI时代的智能生活
1. 我在27度的空调房里瑟瑟发抖
我是一个很注重生活质量(特别是卧室)的人。我折腾过空气质量探测(监控室内空气质量)、新风(改善室内空气质量-新风篇),还搭建了Prometheus套件(用 Prometheus 监控硬盘 SMART 信息)用来做监控。
但这个夏天却让我感觉很不对劲:卧室空调每晚开着27°C(面板温度),但我早上起床时却感觉冷嗖嗖的,甚至有一次还被冻感冒了。27°C让我感冒?这不对吧。

很明显,空调盯着的温度(回风口)和我感受到的温度(床头)不是一回事。要解决这个问题,首先我得知道床头温度是多少。开发板+焊传感器不适合我(麻烦+丑+不便宜),X鱼上USB供电 + WiFi传输的温湿度计只要60元,拿下!

将传感器放在床头采集了一晚数据后,事情有了一些眉目:空调面板温度27°C,但床头温度在深夜掉到了23°C出头。23°C的温度,再加上我喜欢踢被子,感冒就说得通了。
2. 为什么面板温度和床头温度差这么多?

空调面板温度恒定在27°C,但床头温度却掉到了23°C,如何解释?有一些假说:
- 晚上空调风量小(空调风速是1档)、对流不足(空调开了防直吹),空气不混合。(实际证据:同一时刻空调读到31.6°C,床头读到29.4°C)
- 我卧室装了新风,新风把室外热空气送到天花板,靠近天花板的空调觉得很热,于是持续把冷风送床头。
- 上述两种情况共同导致。
针对假说1(空气不混合),我尝试把空调温度提升到2档,但效果不明显,空调和床头探测的温度差没有改善。但其它的点就比较尴尬了:
- 防直吹不能关,关了的话空调风就直接对着我头吹了。
- 新风不能关,保持卧室空气清新(低二氧化碳浓度)也很重要。
所以我没有找到空调27°C + 床头23°C的具体原因。但不要紧,床头的传感器温度和我的体感温度差不多,我只需要打造一个能在不确定里运行的温度控制系统就行了✌
3. 乍看简单,实则复杂的温度控制
热了就调低空调温度,冷了就调高空调温度,听起来这是句废话,但落到能让我放心的系统里,至少要有这些原则:
- 必须要做闭环控制。空调27°C时,床头的温度会随着天气、风速、门窗变化而变化。不能让系统定死相对空调温度的偏移值,而是让系统基于床头温度动态调整空调温度。
- 可察觉性高于简洁性。写几个简单的逻辑判断听上去简洁,但能让系统察觉到自己失效的设计更加稳定可靠。
- 考虑冷热不对称。空调温度太低容易感冒,空调温度太高只是热醒。调低温度要谨慎。
- 无人监督+不发通知。系统运行的时候我在睡觉,所以出现异常不能轻举妄动。
这里必须得感谢小米官方打造的xiaomi-miloco项目,配置好之后AI能轻松地控制米家设备,能让人把精力从”如何控制空调”中解放出来~
定好温度控制目标:前半夜23°C(方便入睡)、后半夜24.5°C(防止着凉),接下来就是各种繁琐的细节打磨:
- 传感器掉线怎么办?传感器读到离谱的数据怎么办?怎么保证系统拿到的数据是最新的?
- 空调每次调整几°C?调整后能立马再调整吗?调整失败了怎么办?
- 要做空调自动开关机吗?晚上人工调整了空调温度怎么办?
等等等等。但好在现在有AI,在对齐了细节之后,AI落地实现的效率很高。于是,温度控制系统就顺利运行了。

4. 充满不确定性的世界
系统运行了一段时间后,我发现温度传感器有时会从局域网里消失,ping/arp不可达。每次消失几十分钟或几小时,没有规律。
排查传感器日志后发现,传感器频繁DHCP重分配IP,有时能正常获取IP (192.168.1.x),有时无法正常获取IP(169.254.x.x)。后者是DHCP失败后的 link-local,不可能是DHCP服务器主动下发的IP。考虑到同路由器下摄像头、小爱音响等设备一直正常连接,传感器本身有问题的可能性比较高。
我将问题反馈给卖家后,卖家说是我路由器错误下发了169.254.x.x——疑似有点外行了。
但不要紧。既然原因是DHCP获取不到IP,那么只要给传感器设置一个固定的局域网IP地址就行了。而且传感器掉线最多让系统不工作,但不会让空调温度调得过低或过高。
AI大幅度压缩了代码的实现,但没法压缩标定和验证的过程。温度控制的代码AI写得又快又好,但“什么温度觉得舒适”、“现场的空气流动”、“空调每次调整几°C”、“传感器是否长期有效”都需要靠真实的人和时间来把握。可能这些内容在未来会越来越珍贵。