@fontes31 quando publicares código deves sublinhar o texto que queres transformar em código e clicar no icone </>
. Deverá existir um espaço antes e outro depois do bloco de código para que funcione correctamente. O código em Yaml é muito sensível aos espaçamentos e sem o código devidamente formatado não te poderemos ajudar.
eu fiz copy paste do spotify.yaml que foi publicado, penso que o erro esta nesta parte:
source: >
{% if is_state("input_select.spotify_source", "Sala de
Jantar") %} Sala de Jantar
{% elif is_state(“input_select.spotify_source”, “Sala de
TV”) %} Sala de TV
{% endif %}
ja editei o spotify.yaml so que agora tenho este erro - “extra keys not allowed @ data[‘group’]”
@fontes31 peço que que edites o post como disse anteriormente, pois assim não conseguimos detectar o que possa estar errado.
Boa tarde.
Em relação ao erro “extra keys not allowed @ data[‘group’]”, aconteceu-me exactamente o mesmo. Bastou mudar o S maiúsculo para minúsculo, em vez de Spotify.yaml mudar para spotify.yaml. Não sei se foi a solução. O que é certo é que o erro deixou de dar.
Agora surge-me outro problema. Na janela de configuração do Spotify, quando tento clicar o link ( [Link Spotify account) dá o seguinte erro: INVALID_CLIENT: Invalid redirect URI.
Tenho o Spotify premium e por via das dúvidas faço logout e depois login.
Cumprimentos
Sebastião
Isso pode ter a ver com o link que introduziste quando fizeste os passos relativos ao Spotify. O URL de redirect tem de ser um link válido.
Boa noite.
Já funciona.
O problema estava no base_url do componte HTTP do configuration.yaml. Tinha
base_url: https://xxxx.duckdns.org
em vez de
base_url: https://xxxx.duckdns.org:8123
Cumprimentos
Sebastião
tenho um erro e não consigo reproduzir o spotify. Conseguem me ajudar?
Error executing service <ServiceCall script.spotify_music (c:f1191e54fbdc4c039242cff9e6f2eecf)>
Traceback (most recent call last):
File “/usr/local/lib/python3.7/site-packages/homeassistant/core.py”, line 1150, in _safe_execute
await self._execute_service(handler, service_call)
File “/usr/local/lib/python3.7/site-packages/homeassistant/core.py”, line 1163, in _execute_service
await handler.func(service_call)
File “/usr/local/lib/python3.7/site-packages/homeassistant/components/script/init.py”, line 114, in service_handler
context=service.context)
File “/usr/local/lib/python3.7/site-packages/homeassistant/components/script/init.py”, line 172, in async_turn_on
kwargs.get(ATTR_VARIABLES), context)
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/script.py”, line 131, in async_run
await self._handle_action(action, variables, context)
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/script.py”, line 210, in _handle_action
action, variables, context)
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/script.py”, line 299, in _async_call_service
context=context
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/service.py”, line 89, in async_call_from_config
domain, service_name, service_data, blocking=blocking, context=context)
File “/usr/local/lib/python3.7/site-packages/homeassistant/core.py”, line 1141, in async_call
self._execute_service(handler, service_call))
File “/usr/local/lib/python3.7/site-packages/homeassistant/core.py”, line 1163, in _execute_service
await handler.func(service_call)
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity_component.py”, line 194, in handle_service
required_features
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/service.py”, line 316, in entity_service_call
future.result() # pop exception if have
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/service.py”, line 337, in _handle_service_platform_call
await getattr(entity, func)(**data)
File “/usr/local/lib/python3.7/concurrent/futures/thread.py”, line 57, in run
result = self.fn(*self.args, **self.kwargs)
File “/usr/local/lib/python3.7/site-packages/homeassistant/components/spotify/media_player.py”, line 238, in select_source
self._player.transfer_playback(self._devices[source],
KeyError: ‘’
Caros Amigos,
Gostava da vossa ajuda neste ponto.
Depois de configurar, bem acho eu, esta integração obtive este erro:
2019-08-08 16:14:46 ERROR (MainThread) [homeassistant.components.hassio] Integration not found: packages
Coloquei este parâmetros no configuration.yaml
- platform: spotify
client_id: !secret spotify_client_id
client_secret: !secret spotify_client_secret
packages: !include_dir_named packages/
E adicionei o ficheiro spotify.yaml na pasta confi/packages com o seguinte código:
media_player:
- platform: spotify
client_id: !secret spotify_client_id
client_secret: !secret spotify_client_secret
group:
home_spotify_player:
name: Spotify Player
entities:
- media_player.spotify
home_spotify_controls:
name: Spotify Controls
control: hidden
entities:
- input_select.spotify_playlist
- input_select.spotify_source
- script.spotify_music
- input_number.spotify_volume
- input_boolean.spotify_shuffle
homeassistant:
customize:
script.spotify_music:
friendly_name: 'Play'
icon: mdi:play
sensor:
- platform: template
sensors:
spotify_volume:
friendly_name: "Spotify Volume"
value_template: "{{ states.media_player.spotify.attributes.volume_level }}"
- platform: template
sensors:
spotify_shuffle:
friendly_name: "Spotify Shuffle"
value_template: "{{ states.media_player.spotify.attributes.shuffle }}"
- platform: template
sensors:
spotify_source:
friendly_name: "Spotify Source"
value_template: "{{ states.media_player.spotify.attributes.source }}"
input_number:
spotify_volume:
name: Volume
icon: mdi:volume-high
initial: 100
min: 0
max: 100
step: 1
input_select:
spotify_playlist:
name: 'Playlist:'
options:
- Lista1
- Lista2
- Lista3
- Lista4
icon: mdi:spotify
spotify_source:
name: 'Source:'
options:
- Web Player (Chrome)
- Mi Phone
- DESKTOP-922IFR3
initial: Web Player (Chrome)
icon: mdi:speaker-wireless
input_boolean:
spotify_shuffle:
name: Shuffle
icon: mdi:shuffle-variant
script:
spotify_music:
alias: "Play selected spotify playlist"
sequence:
- service: media_player.select_source
data_template:
entity_id: media_player.spotify
source: >
{% if is_state("input_select.spotify_source", "Web Player (Chrome)") %} Web Player (Chrome)
{% elif is_state("input_select.spotify_source", "Mi Phone") %} Mi Phone
{% elif is_state("input_select.spotify_source", "DESKTOP-922IFR3") %} DESKTOP-922IFR3
{% endif %}
- service: media_player.play_media
data_template:
entity_id: media_player.spotify
media_content_type: playlist
media_content_id: >
{% if is_state("input_select.spotify_playlist", "Lista1") %} spotify:user:spotify:playlist:37i9dQZF1DXakWdSZ8mUMO
{% elif is_state("input_select.spotify_playlist", "Lista2") %} spotify:user:spotify:playlist:5dfbLgeesT8gixq1GTWBoU
{% elif is_state("input_select.spotify_playlist", "Lista3") %} spotify:user:spotify:playlist:37i9dQZF1DX4WYpdgoIcn6
{% elif is_state("input_select.spotify_playlist", "Lista4") %} spotify:user:spotify:playlist:6IjDl5eRczFdgZkKYXhuHZ
{% endif %}
automation:
- alias: 'Spotify Volume (Set)'
trigger:
platform: state
entity_id: input_number.spotify_volume
action:
service: media_player.volume_set
data_template:
entity_id: media_player.spotify
volume_level: '{{ states.input_number.spotify_volume.state | int / 100 }}'
- alias: 'Spotify Volume (Sync)'
trigger:
- platform: homeassistant
event: start
- platform: state
entity_id: sensor.spotify_volume
action:
- delay:
seconds: 5
- service: input_number.set_value
data_template:
entity_id: input_number.spotify_volume
value: '{{ states.sensor.spotify_volume.state | float | round(2) * 100 }}'
- alias: 'Spotify Shuffle (Set)'
trigger:
platform: state
entity_id: input_boolean.spotify_shuffle
action:
service: media_player.shuffle_set
data_template:
entity_id: media_player.spotify
shuffle: >
{% if is_state('input_boolean.spotify_shuffle', 'off') %}
false
{% elif is_state('input_boolean.spotify_shuffle', 'on') %}
true
{% endif %}
- alias: 'Spotify Shuffle (Sync)'
trigger:
- platform: homeassistant
event: start
- platform: state
entity_id: sensor.spotify_shuffle
action:
- delay:
seconds: 5
- service_template: >
{% if states.sensor.spotify_shuffle.state == 'False' %}
input_boolean.turn_off
{% else %}
input_boolean.turn_on
{% endif %}
data:
entity_id: input_boolean.spotify_shuffle
- alias: 'Spotify Source (Sync)'
trigger:
- platform: homeassistant
event: start
- platform: state
entity_id: sensor.spotify_source
action:
service: input_select.select_option
entity_id: input_select.spotify_source
data_template:
option: '{{ states.sensor.spotify_source.state }}'
Este código que coloquei no spotify.yaml copiei na integra do posto " Spotify - Como integrar e comandar entre dispositivos (Requer Premium)"
Desde já obrigado pela vossa ajuda
Abraço
olhando para o código que tens ai, tas a chamar duas vezes a mesma coisa
media_player:
- platform: spotify
client_id: !secret spotify_client_id
client_secret: !secret spotify_client_secret
tens no configuration.yaml
e no spotify.yaml
tira do configuration.yaml porque ja tens no spotify.yaml
Olá Hugo,
Obrigado pela resposta.
Testei, removendo da configuration.yaml
ou do spotify.yaml
mas o erro mantém-se.
Ab
Bom dia,
@pmdsaude Basicamente o erro indica-te que estas com o “link” errado, experimenta algo assim no configuration.yaml:
packages:
spotify: !include packages/spotify.yaml
Boa Noite,
Penso que fiz tudo direito, contudo quando estou a "Validar a Configuração " está a aparecer este erro.
Invalid config for [group]: [control] is an invalid option for [group]. Check: group->group->home_spotify_controls->control. (See ?, line ?).
Meu Codigo:
media_player:
- platform: spotify
client_id: !secret spotify_client_id
client_secret: !secret spotify_client_secret
group:
home_spotify_player:
name: Spotify Player
entities:
- media_player.spotify
home_spotify_controls:
name: Spotify Controls
control: hidden
entities:
- input_select.spotify_playlist
- input_select.spotify_source
- script.spotify_music
- input_number.spotify_volume
- input_boolean.spotify_shuffle
homeassistant:
customize:
script.spotify_music:
friendly_name: 'Play'
icon: mdi:play
sensor:
- platform: template
sensors:
spotify_volume:
friendly_name: "Spotify Volume"
value_template: "{{ states.media_player.spotify.attributes.volume_level }}"
- platform: template
sensors:
spotify_shuffle:
friendly_name: "Spotify Shuffle"
value_template: "{{ states.media_player.spotify.attributes.shuffle }}"
- platform: template
sensors:
spotify_source:
friendly_name: "Spotify Source"
value_template: "{{ states.media_player.spotify.attributes.source }}"
input_number:
spotify_volume:
name: Volume
icon: mdi:volume-high
initial: 100
min: 0
max: 100
step: 1
input_select:
spotify_playlist:
name: 'Playlist:'
options:
- Lista1
- Lista2
- Lista3
- Lista4
icon: mdi:spotify
spotify_source:
name: 'Source:'
options:
- Web Player (Chrome)
- Mi Phone
- DESKTOP-922IFR3
initial: Web Player (Chrome)
icon: mdi:speaker-wireless
input_boolean:
spotify_shuffle:
name: Shuffle
icon: mdi:shuffle-variant
script:
spotify_music:
alias: "Play selected spotify playlist"
sequence:
- service: media_player.select_source
data_template:
entity_id: media_player.spotify
source: >
{% if is_state("input_select.spotify_source", "Web Player (Chrome)") %} Web Player (Chrome)
{% elif is_state("input_select.spotify_source", "Mi Phone") %} Mi Phone
{% elif is_state("input_select.spotify_source", "DESKTOP-922IFR3") %} DESKTOP-922IFR3
{% endif %}
- service: media_player.play_media
data_template:
entity_id: media_player.spotify
media_content_type: playlist
media_content_id: >
{% if is_state("input_select.spotify_playlist", "Lista1") %} spotify:user:spotify:playlist:37i9dQZF1DXakWdSZ8mUMO
{% elif is_state("input_select.spotify_playlist", "Lista2") %} spotify:user:spotify:playlist:5dfbLgeesT8gixq1GTWBoU
{% elif is_state("input_select.spotify_playlist", "Lista3") %} spotify:user:spotify:playlist:37i9dQZF1DX4WYpdgoIcn6
{% elif is_state("input_select.spotify_playlist", "Lista4") %} spotify:user:spotify:playlist:6IjDl5eRczFdgZkKYXhuHZ
{% endif %}
automation:
- alias: 'Spotify Volume (Set)'
trigger:
platform: state
entity_id: input_number.spotify_volume
action:
service: media_player.volume_set
data_template:
entity_id: media_player.spotify
volume_level: '{{ states.input_number.spotify_volume.state | int / 100 }}'
- alias: 'Spotify Volume (Sync)'
trigger:
- platform: homeassistant
event: start
- platform: state
entity_id: sensor.spotify_volume
action:
- delay:
seconds: 5
- service: input_number.set_value
data_template:
entity_id: input_number.spotify_volume
value: '{{ states.sensor.spotify_volume.state | float | round(2) * 100 }}'
- alias: 'Spotify Shuffle (Set)'
trigger:
platform: state
entity_id: input_boolean.spotify_shuffle
action:
service: media_player.shuffle_set
data_template:
entity_id: media_player.spotify
shuffle: >
{% if is_state('input_boolean.spotify_shuffle', 'off') %}
false
{% elif is_state('input_boolean.spotify_shuffle', 'on') %}
true
{% endif %}
- alias: 'Spotify Shuffle (Sync)'
trigger:
- platform: homeassistant
event: start
- platform: state
entity_id: sensor.spotify_shuffle
action:
- delay:
seconds: 5
- service_template: >
{% if states.sensor.spotify_shuffle.state == 'False' %}
input_boolean.turn_off
{% else %}
input_boolean.turn_on
{% endif %}
data:
entity_id: input_boolean.spotify_shuffle
- alias: 'Spotify Source (Sync)'
trigger:
- platform: homeassistant
event: start
- platform: state
entity_id: sensor.spotify_source
action:
service: input_select.select_option
entity_id: input_select.spotify_source
data_template:
option: '{{ states.sensor.spotify_source.state }}'
E usas os group:
para quê?
Boas
Apenas copiei a código.
Não percebi a sua funcionalidade.
Já agora qual a função deste código
group:
home_spotify_player:
name: Spotify Player
entities:
- media_player.spotify
home_spotify_controls:
name: Spotify Controls
control: hidden
entities:
- input_select.spotify_playlist
- input_select.spotify_source
- script.spotify_music
- input_number.spotify_volume
- input_boolean.spotify_shuffle
Vou remover e testar
@heldercampos1 não é boa prática copiar códigos sem perceber a sua funcionalidade…
Pois isso vai fazer com que não entendas como funciona.
Os groups:
neste caso e só neste caso mt particular já não se usa devido ao Lovelace já ter um cartão que suporta directamente as chamadas das entidades.
No cartão entidades, podes chamar directamente as entidades.
PS: Este tutorial foi feito há dois anos , é possível que tenha havido alterações podes obviamente exprimentar, mas tens que primeiro entender a estrutura de todo o código e suas funcionalidades, deixando de parte o conceito de (copiar colar).
Estou com algumas dificuldades em perceber todos estes pontos. É muita informação ao mesmo tempo. Espero com o tempo melhorar.
Contudo já consegui integrar o Spotify com o HA. Ainda estou a explorar esta integração, para já parece porreira.
Temos opção de escolher a nossa playlist de forma simples, e carrega as listas automaticamente do Spotify.
Segue uma foto de como ficou.