Skip to content
Home assistant custom component to start Spotify playback on an idle chromecast device
Python Shell
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
custom_components/spotcast Zeroconf workaround host not being an ipaddress Jan 19, 2020
.gitignore Small fixes before release Oct 6, 2019
LICENSE add txt files Apr 24, 2019
README.md Zeroconf workaround host not being an ipaddress Jan 19, 2020
info.md Update info file Aug 3, 2019
links.sh Small fixes before release Oct 6, 2019

README.md

hacs_badge spotcast Maintenance

Buy me a coffee

Spotcast

Home Assistant custom component to start Spotify playback on an idle chromecast device

This component is not meant to be a full Spotify chromecast media_player but only serves to start the playback. Controlling the chromcast device and the Spotify playback after the initial start is done in their respective components. Becasue starting playback using the API requires more powerful token the username and password used for browser login is used.

Used by https://github.com/custom-cards/spotify-card.

Community post: https://community.home-assistant.io/t/spotcast-custom-component-to-start-playback-on-an-idle-chromecast-device/114232

Now with support for speaker groups, transferring playback to and between chromecast devices and using HA entity id instead of device_name.

Important Release 2.6.1 has a woraround for zeroconf 0.24.4 so it is no longer needed to use older version.

Installation

This component is easiest installed using HACS

Manual

Copy all files from custom_components/spotcast/ to custom_components/spotcast/ inside your config Home Assistant directory.

Configuration

Single account

Add the following to your config

spotcast:
  username: !secret spotify_username
  password: !secret spotify_password

Multiple accounts

Add accounts dict to the configuration and populate with a list of accounts to be able to initiate playback using diffferent accounts than the default.


spotcast:
  username: !secret spotify_primary_username
  password: !secret spotify_primary_password
  accounts:
    niklas:
      username: !secret spotify_niklas_username
      password: !secret spotify_niklas_password
    ming:
      username: !secret spotify_ming_username
      password: !secret spotify_ming_password

Call the service

start playback on a device with default account

{
	"device_name" : "Kök",
	"uri" : "spotify:playlist:37i9dQZF1DX3yvAYDslnv8",
	"random_song": true
}

where

  • device_name is the friendly name of the Chromecast
  • uri is the spotify uri, supports all uris including track (limit to one track)
  • random_song optional parameter that starts the playback at a random position in the playlist
  • repeat optional parameter that repeats the playlist/track

optionally you can specify the entity_id of an existing home assistant chromecast mediaplayer like:

{
	"entity_id" : "media_player.vardagsrum",
	"uri" : "spotify:playlist:37i9dQZF1DX3yvAYDslnv8"
}

transfer current playback for the account

Omitting uri will check if something is playing on any of the accounts devices and transfer the playback to the specified device.

{
	"device_name" : "Högtalare uppe"
}

or use the parameter transfer_playback which will only transfer if something is playing otherwise use the specified uri.

{
	"device_name" : "MultiRoom",
	"uri" : "spotify:playlist:37i9dQZF1DX3yvAYDslnv8",
	"transfer_playback" : true
}

where

  • device_name is the friendly name of the Chromecast
  • transfer_playback (optional) true or false, continue ongoing playback on your Chromecast

start playback on a device with non default account

{
    "account":"niklas",
	"device_name" : "Kök",
	"uri" : "spotify:playlist:37i9dQZF1DX3yvAYDslnv8"
}

where

  • account is the name of account key in the accounts dictionary in the configuration
  • device_name is the friendly name of the Chromecast
  • uri is the spotify uri, supports all uris including track (limit to one track)

Use the sensor

The sensor has the discovered chromecasts as both json and since v.2.1 as an array of objects. Add the following to the sensor section of the configuration:

sensor:
    - platform: spotcast

Sensor name

sensor.chromecast_devices

Attributes

devices_json: [{"name": "Kök", "cast_type": "audio", "model_name": "Google Home", "uuid": "xxxxx", "manufacturer": "Google Inc."}, {"name": "Högtalare uppe", "cast_type": "group", "model_name": "Google Cast Group", "uuid": "xxxx", "manufacturer": "Google Inc."}, {"name": "Vardagsrum", "cast_type": "cast", "model_name": "HK Citation 300", "uuid": "xxxx", "manufacturer": "Harman Kardon"}]

last_update: 2019-05-01T15:27:49.828553+02:00

friendly_name: Chromecast Devices

Known issues

It has been reported that updating the sensor takes more than 10s sometimes.

Donate

If you like what I do and want to support me then I love coffee

Buy Me A Coffee

Contribute

Please do

License

Apache 2.0

You can’t perform that action at this time.