392 lines
No EOL
18 KiB
HTML
392 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>Command line Switch - Home Assistant</title>
|
|
<meta name="author" content="Home Assistant">
|
|
<meta name="description" content="Instructions how to have switches call command line commands.">
|
|
|
|
<meta name="viewport" content="width=device-width">
|
|
<link rel="canonical" href="https://home-assistant.io/components/switch.command_line/">
|
|
|
|
<meta property="fb:app_id" content="338291289691179">
|
|
<meta property="og:title" content="Command line Switch">
|
|
<meta property="og:site_name" content="Home Assistant">
|
|
<meta property="og:url" content="https://home-assistant.io/components/switch.command_line/">
|
|
<meta property="og:type" content="article">
|
|
<meta property="og:description" content="Instructions how to have switches call command line commands.">
|
|
<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="Command line Switch">
|
|
<meta name="twitter:description" content="Instructions how to have switches call command line commands.">
|
|
<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">
|
|
Command Line Switch
|
|
</h1>
|
|
</header>
|
|
<hr class="divider">
|
|
|
|
|
|
<p>The <code class="highlighter-rouge">command_line</code> switch platform issues specific commands when it is turned on and off. This might very well become our most powerful platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts!</p>
|
|
|
|
<p>To enable it, add 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">switch</span><span class="pi">:</span>
|
|
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
|
|
<span class="s">switches</span><span class="pi">:</span>
|
|
<span class="s">kitchen_light</span><span class="pi">:</span>
|
|
<span class="s">command_on</span><span class="pi">:</span> <span class="s">switch_command on kitchen</span>
|
|
<span class="s">command_off</span><span class="pi">:</span> <span class="s">switch_command off kitchen</span>
|
|
<span class="s">command_state</span><span class="pi">:</span> <span class="s">query_command kitchen</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">value</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">"online"</span><span class="nv"> </span><span class="s">}}'</span>
|
|
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Kitchen switch</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Configuration variables:</p>
|
|
|
|
<ul>
|
|
<li><strong>switches</strong> (<em>Required</em>): The array that contains all command switches.
|
|
<ul>
|
|
<li><strong>identifier</strong> (<em>Required</em>): Name of the command switch as slug. Multiple entries are possible.
|
|
<ul>
|
|
<li><strong>command_on</strong> (<em>Required</em>): The action to take for on.</li>
|
|
<li><strong>command_off</strong> (<em>Required</em>): The action to take for off.</li>
|
|
<li><strong>command_state</strong> (<em>Optional</em>): If given, this command will be run. Returning a result code <code class="highlighter-rouge">0</code> will indicate that the switch is on.</li>
|
|
<li><strong>value_template</strong> (<em>Optional</em>): If specified, <code class="highlighter-rouge">command_state</code> will ignore the result code of the command but the template evaluating to <code class="highlighter-rouge">true</code> will indicate the switch is on.</li>
|
|
<li><strong>friendly_name</strong> (<em>Optional</em>): The name used to display the switch in the frontend.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<h2><a class="title-link" name="examples" href="#examples"></a> Examples</h2>
|
|
|
|
<p>In this section you find some real life examples of how to use this switch.</p>
|
|
|
|
<h3><a class="title-link" name="arest-device" href="#arest-device"></a> aREST device</h3>
|
|
|
|
<p>The example below is doing the same as the <a href="/components/switch.arest/">aREST switch</a>. The commandline tool <a href="http://curl.haxx.se/"><code class="highlighter-rouge">curl</code></a> is used to toogle a pin which is controllable through REST.</p>
|
|
|
|
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
|
|
<span class="s">switch</span><span class="pi">:</span>
|
|
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
|
|
<span class="s">switches</span><span class="pi">:</span>
|
|
<span class="s">arest_pin4</span><span class="pi">:</span>
|
|
<span class="s">command_on</span><span class="pi">:</span> <span class="s2">"</span><span class="s">/usr/bin/curl</span><span class="nv"> </span><span class="s">-X</span><span class="nv"> </span><span class="s">GET</span><span class="nv"> </span><span class="s">http://192.168.1.10/digital/4/1"</span>
|
|
<span class="s">command_off</span><span class="pi">:</span> <span class="s2">"</span><span class="s">/usr/bin/curl</span><span class="nv"> </span><span class="s">-X</span><span class="nv"> </span><span class="s">GET</span><span class="nv"> </span><span class="s">http://192.168.1.10/digital/4/0"</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<h3><a class="title-link" name="shutdown-your-local-host" href="#shutdown-your-local-host"></a> Shutdown your local host</h3>
|
|
|
|
<p>This switch will shutdown your system that is hosting Home Assistant.</p>
|
|
|
|
<p class="note warning">
|
|
This switch will shutdown your host immediately, there will be no confirmation.
|
|
</p>
|
|
|
|
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
|
|
<span class="s">switch</span><span class="pi">:</span>
|
|
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
|
|
<span class="s">switches</span><span class="pi">:</span>
|
|
<span class="s">Home Assistant system shutdown</span><span class="pi">:</span>
|
|
<span class="s">command_off</span><span class="pi">:</span> <span class="s2">"</span><span class="s">/usr/sbin/poweroff"</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<h3><a class="title-link" name="control-your-vlc-player" href="#control-your-vlc-player"></a> Control your VLC player</h3>
|
|
|
|
<p>This switch will control a local VLC media player (<a href="https://community.home-assistant.io/t/vlc-player/106">Source</a>).</p>
|
|
|
|
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
|
|
<span class="s">switch</span><span class="pi">:</span>
|
|
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
|
|
<span class="s">switches</span><span class="pi">:</span>
|
|
<span class="s">VLC</span><span class="pi">:</span>
|
|
<span class="s">command_on</span><span class="pi">:</span> <span class="s2">"</span><span class="s">cvlc</span><span class="nv"> </span><span class="s">1.mp3</span><span class="nv"> </span><span class="s">vlc://quit</span><span class="nv"> </span><span class="s">&"</span>
|
|
<span class="s">command_off</span><span class="pi">:</span> <span class="s2">"</span><span class="s">pkill</span><span class="nv"> </span><span class="s">vlc"</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<h3><a class="title-link" name="control-foscam-motion-sensor" href="#control-foscam-motion-sensor"></a> Control Foscam Motion Sensor</h3>
|
|
|
|
<p>This switch will control the motion sensor of Foscam Webcams which Support CGI Commands (<a href="http://www.ipcamcontrol.net/files/Foscam%20IPCamera%20CGI%20User%20Guide-V1.0.4.pdf">Source</a>). This switch supports statecmd, which checks the current state of motion detection.</p>
|
|
|
|
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
|
|
<span class="s">switch</span><span class="pi">:</span>
|
|
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
|
|
<span class="s">switches</span><span class="pi">:</span>
|
|
<span class="s">foscam_motion</span><span class="pi">:</span>
|
|
<span class="s">command_on</span><span class="pi">:</span> <span class="s1">'</span><span class="s">curl</span><span class="nv"> </span><span class="s">-k</span><span class="nv"> </span><span class="s">"https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"'</span>
|
|
<span class="s">command_off</span><span class="pi">:</span> <span class="s1">'</span><span class="s">curl</span><span class="nv"> </span><span class="s">-k</span><span class="nv"> </span><span class="s">"https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"'</span>
|
|
<span class="s">command_state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">curl</span><span class="nv"> </span><span class="s">-k</span><span class="nv"> </span><span class="s">--silent</span><span class="nv"> </span><span class="s">"https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password"</span><span class="nv"> </span><span class="s">|</span><span class="nv"> </span><span class="s">grep</span><span class="nv"> </span><span class="s">-oP</span><span class="nv"> </span><span class="s">"(?<=isEnable>).*?(?=</isEnable>)"'</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">value</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">"1"</span><span class="nv"> </span><span class="s">}}'</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<ul>
|
|
<li>Replace admin and password with an “Admin” privileged Foscam user</li>
|
|
<li>Replace ipaddress with the local IP address of your Foscam</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/switch.command_line.markdown'>Edit this page on GitHub</a></div>
|
|
<div class='brand-logo-container section'>
|
|
<img src='/images/supported_brands/command_line.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: pre 0.7
|
|
</div>
|
|
<div class='section'>
|
|
This is a platform for
|
|
<a href='/components/switch/'>the Switches component</a>.
|
|
</div>
|
|
<div class='section'>
|
|
<h1 class='title delta'>Related components</h1>
|
|
<ul class='divided'>
|
|
<li><a href='/components/cover.command_line/'>
|
|
Command Line Cover
|
|
</a></li>
|
|
<li><a href='/components/binary_sensor.command_line/'>
|
|
Command line Binary Sensor
|
|
</a></li>
|
|
<li><a href='/components/notify.command_line/'>
|
|
Command line Notify
|
|
</a></li>
|
|
<li><a href='/components/rollershutter.command_line/'>
|
|
Command line Rollershutter
|
|
</a></li>
|
|
<li><a href='/components/sensor.command_line/'>
|
|
Command line Sensor
|
|
</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class='section'>
|
|
<h1 class="title delta">Category Switch</h1>
|
|
<ul class='divided'>
|
|
<li>
|
|
<a href='/components/switch.acer_projector/'>Acer Projector Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.wemo/'>Belkin WeMo Switch</a>
|
|
</li>
|
|
<li>
|
|
Command line Switch
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.dlink/'>D-Link Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.edimax/'>Edimax Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.enocean/'>EnOcean Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.hikvision/'>Hikvision Camera Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.homematic/'>Homematic Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.isy994/'>ISY994 Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.mqtt/'>MQTT Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.modbus/'>Modbus Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.mysensors/'>MySensors Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.netio/'>Netio Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.orvibo/'>Orvibo Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.pilight/'>Pilight Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.pulseaudio_loopback/'>PulseAudio Loopback Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.qwikswitch/'>QwikSwitch Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.rest/'>RESTful Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.rfxtrx/'>RFXtrx Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.rpi_gpio/'>Raspberry PI GPIO Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.rpi_rf/'>Raspberry Pi RF Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.scsgate/'>SCSGate Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.tplink/'>TPLink Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.tellstick/'>TellStick Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.tellduslive/'>Telldus Live Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.template/'>Template switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.thinkingcleaner/'>Thinking Cleaner Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.vera/'>Vera Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.verisure/'>Verisure SmartPlug</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.wake_on_lan/'>Wake on LAN Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.wink/'>Wink Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.zwave/'>Z-Wave Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.zigbee/'>ZigBee Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.arest/'>aREST Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.mfi/'>mFi Switch</a>
|
|
</li>
|
|
<li>
|
|
<a href='/components/switch.mystrom/'>myStrom Switch</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> |