home-assistant.github.io/components/binary_sensor.ffmpeg_motion/index.html
2018-03-09 18:51:31 +00:00

403 lines
18 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>FFmpeg Motion Binary Sensor - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Instructions on how to integrate an FFmpeg-based motion binary sensor">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/components/binary_sensor.ffmpeg_motion/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="FFmpeg Motion Binary Sensor">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/components/binary_sensor.ffmpeg_motion/">
<meta property="og:type" content="article">
<meta property="og:description" content="Instructions on how to integrate an FFmpeg-based motion binary sensor">
<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="FFmpeg Motion Binary Sensor">
<meta name="twitter:description" content="Instructions on how to integrate an FFmpeg-based motion binary sensor">
<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">
FFmpeg Motion Binary Sensor
</h1>
</header>
<hr class="divider">
<p>The <code class="highlighter-rouge">ffmpeg</code> platform allows you to use any video feed with <a href="http://www.ffmpeg.org/">FFmpeg</a> for motion sensors in Home Assistant.</p>
<p class="note">
If the <code class="highlighter-rouge">ffmpeg</code> process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service <em>ffmpeg.start</em>, <em>ffmpeg.stop</em>, <em>ffmpeg.restart</em>.
</p>
<h3><a class="title-link" name="motion" href="#motion"></a> Motion</h3>
<p>FFmpeg doesnt have a motion detection filter, but can use a scene filter to detect a new scene/motion. You can set how much needs to change in order to detect motion with the option changes, the percent value of change between frames. If you want a really small value for changes, you can also add a denoise filter.</p>
<p>To add FFmpeg with motion detection to 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">binary_sensor</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">ffmpeg_motion</span>
<span class="s">input</span><span class="pi">:</span> <span class="s">FFMPEG_SUPPORTED_INPUT</span>
</code></pre>
</div>
<p>Configuration variables:</p>
<ul>
<li><strong>input</strong> (<em>Required</em>): An FFmpeg-compatible input file, stream, or feed.</li>
<li><strong>name</strong> (<em>Optional</em>): Override the name of your camera for the frontend.</li>
<li><strong>initial_state</strong> (<em>Optional</em>): Start <code class="highlighter-rouge">ffmpeg</code> with Home Assistant. Defaults to <code class="highlighter-rouge">true</code>.</li>
<li><strong>changes</strong> (<em>Optional</em>): How much needs to change between two frames to detect it as motion (a lower value is more sensitive). Defaults to 10%.</li>
<li><strong>reset</strong> (<em>Optional</em>): The time to reset the state after no new motion is detected. Defaults to 20 seconds.</li>
<li><strong>repeat</strong> (<em>Optional</em>): How many events need to be detected in <em>repeat_time</em> in order to trigger a motion. Defaults to 0 repeats (deactivated).</li>
<li><strong>repeat_time</strong> (<em>Optional</em>): The span of time <em>repeat</em> events need to occur in before triggering a motion. Defaults to 0 seconds (deactivated).</li>
<li><strong>extra_arguments</strong> (<em>Optional</em>): Extra options to pass to <code class="highlighter-rouge">ffmpeg</code>, e.g. video denoise filtering.</li>
</ul>
<p>To experiment with values (changes/100 is the scene value in <code class="highlighter-rouge">ffmpeg</code>):</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ffmpeg -i YOUR_INPUT -an -filter:v <span class="k">select</span><span class="o">=</span>gt<span class="o">(</span>scene<span class="se">\,</span>0.1<span class="o">)</span> -f framemd5 -
</code></pre>
</div>
<p>If you are running into trouble with this sensor, please refer to the <a href="/components/ffmpeg/#troubleshooting">troubleshooting section</a>.</p>
<h4><a class="title-link" name="tips" href="#tips"></a> Tips</h4>
<ul>
<li>Use motion only in a custom area with <a href="https://ffmpeg.org/ffmpeg-filters.html#crop">crop filter</a>:</li>
</ul>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">extra_arguments</span><span class="pi">:</span> <span class="s">-filter:v "crop=100:100:12:34"</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/binary_sensor.ffmpeg_motion.markdown'>Edit this page on GitHub</a></div>
<div class='brand-logo-container section'>
<img src='/images/supported_brands/ffmpeg.png' />
</div>
<div class='section'>
Introduced in release: 0.27
</div>
<div class='section'>
Source:
<a href='https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/binary_sensor/ffmpeg_motion.py'>binary_sensor/ffmpeg_motion.py</a>
</div>
<div class='section'>
This is a platform for
<a href='/components/binary_sensor/'>the Binary Sensor component</a>.
</div>
<div class='section'>
<h1 class="title delta">Category Binary Sensor</h1>
<ul class='divided'>
<li>
<a href='/components/binary_sensor.ads/'>ADS Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.abode/'>Abode Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.alarmdecoder/'>AlarmDecoder Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.android_ip_webcam/'>Android IP Webcam Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.august/'>August Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.aurora/'>Aurora sensor</a>
</li>
<li>
<a href='/components/binary_sensor.axis/'>Axis Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.bayesian/'>Bayesian Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.bbb_gpio/'>BeagleBone Black GPIO Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.blink/'>Blink Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.bloomsky/'>BloomSky Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.command_line/'>Command line Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.concord232/'>Concord232 Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.ecobee/'>Ecobee Binary Sensor</a>
</li>
<li>
<a href='/components/sensor.ecobee/'>Ecobee Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.egardia/'>Egardia Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.eight_sleep/'>Eight Sleep Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.enocean/'>EnOcean Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.envisalink/'>Envisalink Binary Sensor</a>
</li>
<li>
FFmpeg Motion Binary Sensor
</li>
<li>
<a href='/components/binary_sensor.ffmpeg_noise/'>FFmpeg Noise Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.flic/'>Flic Smart Button</a>
</li>
<li>
<a href='/components/binary_sensor.http/'>HTTP Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.hikvision/'>Hikvision Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.hive/'>Hive Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.homematic/'>Homematic Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.ihc/'>IHC Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.isy994/'>ISY994 Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.insteon_plm/'>Insteon PLM Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.iss/'>International Space Station</a>
</li>
<li>
<a href='/components/binary_sensor.knx/'>KNX Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.mqtt/'>MQTT Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.raincloud/'>Melnor Raincloud Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.mercedesme/'>Mercedes me Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.modbus/'>Modbus Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.mysensors/'>MySensors Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.nx584/'>NX584 zones</a>
</li>
<li>
<a href='/components/binary_sensor.nest/'>Nest Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.netatmo/'>Netatmo Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.octoprint/'>OctoPrint Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.rpi_pfio/'>PiFace Digital I/O Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.pilight/'>Pilight Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.ping/'>Ping (ICMP) Binary sensor</a>
</li>
<li>
<a href='/components/binary_sensor.rest/'>RESTful Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.rfxtrx/'>RFXtrx Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.rpi_gpio/'>Raspberry Pi GPIO Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.raspihats/'>Raspihats Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.ring/'>Ring Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.spc/'>SPC Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.satel_integra/'>Satel Integra Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.skybell/'>Skybell Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.sleepiq/'>SleepIQ Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.tcp/'>TCP Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.tellduslive/'>Telldus Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.template/'>Template Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.tesla/'>Tesla Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.threshold/'>Threshold Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.trend/'>Trend Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.velbus/'>Velbus sensors</a>
</li>
<li>
<a href='/components/binary_sensor.vera/'>Vera Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.verisure/'>Verisure Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.wink/'>Wink Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.workday/'>Workday Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.xiaomi_aqara/'>Xiaomi Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.zwave/'>Z-Wave Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.zigbee/'>ZigBee Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.zha/'>ZigBee Home Automation Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.arest/'>aREST Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.deconz/'>deCONZ Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.gc100/'>gc100 Binary Sensor</a>
</li>
<li>
<a href='/components/binary_sensor.mystrom/'>myStrom Binary Sensor</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>