home-assistant.github.io/components/media_player.universal/index.html
2016-08-22 08:21:43 +00:00

323 lines
No EOL
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Universal - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Instructions how to create a universal media player in Home Assistant.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/components/media_player.universal/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="Universal">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/components/media_player.universal/">
<meta property="og:type" content="article">
<meta property="og:description" content="Instructions how to create a universal media player in Home Assistant.">
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@home_assistant">
<meta name="twitter:title" content="Universal">
<meta name="twitter:description" content="Instructions how to create a universal media player in Home Assistant.">
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
<link rel='shortcut icon' href='/images/favicon.ico' />
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
</head>
<body >
<header>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
<a href="/" class="site-title">
<img width='40' src='/demo/favicon-192x192.png'>
<span>Home Assistant</span>
</a>
</div>
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
<nav>
<input type="checkbox" id="toggle">
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
<ul class="menu pull-right">
<li><a href='/getting-started/'>Getting started</a></li>
<li><a href='/components/'>Components</a></li>
<li><a href='/cookbook/'>Examples</a></li>
<li><a href="/developers/">Developers</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/help/">Need help?</a></li>
</ul>
</nav>
</div>
</div>
</div>
</header>
<div class="grid-wrapper">
<div class="grid grid-center">
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
<article class="page">
<header>
<h1 class="title indent">
Universal
</h1>
</header>
<hr class="divider">
<p>Universal Media Players combine multiple existing entities in Home Assistant into one media player entity. This is used for creating a single entity that controls an entire media center.</p>
<p>Multiple Media Player entities can be controlled from a Universal Media Player. Additionally, the Universal Media Player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver.</p>
<p>A Universal Media Player is created in <code class="highlighter-rouge">configuration.yaml</code> as follows.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">media_player</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">universal</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">MEDIA_PLAYER_NAME</span>
<span class="s">children</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">media_player.CHILD_1_ID</span>
<span class="pi">-</span> <span class="s">media_player.CHILD_2_ID</span>
<span class="s">commands</span><span class="pi">:</span>
<span class="s">turn_on</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">SERVICE</span>
<span class="s">data</span><span class="pi">:</span> <span class="s">SERVICE_DATA</span>
<span class="s">turn_off</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">SERVICE</span>
<span class="s">data</span><span class="pi">:</span> <span class="s">SERVICE_DATA</span>
<span class="s">volume_up</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">SERVICE</span>
<span class="s">data</span><span class="pi">:</span> <span class="s">SERVICE_DATA</span>
<span class="s">volume_down</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">SERVICE</span>
<span class="s">data</span><span class="pi">:</span> <span class="s">SERVICE_DATA</span>
<span class="s">volume_mute</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">SERVICE</span>
<span class="s">data</span><span class="pi">:</span> <span class="s">SERVICE_DATA</span>
<span class="s">attributes</span><span class="pi">:</span>
<span class="s">is_volume_muted</span><span class="pi">:</span> <span class="s">ENTITY_ID|ATTRIBUTE</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">ENTITY_ID|ATTRIBUTE</span>
</code></pre>
</div>
<p>Configuration variables:</p>
<ul>
<li><strong>name</strong>: The name to assign the player</li>
<li><strong>children</strong>: Ordered list of child media players this entity will control</li>
<li><strong>commands</strong> <em>Optional</em>: Commands to be overwritten. Possible entries are <em>turn_on</em>, <em>turn_off</em>, <em>volume_up</em>, <em>volume_down</em>, and <em>volume_mute</em>.</li>
<li><strong>attributes</strong> <em>Optional</em>: Attributes that can be overwritten. Possible entries are <em>is_volume_muted</em> and <em>state</em>. The values should be an entity id and state attribute separated by a bar (|). If the entity ids state should be used, then only the entity id should be provided.</li>
</ul>
<p>The universal media player will primarily imitate one of its <em>children</em>. The first child in the list that is active (not idle/off) will be controlled the universal media player. The universal media player will also inherit its state from the first active child. Entities in the <em>children</em> list must be media players.</p>
<p>It is recommended that the command <em>turn_on</em>, the command <em>turn_off</em>, and the attribute <em>state</em> all be provided together. The <em>state</em> attribute indicates if the Media Player is on or off. If <em>state</em> indicates the media player is off, this status will take precedent over the states of the children. If all the children are idle/off and <em>state</em> is on, the universal media players state will be on.</p>
<p>It is also recomended that the command <em>volume_up</em>, the command <em>volume_down</em>, the command <em>volume_mute</em>, and the attribute <em>is_volume_muted</em> all be provided together. The attribute <em>is_volume_muted</em> should return either True or the on state when the volume is muted. The <em>volume_mute</em> service should toggle the mute setting.</p>
<p>Below is an example configuration.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">media_player</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">universal</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Test Universal</span>
<span class="s">children</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">media_player.living_room_cast</span>
<span class="pi">-</span> <span class="s">media_player.living_room_kodi</span>
<span class="s">commands</span><span class="pi">:</span>
<span class="s">turn_on</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">switch.turn_on</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.living_room_tv</span>
<span class="s">turn_off</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">switch.turn_off</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.living_room_tv</span>
<span class="s">volume_up</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">switch.turn_on</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.living_room_volume_up</span>
<span class="s">volume_down</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">switch.turn_on</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.living_room_volume_down</span>
<span class="s">volume_mute</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">switch.turn_on</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.living_room_mute</span>
<span class="s">attributes</span><span class="pi">:</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">switch.living_room_tv</span>
<span class="s">is_volume_muted</span><span class="pi">:</span> <span class="s">switch.living_room_mute</span>
</code></pre>
</div>
<p>In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The <em>turn_on</em> and <em>turn_off</em> commands will be redirected to the television and the volume commands will be redirected to an audio receiver.</p>
<p>The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the Universal Media player will change to reflect its status.</p>
</article>
</div>
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
<div class="grid">
<section class="aside-module grid__item one-whole lap-one-half">
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.universal.markdown'>Edit this page on GitHub</a></div>
<div class='brand-logo-container section'>
<img src='/images/supported_brands/home-assistant.png' />
</div>
<div class='section'>
This is a platform for
<a href='/components/media_player/'>the Media Player component</a>.
</div>
<div class='section'>
<h1 class="title delta">Category Media Player</h1>
<ul class='divided'>
<li>
<a href='/components/media_player.denon/'>Denon Network Receivers</a>
</li>
<li>
<a href='/components/media_player.directv/'>DirecTV</a>
</li>
<li>
<a href='/components/media_player.firetv/'>FireTV</a>
</li>
<li>
<a href='/components/media_player.cast/'>Google Cast</a>
</li>
<li>
<a href='/components/media_player.gpmdp/'>Google Play Music Desktop Player</a>
</li>
<li>
<a href='/components/media_player.kodi/'>Kodi</a>
</li>
<li>
<a href='/components/media_player.lg_netcast/'>LG Netcast TV</a>
</li>
<li>
<a href='/components/media_player.webostv/'>LG WebOS TV</a>
</li>
<li>
<a href='/components/media_player.squeezebox/'>Logitech Squeezebox</a>
</li>
<li>
<a href='/components/media_player.mpchc/'>MPC-HC</a>
</li>
<li>
<a href='/components/media_player.mpd/'>Music Player Daemon (MPD)</a>
</li>
<li>
<a href='/components/media_player.onkyo/'>Onkyo</a>
</li>
<li>
<a href='/components/media_player.panasonic_viera/'>Panasonic Viera TV</a>
</li>
<li>
<a href='/components/media_player.pandora/'>Pandora</a>
</li>
<li>
<a href='/components/media_player.pioneer/'>Pioneer Network Receivers</a>
</li>
<li>
<a href='/components/media_player.plex/'>Plex</a>
</li>
<li>
<a href='/components/sensor.plex/'>Plex Activity Monitor</a>
</li>
<li>
<a href='/components/media_player.roku/'>Roku</a>
</li>
<li>
<a href='/components/media_player.russound_rnet/'>Russound RNET</a>
</li>
<li>
<a href='/components/media_player.samsungtv/'>Samsung Smart TV</a>
</li>
<li>
<a href='/components/media_player.snapcast/'>Snapcast</a>
</li>
<li>
<a href='/components/media_player.sonos/'>Sonos</a>
</li>
<li>
<a href='/components/media_player.braviatv/'>Sony Bravia TV</a>
</li>
<li>
Universal
</li>
<li>
<a href='/components/media_player.yamaha/'>Yamaha Network Receivers</a>
</li>
<li>
<a href='/components/media_player.cmus/'>cmus</a>
</li>
<li>
<a href='/components/media_player.itunes/'>iTunes</a>
</li>
</ul>
</div>
</section>
</div>
</aside>
</div>
</div>
<footer>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item">
<div class="copyright">
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
<div class="credit">
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a>.<br>
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
</div>
</div>
</div>
</div>
</div>
</footer>
<script>
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
</body>
</html>