đŸŽŦMedia Player

Control your media

MQTT integration for a media player is not supported by home assistant, so a custom addon must be installed using HACS. I've modified an addon called mqtt-mediaplayer for creating a new media_player entity.

This addon gets the information from the attributes of media_info sensor. It supports playing remote or local media using cvlc which should be installed on your system.

Add this yaml block on your configuration.yaml file and restart Home Assistant.

media_player:
  - platform: mqtt-mediaplayer
    name: "Desktop Linux"
    status_keyword: "true"
    topic:
      song_title: "{{ state_attr('sensor.desktop_linux_media_info', 'title') }}"
      song_artist: "{{ state_attr('sensor.desktop_linux_media_info', 'artist') }}"
      song_album: "{{ state_attr('sensor.desktop_linux_media_info', 'album') }}"
      song_volume: "{{ state_attr('sensor.desktop_linux_media_info', 'volume') }}"
      player_status: "{{ state_attr('sensor.desktop_linux_media_info', 'status') }}"
      track_duration: "{{ state_attr('sensor.desktop_linux_media_info', 'duration') }}"
      track_position: "{{ state_attr('sensor.desktop_linux_media_info', 'position') }}"
      album_art: "lnxlink/desktop-linux/monitor_controls/media_info/thumbnail"
      volume:
        service: mqtt.publish
        data:
          topic: "lnxlink/desktop-linux/commands/media/volume_set"
          payload: "{{volume}}"
    next:
      service: mqtt.publish
      data:
        topic: "lnxlink/desktop-linux/commands/media/next"
        payload: "ON"
    previous:
      service: mqtt.publish
      data:
        topic: "lnxlink/desktop-linux/commands/media/previous"
        payload: "ON"
    play_media:
      service: mqtt.publish
      data:
        topic: "lnxlink/desktop-linux/commands/media/play_media"
        payload: "{{media}}"
    play:
      service: mqtt.publish
      data:
        topic: "lnxlink/desktop-linux/commands/media/playpause"
        payload: "ON"
    pause:
      service: mqtt.publish
      data:
        topic: "lnxlink/desktop-linux/commands/media/playpause"
        payload: "ON"

Text To Speech

service: tts.google_say
data:
  entity_id: media_player.desktop_linux
  message: Hello world!

Play Media

service: media_player.play_media
data:
  media_content_id: /home/user/imag.jpg
  media_content_type: media  # Not used, but required by home assistant
target:
  entity_id: media_player.desktop_linux

Stream Camera

service: camera.play_stream
data:
  media_player: media_player.desktop_linux
target:
  entity_id: camera.demo_camera

Volume change by a predefined step

service: media_player.volume_set
data:
  volume_level: '{{ state_attr("media_player.desktop_linux", "volume_level") - 0.01 }}'
target:
  entity_id: media_player.desktop_linux

Last updated