home-assistant.github.io/components/media_player.plex/index.html
2017-12-17 16:27:07 +00:00

555 lines
26 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>Plex - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Instructions how to integrate Plex into Home Assistant.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/components/media_player.plex/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="Plex">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/components/media_player.plex/">
<meta property="og:type" content="article">
<meta property="og:description" content="Instructions how to integrate Plex into 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="Plex">
<meta name="twitter:description" content="Instructions how to integrate Plex into Home Assistant.">
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
<link href="/stylesheets/screen.css" media="screen, projection, print" 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 class='site-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="/docs/">Docs</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>
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
</ul>
</nav>
<div class='search-container' style='display: none'>
<div class='search'>
<i class="icon-search"></i>
<input id='search' placeholder='Search the docs…'>
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
</div>
</div>
</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">
Plex
</h1>
</header>
<hr class="divider">
<p>The <code class="highlighter-rouge">plex</code> platform allows you to connect a <a href="https://plex.tv">Plex Media Server</a> to Home Assistant. It will allow you to control media playback and see the current playing item.</p>
<h2><a class="title-link" name="setup" href="#setup"></a> Setup</h2>
<p>The preferred way to setup the Plex platform is by enabling the <a href="/components/discovery/">discovery component</a> which requires GDM enabled on your Plex server.</p>
<p>If your Plex server has local authentication enabled or multiple users defined, Home Assistant requires an authentication token to be entered in the frontend. Press “CONFIGURE” to do it.</p>
<p class="img">
<img src="/images/screenshots/plex-configure.png" />
</p>
<p>If you dont know your token, see <a href="https://support.plex.tv/hc/en-us/articles/204059436">Finding your account token / X-Plex-Token</a>.</p>
<p>If your server enforces SSL connections, write “<code class="highlighter-rouge">on</code>” or “<code class="highlighter-rouge">true</code>” in the <em>“Use SSL”</em> field. If it does not have a valid SSL certificate available but you still want to use it, write “<code class="highlighter-rouge">on</code>” or “<code class="highlighter-rouge">true</code>” in the <em>“Do not verify SSL”</em> field as well.</p>
<p class="img">
<img src="/images/screenshots/plex-token.png" />
</p>
<p>You can also enable the plex platform directly by adding the following lines to your <code class="highlighter-rouge">configuration.yaml</code>:</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="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">plex</span>
</code></pre>
</div>
<p>In case <a href="/components/discovery/">discovery</a> does not work (GDM disabled or non-local plex server), you can create <code class="highlighter-rouge">~/.homeassistant/plex.conf</code> manually.</p>
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="nt">"IP_ADDRESS:PORT"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">"token"</span><span class="p">:</span><span class="w"> </span><span class="s2">"TOKEN"</span><span class="p">,</span><span class="w"> </span><span class="nt">"ssl"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="nt">"verify"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">}}</span><span class="w">
</span></code></pre>
</div>
<ul>
<li><strong>IP_ADDRESS</strong> (<em>Required</em>): IP address of the Plex Media Server.</li>
<li><strong>PORT</strong> (<em>Required</em>): Port where Plex is listening. Default is 32400.</li>
<li><strong>TOKEN</strong> (<em>Optional</em>): Only if authentication is required. Set to <code class="highlighter-rouge">null</code> (without quotes) otherwise.</li>
<li><strong>ssl</strong> (<em>Optional</em>): Whether to use SSL/TLS or not. Defaults to <code class="highlighter-rouge">False</code> if not present.</li>
<li><strong>verify</strong> (<em>Optional</em>): Perform a verification of the certificate. To allow invalid or self-signed SSL certificates set it to <code class="highlighter-rouge">False</code>. Defaults to <code class="highlighter-rouge">True</code> if not present.</li>
</ul>
<h2><a class="title-link" name="customization" href="#customization"></a> Customization</h2>
<p>You can customize the Plex component by adding any of the variables below to your configuration:</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="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">plex</span>
<span class="s">entity_namespace</span><span class="pi">:</span> <span class="s1">'</span><span class="s">plex'</span>
<span class="s">include_non_clients</span><span class="pi">:</span> <span class="s">true</span>
<span class="s">scan_interval</span><span class="pi">:</span> <span class="s">5</span>
<span class="s">show_all_controls</span><span class="pi">:</span> <span class="s">false</span>
<span class="s">use_custom_entity_ids</span><span class="pi">:</span> <span class="s">true</span>
<span class="s">use_episode_art</span><span class="pi">:</span> <span class="s">true</span>
</code></pre>
</div>
<ul>
<li><strong>entity_namespace</strong> (<em>Optional</em>): Prefix for entity IDs. Defaults to <code class="highlighter-rouge">null</code>. Useful when using overlapping components (ex. Apple TV and Plex components when you have Apple TVs you use as Plex clients). Go from <em>media_player.playroom2</em> to <em>media_player.plex_playroom</em></li>
<li><strong>include_non_clients</strong> (<em>Optional</em>): Display non-recontrollable clients (ex. remote clients, PlexConnect Apple TVs). Defaults to <code class="highlighter-rouge">false</code>.</li>
<li><strong>scan_interval</strong> (<em>Optional</em>): Amount in seconds in between polling for devices current activity. Defaults to <code class="highlighter-rouge">10</code> seconds.</li>
<li><strong>show_all_controls</strong> (<em>Optional</em>): Forces all controls to display. Defaults to <code class="highlighter-rouge">false</code>. Ignores dynamic controls (ex. show volume controls for client A but not for client B) based on detected client capabilities. This option allows you to override this detection if you suspect it to be incorrect.</li>
<li><strong>use_custom_entity_ids</strong> (<em>Optional</em>): Name Entity IDs by client IDs instead of friendly names. Defaults to <code class="highlighter-rouge">false</code>. HA assigns entity IDs on a first come first serve basis. When you have identically named devices connecting (ex. media_player.plex_web_safari, media_player.plex_web_safari2), you cant reliably distinguish and or predict which device is which. This option avoids this issue by using unique client IDs (ex. media_player.dy4hdna2drhn).</li>
<li><strong>use_episode_art</strong> (<em>Optional</em>): Display TV episode art instead of TV show art. Defaults to <code class="highlighter-rouge">false</code>.</li>
</ul>
<h3><a class="title-link" name="service-play_media" href="#service-play_media"></a> Service <code class="highlighter-rouge">play_media</code></h3>
<p>Plays a song, playlist, TV episode, or video on a connected client.</p>
<h4>Music</h4>
<table>
<thead>
<tr>
<th>Service data attribute</th>
<th>Optional</th>
<th>Description</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">entity_id</code></td>
<td>no</td>
<td><code class="highlighter-rouge">entity_id</code> of the client</td>
<td>media_player.theater_plex</td>
</tr>
<tr>
<td><code class="highlighter-rouge">media_content_id</code></td>
<td>no</td>
<td>Quote escaped JSON with <code class="highlighter-rouge">library_name</code>, <code class="highlighter-rouge">artist_name</code>, <code class="highlighter-rouge">album_name</code>, <code class="highlighter-rouge">track_name</code>, <code class="highlighter-rouge">shuffle</code> (0 or 1).</td>
<td>{ \“library_name\” : \“My Music\”, \“artist_name\” : \“Adele\”, \“album_name\” : \“25\”, \“track_name\” : \“hello\”, \“shuffle\”: \“0\” }</td>
</tr>
<tr>
<td><code class="highlighter-rouge">media_content_type</code></td>
<td>no</td>
<td>Type of media to play, in this case <code class="highlighter-rouge">MUSIC</code></td>
<td>MUSIC</td>
</tr>
</tbody>
</table>
<h4>Playlist</h4>
<table>
<thead>
<tr>
<th>Service data attribute</th>
<th>Optional</th>
<th>Description</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">entity_id</code></td>
<td>no</td>
<td><code class="highlighter-rouge">entity_id</code> of the client</td>
<td>media_player.theater_plex</td>
</tr>
<tr>
<td><code class="highlighter-rouge">media_content_id</code></td>
<td>no</td>
<td>Quote escaped JSON with <code class="highlighter-rouge">playlist_name</code>, <code class="highlighter-rouge">shuffle</code> (0 or 1).</td>
<td>{ \“playlist_name\” : \“The Best of Disco\” \“shuffle\”: \“0\” }</td>
</tr>
<tr>
<td><code class="highlighter-rouge">media_content_type</code></td>
<td>no</td>
<td>Type of media to play, in this case <code class="highlighter-rouge">PLAYLIST</code></td>
<td>PLAYLIST</td>
</tr>
</tbody>
</table>
<h4>TV Episode</h4>
<table>
<thead>
<tr>
<th>Service data attribute</th>
<th>Optional</th>
<th>Description</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">entity_id</code></td>
<td>no</td>
<td><code class="highlighter-rouge">entity_id</code> of the client</td>
<td>media_player.theater_plex</td>
</tr>
<tr>
<td><code class="highlighter-rouge">media_content_id</code></td>
<td>no</td>
<td>Quote escaped JSON with <code class="highlighter-rouge">library_name</code>, <code class="highlighter-rouge">show_name</code>, <code class="highlighter-rouge">season_number</code>, <code class="highlighter-rouge">episode_number</code>, <code class="highlighter-rouge">shuffle</code> (0 or 1).</td>
<td>{ \“library_name\” : \“Adult TV\”, \“show_name\” : \“Rick and Morty\”, \“season_number\” : 2, \“episode_number\” : 5, \“shuffle\”: \“0\” }</td>
</tr>
<tr>
<td><code class="highlighter-rouge">media_content_type</code></td>
<td>no</td>
<td>Type of media to play, in this case <code class="highlighter-rouge">EPISODE</code></td>
<td>EPISODE</td>
</tr>
</tbody>
</table>
<h4>Video</h4>
<table>
<thead>
<tr>
<th>Service data attribute</th>
<th>Optional</th>
<th>Description</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">entity_id</code></td>
<td>no</td>
<td><code class="highlighter-rouge">entity_id</code> of the client</td>
<td>media_player.theater_plex</td>
</tr>
<tr>
<td><code class="highlighter-rouge">media_content_id</code></td>
<td>no</td>
<td>Quote escaped JSON with <code class="highlighter-rouge">library_name</code>, <code class="highlighter-rouge">video_name</code>, <code class="highlighter-rouge">shuffle</code> (0 or 1).</td>
<td>{ \“library_name\” : \“Adult Movies\”, \“video_name\” : \“Blade\”, \“shuffle\”: \“0\” }</td>
</tr>
<tr>
<td><code class="highlighter-rouge">media_content_type</code></td>
<td>no</td>
<td>Type of media to play, in this case <code class="highlighter-rouge">VIDEO</code></td>
<td>VIDEO</td>
</tr>
</tbody>
</table>
<h3>Compatibility</h3>
<table>
<thead>
<tr>
<th>Client</th>
<th>Limitations</th>
</tr>
</thead>
<tbody>
<tr>
<td>Any (when all controls disabled)</td>
<td>A stop button will appear but is not functional.</td>
</tr>
<tr>
<td>Any (when casting)</td>
<td>Controlling playback will work but with error logging.</td>
</tr>
<tr>
<td>Any (remote client)</td>
<td>Controls disabled.</td>
</tr>
<tr>
<td>Apple TV (PlexConnect)</td>
<td>Controls disabled. Music does not work.</td>
</tr>
<tr>
<td>iOS</td>
<td>None</td>
</tr>
<tr>
<td>NVidia Shield</td>
<td>Mute disabled. Volume set below 2 will cause error logging. Controlling playback when the Shield is both a client and a server will work but with error logging</td>
</tr>
<tr>
<td>Plex Web</td>
<td>None</td>
</tr>
<tr>
<td>Tivo Plex App</td>
<td>Only play, pause, stop/off controls enabled</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="notes" href="#notes"></a> Notes</h3>
<ul>
<li>At this moment, the Plex platform only supports one Plex Media Server.</li>
<li>
<p>It is possible to get errors that look like the following.</p>
<div class="highlighter-rouge"><pre class="highlight"><code>ERROR:plexapi:http://192.168.1.10:32400: ('Connection aborted.', BadStatusLine("''",))
INFO:homeassistant.components.media_player.plex:No server found at: http://192.168.1.10:32400
</code></pre>
</div>
<p>If this occurs, check the setting <code class="highlighter-rouge">Server</code>&gt;<code class="highlighter-rouge">Network</code>&gt;<code class="highlighter-rouge">Secure connections</code> in your Plex Media Server: if it is set to <code class="highlighter-rouge">Preferred</code> or <code class="highlighter-rouge">Required</code>, you may need to manually set the <code class="highlighter-rouge">ssl</code> and <code class="highlighter-rouge">verify</code> booleans in the <code class="highlighter-rouge">plex.conf</code> file to, respectively, <code class="highlighter-rouge">true</code> and <code class="highlighter-rouge">false</code>. See the <strong>“Setup”</strong> section above for details.</p>
</li>
</ul>
</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.plex.markdown'>Edit this page on GitHub</a></div>
<div class='brand-logo-container section'>
<img src='/images/supported_brands/plex.png' />
</div>
<div class='section'>
IoT class<sup><a href='/blog/2016/02/12/classifying-the-internet-of-things/#classifiers'><i class="icon-info-sign"></i></a></sup>: Local Polling
</div>
<div class='section'>
Introduced in release: 0.7.4
</div>
<div class='section'>
Source:
<a href='https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/media_player/plex.py'>media_player/plex.py</a>
</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'>Related components</h1>
<ul class='divided'>
<li><a href='/components/sensor.plex/'>
Plex Activity Monitor
</a></li>
</ul>
</div>
<div class='section'>
<h1 class="title delta">Category Media Player</h1>
<ul class='divided'>
<li>
<a href='/components/media_player.anthemav/'>Anthem A/V Receivers</a>
</li>
<li>
<a href='/components/media_player.apple_tv/'>Apple TV Media Player</a>
</li>
<li>
<a href='/components/media_player.bluesound/'>Bluesound</a>
</li>
<li>
<a href='/components/media_player.clementine/'>Clementine Music Player</a>
</li>
<li>
<a href='/components/media_player.denonavr/'>Denon AVR Network Receivers</a>
</li>
<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.dunehd/'>DuneHD media players</a>
</li>
<li>
<a href='/components/media_player.emby/'>Emby</a>
</li>
<li>
<a href='/components/media_player.firetv/'>FireTV</a>
</li>
<li>
<a href='/components/media_player.frontier_silicon/'>Frontier Silicon Internet Radios</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.gstreamer/'>Gstreamer</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 Smart TV</a>
</li>
<li>
<a href='/components/media_player.openhome/'>Linn / Openhome</a>
</li>
<li>
<a href='/components/media_player.squeezebox/'>Logitech Squeezebox</a>
</li>
<li>
<a href='/components/media_player.ue_smart_radio/'>Logitech UE Smart Radio</a>
</li>
<li>
<a href='/components/media_player.mpchc/'>MPC-HC</a>
</li>
<li>
<a href='/components/media_extractor/'>Media Extractor</a>
</li>
<li>
<a href='/components/media_player.monoprice/'>Monoprice 6-Zone Amplifier</a>
</li>
<li>
<a href='/components/media_player.mpd/'>Music Player Daemon (MPD)</a>
</li>
<li>
<a href='/components/media_player.nad/'>NAD</a>
</li>
<li>
<a href='/components/media_player.nadtcp/'>NAD tcp</a>
</li>
<li>
<a href='/components/media_player.onkyo/'>Onkyo</a>
</li>
<li>
<a href='/components/media_player.liveboxplaytv/'>Orange Livebox Play TV</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.philips_js/'>Philips TV</a>
</li>
<li>
<a href='/components/media_player.pioneer/'>Pioneer Network Receivers</a>
</li>
<li>
Plex
</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_rio/'>Russound RIO</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.aquostv/'>Sharp Aquos 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>
<a href='/components/media_player.soundtouch/'>Soundtouch</a>
</li>
<li>
<a href='/components/media_player.spotify/'>Spotify</a>
</li>
<li>
<a href='/components/media_player.universal/'>Universal</a>
</li>
<li>
<a href='/components/media_player.vlc/'>VLC</a>
</li>
<li>
<a href='/components/media_player.vizio/'>Vizio SmartCast TV</a>
</li>
<li>
<a href='/components/media_player.volumio/'>Volumio Media Player</a>
</li>
<li>
<a href='/components/media_player.yamaha_musiccast/'>Yamaha MusicCast Receivers</a>
</li>
<li>
<a href='/components/media_player.yamaha/'>Yamaha Network Receivers</a>
</li>
<li>
<a href='/components/media_player.ziggo_mediabox_xl/'>Ziggo Mediabox XL</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> (no support!).<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>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
</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>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
<script type="text/javascript">
docsearch({
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
indexName: 'home-assistant',
inputSelector: '#search',
debug: false // Set debug to true if you want to inspect the dropdown
});
document.querySelector('.search .close').addEventListener('click', function(ev) {
ev.preventDefault();
document.querySelector('.search-container').style.display = 'none';
});
document.querySelector('.show-search').addEventListener('click', function(ev) {
ev.preventDefault();
document.querySelector('.search-container').style.display = 'block';
document.getElementById('toggle').checked = false;
document.querySelector('.search-container input').focus();
});
</script>
</body>
</html>