Spotify - Como integrar e comandar entre dispositivos (Requer Premium)

@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 %}

@fontes31 edita o teu anterior post com a formatação correcta sff

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

1 Like

Uma mensagem foi dividida em um novo tópico: Spotify e Echo Dot

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

1 Like

Olá Hugo,
Obrigado pela resposta.
Testei, removendo da configuration.yaml ou do spotify.yaml mas o erro mantém-se.
Ab

@pmdsaude passa pelo nosso discord para podermos falar sobre isso melhor

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

1 Like