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

314 lines
16 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>Yi Home Camera - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/components/camera.yi/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="Yi Home Camera">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/components/camera.yi/">
<meta property="og:type" content="article">
<meta property="og:description" content="Instructions on how to integrate a video feed (via FFmpeg) as a camera within 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="Yi Home Camera">
<meta name="twitter:description" content="Instructions on how to integrate a video feed (via FFmpeg) as a camera within 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">
Yi Home Camera
</h1>
</header>
<hr class="divider">
<p>The <code class="highlighter-rouge">yi</code> camera platform allows you to utilize <a href="https://www.yitechnology.com/">Yi Home Cameras</a> within Home Assistant. Specifically, this platform supports the line of Yi Home Cameras that are based on the Hi3518e Chipset. This includes:</p>
<ul>
<li>Yi Home 17CN / 27US / 47US</li>
<li>Yi 1080p Home</li>
<li>Yi Dome</li>
<li>Yi 1080p Dome</li>
</ul>
<p>To successfully implement this platform, the Home Assistant host should be capable of multiple simultaneous reads. For every concurrent Home Assistant user, a connection will be made to the camera every 10 seconds. This should normally not be a problem.</p>
<h2><a class="title-link" name="preparing-the-device" href="#preparing-the-device"></a> Preparing the Device</h2>
<h3><a class="title-link" name="installing-alternative-firmware" href="#installing-alternative-firmware"></a> Installing Alternative Firmware</h3>
<p>In order to integrate the camera with Home Assistant, it is necessary to install a custom firmware on the device. Instructions for doing so can be found via the <a href="https://github.com/shadow-1/yi-hack-v3">yi-hack-v3 GitHub project</a>.</p>
<p>Once installed, please ensure that you have enabled FTP and Telnet on your device.</p>
<p class="note warning">
Currently, version 0.1.4-beta2 of the custom firmware is the highest supported. Firmwares higher than this version use <a href="https://www.pureftpd.org/project/pure-ftpd">Pure-FTPd</a>, which has a bug that prevents FFmpeg from correctly rendering video files.
</p>
<p class="note warning">
Some alternative Yi firmwares enable an experimental RTSP server, which will allow you to connect to your camera via other Home Assistant camera platforms. However, this RTSP server disables the ability to use the supremely-useful Yi Home app. In order to maintain both Home Assistant compatibility <em>and</em> the native app, this platform retrieves videos via FTP.
</p>
<h3><a class="title-link" name="changing-the-ftp-password" href="#changing-the-ftp-password"></a> Changing the FTP Password</h3>
<p>Once the custom firmware is installed, a password must be added to the FTP
server. To do so:</p>
<ol>
<li>Telnet into your camera: <code class="highlighter-rouge">telnet &lt;IP ADDRESS&gt;</code>.</li>
<li>Enter <code class="highlighter-rouge">root</code> as the username and <code class="highlighter-rouge">&lt;blank&gt;</code> as the password.</li>
<li>Type <code class="highlighter-rouge">passwd</code> and hit <code class="highlighter-rouge">&lt;Enter&gt;</code>.</li>
<li>Enter your new password twice.</li>
<li>Log out of Telnet.</li>
</ol>
<h2><a class="title-link" name="configuring-the-platform" href="#configuring-the-platform"></a> Configuring the Platform</h2>
<p>To enable the platform, add the following lines to your<code class="highlighter-rouge">configuration.yaml</code> file:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">camera</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">yi</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Camera</span>
<span class="s">host</span><span class="pi">:</span> <span class="s1">'</span><span class="s">192.168.1.100'</span>
<span class="s">password</span><span class="pi">:</span> <span class="s">my_password_123</span>
</code></pre>
</div>
<p>Configuration variables:</p>
<ul>
<li><strong>name</strong> (<em>Required</em>): A human-friendly name for the camera.</li>
<li><strong>host</strong> (<em>Required</em>): The IP address or hostname of the camera.</li>
<li><strong>password</strong> (<em>Required</em>): The password to the FTP server on the camera (from above).</li>
<li><strong>path</strong> (<em>Optional</em>): The path to the raw MP4 files. Defaults to <code class="highlighter-rouge">/tmp/sd/record</code>.</li>
<li><strong>username</strong> (<em>Optional</em>): The user that can access the FTP server. Defaults to <code class="highlighter-rouge">root</code>.</li>
<li><strong>ffmpeg_arguments</strong> (<em>Optional</em>): Extra options to pass to <code class="highlighter-rouge">ffmpeg</code> (e.g. image quality or video filter options).</li>
</ul>
<h2><a class="title-link" name="image-quality" href="#image-quality"></a> Image quality</h2>
<p>Any option supported by <a href="/components/camera.ffmpeg/"><code class="highlighter-rouge">ffmpeg</code> camera</a> can be utilized via the <code class="highlighter-rouge">ffmpeg_arguments</code> configuration parameter.</p>
<p>One particularly useful adjustment deals with video size. Since Yi videos are fairly large (especially on the 1080p cameras), the following configuration will bring them down to a manageable size:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">camera</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">yi</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">My Camera</span>
<span class="s">host</span><span class="pi">:</span> <span class="s1">'</span><span class="s">192.168.1.100'</span>
<span class="s">password</span><span class="pi">:</span> <span class="s">my_password_123</span>
<span class="s">path</span><span class="pi">:</span> <span class="s">/home/camera/feed</span>
<span class="s">ffmpeg_arguments</span><span class="pi">:</span> <span class="s1">'</span><span class="s">-vf</span><span class="nv"> </span><span class="s">scale=800:450'</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/camera.yi.markdown'>Edit this page on GitHub</a></div>
<div class='brand-logo-container section'>
<img src='/images/supported_brands/yi.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.56
</div>
<div class='section'>
Source:
<a href='https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/camera/yi.py'>camera/yi.py</a>
</div>
<div class='section'>
This is a platform for
<a href='/components/camera/'>the Camera component</a>.
</div>
<div class='section'>
<h1 class="title delta">Category Camera</h1>
<ul class='divided'>
<li>
<a href='/components/camera.abode/'>Abode Camera</a>
</li>
<li>
<a href='/components/camera.amcrest/'>Amcrest IP Camera</a>
</li>
<li>
<a href='/components/camera.android_ip_webcam/'>Android IP Webcam Camera</a>
</li>
<li>
<a href='/components/camera.arlo/'>Arlo Camera</a>
</li>
<li>
<a href='/components/camera.august/'>August Camera</a>
</li>
<li>
<a href='/components/camera.axis/'>Axis Camera</a>
</li>
<li>
<a href='/components/camera.blink/'>Blink Camera</a>
</li>
<li>
<a href='/components/camera.bloomsky/'>BloomSky Camera</a>
</li>
<li>
<a href='/components/camera.proxy/'>Camera Proxy</a>
</li>
<li>
<a href='/components/camera.canary/'>Canary Camera</a>
</li>
<li>
<a href='/components/camera.dispatcher/'>Dispatcher IP Camera</a>
</li>
<li>
<a href='/components/camera.doorbird/'>DoorBird Camera</a>
</li>
<li>
<a href='/components/camera.ffmpeg/'>FFmpeg Camera</a>
</li>
<li>
<a href='/components/camera.foscam/'>Foscam IP Camera</a>
</li>
<li>
<a href='/components/camera.generic/'>Generic IP Camera</a>
</li>
<li>
<a href='/components/camera.mjpeg/'>Generic MJPEG IP Camera</a>
</li>
<li>
<a href='/components/camera.local_file/'>Local File</a>
</li>
<li>
<a href='/components/camera.mqtt/'>MQTT Camera</a>
</li>
<li>
<a href='/components/ifttt.manything/'>ManyThing</a>
</li>
<li>
<a href='/components/camera.neato/'>Neato Camera</a>
</li>
<li>
<a href='/components/camera.nest/'>Nest Camera</a>
</li>
<li>
<a href='/components/camera.netatmo/'>Netatmo Camera</a>
</li>
<li>
<a href='/components/camera.onvif/'>ONVIF Camera</a>
</li>
<li>
<a href='/components/camera.rpi_camera/'>Raspberry Pi Camera</a>
</li>
<li>
<a href='/components/camera.ring/'>Ring Camera</a>
</li>
<li>
<a href='/components/camera.skybell/'>Skybell Camera</a>
</li>
<li>
<a href='/components/camera.synology/'>Synology Camera</a>
</li>
<li>
<a href='/components/camera.usps/'>USPS Camera</a>
</li>
<li>
<a href='/components/camera.uvc/'>UniFi Video Camera</a>
</li>
<li>
<a href='/components/camera.verisure/'>Verisure Camera</a>
</li>
<li>
<a href='/components/camera.xeoma/'>Xeoma Camera</a>
</li>
<li>
Yi Home Camera
</li>
<li>
<a href='/components/camera.zoneminder/'>ZoneMinder Camera</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>