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

Certamente é algum problema com espaços , coloca aqui os ficheiros da tua configuração

Olá Rodolfo. Estava aqui a tentar ir um pouco pela forma mais dificil, mas mais segura incluindo o secrets, por causa das passwords, mas a verdade é que ou era alguma coisa no servidor de lá, ou então , depois de tanto mexer, a coisa começou a funcionar,não totalmente da forma como aqui está explicado, mas com um mix disto com a do Jorge .

1 Curtiu

Já consigo colocar no telemovel e escolher e aparece no ecra do HA e consigo de algma forma controlar, mas não consigo ouvir e selecionar rádio ??
Uma ajudinha por favor !!

Bom Dia,

depois de criar o ficheiro spotify.yaml tenho o seguinte erro:

Configuração inválida
Error loading /config/configuration.yaml: while scanning a simple key
in “/config/packages/spotify.yaml”, line 89, column 1
could not find expected ‘:’
in “/config/packages/spotify.yaml”, line 91, column 1

Segui o tutorial e fiz copy paste do exemplo

Podes colocar aqui como ficou o teu ficheiro spotify.yaml e como estás a chamar os packages no configuration.yaml?

o configuration.yaml:

media_player:

  • platform: spotify
    client_id: xxxxxxxxxxxxxxx
    client_secret: xxxxxxxxxxx

o spotify.yaml:

edia_player:

  • platform: spotify
    client_id: xxxxxxxxxx
    client_secret: xxxxxxxxxx

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:
- Sala de Jantar
- Sala de TV
initial: Sala de Jantar
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”, “Sala de
Jantar”) %} Sala de Jantar
{% elif is_state(“input_select.spotify_source”, “Sala de
TV”) %} Sala de TV
{% 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:fontes31:playlist:1VsA8GVgcK3BzQyOhY4Ypf
{% elif is_state(“input_select.spotify_playlist”, “Lista2”)
%} spotify:user:fontes31:playlist:0WoCdqAGxeaAH5K3VNJYaK
{% 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 }}’

como tenho 2 sonos, a ideia era ter a opçao desses sonos no source do spotify do home assistant, so que apenas me da o pc.

@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 Curtiu

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 Curtiu

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


Copyright © 2017-. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade