标签:#<标签:0x00007fc41d3f80c0>

你说你已经修正了缩进,但是你还没有发布你当前的代码。

上述错误的代码是

—alias: p1_control trigger: platform: state entity_id: switch。Sonoff2 action: service_template: > {% if is_state('switch. db_state ');Sonoff2 ', 'on') %}开关。Turn_on {% else is_state('开关。Sonoff2 ', 'off') %}开关。Turn_off {% endif %} entity_id: switch.sonoff

我也试过这个代码

- 别名:p1_control触发器:平台:mqtt entity_id:stat / dves_5a97c3_fb / power2 action:service_template:> {%if状态('stat / dves_5a97c3_fb / power2','上')%} switch.turn_on {%else状态('stal/ dves_5a97c3_fb / power2','关闭')%} switch.turn_off {%ENDIF%} ENTITY_ID:CMND / DVES_5A97C3_FB / POWER1

并遇到了这个错误,但是我认为switch.turn_on / off应该是某种消息的MQTT消息。

Invalid config for [automation]: [entity_id] is an Invalid option for [automation]。检查:自动化- >触发- > 0 - > entity_id。(见/ config /配置。yaml第18行)。请登录//www.sz-tiancheng.com/components/automation/查看相关文档

我的配置yaml文件仍然是安装时创建的默认文件hass.io,如下:

#设置一个默认的Home Assistant(前端,api等)19463331伟德国际default_config: #示例配置。yaml条目# mqtt: #发现:真正的# discovery_prefix: homeassistant #取消这个如果使用SSL / TLS,码头工人中运行的容器,等。# http: # base_url: example.duckdns.org: 8123 #语音tts: -平台:google_translate组:!包括组。Yaml自动化:包括自动化。Yaml脚本:包含脚本

试试这个(注意最后一行“entity_id”的不同缩进级别):

—alias: p1_control trigger: platform: state entity_id: switch。Sonoff2 action: service_template: > {% if is_state('switch. db_state ');Sonoff2 ', 'on') %}开关。Turn_on {% else is_state('开关。Sonoff2 ', 'off') %}开关。Turn_off {% endif %} entity_id: switch.sonoff

通常情况下,如果没有模板,action部分中只有一个服务,你会这样写acrtion部分:

操作:服务:Some_service entity_id:some_entity

在这种情况下,服务和entity_id的缩进级别是相同的。

如果你有多个服务调用,那么你必须把这些服务转换成一个列表:

操作: -  Service:Some_service Entity_ID:Some_entity  -  Service:Some_other_service Entity_ID:some_othr_entity

然后在这些情况下,Entity_ID在服务呼叫下方缩进一个级别。

在您的情况下,缩进级别就像上面的第一个,即使您的服务呼叫也在多行上。

如果您一直在尝试代码,它应该工作(希望......)。

控制另一个交换机状态的一个交换机:

—alias: p1_control trigger: platform: state entity_id: switch。Sonoff2 action: service_template: 'switch.turn_{{trigger.to_state. Sonoff2 action: service_template: 'switch.turn_{{trigger.to_state。}}’entity_id: switch.sonoff状态

有限:
谢谢。这没有起作用。它给出了相同的错误。我认为模板必须在使用之前定义好,但也许对于这个,模板这个词就能说明问题了hass.io代码行遵循它们自己的格式?

所以我能够得到下面的工作。
我可以从sonoff的控制页面切换sonoff2,但自动化不会启动。我想这意味着扳机不起作用了。
我可以按下扳机hass.ioUI,并打开开关。然而,无论处于什么状态,它都能打开。我认为,下面的代码块只会在sonoff也是打开的情况下打开sonoff。所以这里有问题。

—alias: p1_control trigger: platform: state entity_id: switch。Sonoff2 action: service_template: > {% if is_state('switch. db_state ');Sonoff2 ', 'on') %}开关。Turn_on {% endif %} entity_id: switch.sonoff

如果我输入else语句,就会得到和之前一样的错误。我相信我的缩进是正确的。我尝试以不同的方式缩进,只是为了看到任何变化。

{%其他is_state(“开关。Sonoff2 ', 'off') %} switch.turn_off

123塔拉斯:
类似于我对有限的帖子,您的建议通过了配置检查。
然而,当sonoff2打开时,sonoff不打开。也不关闭等。
我可以按下扳机hass.ioUI,它将打开Sonoff,无论Sonoff2的状态如何。

好的,我想出错了。我第一次完全忽略了它。模板中的“else”语句不应该寻找真/假。它已经被称为,因为第一个“如果”声明已经确定它是假的。

试试这个:

- 别名:p1_control触发器:platform:state entity_id:switch.shoff2操作:service_template:> {%if is_state('switch.sonoff2','on')%} switch.turn_on {%其他%} switch.turn_off {%Endif%} Entity_ID:switch.shoff

此外,您还在考虑自动化错误。

您正在使用自动化来控制开关的状态。根据Sonoff开关状态的变化。哼,不是反过来的。

如果它独立于Sonoff2,并且Sonoff并不关心它的状态是什么。您可以整天关闭Sonoff,并将令人愉快地切换状态,无论Sonoff2的状态如何。但是,如果你切换Sonoff2,那么Sonoff将遵循它的状态,因为它触发了自动化。

然后,我很遗憾地说,无论是在将自动化转录到系统还是有缺陷的错误。我已经成功地使用了它无数次,并且我建议它向其他人成功使用的人;它确实有效。

它的service_template分配使用If-Else并利用触发对象的有用性:

{{trigger.to_state.state}}
  • 如果switch.sonoff2对国家的变化,它会触发自动化,并添加service_templateswitch.turn_创建switch.turn_on.为entity_idswitch.sonoff
  • switch.sonoff2对国家的变化,它调用该服务switch.turn_off.switch.sonoff.非常简单。
—alias: p1_control trigger: platform: state entity_id: switch。Sonoff2 action: service_template: 'switch.turn_{{trigger.to_state. Sonoff2 action: service_template: 'switch.turn_{{trigger.to_state。}}’entity_id: switch.sonoff状态

FWIW,如果您试图手动触发这种自动化(例如使用服务automation.trigger通过服务页面)。这样做时,触发器对象是未定义的,动作将失败。

123年塔拉斯
我能让它工作,用from_state,这是我真正想要的。

你在非ui自动化中使用过这个吗?我假设答案是肯定的,但是想要确认一下,如果编码是一样的。在其他一些线程上,我正在警告UI和非UI自动化显着不同,并且可能决定沟通UI路径。

谢谢你的帮助。

有限:
修复else语句得到它通过配置检查,我能够得到这段代码也工作。我还确认了entity_id的行缩进将终止它。
谢谢你的帮助!!

还有一个问题 - 与我的代码问题无关,但再次,为什么单词“模板”?它似乎是一个错误的人。它基本上只是代码。必须遵循的没有预定的模式(模板)。还是我错过了什么?

???

这样就能得到第二个开关的状态对面的第一个开关的状态。

SW1变化
模板使用from_state创建:switch.turn_对于SW2
SW2的国家(ON)现在与SW1的状态相反(OFF)

SW1变化
模板使用from_state创建:switch.turn_对于SW2
SW2的状态(关闭)现在与SW1的状态(打开)相反

如果这是你真正想要的,之前没提到过。:Man_shrugging:

自动化就是自动化。它可能会影响在Lovelace UI中暴露的实体,也可能不会。这取决于自动化的内容。

这所谓的是什么?警告关于UI和非UI自动化显着不同“吗?


编辑
由尼克劳特澄清。您指的是使用家庭助理19463331伟德国际自动化编辑器vs文本编辑器(如Visual Studio Code,或Atom,或notepad++等)。

我认为他的意思是通过gui编写自动化,而不是编写yaml。

1像

在这种情况下,漏掉了一个重要的单词:

你在非ui自动化中使用过这个吗编辑器

答案将是一个响亮的“是”,因为家庭助理的自动化编辑有局限性。19463331伟德国际

昵称是正确的。自动化编辑器是否与在yaml文件中设置完全不同的东西?
我正在使用vs-code,但其他一切都通过UI设置,因此我的config.yaml为空等。

123塔拉斯:是的,我想确保两个负载同时不在。您的推荐很容易调整。再次感谢!

极好的!您发布的第一个自动化不会那样做.它的作用正好相反;它确保两个开关都是同步.甚至你创造的标题都表明这就是你想要的。

您确实意识到有几个人来帮助您修复一个无法实现您的目标的自动化?然而,直到16.帖子进入这个长线程,你会暗示你真正想要的是确切的对面的您创建的自动化!

在你发布另一个问题之前,我建议你先阅读这篇文章。这将为大家节省大量的时间和精力。

如何帮助我们帮助你——或者如何问一个好问题

我不同意你的看法,你的话太不合理了!您的说法是,我请求论坛为我编写一个自动化程序,如果我只是简单地请求,我将会更快地得到答案。
我的目标是弄清楚为什么我的自动化没有工作,以及你和其他人的回答帮助我实现了这一点 - 所以我认为这是一项成功(直到阅读你的上次帖子 - 令人难以置信和不增值的直到令人难以置信和非增值。- 我的头衔来自另一个故障排除线程 - 即我搜索了论坛,我花了很大的时间通过哈斯材料读取速度。

如果你重读我的文章,你会发现我没有这样的断言。你发布了你的自动化,并请求帮助来消除它产生的错误。这是实现。

有限首先注意到自动化所完成的和你对其行为的解释之间似乎存在差异。任何人都完全不知道的是,您希望自动化的行为与您最初提出的方式不同。

事实上,这并不是你想错了,而是你用了一种完全不同于你向别人展示它的方式来思考它。

你加入社区还不到一个月,让我来解释一下它的价值。我提供的链接是为了帮助新用户(和老用户)成为社区的有效成员。列表中有很多要点,但主旨是进行研究,展示细节,并提供清晰的沟通。在这个帖子中需要改进的是清晰的沟通方面。很少有人看到一个作者报告说,他们实际上想要的东西与每个人都在忙着帮助调试的东西相反。

这个社区目前有超过40000名成员,但只有一个一小部分定期提供帮助。你的问题恰好吸引三个这样的人(查看他们的资料)。四万人中的三个。他们,包括我在内,没有时间浪费在提供所谓的“非增值”评论上。

在解决可能遇到的其他问题时,祝你好运。

我不同意。类似于你的开场白“如果你重读我的帖子”,你可以重读标题,上面写着“触发”,这就是它——不是你所理解的——很清楚。
如果你重读,你会看到我做了研究。它没有让我经过配置检查,所以我问专家。
财政的评论正试图帮助我考虑自动化如何工作,而不是如何提出清晰的问题(我没有困惑我的代码代码代码正在做的事情)。

标题可以有两种解读方式:

  1. 当开关1开启时,它会打开开关2。
  2. 当开关1打开时,它会关闭开关2。

什么线索会告诉读者,这两个选项中哪一个是想要的?这个线索就是你根据第一种选择提供的自动化功能:
当开关1开启时,它会打开开关2。

所以除了你,其他人都不清楚自动化是否应该像第二种选择一样工作。

我从没说过他的评论是关于问一个“明确的问题”。我说他是第一个注意到自动化所做的和你如何理解它之间的区别的人。换句话说,他注意到他和你在自动化操作上不同步。后来,当你表示你实际上希望它按照第二种选择工作时,原因就变得很明显了。

够了,谁来关闭这个帖子,结束了。