智能恒温器系统的高级计划编写指南

去年冬天,决定投资Tado品牌的智能恒温器系统。这套系统由一个中央恒温器和智能暖气阀组成,需要安装在每个想要智能控制的房间。每个暖气阀都会与中央恒温器通信其温度,使得系统能够关闭足够温暖的房间的暖气阀,同时为需要加热的房间打开暖气阀并从中央供暖系统请求热量。

Tado允许用户为每个房间配置每日计划。这让可以在在家工作的日子特别为办公室加热,同时不浪费客厅的能量。这工作得很好!

然而,如果不写这篇文章,那就说明这个系统没有限制。第一个烦恼出现在计划在圣诞节期间休息几天的时候。使用旧恒温器,可以简单地将一个或多个即将到来的日子标记为休息日,在这种情况下,它会执行为星期天定义的计划。Tado没有这个选项,迫使手动更改那周的两个计划:在通常在家工作的日子打开客厅的加热并关闭办公室的加热。

当开始在办公室工作的日子越来越多变时,第二个问题变得明显。尽管Tado系统确实有一个"外出"选项,但这并不能阻止办公室在离开家之前被预热,从而浪费能源。

这些"限制"对于一个本来很好的系统来说是转向使用Home Assistant的最大因素。想使用Home Assistant控制Tado,而中央供暖系统仍然由Tado控制:

令人惊讶的是,发现几乎没有Home Assistant用户成功集成了他们的Tado系统。这里有一些提示和技巧,但没有人为当时最受欢迎的家庭自动化平台之一编写一个实际可用的教程或模板,说明如何在其中配置额外的计划。

随着能源使用的意识变得越来越重要,决定分享解决这些问题的方案。

设计

在开始这个实现的设计之前,脑海中有两个主要原则:

简单性

这可能是在自动化任何东西时最重视的原则。自动化应该简单易懂,无论是对还是对最终使用它们的人来说。此外,希望它们对用户友好。在房子里,永远不应该有"请不要触摸那个按钮"的时刻。自动化在这里是为了支持用户,而不是限制他们。

冗余

在开始这个Home Assistant自动化之前,有一个工作系统。尽管它有限制,但它工作得很好,提高了舒适度。通过添加另一个组件,不想变得更加依赖它。即使Home Assistant服务器因任何原因停止工作,也不希望失去最初拥有的舒适度。

有了这些,让开始吧!

需要考虑的第一件事是如何激活某些加热模式。由于已经实现了一个"家庭模式",它有"清醒"、"睡觉"和"外出"的状态,考虑在这里添加它。然而,加热将不得不独立于居住者的状态运行。例如,预热办公室需要在醒来之前就开始。添加一个"睡觉(明天在家工作)"感觉有点复杂。

因此,决定添加一个新参数。由于目前只在这里使用它进行加热,简单地称之为"加热模式"(毕竟,如果想扩展这个参数的用途,未来的重构总是可能的)。这立即感觉对了,因为不仅可以添加"在家工作明天"的状态,还可以使用它为"在家休息日",然后复制星期天的计划。"默认"状态被添加来告诉系统它应该简单地使用Tado本身配置的计划(例如,所有暖气阀上的自动模式)。

为了使在家工作的决定变得灵活,决定添加一个切换,允许指定明天会在家工作。这允许在前一天做出决定,并且也确保当还在睡觉时,正确的加热模式已经开启,允许它预热办公室。这个布尔值的实现如下:

每天凌晨4点,系统会检查明天是否在家工作。如果不是这样,它只会将加热设置为"默认",如果它在"在家工作",防止它在在休息时禁用"在家休息日"模式。

在完成这个流程后,它会自动将"在家工作明天"切换设置为根据最可能的计划(这里没有显示)的状态,但如果决定偏离,可以简单地在用户界面中更改切换。

至于用户界面,它(仍然)非常简单。现在,这是能够切换的所有内容:

尽管所有三个属性都是自动切换的,但对来说手动更改其中的内容从来都不是问题。

Tado配置

对于Tado配置,选择以全职工作时使用房子的方式设置它。这意味着在周末,它会加热客厅,而在工作日,直到大约17:30,它不会加热任何东西,那时客厅会被加热。

选择这样做的原因是,如果Home Assistant出现故障,浪费能源的可能性会尽可能小。如果它发生在实际上需要在家的时候,可以手动校正加热(并希望修复Home Assistant服务器)。

当然,这只是偏好。可以按照喜欢的方式设置Tado,只要把它看作是使用Home Assistant时的"默认",然后在需要它的时候覆盖它。

Node-RED实现

现在Tado系统已经配置好了,需要能够使用Home Assistant覆盖默认计划。为此,使用了插件Node-RED进行简单的可视化。实现如下:

对于实现,想能够设置特定的温度在特定的时间。但同样重要的是,这些计划块可以在加热模式或家庭模式变化时随时触发。为了实现这一点,决定使用"时间范围"块(橙色的)。在流程的开始触发任何东西,总是会在每个房间得到正确的Tado状态。

当家庭或加热模式变化时,简单地将整个Tado系统的状态重置为自动和家庭,然后根据实际的家庭状态和一天中的时间覆盖它们,使用适当的设置。

最后,在每个计划块的开始时间,使用了"注入"块(左边的灰色块)来触发相应的逻辑。这也是对这个实现最不喜欢的部分:这意味着每次想要更改计划时,至少需要更新两个块。除了实现一个可以作为范围和触发器使用的自定义块之外,没有想到一个简单的解决方法。使用变量也不会有太大帮助,因为如果计划块的数量发生变化,仍然需要额外的工作。

Home Assistant服务

如果想在Home Assistant中使用Tado制作自己的自动化,只需要四个服务。这里为提供方便:

Action Domain Service JSONata Set Tado to Home climate set_preset_mode {"preset_mode":"home"} Set Tado to Away climate set_preset_mode {"preset_mode":"away"} Set specific temperature climate set_temperature {"temperature":"19.5"} Set temperature to auto (use Tado schedule) climate set_hvac_mode {"hvac_mode":"auto"}

兴趣点

与任何实现一样,在深入逻辑之前,考虑使用和设计是很重要的。但即使包括这一点,这也只需要不到两个小时就可以实现。

当创建这个实现时,只使用了Home Assistant和Node-RED不到一周。如果有任何有用的提示或改进,请随时留下评论。

尽管Node-RED非常适合简单的实现,但它也有一些明显的缺点。它帮助快速实现了一些实现,但更有可能的是,最终会使用一个通过其REST API与Home Assistant通信的自定义应用程序。

通过使用Home Assistant的标准Tado集成,依赖于互联网连接。这应该不会有问题,因为这个实现是冗余的,但可能会考虑将来实现与Tado本地通信的实现。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485