Skip to content

Make your Chromecast devices discoverable and controllable via MQTT.

License

Notifications You must be signed in to change notification settings

nohum/chromecast-mqtt-connector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chromecast MQTT connector

Provides status information and control capabilities of your Chromecast devices via MQTT.

Installation requirements

  • Python 3.7+
  • pychromecast
  • paho-mqtt

You can install the requirements in their correct versions using pip3 install -r requirements.txt.

Discovery and control

Using MQTT you can find the following topics. friendly_name is the name used to connect to each Chromecast.

# - read only
chromecast/friendly_name/friendly_name
chromecast/friendly_name/model_name
chromecast/friendly_name/address
chromecast/friendly_name/connection_status
chromecast/friendly_name/cast_type
chromecast/friendly_name/current_app
chromecast/friendly_name/player_duration
chromecast/friendly_name/player_position
chromecast/friendly_name/player_state
chromecast/friendly_name/volume_level
chromecast/friendly_name/volume_muted
chromecast/friendly_name/media/title
chromecast/friendly_name/media/album_name
chromecast/friendly_name/media/artist
chromecast/friendly_name/media/album_artist
chromecast/friendly_name/media/track
chromecast/friendly_name/media/images
chromecast/friendly_name/media/content_type
chromecast/friendly_name/media/content_url

# - writable
chromecast/friendly_name/command/volume_level
chromecast/friendly_name/command/volume_muted
chromecast/friendly_name/command/player_position
chromecast/friendly_name/command/player_state

Control the player by publishing values to the four topics above.

Change volume using values from 0 to 100:

  • Absolute: publish e.g. 55 to chromecast/friendly_name/command/volume_level
  • Relative: publish e.g. +5 or -5 to chromecast/friendly_name/command/volume_level

Change mute state: publish 0 or 1 to chromecast/friendly_name/command/volume_muted.

Play something: Publish a URL to player_state (just as string, not as json array, e.g. http://your.stream.url.here), the application then tries to guess the required MIME type.

Or you can publish a json array with two elements (content url and content type) to chromecast/friendly_name/command/player_state, e.g. ["http://your.stream.url.here", "audio/mpeg"].

Or you can publish a json object with any of the following properties, e.g. {"url": "http://http://your.stream.url.here", "content_type": "audio/mpeg", "enqueue": false}.

Known properties from pychromecast BaseMediaPlayer.play_media() function:

"url": "http://http://your.stream.url.here"
"content_type": "audio/mpeg"
"title": null
"thumb": null
"current_time": null
"autoplay": true
"stream_type": "BUFFERED"
"metadata": null
"subtitles": null
"subtitles_lang": "en-US"
"subtitles_mime": "text/vtt"
"subtitle_id": 1
"enqueue": false

For other player controls, simply publish e.g. RESUME, PAUSE, STOP, SKIP, REWIND, PREV or NEXT to chromecast/friendly_name/command/player_state. Attention: This is case-sensitive!

Releases

No releases published

Packages

No packages published

Languages