306 lines
No EOL
18 KiB
HTML
306 lines
No EOL
18 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" 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="/ecosystem/">Ecosystem</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">
|
||
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>To use your Harmony remote in your installation, add the following 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>Configuration variables:</p>
|
||
|
||
<ul>
|
||
<li><strong>name</strong> (<em>Required</em>): The hub’s name to display in the front end.</li>
|
||
<li><strong>host</strong> (<em>Required</em>): The Harmony device’s IP address.</li>
|
||
<li><strong>port</strong> (<em>Optional</em>): The Harmony device’s port. 5222 is default.</li>
|
||
<li><strong>activity</strong> (<em>Optional</em>): Activity to use when turnon service is called without any data.</li>
|
||
<li><strong>scan_interval</strong> (<em>Optional</em>): Amount in seconds in between polling for device’s current activity. Defaults to 30 seconds.</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>
|
||
|
||
<p>Supported services:</p>
|
||
|
||
<ul>
|
||
<li><strong>Turn Off</strong>: Turn off all devices that were switched on from the start of the current activity</li>
|
||
<li><strong>Turn On</strong>: Start an activity, will start the default activity 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 HASS config directory. The service will respond faster if the activity ID is passed instead of the name</li>
|
||
<li><strong>Send Command</strong>: Send a command to one device, device ID and available commands are written to the configuration file at startup</li>
|
||
<li><strong>Sync</strong>: Synchronizes the Harmony device with the Harmony web service if any changes are made from the web portal or app</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="examples" href="#examples"></a> Examples</h3>
|
||
|
||
<p>A template switch can be used to display and control the state of an activity in the frontend.</p>
|
||
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">switch</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">switches</span><span class="pi">:</span>
|
||
<span class="s">tv</span><span class="pi">:</span>
|
||
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{%</span><span class="nv"> </span><span class="s">if</span><span class="nv"> </span><span class="s">is_state('remote.family_room',</span><span class="nv"> </span><span class="s">'on')</span><span class="nv"> </span><span class="s">%}on{%</span><span class="nv"> </span><span class="s">else</span><span class="nv"> </span><span class="s">%}off{%</span><span class="nv"> </span><span class="s">endif</span><span class="nv"> </span><span class="s">%}"</span>
|
||
<span class="s">turn_on</span><span class="pi">:</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">remote.turn_on</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">remote.family_room</span>
|
||
<span class="s">turn_off</span><span class="pi">:</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">remote.turn_off</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">remote.family_room</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<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>
|
||
|
||
<p>The automation example below shows how to send a command via the harmony remote using the <code class="highlighter-rouge">send_command</code> service to send the ‘Pause’ command to the hub, which is already defined as an IR code for each device to be used via the Harmony app. It is checking for the activity name as exposed through the sensor in the harmony remote component using Jinga if statements to set the device_id, sending the correct Pause command for the given activity. This requires checking your activity list and device_id from the <code class="highlighter-rouge">harmony_REMOTENAME.conf</code> file created when you start the component. In this example, the harmony hub is named bedroom.</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="s">Harmony Pause contextual for activity</span>
|
||
<span class="s">trigger</span><span class="pi">:</span>
|
||
<span class="c1"># trigger happens to be from a flic button - could be any valid event</span>
|
||
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
|
||
<span class="s">event_type</span><span class="pi">:</span> <span class="s">flic_click</span>
|
||
<span class="s">event_data</span><span class="pi">:</span>
|
||
<span class="s">button_name</span><span class="pi">:</span> <span class="s">flic_80e4da70bbb1</span>
|
||
<span class="s">click_type</span><span class="pi">:</span> <span class="s">double</span>
|
||
<span class="s">action</span><span class="pi">:</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">remote.send_command</span>
|
||
<span class="s">data_template</span><span class="pi">:</span>
|
||
<span class="c1"># using a data template to have if brances for relavant device</span>
|
||
<span class="c1"># Always the same entity_id - the harmony hub</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">remote.bedroom</span>
|
||
<span class="c1"># Always the same command - the Pause key</span>
|
||
<span class="s">command</span><span class="pi">:</span> <span class="s">Pause</span>
|
||
<span class="c1"># select device based upon the activity being undertaken.</span>
|
||
<span class="s">device</span><span class="pi">:</span> <span class="pi">></span>
|
||
<span class="no"># when in WATCH TV activity, the pause key relates to a TiVo, which is device 22987101 </span>
|
||
<span class="no">{% if is_state("sensor.bedroom", "WATCH TV") %}{% raw %}</span>
|
||
<span class="no">22987101</span>
|
||
<span class="no"># when in WATCH APPLE TV activity, the pause key relates to an Apple TV, which is device 23002316</span>
|
||
<span class="no">{% raw %}{% elif is_state("sensor.bedroom", "WATCH APPLE TV") %}</span>
|
||
<span class="no">23002316</span>
|
||
<span class="no">{% elif is_state("sensor.bedroom", "PLEX") %}</span>
|
||
<span class="no">23048786</span>
|
||
<span class="no">{% elif is_state("sensor.bedroom", "WATCH BLU RAY") %}</span>
|
||
<span class="no">23043122</span>
|
||
<span class="no">{% endif %}</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 Polling
|
||
</div>
|
||
<div class='section'>
|
||
Introduced in release: 0.34
|
||
</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>
|
||
Harmony Hub Remote
|
||
</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> |