米家APP控制小米空调实现全年自动控制的尝试(上)
空气调节对营造舒适的居住环境很重要,炎夏的清凉,寒冬的温暖,雾霾时的清新,返潮时的干爽,干燥时的湿润,当然最好是环保低碳能耗低。
1. 目标参数及实现途径
实现稳定舒适的室内空气环境,需要控制好温度、湿度、换气(含过滤)几个主要参数,实现的途径以及节能措施如下。
降低温度:空调制冷,选用高能效比型号。
升高温度:地暖、空调制热,选用高能效比型号。
降低湿度:空调除湿、除湿机,选用高能效比型号。
升高湿度:加湿器。
换气过滤:新风机,选用全热交换型号。
我现在的居所已经用了20年,也到了要重新装修的阶段,准备上全屋保温和地暖,都经过了实验,其中全热交换加全屋保温可以降低空调能耗70%。虽然变频空调制热并不会让人觉得难受,虽然广东的冬天很短,但地暖的优越性则体现在赤脚踩在暖暖的地板上看着窗外寒风扫落叶那种幸福感。
上面的各种参数会互相影响,需要操作的电器也不少,靠人力来实现,是很烦恼的事情。舒适环境少不了智能家居的加持。
这篇文章主要是尝试用米家APP控制3台小米空调来实现不同生活空间的温度升降和降低湿度三个操作。其他内容另文详述。
2. 具体实现
家里的空调布置是连通的厨房和客厅2台小米,主房一台小米,祖辈房和儿童房各1台格力。其中小米可以直接加入米家APP,但是因为米家APP的缺陷,只能控制开停和转换工作模式,无法控制目标温度和出风角度,所以与格力一样,都得配置空调伴侣或者万能遥控器来实现温度设定。这几乎是米家APP最让我不爽的地方。
我有简单编写PLC程序的经验,觉得编写米家APP的自动智能和编程差不多,不过因为没有寄存器和计数器可用,而且也不支持状态条件,一些稍微复杂的控制,实现起来其实挺让人难受的。我在2019年夏天就开始断断续续编程,从制冷开始,到加入制热,到加入除湿,都是以条件为中心进行,越来越复杂,debug起来脑壳痛。这次打算再次推倒重来,尝试以执行为中心编程,算是Ver3.0。下面先看看推倒前的样子,以及什么是以条件为中心。
2.1 空调自动智能V2.5
米家APP有一个非常非常不好的地方,每一条自动智能(我实在无法称之为程序或者语句)编写后,就不能调整位置,中间也不能插入新自动智能,导致的后果就是,照明、空调、扫地机等等程序全部混在一起,一旦要加什么功能,光翻看相关自动智能都要头大,更别说debug了,所以不得不留下大量的空自动智能占位,方便以后编辑。以第一条自动智能为例,第一位A表示空调控制,第二位y是序列号;右边-Ay是指执行这条自动智能会失能“Ay”(也就是本条自动智能);+opqrz表示使能Ao、Ap、Aq、Ar、Az这几条自动智能,其中Az与Ay互锁,以此来模拟一个状态寄存器 。
还没打开每一条自动智能的内容,已经头大了吧?我这次是打算修改一个bug:门窗打开1分钟后会执行As,但门窗在5分钟内关上,就会触发Aw,失能As打断其执行,避免空调在第5分钟关掉。我明明实验过一个“开门3分钟后小爱音箱放音乐”的自动智能是可以打断执行的,但是As并不会被打断,我也不知道为什么(强烈呼唤米家APP提供寄存器) 。但是这个bug实在没有勇气去改了,因为:
2.2 以条件为中心编程
新建一条自动智能,进入编辑界面,首先要输入条件(例如今天22:36),然后输入满足条件后执行什么(例如向手机发送通知),保存后如下图(这刚好也是我用来占位的“空自动智能”)。上边“如果”那部分就是条件区,下边“就执行”那部分就是执行区。
下图(图是拼接的,自动智能编辑界面无法长截屏)展示的编号Aa自动智能,条件只有一个,执行区一大堆内容,这就是我所谓的以条件为中心。
后果是什么呢,就是在编程的时候,你根本没办法记住某台空调,某盏灯究竟受多少个条件的控制,直到哪天凌晨3点小爱同学突然喊你去关窗,或者天寒地冻出门回家发现暖气关掉很久了,你才能从日志里面看到究竟是哪条自动智能出的问题。
另外,每一条自动智能的“生效时间段”也会给你下套。
所以,我打算放弃以条件为中心编程,推倒一切,改为以执行为中心编程,也就是反过来,罗列条件,让执行区尽量简洁。试试看吧,具体请见下一篇。
西山云舞
校验提示文案
值友2059603828
校验提示文案
Zackkop
校验提示文案
发条兔兔
校验提示文案
西山云舞
修改Ai条件去掉室内温度,因为外26内27时,空调不制冷只吹风。
6月3号,上午开启客厅空调。室内温湿度传感器显示27.6度,空调设置温度26.8度,空调运行功率迅速上升到约900W,湿度从66%降到56%的过程大概一小时,温度也下降到26.6度,然后湿度和温度维持不变,功率依然是900瓦。直到中午温度从29度上升到31度,空调功率一直维持在900瓦左右,到了11:20,厨房空调自动开之后开始下降。
经过观察,奶奶在6:18起床煮早餐,煮早餐的过程温度湿度上升迅速。要考虑在检测到奶奶起床的时候就开启大厅空调来维持温度,避免后面大功率降温。
校验提示文案
西山云舞
6月6号,上午开启空调。室外27度,温湿度传感器显示27.9度,空调设置温度27.2度,空调运行功率迅速上升到约500W,湿度从71%降到62%的过程大概1.5小时,温度也下降到27.2度,然后湿度和温度维持不变,功率200瓦到10点室外31度晴,空调功率一直维持在200瓦左右,到了11:20,室外温度达到33度厨房空调自动开之后一直维持在220瓦左右。厨房空调在做饭的时候曾经到过1千瓦。之后客厅空调一直在200瓦左右。厨房空调设定27.8摄氏度,在200到350瓦之间,到3点,室外温度降到32度以下,厨房空调关闭后,客厅空调上升到600。4:00重新打开厨房空调,很快两个空调就降到200~250瓦之间。
校验提示文案
西山云舞
6.10双温度计记录室内外温差6.6度时两台空调400W+400W,所以室外升温过程比室内高4度就应该开第二台空调。降温过程高2度关第二台空调。
6.22晚上把空调风速从自动调到2,原因是发现一旦空调进入高功率状态就一直会持续,只是关闭空调再打开,就马上进入低功率的状态。怀疑是自动风速引起的问题,高功率的时候高风速,低温空气往远处转移,使空调附近的空气温度上升,导致持续高功率。今天白天的温度波动幅度最高0.8度,26.7-27.5
2019年12月18日大幅度变更程序,加入冬天制冷部分。
1.室内超过28度用红外遥控器来开空调制冷模式并设定温度(之后只开关空调,不改变模式和温度) ,使能的空调
2019年12月18日,冷空气后回暖,出现室外27开空调,室内才25
校验提示文案
杨超越真是太好了
校验提示文案
值友2059603828
校验提示文案
西山云舞
校验提示文案
杨超越真是太好了
校验提示文案
西山云舞
6.10双温度计记录室内外温差6.6度时两台空调400W+400W,所以室外升温过程比室内高4度就应该开第二台空调。降温过程高2度关第二台空调。
6.22晚上把空调风速从自动调到2,原因是发现一旦空调进入高功率状态就一直会持续,只是关闭空调再打开,就马上进入低功率的状态。怀疑是自动风速引起的问题,高功率的时候高风速,低温空气往远处转移,使空调附近的空气温度上升,导致持续高功率。今天白天的温度波动幅度最高0.8度,26.7-27.5
2019年12月18日大幅度变更程序,加入冬天制冷部分。
1.室内超过28度用红外遥控器来开空调制冷模式并设定温度(之后只开关空调,不改变模式和温度) ,使能的空调
2019年12月18日,冷空气后回暖,出现室外27开空调,室内才25
校验提示文案
西山云舞
6月6号,上午开启空调。室外27度,温湿度传感器显示27.9度,空调设置温度27.2度,空调运行功率迅速上升到约500W,湿度从71%降到62%的过程大概1.5小时,温度也下降到27.2度,然后湿度和温度维持不变,功率200瓦到10点室外31度晴,空调功率一直维持在200瓦左右,到了11:20,室外温度达到33度厨房空调自动开之后一直维持在220瓦左右。厨房空调在做饭的时候曾经到过1千瓦。之后客厅空调一直在200瓦左右。厨房空调设定27.8摄氏度,在200到350瓦之间,到3点,室外温度降到32度以下,厨房空调关闭后,客厅空调上升到600。4:00重新打开厨房空调,很快两个空调就降到200~250瓦之间。
校验提示文案
西山云舞
修改Ai条件去掉室内温度,因为外26内27时,空调不制冷只吹风。
6月3号,上午开启客厅空调。室内温湿度传感器显示27.6度,空调设置温度26.8度,空调运行功率迅速上升到约900W,湿度从66%降到56%的过程大概一小时,温度也下降到26.6度,然后湿度和温度维持不变,功率依然是900瓦。直到中午温度从29度上升到31度,空调功率一直维持在900瓦左右,到了11:20,厨房空调自动开之后开始下降。
经过观察,奶奶在6:18起床煮早餐,煮早餐的过程温度湿度上升迅速。要考虑在检测到奶奶起床的时候就开启大厅空调来维持温度,避免后面大功率降温。
校验提示文案
Zackkop
校验提示文案
发条兔兔
校验提示文案