View difference between Paste ID: wG4pPNjX and 90CVDg0t
SHOW: | | - or go back to the newest paste.
1
alias: TTS wznowienie
2
description: 'Obsługuje: Nabu Casa, Google Cloud, Google Translate. Wznawianie serwisu Spotify przy użyciu spotcast.'
3
trigger:
4
#Nabu Casa
5
  - platform: event
6
    event_type: call_service
7
    event_data:
8
      service: cloud_say
9
#Google Cloud
10
  - platform: event
11
    event_type: call_service
12
    event_data:
13
      service: google_cloud_say
14
#Google Translate
15
  - platform: event
16
    event_type: call_service
17
    event_data:
18
      service: google_translate_say
19
action:
20
#jeśli głośnik gra, to poczekaj aż TTS mu przerwie
21
  - choose:
22
      - conditions:
23
          - condition: template
24
            value_template: '{{ media_player_resume }}'
25
        sequence:
26
          - wait_template: '{{ not is_state(media_player_id, "playing") }}'
27
    default: []
28
#ustaw głośność
29
  - service: media_player.volume_set
30
    target:
31
      entity_id: '{{ media_player_id }}'
32
    data:
33
      volume_level: '{{ tts_volume_level }}'
34
#poczekaj aż zacznie gadać
35
  - delay: 2
36
#poczekaj aż skończy gadać
37
  - wait_template: '{{ not is_state(media_player_id, "playing") }}'
38
#przywróć poprzednią głośność (jeśli poprawnie odczytana)
39
  - choose:
40
      - conditions:
41
          - condition: template
42
            value_template: '{{ media_player_volume_level != None }}'
43
        sequence:
44
          - service: media_player.volume_set
45
            target:
46
              entity_id: '{{ media_player_id }}'
47
            data:
48
              volume_level: '{{ media_player_volume_level }}'
49
    default: []
50
#wznowienie poprzedniego utworu jeśli wcześniej głośnik grał, w przeciwnym razie wyłącz głośnik
51
  - choose:
52
      - conditions:
53
          - condition: template
54
            value_template: '{{ media_player_resume }}'
55
        sequence:
56
          - choose:
57
              - conditions:
58
                  - condition: template
59
                    value_template: '{{ media_player_app_name == "Spotify" }}'
60
                sequence:
61
                  - service: spotcast.start
62
                    data:
63
                      entity_id: '{{ media_player_id }}'
64
                      force_playback: true
65
            default:
66
              - service: media_player.play_media
67
                target:
68
                  entity_id: '{{ media_player_id }}'
69
                data:
70
                  media_content_type: '{{ media_player_content_type }}'
71
                  media_content_id: '{{ media_player_content_id }}'
72
    default:
73
      - service: media_player.turn_off
74
        target:
75
          entity_id: '{{ media_player_id }}'
76
mode: single
77
#Zmienne ze stanem player'a, zamim TTS zacznie gadać. Wypełniane są danymi przed wykonaniem bloku 'action'
78
variables:
79
  media_player_id: '{{ trigger.event.data.service_data.entity_id }}'
80
  media_player_resume: '{{ is_state(media_player_id, "playing") }}'
81
  media_player_content_id: '{{ state_attr(media_player_id, "media_content_id") }}'
82
  media_player_volume_level: '{{ state_attr(media_player_id, "volume_level") }}'
83
  media_player_content_type: |
84
    {% set c_type = state_attr(media_player_id, "media_content_type") %}
85
    {% if c_type == None %} music {% else %} {{ c_type }} {% endif %}
86
  media_player_app_name: '{{ state_attr(media_player_id, "app_name") }}'
87
#między 6:00 a 20:00 głośność 0.5, wieczorkiem 0.3
88
  tts_volume_level: |
89
    {% set h = now().hour %}
90
    {% if h >= 6 and h < 20 %} 0.5 {% else %} 0.3 {% endif %}
91
    
92
###########################################################################################################
93
#aby uzależnić głośność od konkretnego głośnika należy zmodyfikować zmienną tts_volume_level np.:
94
  tts_volume_level: |
95
    {% set h = now().hour %}
96
    {% if h >= 6 and h < 20 %} 
97
      {% if media_player_id == "media_player.jbl" %}
98
        0.8
99
      {% elif media_player_id == "media_player.nest" %}
100
        0.7
101
      {% else %}
102
        0.5 
103
      {% endif %}
104
    {% else %} 0.3 {% endif %}