Site updated at 2014-12-24 07:50:27 UTC
This commit is contained in:
parent
93eb451ce0
commit
737e07b9a6
17 changed files with 816 additions and 199 deletions
2
atom.xml
2
atom.xml
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Home Assistant]]></title>
|
<title><![CDATA[Home Assistant]]></title>
|
||||||
<link href="https://home-assistant.io/atom.xml" rel="self"/>
|
<link href="https://home-assistant.io/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2014-12-22T00:11:55-08:00</updated>
|
<updated>2014-12-23T23:50:22-08:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: website | Home Assistant]]></title>
|
<title><![CDATA[Category: website | Home Assistant]]></title>
|
||||||
<link href="https://home-assistant.io/blog/categories/website/atom.xml" rel="self"/>
|
<link href="https://home-assistant.io/blog/categories/website/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2014-12-22T00:11:55-08:00</updated>
|
<updated>2014-12-23T23:50:22-08:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
167
developers/add_new_platform.html
Normal file
167
developers/add_new_platform.html
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
<!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>Adding support for a new platform - Home Assistant</title>
|
||||||
|
<meta name="author" content="Paulus Schoutsen">
|
||||||
|
|
||||||
|
<meta name="description" content="Home Assistant is an open-source home automation platform running on Python 3.">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="canonical" href="https://home-assistant.io">
|
||||||
|
|
||||||
|
<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='/images/favicon-192x192.png'> Home Assistant
|
||||||
|
</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="/developers/">Developers</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="/blog/">Blog</a></li>
|
||||||
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">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">
|
||||||
|
Adding Support for a New Platform
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
<hr class="divider">
|
||||||
|
|
||||||
|
|
||||||
|
<p>Components that interact with devices are structured in core- and platform logic. This allows the same logic to be used for different platforms.</p>
|
||||||
|
|
||||||
|
<p>For example, the built-in <code>switch</code> component consists of the following files in <a href="https://github.com/balloob/home-assistant/tree/master/homeassistant/components/switch"><code>homeassistant/components/switch/</code></a>:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> File </th>
|
||||||
|
<th> Description </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> __init__.py </td>
|
||||||
|
<td> Contains the Switch core logic.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> wemo.py </td>
|
||||||
|
<td> WeMo platform logic. Included if in config <code>platform=wemo</code>. </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> tellstick.py </td>
|
||||||
|
<td> Tellstick platform logic. Included if in config <code>platform=tellstick</code>. </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p>If you are planning to add support for a new type of device to an existing component, you can get away with only writing platform logic. Have a look at how the component works with other platforms and create a similar file for the platform that you would like to add.</p>
|
||||||
|
|
||||||
|
<div class='note'><p class='title'>Note</p><p class='content'>
|
||||||
|
Platform logic should not interface directly with the devices but use a third-party Python 3 library that speaks the actual API.
|
||||||
|
</p></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
<div class="grid__item">
|
||||||
|
<p class="copyright">
|
||||||
|
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a>, <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>. Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<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>
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
249
developers/creating_components.html
Normal file
249
developers/creating_components.html
Normal file
|
@ -0,0 +1,249 @@
|
||||||
|
<!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>Creating components - Home Assistant</title>
|
||||||
|
<meta name="author" content="Paulus Schoutsen">
|
||||||
|
|
||||||
|
<meta name="description" content="Home Assistant is an open-source home automation platform running on Python 3.">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="canonical" href="https://home-assistant.io">
|
||||||
|
|
||||||
|
<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='/images/favicon-192x192.png'> Home Assistant
|
||||||
|
</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="/developers/">Developers</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="/blog/">Blog</a></li>
|
||||||
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">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">
|
||||||
|
Creating Components
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
<hr class="divider">
|
||||||
|
|
||||||
|
|
||||||
|
<p>Home Assistant offers <a href="/components/">built-in components</a> but it
|
||||||
|
is easy to built your own.</p>
|
||||||
|
|
||||||
|
<p>Each component is responsible for a specific domain within Home Assistant.
|
||||||
|
Components can listen for- or trigger events, offer services and maintain
|
||||||
|
states. Components are written in Python and can do all the goodness that
|
||||||
|
Python has to offer.</p>
|
||||||
|
|
||||||
|
<p>We can differentiate between two different types of
|
||||||
|
components within Home Assistant.</p>
|
||||||
|
|
||||||
|
<h4>Components that interact with devices</h4>
|
||||||
|
|
||||||
|
<p>These components are keeping track of devices within a specific domain. It will also provide services to control those devices.</p>
|
||||||
|
|
||||||
|
<p>For example, one of the built-in components is the <code>switch</code> component. This component is responsible for interaction with different types of switches.</p>
|
||||||
|
|
||||||
|
<p>If you are planning on adding support for a new platform, do not forget to check out the <a href="/developers/add_new_platform.html">add new platform section</a>.</p>
|
||||||
|
|
||||||
|
<h4>Components that respond to events that happen within Home Assistant</h4>
|
||||||
|
|
||||||
|
<p>These components can provide automation logic or services that do common tasks within your house.</p>
|
||||||
|
|
||||||
|
<p>For example the <code>device_sun_light_trigger</code> component tracks the state of
|
||||||
|
devices and the sun to make sure that the lights are turned on when it gets
|
||||||
|
dark and there are people home.</p>
|
||||||
|
|
||||||
|
<p>An example of such a component can be found in <a href="https://github.com/balloob/home-assistant/blob/master/config/custom_components/example.py"><code>/config/custom_components/example.py</code></a>.</p>
|
||||||
|
|
||||||
|
<h2>Loading components</h2>
|
||||||
|
|
||||||
|
<p>A component will be loaded on start if a section (ie. <code>[light]</code>) for it exists in the config file. A component can also be loaded if another component is loaded that depends on it. When loading a component Home Assistant will check the following paths:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><code><config directory>/custom_components/<component name></code></li>
|
||||||
|
<li><code>homeassistant/components/<component name></code> (built-in components)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>Once loaded, a component will only be setup if all dependencies can be loaded and are able to setup. Keep an eye on the logs to see if your component could be loaded and initialized.</p>
|
||||||
|
|
||||||
|
<div class='note warning'><p class='title'>Warning</p><p class='content'>
|
||||||
|
You can override a built-in component by having a component with the same name in your <code>config/custom_components</code> folder. This is not recommended and will probably break things!
|
||||||
|
</p></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class='note'><p class='title'>Note</p><p class='content'>
|
||||||
|
Home Assistant will use the directory that contains your config file as the directory that holds your customizations. By default this is the <code>config</code> folder in your current work directory. You can use a different folder by running Home Assistant with the –config argument: <code>python3 homeassistant --config /YOUR/CONFIG/PATH/</code>.
|
||||||
|
</p></div>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Initializing components</h2>
|
||||||
|
|
||||||
|
<p>After loading, the bootstrapper will call <code>setup(hass, config)</code> method on the component to initialize it. The following parameters are passed in:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> Parameter </th>
|
||||||
|
<th> Description </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> <code>hass</code> </td>
|
||||||
|
<td> The Home Assistant object. Call its methods to track time, register services, listen for events or track states: <a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/__init__.py#L38">Overview of available methods.</a> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> <code>config</code> </td>
|
||||||
|
<td> A dict containing the configuration. The keys of the config-dict are component names and the value is another dict with the component configuration. </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Guidance on using the Home Assistant object</h3>
|
||||||
|
|
||||||
|
<p>The Home Assistant object contains three objects to help you interact with the system.</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> Object </th>
|
||||||
|
<th> Description </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> <code>hass.states</code> </td>
|
||||||
|
<td> This is the StateMachine. It allows you to set states and trach when they are changed. <a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/__init__.py#L473">See available methods</a>. </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> <code>hass.events</code> </td>
|
||||||
|
<td> This is the EventBus. It allows you to trigger and listen for events.<br><a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/__init__.py#L308">See available methods</a>. </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> <code>hass.services</code> </td>
|
||||||
|
<td> This is the ServiceRegistry. It allows you to register services.<br><a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/__init__.py#L589">See available methods</a>. </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Example on using the configuration parameter</h3>
|
||||||
|
|
||||||
|
<p>If your configuration file containes the following lines:</p>
|
||||||
|
|
||||||
|
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
</pre></td><td class='code'><pre><code class=''><span class='line'>[example]
|
||||||
|
</span><span class='line'>host=paulusschoutsen.nl</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
<p>Then in the setup-method of your component you will be able to refer to <code>config['example']['host']</code> to get the value <code>paulusschoutsen.nl</code>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
<div class="grid__item">
|
||||||
|
<p class="copyright">
|
||||||
|
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a>, <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>. Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<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>
|
185
developers/frontend.html
Normal file
185
developers/frontend.html
Normal file
|
@ -0,0 +1,185 @@
|
||||||
|
<!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>Frontend development - Home Assistant</title>
|
||||||
|
<meta name="author" content="Paulus Schoutsen">
|
||||||
|
|
||||||
|
<meta name="description" content="Home Assistant is an open-source home automation platform running on Python 3.">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="canonical" href="https://home-assistant.io">
|
||||||
|
|
||||||
|
<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='/images/favicon-192x192.png'> Home Assistant
|
||||||
|
</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="/developers/">Developers</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="/blog/">Blog</a></li>
|
||||||
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">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">
|
||||||
|
Frontend Development
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
<hr class="divider">
|
||||||
|
|
||||||
|
|
||||||
|
<p>Home Assistant uses <a href="https://www.polymer-project.org/">Polymer</a> for the frontend. Polymer allows building encapsulated and interoperable custom elements that extend HTML itself.</p>
|
||||||
|
|
||||||
|
<h1>Turning on development mode</h1>
|
||||||
|
|
||||||
|
<p>Home Assistant will by default serve the compiled version of the frontend. To change it so that the components are served separately, update your <code>home-assistant.conf</code> to have these lines:</p>
|
||||||
|
|
||||||
|
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
<span class='line-number'>3</span>
|
||||||
|
</pre></td><td class='code'><pre><code class=''><span class='line'>[http]
|
||||||
|
</span><span class='line'>api_password=YOUR_PASSWORD
|
||||||
|
</span><span class='line'>development=1</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
<p>After turning on development mode, you will have to install the webcomponents that the frontend depends on. You can do this by running the <code>build_frontend</code> script.</p>
|
||||||
|
|
||||||
|
<div class='note warning'><p class='title'>Warning</p><p class='content'>
|
||||||
|
Do not use development mode in production. Home Assistant uses aggresive caching to improve the mobile experience. This is disabled during development so that you do not have to restart the server in between changes.
|
||||||
|
</p></div>
|
||||||
|
|
||||||
|
|
||||||
|
<h1>Building the frontend</h1>
|
||||||
|
|
||||||
|
<p>To build the frontend you need to install node and the npm packages bower and vulcanize.</p>
|
||||||
|
|
||||||
|
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
</pre></td><td class='code'><pre><code class='bash'><span class='line'>npm install -g bower vulcanize
|
||||||
|
</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
<p>After that you can run <a href="https://github.com/balloob/home-assistant/blob/master/build_frontend"><code>./build_frontend</code></a> from the project directory. This will take all the used webcomponents and ‘vulcanize’ it into a single file to be served by Home Assistant. The script also updates <a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/components/http/frontend.py"><code>homeassistant/components/http/frontend.py</code></a> with an MD5 hash of the frontend.</p>
|
||||||
|
|
||||||
|
<h1>Adding new state cards</h1>
|
||||||
|
|
||||||
|
<p>The main interface of Home Assistant is a list of current states in the State Machine. It will filter out the group states and offers options to filter by groups on the top.</p>
|
||||||
|
|
||||||
|
<p>Currently there are two supported card types:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Display: shows the state in the card</li>
|
||||||
|
<li>Toggle: allows the user to toggle a device on/off from its state</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>To add your own card type, follow the following steps:</p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>Adjust the cardType property of the State class in <a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/components/http/www_static/polymer/home-assistant-api.html">home-assistant-api.html</a> to return your new card type when appropriate.</li>
|
||||||
|
<li>Create a new component following the naming convention state-card-CARDTYPE.html.</li>
|
||||||
|
<li>Import your new component and add a template for it in <a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/components/http/www_static/polymer/states-cards.html">states-cards.html</a>.</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
<div class="grid__item">
|
||||||
|
<p class="copyright">
|
||||||
|
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a>, <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>. Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<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>
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -75,137 +86,25 @@
|
||||||
<hr class="divider">
|
<hr class="divider">
|
||||||
|
|
||||||
|
|
||||||
<p>Home Assistant can be extended by components. Each component is responsible for a specific domain within Home Assistant. An example is the switch component, which is responsible for interaction with different types of switches. Components can listen for- or trigger events, offer services and maintain states. Components are written in Python and can do all the goodness that Python has to offer.</p>
|
<p>Home Assistant is build from the ground-up to be easily extensible by other developers using components. It uses <a href="https://www.python.org/">Python 3</a> for the backend and <a href="https://www.polymer-project.org/">Polymer (Webcomponents)</a> for the frontend.</p>
|
||||||
|
|
||||||
<p>Home Assistant offers <a href="/components/">built-in components</a> but it is easy to built your own. An example component can be found in <a href="https://github.com/balloob/home-assistant/blob/master/config/custom_components/example.py"><code>/config/custom_components/example.py</code></a>.</p>
|
<p>For further reading, see:</p>
|
||||||
|
|
||||||
<h2>Component structure</h2>
|
|
||||||
|
|
||||||
<p>Components that interact with devices are structured in core- and platform logic. This allows the same logic to be used for different platforms. Components that add automation usually consist of, but are not limited to, one file.</p>
|
|
||||||
|
|
||||||
<p>For example, the built-in switch component consists of the following files in <a href="https://github.com/balloob/home-assistant/tree/master/homeassistant/components/switch"><code>homeassistant/components/switch/</code></a>:</p>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th> File </th>
|
|
||||||
<th> Description </th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td> __init__.py </td>
|
|
||||||
<td> Contains the Switch core logic.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td> wemo.py </td>
|
|
||||||
<td> WeMo platform logic. Included if in config <code>platform=wemo</code>. </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td> tellstick.py </td>
|
|
||||||
<td> Tellstick platform logic. Included if in config <code>platform=tellstick</code>. </td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<h2>Deciding what to built</h2>
|
|
||||||
|
|
||||||
<p>If you are planning to add support for a new type of device to an existing component, you can get away with only writing a platform. Have a look at how the component works with other platforms and create a similar file for the platform that you would like to add.</p>
|
|
||||||
|
|
||||||
<div class='note'><p class='title'>Note</p><p class='content'>
|
|
||||||
Platform logic should not interface directly with the devices but use a third-party Python 3 library that speaks the actual API.
|
|
||||||
</p></div>
|
|
||||||
|
|
||||||
|
|
||||||
<h2>Loading components</h2>
|
|
||||||
|
|
||||||
<p>A component will be loaded on start if a section (ie. <code>[light]</code>) for it exists in the config file. A component can also be loaded if another component is loaded that depends on it. When loading a component Home Assistant will check the following paths:</p>
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><code><config directory>/custom_components/<component name></code></li>
|
<li><a href="/developers/architecture.html">
|
||||||
<li><code>homeassistant/components/<component name></code> (built-in components)</li>
|
Home Assistant Architecture
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating a custom component
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding support for a new platform
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<p>Once loaded, a component will only be setup if all dependencies can be loaded and are able to setup. Keep an eye on the logs to see if your component could be loaded and initialized.</p>
|
|
||||||
|
|
||||||
<div class='note warning'><p class='title'>Warning</p><p class='content'>
|
|
||||||
You can override a built-in component by having a component with the same name in your <code>config/custom_components</code> folder. This is not recommended and will probably break things!
|
|
||||||
</p></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class='note'><p class='title'>Note</p><p class='content'>
|
|
||||||
Home Assistant will use the directory that contains your config file as the directory that holds your customizations. By default this is the <code>config</code> folder in your current work directory. You can use a different folder by running Home Assistant with the –config argument: <code>python3 homeassistant --config /YOUR/CONFIG/PATH/</code>.
|
|
||||||
</p></div>
|
|
||||||
|
|
||||||
|
|
||||||
<h2>Initializing components</h2>
|
|
||||||
|
|
||||||
<p>After loading, the bootstrapper will call <code>setup(hass, config)</code> method on the component to initialize it. The following parameters are passed in:</p>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th> Parameter </th>
|
|
||||||
<th> Description </th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td> <code>hass</code> </td>
|
|
||||||
<td> The Home Assistant object. Call its methods to track time, register services, listen for events or track states: <a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/__init__.py#L38">Overview of available methods.</a> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td> <code>config</code> </td>
|
|
||||||
<td> A dict containing the configuration. The keys of the config-dict are component names and the value is another dict with the component configuration. </td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<h3>Guidance on using the Home Assistant object</h3>
|
|
||||||
|
|
||||||
<p>The Home Assistant object contains three objects to help you interact with the system.</p>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th> Object </th>
|
|
||||||
<th> Description </th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td> <code>hass.states</code> </td>
|
|
||||||
<td> This is the StateMachine. It allows you to set states and trach when they are changed. <a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/__init__.py#L473">See available methods</a>. </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td> <code>hass.events</code> </td>
|
|
||||||
<td> This is the EventBus. It allows you to trigger and listen for events.<br><a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/__init__.py#L308">See available methods</a>. </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td> <code>hass.services</code> </td>
|
|
||||||
<td> This is the ServiceRegistry. It allows you to register services.<br><a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/__init__.py#L589">See available methods</a>. </td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<h3>Example on using the configuration parameter</h3>
|
|
||||||
|
|
||||||
<p>If your configuration file containes the following lines:</p>
|
|
||||||
|
|
||||||
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
|
||||||
<span class='line-number'>2</span>
|
|
||||||
</pre></td><td class='code'><pre><code class=''><span class='line'>[example]
|
|
||||||
</span><span class='line'>host=paulusschoutsen.nl</span></code></pre></td></tr></table></div></figure>
|
|
||||||
|
|
||||||
|
|
||||||
<p>Then in the setup-method of your component you will be able to refer to <code>config['example']['host']</code> to get the value <code>paulusschoutsen.nl</code>.</p>
|
|
||||||
|
|
||||||
|
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
|
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
21
index.html
21
index.html
|
@ -30,21 +30,32 @@
|
||||||
<div class="grid-wrapper">
|
<div class="grid-wrapper">
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item three-tenths lap-four-sixths palm-one-whole ha-title">
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
<a href="/" class="site-title">
|
<a href="/" class="site-title">
|
||||||
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid__item seven-tenths lap-two-sixths palm-one-whole">
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
<nav>
|
<nav>
|
||||||
<input type="checkbox" id="toggle">
|
<input type="checkbox" id="toggle">
|
||||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
<ul class="menu pull-right">
|
<ul class="menu pull-right">
|
||||||
<li><a href="/getting-started/">Getting started</a></li>
|
<li><a href="/getting-started/">Getting started</a></li>
|
||||||
<li><a href="/architecture/">Architecture</a></li>
|
<li>
|
||||||
<li><a href="/developers/">Developers</a></li>
|
<a href="/developers/">Developers</a>
|
||||||
<li><a href="/api/">API</a></li>
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">Rest API</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li><a href="/blog/">Blog</a></li>
|
<li><a href="/blog/">Blog</a></li>
|
||||||
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
<li><a href="https://groups.google.com/forum/#!forum/home-assistant-dev">Need help?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
60
sitemap.xml
60
sitemap.xml
|
@ -6,50 +6,68 @@
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/blog/archives/</loc>
|
<loc>https://home-assistant.io/developers/add_new_platform.html</loc>
|
||||||
<lastmod>2014-12-22T00:11:55-08:00</lastmod>
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>0.7</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://home-assistant.io/developers/api.html</loc>
|
||||||
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>0.7</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://home-assistant.io/developers/architecture.html</loc>
|
||||||
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>0.7</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://home-assistant.io/developers/creating_components.html</loc>
|
||||||
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>0.7</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://home-assistant.io/developers/frontend.html</loc>
|
||||||
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/blog/</loc>
|
<loc>https://home-assistant.io/blog/</loc>
|
||||||
<lastmod>2014-12-22T00:11:55-08:00</lastmod>
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>0.7</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://home-assistant.io/blog/archives/</loc>
|
||||||
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/</loc>
|
<loc>https://home-assistant.io/</loc>
|
||||||
<lastmod>2014-12-22T00:11:55-08:00</lastmod>
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>1.0</priority>
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/api/</loc>
|
<loc>https://home-assistant.io/components/</loc>
|
||||||
<lastmod>2014-12-22T00:11:55-08:00</lastmod>
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
|
||||||
<priority>0.7</priority>
|
|
||||||
</url>
|
|
||||||
<url>
|
|
||||||
<loc>https://home-assistant.io/architecture/</loc>
|
|
||||||
<lastmod>2014-12-22T00:11:55-08:00</lastmod>
|
|
||||||
<changefreq>weekly</changefreq>
|
|
||||||
<priority>0.7</priority>
|
|
||||||
</url>
|
|
||||||
<url>
|
|
||||||
<loc>https://home-assistant.io/developers/</loc>
|
|
||||||
<lastmod>2014-12-22T00:11:55-08:00</lastmod>
|
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/</loc>
|
<loc>https://home-assistant.io/getting-started/</loc>
|
||||||
<lastmod>2014-12-22T00:11:55-08:00</lastmod>
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/</loc>
|
<loc>https://home-assistant.io/developers/</loc>
|
||||||
<lastmod>2014-12-22T00:11:55-08:00</lastmod>
|
<lastmod>2014-12-23T23:50:22-08:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue