357 lines
20 KiB
HTML
357 lines
20 KiB
HTML
<!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>Harmony Hub Remote - Home Assistant</title>
|
||
<meta name="author" content="Home Assistant">
|
||
<meta name="description" content="Instructions how to integrate Harmony Hub remotes into Home Assistant.">
|
||
<meta name="viewport" content="width=device-width">
|
||
<link rel="canonical" href="https://home-assistant.io/components/remote.harmony/">
|
||
<meta property="fb:app_id" content="338291289691179">
|
||
<meta property="og:title" content="Harmony Hub Remote">
|
||
<meta property="og:site_name" content="Home Assistant">
|
||
<meta property="og:url" content="https://home-assistant.io/components/remote.harmony/">
|
||
<meta property="og:type" content="article">
|
||
<meta property="og:description" content="Instructions how to integrate Harmony Hub remotes 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="Harmony Hub Remote">
|
||
<meta name="twitter:description" content="Instructions how to integrate Harmony Hub remotes 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">
|
||
Harmony Hub Remote
|
||
</h1>
|
||
</header>
|
||
<hr class="divider">
|
||
<p>The <code class="highlighter-rouge">harmony</code> remote platform allows you to control the state of your <a href="http://www.logitech.com/en-us/product/harmony-hub">Harmony Hub Device</a>.</p>
|
||
<p>Supported units:</p>
|
||
<ul>
|
||
<li>Harmony Hub</li>
|
||
<li>Harmony Companion</li>
|
||
<li>Harmony Pro</li>
|
||
<li>Harmony Elite</li>
|
||
</ul>
|
||
<p>The preferred way to setup the Harmony remote is by enabling the <a href="/components/discovery/">discovery component</a>.</p>
|
||
<p>However, if you want to manually configure the device, you will need to add its settings to your <code class="highlighter-rouge">configuration.yaml</code> file:</p>
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
|
||
<span class="s">remote</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">harmony</span>
|
||
<span class="s">name</span><span class="pi">:</span> <span class="s">Bedroom</span>
|
||
<span class="s">host</span><span class="pi">:</span> <span class="s">10.168.1.13</span>
|
||
</code></pre>
|
||
</div>
|
||
<p>You can override some default configuration values on a discovered hub (e.g. the <code class="highlighter-rouge">port</code> or <code class="highlighter-rouge">activity</code>) by adding a <code class="highlighter-rouge">configuration.yaml</code> setting. In this case leave the <code class="highlighter-rouge">host</code> setting empty so the platform will discover the host IP automatically, but set the <code class="highlighter-rouge">name</code> in the config to match exactly the name you have set for your Hub so the platform knows what Hub you are trying to configure.</p>
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry with discovery</span>
|
||
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">harmony</span>
|
||
<span class="s">name</span><span class="pi">:</span> <span class="s">Living Room</span>
|
||
<span class="s">activity</span><span class="pi">:</span> <span class="s">Watch TV</span>
|
||
</code></pre>
|
||
</div>
|
||
<p>Configuration variables:</p>
|
||
<ul>
|
||
<li><strong>name</strong> (<em>Required</em>): The hub’s name to display in the frontend. This name must match the name you have set on the Hub.</li>
|
||
<li><strong>host</strong> (<em>Optional</em>): The Harmony device’s IP address. Leave empty for the IP to be discovered automatically.</li>
|
||
<li><strong>port</strong> (<em>Optional</em>): The Harmony device’s port. Defaults to 5222.</li>
|
||
<li><strong>activity</strong> (<em>Optional</em>): Activity to use when <code class="highlighter-rouge">turn_on</code> service is called without any data. Overrides the <code class="highlighter-rouge">activity</code> setting for this discovered hub.</li>
|
||
<li><strong>delay_secs</strong> (<em>Optional</em>): Default duration in seconds between sending commands to a device.</li>
|
||
</ul>
|
||
<p>Configuration file:</p>
|
||
<p>Upon startup one file will be written to your Home Assistant configuration directory per device in the following format: <code class="highlighter-rouge">harmony_REMOTENAME.conf</code>. The file will contain:</p>
|
||
<ul>
|
||
<li>List of all programmed activity names and ID numbers</li>
|
||
<li>List of all programmed device names and ID numbers</li>
|
||
<li>List of all available commands per programmed device</li>
|
||
</ul>
|
||
<h3><a class="title-link" name="service-remoteturn_off" href="#service-remoteturn_off"></a> Service <code class="highlighter-rouge">remote.turn_off</code></h3>
|
||
<p>Turn off all devices that were switched on from the start of the current activity.</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Service data attribute</th>
|
||
<th>Optional</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">entity_id</code></td>
|
||
<td>yes</td>
|
||
<td>Only act on a specific remote, else target all.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3><a class="title-link" name="service-remoteturn_on" href="#service-remoteturn_on"></a> Service <code class="highlighter-rouge">remote.turn_on</code></h3>
|
||
<p>Start an activity. Will start the default <code class="highlighter-rouge">activity</code> from configuration.yaml if no activity is specified. The specified activity can either be the activity name or the activity ID from the configuration file written to your <a href="/docs/configuration/">Home Assistant configuration directory</a>.</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Service data attribute</th>
|
||
<th>Optional</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">entity_id</code></td>
|
||
<td>yes</td>
|
||
<td>Only act on a specific remote, else target all.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">activity</code></td>
|
||
<td>yes</td>
|
||
<td>Activity ID or Activity Name to start.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3><a class="title-link" name="service-remotesend_command" href="#service-remotesend_command"></a> Service <code class="highlighter-rouge">remote.send_command</code></h3>
|
||
<p>Send a single command or a set of commands to one device, device ID and available commands are written to the configuration file at startup. You can optionally specify the number of times you wish to repeat the command(s) and delay you want between repeated command(s).</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Service data attribute</th>
|
||
<th>Optional</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">entity_id</code></td>
|
||
<td>yes</td>
|
||
<td>Only act on a specific remote, else target all.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">device</code></td>
|
||
<td>no</td>
|
||
<td>Device ID to send the command to.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">command</code></td>
|
||
<td>no</td>
|
||
<td>A single command or a list of commands to send.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">num_repeats</code></td>
|
||
<td>yes</td>
|
||
<td>The number of times to repeat the command(s).</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">delay_secs</code></td>
|
||
<td>yes</td>
|
||
<td>The number of seconds between sending each command.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>A typical service call for sending several button presses looks like this:</p>
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">service</span><span class="pi">:</span> <span class="s">remote.send_command</span>
|
||
<span class="s">data</span><span class="pi">:</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">remote.tv_room</span>
|
||
<span class="s">command</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">home</span>
|
||
<span class="pi">-</span> <span class="s">1</span>
|
||
<span class="pi">-</span> <span class="s">2</span>
|
||
<span class="s">device</span><span class="pi">:</span> <span class="s">4576546</span>
|
||
<span class="s">delay_secs</span><span class="pi">:</span> <span class="s">0.6</span>
|
||
</code></pre>
|
||
</div>
|
||
<h3><a class="title-link" name="service-remoteharmony_sync" href="#service-remoteharmony_sync"></a> Service <code class="highlighter-rouge">remote.harmony_sync</code></h3>
|
||
<p>Synchronize the Harmony device with the Harmony web service if any changes are made from the web portal or app.</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Service data attribute</th>
|
||
<th>Optional</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">entity_id</code></td>
|
||
<td>yes</td>
|
||
<td>Only act on a specific remote, else target all.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3><a class="title-link" name="examples" href="#examples"></a> Examples</h3>
|
||
<p>Template sensors can be utilized to display current activity in the frontend.</p>
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">sensor</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">template</span>
|
||
<span class="s">sensors</span><span class="pi">:</span>
|
||
<span class="s">family_room</span><span class="pi">:</span>
|
||
<span class="s">value_template</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{{</span><span class="nv"> </span><span class="s">states.remote.family_room.attributes.current_activity</span><span class="nv"> </span><span class="s">}}'</span>
|
||
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Family</span><span class="nv"> </span><span class="s">Room'</span>
|
||
<span class="s">bedroom</span><span class="pi">:</span>
|
||
<span class="s">value_template</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{{</span><span class="nv"> </span><span class="s">states.remote.bedroom.attributes.current_activity</span><span class="nv"> </span><span class="s">}}'</span>
|
||
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s1">'</span><span class="s">bedroom'</span>
|
||
</code></pre>
|
||
</div>
|
||
<p>The example below shows how to control an <code class="highlighter-rouge">input_boolean</code> switch using the Harmony remote’s current activity. The switch will turn on when the remote’s state changes and the Kodi activity is started and off when the remote’s state changes and the current activity is “PowerOff”.</p>
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Watch</span><span class="nv"> </span><span class="s">TV</span><span class="nv"> </span><span class="s">started</span><span class="nv"> </span><span class="s">from</span><span class="nv"> </span><span class="s">harmony</span><span class="nv"> </span><span class="s">hub"</span>
|
||
<span class="s">trigger</span><span class="pi">:</span>
|
||
<span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">remote.family_room</span>
|
||
<span class="s">condition</span><span class="pi">:</span>
|
||
<span class="s">condition</span><span class="pi">:</span> <span class="s">template</span>
|
||
<span class="s">value_template</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{{</span><span class="nv"> </span><span class="s">trigger.to_state.attributes.current_activity</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">"Kodi"</span><span class="nv"> </span><span class="s">}}'</span>
|
||
<span class="s">action</span><span class="pi">:</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">input_boolean.turn_on</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">input_boolean.notify</span>
|
||
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s2">"</span><span class="s">PowerOff</span><span class="nv"> </span><span class="s">started</span><span class="nv"> </span><span class="s">from</span><span class="nv"> </span><span class="s">harmony</span><span class="nv"> </span><span class="s">hub"</span>
|
||
<span class="s">trigger</span><span class="pi">:</span>
|
||
<span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">remote.family_room</span>
|
||
<span class="s">condition</span><span class="pi">:</span>
|
||
<span class="s">condition</span><span class="pi">:</span> <span class="s">template</span>
|
||
<span class="s">value_template</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{{</span><span class="nv"> </span><span class="s">trigger.to_state.attributes.current_activity</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">"PowerOff"</span><span class="nv"> </span><span class="s">}}'</span>
|
||
<span class="s">action</span><span class="pi">:</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">input_boolean.turn_off</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">input_boolean.notify</span>
|
||
</code></pre>
|
||
</div>
|
||
</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/remote.harmony.markdown'>Edit this page on GitHub</a></div>
|
||
<div class='brand-logo-container section'>
|
||
<img src='/images/supported_brands/logitech.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 Push
|
||
</div>
|
||
<div class='section'>
|
||
Introduced in release: 0.34
|
||
</div>
|
||
<div class='section'>
|
||
Source:
|
||
<a href='https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/remote/harmony.py'>remote/harmony.py</a>
|
||
</div>
|
||
<div class='section'>
|
||
This is a platform for
|
||
<a href='/components/remote/'>the Remotes component</a>.
|
||
</div>
|
||
<div class='section'>
|
||
<h1 class="title delta">Category Remote</h1>
|
||
<ul class='divided'>
|
||
<li>
|
||
<a href='/components/remote.apple_tv/'>Apple TV Remote</a>
|
||
</li>
|
||
<li>
|
||
Harmony Hub Remote
|
||
</li>
|
||
<li>
|
||
<a href='/components/remote.kira/'>Kira Remote</a>
|
||
</li>
|
||
<li>
|
||
<a href='/components/remote.xiaomi_miio/'>Xiaomi IR Remote</a>
|
||
</li>
|
||
<li>
|
||
<a href='/components/remote.itach/'>iTach Remote</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>
|