使用自动化编辑器打开 /关闭设备的最佳实践是什么?

目前,我有两个自动化,一个是要打开的,另一个可以关闭开关,但我想将它们合并为一个自动化。什么是最佳实践?

我不使用自动化UI编辑器(我在YAML中手动键入它们),但我不相信您目前可以在自动化编辑器中使用模板,至少用于操作(因为您无法使用data_template,,,,service_template等等)但是,如果您将两个自动化的YAML发布,我们可能可以帮助您手动创建一个自动化。

干得好:liticle_smile:

  • ID:“ 1574429754473”
    别名:15:30打开热水器
    描述:15:30打开热水器
    扳机:
    • 在:‘15:30'
      平台:时间
      健康)状况: []
      行动:
    • Device_ID:96DFE4E2A48D4444448777872EA68EBBA56
      域:开关
      entity_id:switch.water_heater
      类型:turn_on
  • ID:“ 1574430324094”
    别名:19:00关闭热水器
    描述:19:00关闭热水器
    扳机:
    • 在:‘19:00'
      平台:时间
      健康)状况: []
      行动:
    • Device_ID:96DFE4E2A48D4444448777872EA68EBBA56
      域:开关
      entity_id:switch.water_heater
      类型:turn_off

请正确格式化您的代码,看看

我不知道您为什么要组合它们,但我认为它应该这样起作用。可能有一个更优雅的解决方案。

- id: ‘1574429754473’ alias: "Turn on Water Heater at 15:30 and off at 19:00" description: "Turn on Water Heater at 15:30 and off at 19:00" trigger: - platform: time at: "15:30" - platform: time at: "19:00" action: service_template: > {% if {{now().strftime('%H:M') > strptime('18:59:00', '%T')}} %} switch.turn_off {% else %} switch.turn_on {% endif %} entity_id: switch.water_heater

这将在15:30和19:30触发自动化。然后检查当前时间是否过去18:59。如果它评估为true,则关闭开关,否则将打开。

1喜欢

谢谢!

我需要选择哪种选项正确格式化文本?

标记代码,然后按在顶部的按钮,或在代码的开始和结尾处添加````'''。

1喜欢

这是实现相同结果的另一种方法:

-  id:'1574429754473'别名:“ 15:30并在19:00打开热水器”说明:“ 15:30”  - 平台:时间:“ 19:00”操作:service_template:“ switch.turn _ {{'on'if trigger.now.hour == 15 else'off'}}}“ entity_id:switch.water_heater_heater_heater

当自动化在15:30运行时trigger.now.hour将会15Service_template将产生switch.turn_on

当自动化在19:00运行时trigger.now.hour将会19Service_template将产生switch.turn_off

2个喜欢

这看起来很整洁!

很高兴听到您喜欢它。

作为对第一个使用解决方案做出回应的Burningstone的礼貌,您可能希望考虑从我的帖子中删除解决方案标签,并将其放回Burningstone的帖子中。只能将一个帖子标记为解决方案,并首先将其标记为Burningstone。

2个喜欢

这两个家伙都知道他们的东西,我可能会采用塔拉斯的解决方案(我对模板有完全不合理的偏见),但是对于初学者来说,燃烧的解决方案更清晰,更易于维护和扩展/适应您的其他需求。
It’s completely up to you and how comfortable you are editing the raw files (very few regular contributors here use the AE though some (like Taras) are trying to tame that beast. Also expect rapid improvements in the AE soon to cover your stated issues - it’s a work in progress:rofl:

2个喜欢

这里的一些人真的很聪明,有帮助:liticle_smile:

我还有另一个问题,也许我得到答案,因为我认为它是相关的。
我想制作一个自动化,将检测到的变更中的警报面板状态发送到通知。我的问题是如何将状态放在通知的消息部分中

他们在哪里。?我们会追捕他们并杀死他们!:crazy_face:

如果自动化使用状态触发器来监视警报面板,则警报面板的当前状态将在trigger.to_state.state。看:触发状态对象

谢谢,但我得到了

2019-11-23 19:23:41错误(mainthread)[homeassistant.components.automation]执行自动化自动化时错误pos 1:undefinedError的错误渲染模板:“触发”是未定义的

请向我们展示您的示例代码。

是的!
PS我正在使用GUI来创建此规则

-  id:'1574523322809'别名:警报面板更改发送通知说明:警报面板更改发送通知触发器: -  entity_id:armard_control_panel.alarm.alarm_panel平台:状态条件:[ -  data: -  data:data:data:data:data:data:data:data:measse:message:message:message:armales:armars starty to {{触发器{触发器。alarm_control_panel.alarm_panel}}服务:notify.hassio_notifier_s7

更改此:

- 数据:消息:警报状态更改为{{trigger.alarm_control_panel.alarm_panel}}}服务:notify.hassio_notifier_s7

为此:

-DATA_TEMPLATE:消息:警报状态更改为{{trigger.to_state.state}}服务:notify.hassio_notifier_s7

相同的结果:皱眉:

我有这个:

-  id:'1574523322809'别名:警报面板更改发送通知说明:警报面板更改发送通知触发器: -  entity_id:armard_control_panel.alarm.alarm_panel平台:状态条件:[ -  data: -  data:data:data:data:data:data:data:data:measse:message:message:message:armales:armars starty to {{触发器{触发器。to_state.state}}}服务:notify.hassio_notifier_s7

并在日志中获取此内容:
2019-11-23 20:33:19错误(mainthread)[homeassistant.components.automation]错误时执行自动化自动化。Alarm_panel_panel_change_send_send_notification。pos 1:undefinedError:“触发”的错误渲染模板是未定义的

可能是警报面板不支持触发器吗?

现在,我们似乎有两个并发主题。在此线程中也提出了同样的问题,并报告了相同的错误,并且对纠正它的建议相同:

石油和燃烧石解释说您需要使用data_template不是数据。您的最新示例仍然显示您正在使用数据

屏幕截图%20from%202019-11-23%2014-37-35

此外,正如Tinkerer在另一个主题中所解释的那样,请确保不要触发此自动化手动。手动触发的自动化跳过触发器和条件部分。结果,当执行操作时,触发对象将不确定并导致错误消息。

1喜欢

我错过了!!!我只是复制了消息部分……对此很抱歉!
现在工作正常!