『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 5487|回复: 8

[求助] 如何保证多个开关状态变化时,TTS状态逐一播报

[复制链接]

5

主题

115

帖子

624

积分

高级会员

Rank: 4

积分
624
金钱
509
HASS币
0
发表于 2018-3-18 13:26:58 | 显示全部楼层 |阅读模式
在自动化设置中,如何能确保当监测的多个开关状态同时变化时,这些变化的状态能逐一播报出来。  下面的代码只能播报一条,看log每个状态变化都触发了服务,但是由于几乎是同时触发了服务,因此只执行了一次。希望不要同时触发服务,而时一个触发播报完成后再触发下一个。
input_boolean:
  switch_status_tts:
    name: switch_status_tts
    initial: off
    icon: mdi:dip-switch
automation:
  - alias: switch_status_tts
    trigger:
      - platform: state
        entity_id: switch.ac,switch.ac_2,switch.decorative_lights,switch.decorative_lights_2
    condition:
      - condition: state
        entity_id: input_boolean.switch_status_tts
        state: 'on'
    action:
      - service: tts.iflytek_say
        data_template:
          message: >
            {{ trigger.to_state.attributes.friendly_name }}
            {%- if trigger.to_state.state == "off" %}
            已关闭
            {%- elif trigger.to_state.state == "on" %}
            已开启
            {% endif -%}



回复

使用道具 举报

25

主题

687

帖子

3630

积分

论坛元老

Rank: 8Rank: 8

积分
3630
金钱
2937
HASS币
219

活跃会员

发表于 2018-3-18 13:55:37 | 显示全部楼层
trigger:的同时触发播报干扰确实是个问题
在action最开始加入等待代码应该能解决
- wait_template: '{{ states("media_player.mpd") == "stop" or  states("media_player.mpd") == "off"}}'

评分

参与人数 1金钱 +5 收起 理由
jyz_0501 + 5 谢谢分享!

查看全部评分

回复

使用道具 举报

175

主题

2967

帖子

7608

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7608
金钱
4616
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2018-3-18 15:05:07 | 显示全部楼层
aktifin 发表于 2018-3-18 13:55
trigger:的同时触发播报干扰确实是个问题
在action最开始加入等待代码应该能解决
- wait_template: '{{ sta ...

好像是个解决办法~~
回复

使用道具 举报

5

主题

115

帖子

624

积分

高级会员

Rank: 4

积分
624
金钱
509
HASS币
0
 楼主| 发表于 2018-3-18 15:48:21 | 显示全部楼层
好像不行,第一次调用时会等待,但第二次调用时直接跳过了等待
回复

使用道具 举报

25

主题

687

帖子

3630

积分

论坛元老

Rank: 8Rank: 8

积分
3630
金钱
2937
HASS币
219

活跃会员

发表于 2018-3-18 15:51:22 | 显示全部楼层
本帖最后由 aktifin 于 2018-3-18 15:53 编辑
vcprograme 发表于 2018-3-18 15:48
好像不行,第一次调用时会等待,但第二次调用时直接跳过了等待

要不试试这个?不过这个就只能设置播报有设备接入,而不能逐一播报了
   - condition: or
      conditions:
        - condition: state
          entity_id: media_player.mpd
          state: 'off'
        - condition: state
          entity_id: media_player.mpd
          state: 'stop'
或者把wait代码加入到condition里,不放action里
回复

使用道具 举报

5

主题

115

帖子

624

积分

高级会员

Rank: 4

积分
624
金钱
509
HASS币
0
 楼主| 发表于 2018-3-18 16:11:38 | 显示全部楼层
这样只能保证第一次有,其余的因为播放没有结束就都没有了
回复

使用道具 举报

2

主题

132

帖子

802

积分

高级会员

Rank: 4

积分
802
金钱
670
HASS币
0
发表于 2018-3-23 15:14:20 | 显示全部楼层
trigger.to_state.attributes.friendly_name

大大,小的插个题外话,烦请问下以上这句什么意思,我怎么没有看到状态列表里有这个trigger的?有相关的学习资料吗
回复

使用道具 举报

5

主题

115

帖子

624

积分

高级会员

Rank: 4

积分
624
金钱
509
HASS币
0
 楼主| 发表于 2018-3-25 09:59:03 | 显示全部楼层
云中喝酒 发表于 2018-3-23 15:14
trigger.to_state.attributes.friendly_name

大大,小的插个题外话,烦请问下以上这句什么意思,我怎么没 ...

指当前触发的开关的名称
回复

使用道具 举报

175

主题

2967

帖子

7608

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7608
金钱
4616
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2019-6-26 01:16:31 | 显示全部楼层
下午10:21
Mopidy turned off
下午10:21
Mopidy changed to unavailable
下午8:14
Mopidy turned off
下午8:14
Mopidy changed to unavailable
下午6:45
Mopidy turned off
下午6:45
Mopidy changed to unavailable
下午4:53
Mopidy turned off
下午4:53
Mopidy changed to playing
下午4:34
Mopidy turned off
下午4:33
Mopidy changed to playing
下午4:22
Mopidy turned off
下午4:21
Mopidy changed to playing
下午4:12
Mopidy turned off
下午4:10
Mopidy changed to playing
下午3:53
Mopidy turned off
下午3:52
Mopidy changed to playing
下午3:49
Mopidy turned off
下午3:48
Mopidy changed to playing
下午3:12
Mopidy turned off
下午3:11
Mopidy changed to playing
下午3:03
Mopidy turned off


没有stop状态  只有 off  playing  和unavailable
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-28 08:33 , Processed in 0.458009 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表