一种基于小米中枢网关米家自动化极客版的室内恒温控制系统
概述¶
洒家在开着空调睡觉时,老是会冻醒或者热醒,所以想在室内实现恒温。之前基于米家 APP 已经成功搞了一套恒温系统(具体方案以后再写),后来看到小米新出的小米中枢网关有一个米家自动化极客版的功能,可以基于图形化编程实现更丰富的自动化。洒家好奇图形化编程的表现力和效果如何,于是就买了一台玩了一下。这篇文章主要介绍洒家搞出来的这套实现室内恒温的方案,基于小米中枢网关的米家自动化极客版功能,编程读取米家智能温湿度计 3 的温度数据,负反馈控制空调、暖风机的开关与设置,从而自动化控制室内温度。同时讨论一下米家自动化极客版存在的产品设计问题。
按照洒家博客的惯例,本文不详细介绍基本操作、图形化编程概念等别人写过的最基础的东西。如果不熟悉这些基础知识,请先查阅小米官方和其他用户写的教程:
- 小米社区,2022-11-07:自动化极客版使用教程
 - 什么值得买,西红柿培养者,2022-12-07:小米中枢网关 2.0 来啦,增加极客模式,支持更多 WiFi 设备本地化执行
 - 什么值得买,楽佳,2023-01-23:米家自动化极客版 篇一:入门 极客版 VS 米家 APP
 - 什么值得买,楽佳,2023-01-24:米家自动化极客版 篇二:入门极客版 设备卡片篇
 
设备¶
- 小米中枢网关(ZSWG01CM)
 - 杂牌非智能单冷型空调
 - 米家空调伴侣 Pro 万能遥控版(KTBL04LM),自带蓝牙网关,已经停产(可替换为不带蓝牙网关的普通的空调伴侣智能插座)
 - 米家石墨烯暖风机(LSNFJ04ZM),支持 2.4 GHz Wi-Fi 联网接入米家
 - 米家智能温湿度计 3(MJWSD05MMC)
 
可能由于功耗、续航、可移动性、减少发热对温度测量结果的影响等原因,目前小米所有的智能温湿度计,包括小米电子温湿度计、小米米家电子温湿度计 Pro、小米米家蓝牙温湿度计 2、米家智能温湿度计 3,都是纽扣电池供电的,并且只支持通过蓝牙网关联网,不支持通过 Wi-Fi 联网。如果想要联网实现自动化,就需要一台能提供蓝牙网关的设备。本文介绍的方案中,小米中枢网关已经自带了蓝牙网关,因此米家空调伴侣 Pro 万能遥控版自带的蓝牙网关是重复的,可以替换为不带蓝牙网关的普通版空调伴侣智能插座。
如果空调是智能空调,可以直接接入米家,则不需要空调伴侣智能插座。如果空调是冷暖型的,则不需要额外购买制热的设备。洒家住的公寓只有一台单冷型空调,因此又额外购买了一台米家石墨烯暖风机用于制热。
程序和设置¶
米家自动化极客版部分¶
洒家的程序针对的是上文所述的单冷空调和暖风机两台设备,如果只有一台冷暖型的空调,对子函数部分稍加修改就可以正常工作。
编程和配置时需要注意:
- 为避免出现竞争条件,开启/关闭设备和开启/关闭自动化的先后顺序应该是:
- 开启时,先开启设备,再开启自动化。
 - 关闭时,先关闭自动化,再关闭设备。
 
 - 为防止设备频繁发出提示音,在开关和设置设备时,应该先检查该项目是否已经到达目标状态,如果已经到达目标状态就不做操作;或者直接禁用设备提示音。
 - 如果制热和制冷不是同一台设备,开启其中一台设备时,要关闭另一台设备。
 - 为防止频繁开启和关闭设备,目标温度需要设置成一个范围,温度上限和下限之间的间隔要合理设置,不能太小。
 - 目标温度范围是个性化的设置,对于不同的人和房间,合理的温度范围都有可能不同,需要多试一试,根据实际感受进行调整。
 
米家 APP 部分¶
创建 4 个手动控制,用于手动产生虚拟事件,从而控制自动化。
操作步骤:点击智能 - 右上角加号 - 手动控制,输入手动控制名称,点击添加执行动作 - 设备 - Xiaomi 中枢网关 - 产生虚拟事件,输入虚拟事件代码,点击右上角对勾确认,点击创建保存。点击刚刚创建的手动控制 - 更多设置,根据需要设置显示在房间页、通过小爱语音控制以及添加到桌面快捷操作。
4 个手动控制的名称和虚拟事件代码如下:
开启自动制热:event_enable_auto_heating开启自动制冷:event_enable_auto_cooling关闭自动控温:event_disable_auto_temperature查询自动控温状态:event_query_auto_temperature_status
创建 4 个自动化,在点击查询自动控温状态后,响应小米中枢网关产生的虚拟事件,产生通知和日志,从而接收查询结果。
操作步骤:点击智能 - 右上角加号 - 自动化,开始创建自动化。点击添加触发条件 - 设备 - Xiaomi 中枢网关 - 虚拟事件发生,输入虚拟事件代码,点击右上角对勾确认;点击添加执行动作 - 通知,输入通知内容。点击创建,保存时输入自动化的名称。
4 个自动化的虚拟事件代码,通知内容和名称如下:
status_auto_cooling_enabled,自动制冷已开启,查询自动制冷状态为开启...
剩余内容已隐藏