65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Home Assistant 和 Node-RED 实现灵活的 Tado 计划

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2022 年 5 月 18 日

CPOL

8分钟阅读

viewsIcon

14588

如何使用 Home Assistant 和 Node-RED 进行灵活的 Tado 计划。

引言

本文介绍了一种使用 Home Assistant 和 Node-RED 实现多个 Tado 定时器的方法。这使得 Home Assistant 新手能够快速轻松地为他们的 Tado 恒温器系统编写更高级的定时器。

背景

去年冬天,我决定投资 Tado 的智能恒温器系统。它由一个中央恒温器和智能散热器旋钮组成,需要安装在您想要智能控制的每个房间。每个旋钮将其温度与中央恒温器通信,从而允许系统关闭温度足够高的房间的旋钮,同时打开需要供暖的房间的旋钮并继续向中央供暖系统请求热量。

Tado 允许用户每天为每个单独的房间配置一个定时器。我可以用它来在我居家办公的日子里专门加热我的办公室,同时不浪费客厅的能源。这效果很好!

但是,如果没有系统的局限性,我不会写这篇帖子。我第一个恼火的地方实际上发生在圣诞节期间我计划休息的几天。使用我旧的恒温器,我可以简单地将一个或多个即将到来的日子标记为休息日,在这种情况下,它将执行为星期日定义的定时器。Tado 没有这个选项,迫使我手动更改那一周的两个定时器:在客厅打开供暖,并在我通常在家工作的日子里禁用办公室供暖。

当我在可变的日子里越来越多地在办公室工作时,第二个问题出现了。尽管 Tado 系统确实有一个“外出”选项,但这并不能阻止我的办公室在我离开家之前预热,从而浪费能源。

这些“局限性”对于一个本已很棒的系统来说,是我转向使用 Home Assistant 的最大因素。我想通过 Home Assistant 控制 Tado,同时中央供暖系统仍然由 Tado 控制。

令人惊讶的是,我几乎找不到关于成功集成 Tado 系统的 Home Assistant 用户的信息。零散地有一些技巧和窍门,但似乎没有人写过一篇实际可用的教程或模板,介绍如何在当时最受欢迎的家庭自动化平台之一上配置其他定时器。

随着对能源使用的认识日益重要,我决定分享我自己的解决方案来解决这些问题。

设计

在开始设计此实现之前,我牢记了两个主要原则。

简单

这可能是我在自动化任何东西时都牢记的最重要的原则。自动化应该易于理解,无论是对我还是对可能最终使用它们的人。最重要的是,我希望它们是用户友好的。我的房子里永远不应该出现“请不要碰那个按钮”这样的时刻。自动化是为了支持用户,而不是限制他们。

冗余

在开始这个 Home Assistant 自动化之前,我有一个可用的系统。虽然它有限,但它起作用并提高了我的舒适度。通过添加另一个组件,我不想对其产生更大的依赖。即使我的 Home Assistant 服务器因任何原因停止工作,我也不想失去最初拥有的舒适度。

话不多说,让我们开始吧!

我首先需要考虑的是如何激活特定的加热模式。由于我已经实现了具有“**醒着**”、“**睡着**”和“**外出**”状态的“**家庭模式**”,我考虑在此处添加它。然而,供暖必须独立于居住者(们)的状态运行。例如,办公室的预热甚至需要在我醒来之前就开始。添加“**睡着(明天在家工作)**”感觉有点复杂。

因此,我决定添加一个新参数。由于此时我只用它来供暖,我简单地将其命名为“**供暖模式**”(毕竟,如果我想扩展此参数的使用,未来总是可以进行重构)。这感觉立刻对了,因为我不仅可以添加“**明天在家工作**”状态,还可以用它来“**在家休息日**”,它将复制周日的定时器。“**默认**”状态被添加进来,告诉我的系统它应该简单地使用 Tado 本身配置的定时器(例如,所有旋钮上的自动模式)。

为了让在家工作的决定具有灵活性,我决定添加一个切换按钮,允许我指定我明天将在家工作。这使我可以在前一天做出决定,并确保当我还在睡觉时,正确的供暖模式已经开启,从而可以预热办公室。此布尔值的实现如下。

每天早上 4:00,系统会检查我明天是否在家工作。如果不是,它只会在“**在家工作**”时将供暖设置为“**默认**”,以防止它禁用“**在家休息日**”模式,而我却在享受休息时间。

经过此流程后,它将根据最可能的定时器(此处未显示)自动将“**明天在家工作**”切换设置为相应状态,但如果我决定偏离,我只需在用户界面中更改切换按钮。

至于用户界面,它(仍然)非常简单。目前,我只能切换所有这些。

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

Tado 配置

对于 Tado 的配置,我选择了一种我全职工作时会使用房子内的方式。这意味着周末会加热客厅,而工作日直到下午 17:30 左右才会加热,届时才会加热客厅。

我选择这样做的原因是,万一我的 Home Assistant 宕机,浪费能源的可能性会尽可能小。如果这种情况发生在我实际上需要在家的时候,我可以手动调整供暖(并希望修复我的 Home Assistant 服务器)。

当然,这只是我的偏好。您可以根据自己的喜好设置 Tado,只需将其视为“**默认**”,而在需要时使用 Home Assistant 进行覆盖。

Node-RED 实现

现在 Tado 系统已配置好,我们需要能够使用 Home Assistant 覆盖默认定时器。为此,我使用了 Node-RED 插件,以便于可视化。我的实现如下。

对于实现,我想能够在特定时间设置特定温度。但同样重要的是,当供暖模式或家庭模式改变时,这些定时器块可以随时触发。为了实现这一点,我决定使用“*时间范围*”块(橙色块)。在流程开始时触发任何内容,总会在每个房间产生正确的 Tado 状态。

当家庭模式或供暖模式改变时,我只需将 Tado 系统的整个状态重置为自动和家庭,然后再根据家庭的实际状态和一天的时间用适当的设置覆盖它们。

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

Home Assistant 服务

如果您想使用 Tado 在 Home Assistant 中进行自己的自动化,我只需要四项服务。为了方便您,这里是:

操作 定义域 Service JSONata
将 Tado 设置为家庭 climate set_preset_mode {"preset_mode":"home"}
将 Tado 设置为外出 climate set_preset_mode {"preset_mode":"away"}
设置特定温度 climate set_temperature {"temperature":"19.5"}
将温度设置为自动
(使用 Tado 定时器)
climate set_hvac_mode {"hvac_mode":"auto"}

关注点

  • 与任何实现一样,在深入研究逻辑之前,考虑使用和设计很重要。但即使算上这一点,实现也只用了不到两个小时。
  • 在我创建此实现时,我使用 Home Assistant 和 Node-RED 的时间还不到一周。如果您有任何有用的技巧或改进,请随时发表评论。
  • 尽管 Node-RED 对于简单的实现来说很棒,但它也有一些明显的局限性。它帮助我设置了一些快速实现,但更有可能的是,我最终会转向使用一个通过其 REST API 与 Home Assistant 通信的自定义应用程序。
  • 通过使用 Home Assistant 的标准 Tado 集成,您依赖于互联网连接。这不应该成为问题,因为此实现是冗余的,但是,我可能会在将来考虑一个本地与 Tado 通信的实现。

历史

  • 2022 年 5 月 18 日 - 版本 1
    • 初始版本
  • 2022 年 5 月 19 日 - 版本 1.1
    • 添加了关于此实现互联网要求的兴趣点
© . All rights reserved.