Merge pull request #1 from home-assistant/master

Update from original
This commit is contained in:
jbags81 2016-05-11 23:59:08 -04:00
commit e2e0817fc5
714 changed files with 12830 additions and 8566 deletions

4
.gitmodules vendored
View File

@ -1,4 +1,4 @@
[submodule "_deploy"]
path = _deploy
url = https://github.com/balloob/home-assistant.git
branch = gh-pages
url = https://github.com/home-assistant/home-assistant.git
branch = gh-pages

View File

@ -15,6 +15,7 @@ group :development do
gem 'execjs'
gem 'therubyracer', :platforms => :ruby
gem 'coderay'
gem 'pry'
end
group :jekyll_plugins do

View File

@ -38,6 +38,7 @@ GEM
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
mercenary (0.3.5)
method_source (0.8.2)
octopress (3.0.11)
jekyll (>= 2.0)
mercenary (~> 0.3.2)
@ -63,6 +64,10 @@ GEM
octopress-tag-helpers (1.0.8)
jekyll (>= 2.0)
posix-spawn (0.3.11)
pry (0.10.3)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
pygments.rb (0.6.3)
posix-spawn (~> 0.3.6)
yajl-ruby (~> 1.2.0)
@ -87,6 +92,7 @@ GEM
rack (~> 1.4)
rack-protection (~> 1.4)
tilt (>= 1.3, < 3)
slop (3.6.0)
stringex (1.4.0)
therubyracer (0.12.2)
libv8 (~> 3.16.14.0)
@ -111,6 +117,7 @@ DEPENDENCIES
octopress (~> 3.0)
octopress-filters
octopress-include-tag
pry
pygments.rb (~> 0.6.3)
rake (~> 10.0)
rb-fsevent (~> 0.9)

View File

@ -1,31 +1,10 @@
# Home Assistant website
This is the source for the [Home Assistant](https://github.com/balloob/home-assistant) website available at [Home-Assistant.io](https://home-assistant.io). All commits made to the `master` branch will be automatically pushed to production.
Please point your Pull Request (PR) at the `next` branch.
## Jekyll project to generate and deploy
| Command | Action |
|---|---|
| `rake preview` | Preview site on [http://127.0.0.1:4000](http://127.0.0.1:4000)
| `rake generate` | Generate new version of the site
| `rake deploy` | Deploy a new version of the site
_Generating and deploying is no longer necessary as we now have auto-deply._
This is the source for the [Home-Assistant.io website](https://home-assistant.io) for the [Home Assistant project](https://github.com/home-assistant/home-assistant)
## Setup
_You need to have Ruby installed._
- [Ruby installation instructions](https://www.ruby-lang.org/en/documentation/installation/)
- For Fedora and CentOS check the last section of this file.
```bash
$ git clone --recursive https://github.com/balloob/home-assistant.io.git
$ cd home-assistant.io
$ bundle
```
Setting up to contribute to documentation and the process for submitting pull requests is [explained here](https://home-assistant.io/developers/website/).
## Create a new blog post
@ -39,23 +18,8 @@ $ rake new_post["title"]
$ rake preview
```
The preview is now available on [http://127.0.0.1:4000](http://127.0.0.1:4000).
This makes the preview available on [http://127.0.0.1:4000](http://127.0.0.1:4000).
## Steps for the deployment of the site
All developers with write access to the repositories are able to deploy the website. The deploy process is fully automated with `rake generate && rake deploy`.
```bash
$ git submodule update --init
$ cd _deploy
$ git fetch
$ git pull origin gh-pages
$ cd ..
$ rake generate && rake deploy
```
```bash
TZ=UTC rake generate && rake deploy
```
### Setup on Fedora and CentOS
On Fedora > 22 or CentOS 7.1.1503 Ruby is not available by default. Please take the notes here as a little guide for the Ruby installation process.
@ -76,4 +40,4 @@ The last command will give you something like this `ruby 2.2.3p173 (2015-08-18 r
$ gem install bundler
```
Now please follow the Setup instructions above.
Now you can follow the [setup instructions](https://home-assistant.io/developers/website/).

View File

@ -77,13 +77,14 @@ task :watch do
end
desc "preview the site in a web browser"
task :preview do
task :preview, :listen do |t, args|
listen_addr = args[:listen] || '127.0.0.1'
raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
puts "Starting to watch source with Jekyll and Compass. Starting Rack on port #{server_port}"
system "compass compile --css-dir #{source_dir}/stylesheets" unless File.exist?("#{source_dir}/stylesheets/screen.css")
jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build --watch --incremental")
compassPid = Process.spawn("compass watch")
rackupPid = Process.spawn("rackup --port #{server_port}")
rackupPid = Process.spawn("rackup --port #{server_port} --host #{listen_addr}")
trap("INT") {
[jekyllPid, compassPid, rackupPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH }

View File

@ -79,6 +79,8 @@ collections:
output: true
cookbook:
output: true
topics:
output: true
# ----------------------- #
# 3rd Party Settings #

19
plugins/active_link.rb Normal file
View File

@ -0,0 +1,19 @@
module Jekyll
class ActiveLinkTag < Liquid::Tag
def initialize(tag_name, text, token)
super
parts = text.split(' ', 2)
@href = parts[0]
@title = parts[1]
end
def render(context)
href = Liquid::Template.parse(@href).render context
title = Liquid::Template.parse(@title).render context
cls = @href == context.registers[:page]["url"] ? "class='active'" : ''
"<a #{cls} href='#{href}'>#{title}</a>"
end
end
end
Liquid::Template.register_tag('active_link', Jekyll::ActiveLinkTag)

View File

@ -6,9 +6,9 @@ module Jekyll
end
def render(context)
slug = @title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
"<a class='title-link' name='#{slug}' href='\##{slug}'></a> #{@title}"
title = Liquid::Template.parse(@title).render context
slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
"<a class='title-link' name='#{slug}' href='\##{slug}'></a> #{title}"
end
end
end

View File

@ -13,6 +13,7 @@
text-transform: uppercase;
white-space: nowrap;
display: inline-block;
font-weight: bold;
}
.front-install {
@ -112,6 +113,7 @@ article.post, article.page, article.listing {
img, table {
border-radius: 3px;
box-shadow: rgba(0,0,0,0.06) 0 0 10px;
vertical-align: middle;
}
img.no-shadow {
@ -119,7 +121,7 @@ article.post, article.page, article.listing {
box-shadow: none;
}
& > table {
& > table, & > .entry-content > table {
background-color: #F3FCF5;
}
@ -149,6 +151,18 @@ article.post, article.page, article.listing {
margin-bottom: 0;
}
}
a {
text-decoration: underline;
&.btn {
text-decoration: none;
}
}
.frontpage a {
text-decoration: none;
}
}
p.note {
@ -203,81 +217,6 @@ p.note {
}
}
.install-instructions-container {
#normal-install, #raspberry-install, #docker-install, .install-instructions {
display: none;
}
label.menu-selector {
display: inline-block;
text-align: center;
padding: 20px;
white-space: nowrap;
border-bottom: 5px solid $grayLight;
transition: border-bottom-color .5s;
}
label.menu-selector + label.menu-selector {
margin-left: 10px;
}
#normal-install:checked ~ .menu-selector.normal,
#raspberry-install:checked ~ .menu-selector.raspberry,
#docker-install:checked ~ .menu-selector.docker
{
border-bottom-color: $blue;
}
#normal-install:checked ~ .install-instructions.normal,
#raspberry-install:checked ~ .install-instructions.raspberry,
#docker-install:checked ~ .install-instructions.docker
{
display: block;
}
.install-instructions {
margin-top: 30px;
}
}
.advanced-installs-container {
#upstart-install, #systemd-install, #osx-install, .advanced-installs {
display: none;
}
label.menu-selector {
display: inline-block;
text-align: center;
padding: 20px;
white-space: nowrap;
border-bottom: 5px solid $grayLight;
transition: border-bottom-color .5s;
}
label.menu-selector + label.menu-selector {
margin-left: 10px;
}
#upstart-install:checked ~ .menu-selector.upstart,
#systemd-install:checked ~ .menu-selector.systemd,
#osx-install:checked ~ .menu-selector.osx
{
border-bottom-color: $blue;
}
#upstart-install:checked ~ .advanced-installs.upstart,
#systemd-install:checked ~ .advanced-installs.systemd,
#osx-install:checked ~ .advanced-installs.osx
{
display: block;
}
.advanced-installs {
margin-top: 30px;
}
}
#components-page {
.isotope-item {
z-index: 2;
@ -330,6 +269,7 @@ p.note {
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
padding: 8px;
text-align: center;
text-decoration: none;
.img-container {
height: 50px;
@ -406,3 +346,18 @@ p.note {
margin-bottom: 8px;
font-size: .8em;
}
ul.sidebar-menu {
a.active {
color: #000;
font-weight: bold;
}
ul {
margin-left: 30px;
}
}
a code {
color: #049cdb;
}

View File

@ -14,13 +14,14 @@ body{ -webkit-animation: bugfix infinite 1s; }
#toggle, .toggle { display: none; }
.menu li { list-style: none; float:left; }
$menu-collapse: 955px;
$menu-collapse: 944px;
// @media only screen and (max-width: $lap-end){
@media only screen and (max-width: $menu-collapse){
.menu { display: none; opacity: 0; width: 100%; position: absolute; right: 0; }
.menu li { display: block; width: 100%; margin: 0; }
.menu li a { display: block; width: 100%; text-decoration: none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
.menu li a .icon { display: none; }
.toggle { display: block; position: relative; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; }
#toggle:checked ~ .menu { display: block; opacity: 1; z-index: 999; }
}
@ -75,10 +76,10 @@ header .grid {
@include box-sizing(border-box);
@include transition(all 0.25s linear);
display: block;
padding: 32px 20px;
padding: 32px 12px;
text-decoration: none;
font-weight: normal;
font-size: 16px;
font-size: 14px;
line-height: 1;
}
@ -86,7 +87,7 @@ header .grid {
background: $site-background;
box-shadow: inset 0px 5px $navigation-color;
color: $navigation-color;
padding: 40px 20px 24px;
padding: 40px 12px 24px;
}
.toggle{

View File

@ -7,7 +7,6 @@
background-size: cover;
border-bottom: 1px solid $white;
color: $white;
font-weight: bold;
margin-top: -2em;
margin-bottom: 1.5em;
padding: 50px 0;

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Alarm.com Alarm Control Panel"
description: "Instructions how to integrate Alarm.com into Home Assistant."
date: 2016-01-14 22:00
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: alarmdotcom.png
ha_category: Alarm
ha_release: 0.11
---
The `alarmdotcom` platform is consuming the information provided by a [Alarm.com](https://www.alarm.com/).

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Manual Alarm Control Panel"
description: "Instructions how to integrate manual alarms into Home Assistant."
date: 2015-10-13 19:10
@ -8,6 +8,7 @@ comments: false
sharing: true
footer: true
ha_category: Alarm
ha_release: 0.7.6
---

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Alarm Control Panels"
description: "Instructions how to integrate Alarm Control Panels into Home Assistant."
date: 2015-10-13 19:10
@ -12,6 +12,7 @@ footer: true
Home Assistant can give you an interface with is similar to a classic alarm system. There are several panels supported:
- [Alarm.com](/components/alarm_control_panel.alarmdotcom/)
- [Manual](/components/alarm_control_panel.manual/)
- [MQTT](/components/alarm_control_panel.mqtt/)
- [Verisure](/components/verisure/)

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "MQTT Alarm Control Panel"
description: "Instructions how to integrate MQTT capable Alarm Panels into Home Assistant."
date: 2015-09-14 19:10
@ -9,13 +9,14 @@ sharing: true
footer: true
logo: mqtt.png
ha_category: Alarm
ha_release: 0.7.4
---
The `mqtt` alarm panel platform enables the possibility to control MQTT capable alarm panels. The Alarm icon will change state after receiving a new state from `state_topic`. If these messages are published with *RETAIN* flag, the MQTT alarm panel will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state will be `unknown`.
The component will accept the following states from your Alarm Panel (in lower case):
- 'armed'
- 'disarmed'
- 'armed_home'
- 'armed_away'
- 'pending'
@ -45,7 +46,7 @@ Configuration variables:
- **command_topic** (*Required*): The MQTT topic to publish commands to change the alarm state.
- **name** (*Optional*): The name of the alarm. Default is 'MQTT Alarm'.
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0. This QoS will also be used to publishing messages.
- **payload_disarm** (*Optional*): The payload do disarm your Alarm Panel. Default is "DISARM".
- **payload_disarm** (*Optional*): The payload to disarm your Alarm Panel. Default is "DISARM".
- **payload_arm_home** (*Optional*): The payload to set armed-home mode on your Alarm Panel. Default is "ARM_HOME".
- **payload_arm_away** (*Optional*): The payload to set armed-away mode on your Alarm Panel. Default is "ARM_AWAY".
- **code** (*Optional*): If defined, specifies a code to enable or disable the alarm in the frontend.

View File

@ -0,0 +1,30 @@
---
layout: page
title: "NX584 Alarm Control Panel"
description: "Instructions how to integrate NX584 into Home Assistant."
date: 2016-02-07 10:00
sidebar: true
comments: false
sharing: true
footer: true
logo: networx.png
ha_category: Alarm
ha_release: 0.13
---
The `nx584` platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through [pynx584](http://github.com/kk7ds/pynx584) which is required for this to work.
To enable this, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
alarm_control_panel:
platform: nx584
host: ADDRESS
```
Configuration variables:
- **host** (*Optional*): This is the host connection string (host:port) for the nx584 server process. If unset, it is assumed to be `localhost:5007`, which will work if the server process is running on the same system as home-assistant.

View File

@ -0,0 +1,19 @@
---
layout: page
title: "Verisure Alarm"
description: "Instructions how to setup the Verisure Alarm control panel within Home Assistant."
date: 2016-02-15 22:00
sidebar: true
comments: false
sharing: true
footer: true
logo: verisure.png
ha_category: Alarm
ha_release: 0.7.3
---
The Verisure alarm control panel platform allows you to control your [Verisure](https://www.verisure.com/) Alarms.
The requirement is that you have setup your [Verisure hub](/components/verisure/).

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Alexa / Amazon Echo"
description: "Instructions how to connect Alexa/Amazon Echo to Home Assistant."
date: 2015-12-13 13:02
@ -9,17 +9,50 @@ sharing: true
footer: true
logo: amazon-echo.png
ha_category: Voice
featured: false
featured: true
---
The Alexa component allows you to integrate Home Assistant into Alexa/Amazon Echo. This component will allow you to query information and call services within Home Assistant by using your voice. There are no supported sentences out of the box as of now, you will have to define them all yourself.
There are two ways that you can use Amazon Echo and Home Assistant together.
No matter which method(s) you decide to use, please remember that Amazon Echo requires an active Internet connection to function. If your Internet is down or experiencing issues (or Amazon's infrastructure is having issues), neither of these methods will work.
### {% linkable_title I just want to turn devices on and off using Echo %}
If you just want to be able to turn anything with a switch (like lights, switches, media players, etc) on and off, check out Michael Auchter's [Haaska][haaska-github-link] which integrates the [Alexa Lighting API][alexa-lighting-api] into Home Assistant.
[haaska-github-link]: https://github.com/auchter/haaska
[alexa-lighting-api]: https://developer.amazon.com/public/binaries/content/assets/html/alexa-lighting-api.html
Implementing Haaska means you can turn things on and off by simply saying
> Alexa, turn the living room lights on.
or
> Alexa, set the living room lights to twenty percent.
instead of
> Alexa, tell Home Assistant to turn the living room lights on.
or
> Alexa, tell Home Assistant to set the living room lights to twenty percent.
In addition, you would need to build custom intents for each device and on/off combination using the below method, whereas everything just works without any extra work by using Haaska.
Please note that you can use Haaska and the built-in Alexa component side-by-side without issue if you wish.
### {% linkable_title I want to build custom commands to use with Echo %}
The built-in Alexa component allows you to integrate Home Assistant into Alexa/Amazon Echo. This component will allow you to query information and call services within Home Assistant by using your voice. Home Assistant offers no built-in sentences but offers a framework for you to define your own.
<div class='videoWrapper'>
<iframe width="560" height="315" src="https://www.youtube.com/embed/1Ke3mtWd_cQ" frameborder="0" allowfullscreen></iframe>
</div>
### {% linkable_title Requirements before using %}
Amazon requires the endpoint of a skill to be hosted via SSL. Self-signed certificates are ok because our skills will only run in development mode. Read more on [our blog][blog-lets-encrypt] about how to set up encryption for Home Assistant. If you are unable to get https up and running, consider using [this AWS Lambda proxy for Alexa skills](https://forums.developer.amazon.com/forums/thread.jspa?messageID=18604).
#### {% linkable_title Requirements before using %}
Amazon requires the endpoint of a skill to be hosted via SSL. Self-signed certificates are ok because our skills will only run in development mode. Read more on [our blog][blog-lets-encrypt] about how to set up encryption for Home Assistant. If you are unable to get HTTPS up and running, consider using [this AWS Lambda proxy for Alexa skills](https://forums.developer.amazon.com/forums/thread.jspa?messageID=18604).
[blog-lets-encrypt]: https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/
@ -35,7 +68,7 @@ To get started with Alexa skills:
- https
- https://YOUR_HOST/api/alexa?api_password=YOUR_API_PASSWORD
### {% linkable_title Configuring your Amazon Alexa skill %}
#### {% linkable_title Configuring your Amazon Alexa skill %}
Alexa works based on intents. Each intent has a name and variable slots. For example, a `LocateIntent` with a slot that contains a `User`. Example intent schema:
@ -80,7 +113,10 @@ Out of the box, the component will do nothing. You have to teach it about all in
You can use [templates] for the values of `speech/text`, `card/title` and `card/content`.
[templates]: /getting-started/templating/
Actions are using the [Home Assistant Script Syntax] and also have access to the variables from the intent.
[templates]: /topics/templating/
[Home Assistant Script Syntax]: /getting-started/scripts/
Configuring the Alexa component for the above intents would look like this:
@ -104,8 +140,8 @@ alexa:
LocateIntent:
action:
service: notify.notify
data:
message: Your location has been queried via Alexa.
data_template:
message: The location of {{ User }} has been queried via Alexa.
speech:
type: plaintext
text: >

View File

@ -0,0 +1,30 @@
---
layout: page
title: "APCUPSd"
description: "Instructions on how to integrate APCUPSd status with Home Assistant."
date: 2016-02-10 17:11
sidebar: true
comments: false
sharing: true
footer: true
logo: apcupsd.png
ha_category: Hub
ha_release: 0.13
---
[APCUPSd](http://www.apcupsd.org/) status information can be integrated into Home Assistant when the Network Information Server (NIS) [is configured](http://www.apcupsd.org/manual/manual.html#nis-server-client-configuration-using-the-net-driver) is enabled on the APC device.
To enable this sensor, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
apcupsd:
host: IP_ADDRESS
port: PORT
```
Configuration variables:
- **host** (*Optional*): The hostname/IP address on which the APCUPSd NIS is being served. Defaults to `localhost`.
- **port** (*Optional*): The port on which the APCUPSd NIS is listening. Defaults to `3551`.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Arduino"
description: "Instructions how to setup an Arduino boards within Home Assistant."
date: 2015-06-27 10:28
@ -10,13 +10,14 @@ footer: true
logo: arduino.png
ha_category: DIY
featured: true
ha_release: pre 0.7
---
The [Arduino](https://www.arduino.cc/) device family are microcontroller boards that are often based on the ATmega328 chip. They come with digital input/output pins (some can be used as PWM outputs), analog inputs, and a USB connection. The equipment depends on the [type](https://www.arduino.cc/en/Main/Products) of board. The most common ones are the Arduino Uno and the Arduino Leonardo with 14 digital input/output pins and 6 analog input pins.
There are a lot of extensions (so called [shields](https://www.arduino.cc/en/Main/ArduinoShields)) available. Those shields can be plugged-in into the existing connectors and stacked on top of each other. This makes it possible to expand the capabilities of the Arduino boards.
The arduino component is designed to let you use a directly attached board to your Home Assistant host over USB.
The `arduino` component is designed to let you use a directly attached board to your Home Assistant host over USB.
You need to have the [Firmata firmware](https://github.com/firmata/) on your board. Please upload the `StandardFirmata` sketch to your board, please refer to the [Arduino documentation](https://www.arduino.cc/en/Main/Howto) for further information.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Automation"
description: "Instructions how to setup automation within Home Assistant."
date: 2015-01-20 22:36
@ -11,345 +11,6 @@ logo: home-assistant.png
ha_category: Automation
---
This page will go into more detail about the various options the `automation` component offers. If you haven't yet, read the [getting started page on automation](/getting-started/automation/).
Please see the [getting started section] for in-depth documentation on how to use the automation compnoent.
A configuration section of an automation requires a `trigger` and an `action` section. `condition` and `condition_type` are optional. To keep this page compact, all following sections will not show the full configuration but only the relevant part.
```yaml
# Example of entry in configuration.yaml
automation:
# Turns on lights 1 hour before sunset if people are home
# and if people get home between 16:00-23:00
- alias: 'Rule 1 Light on in the evening'
trigger:
# Prefix the first line of each trigger configuration
# with a '-' to enter multiple
- platform: sun
event: sunset
offset: '-01:00:00'
- platform: state
entity_id: group.all_devices
state: 'home'
condition:
# Prefix the first line of each condition configuration
# with a '-'' to enter multiple
- platform: state
entity_id: group.all_devices
state: 'home'
- platform: time
after: '16:00:00'
before: '23:00:00'
action:
service: homeassistant.turn_on
entity_id: group.living_room
# Turn off lights when everybody leaves the house
- alias: 'Rule 2 - Away Mode'
trigger:
platform: state
entity_id: group.all_devices
state: 'not_home'
action:
service: light.turn_off
entity_id: group.all_lights
# Notify when Paulus leaves the house in the evening
- alias: 'Leave Home notification'
trigger:
platform: zone
event: leave
zone: zone.home
entity_id: device_tracker.paulus
condition:
platform: time
after: '20:00'
action:
service: notify.notify
data:
message: 'Paulus left the house'
```
- [Jump to conditions](#conditions)
- [Jump to actions](#actions)
- [Jump to troubleshooting](#troubleshooting)
## {% linkable_title Triggers %}
Triggers are what starts the processing of an automation rule. It is possible to specify multiple triggers for the same rule. Once a trigger starts, Home Assistant will validate the conditions, if any, and call the action.
#### {% linkable_title Event trigger %}
Triggers when an event is being processed. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data to be present.
```yaml
automation:
trigger:
platform: event
event_type: MY_CUSTOM_EVENT
# optional
event_data:
mood: happy
```
#### {% linkable_title MQTT trigger %}
Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic.
```yaml
automation:
trigger:
platform: mqtt
topic: living_room/switch/ac
# Optional
payload: 'on'
```
#### {% linkable_title Numeric state trigger %}
On state change of a specified entity, attempts to parse the state as a number and triggers if value is above and/or below a threshold.
```yaml
automation:
trigger:
platform: numeric_state
entity_id: sensor.temperature
# Optional
value_template: '{% raw %}{{ state.attributes.battery }}{% endraw %}'
# At least one of the following required
above: 17
below: 25
```
#### {% linkable_title State trigger %}
Triggers when the state of an entity changes. If only entity_id given will match all state changes.
```yaml
automation:
trigger:
platform: state
entity_id: device_tracker.paulus
# Optional
from: 'not_home'
to: 'home'
```
<p class='note warning'>
Use quotes around your values for `from` and `to` to avoid the YAML parser interpreting values as booleans.
</p>
#### {% linkable_title Sun trigger %}
Trigger when the sun is setting or rising. An optional time offset can be given to have it trigger for example 45 minutes before sunset, when dusk is setting in.
```yaml
automation:
trigger:
platform: sun
# Possible values: sunset, sunrise
event: sunset
# Optional time offset. This example is 45 minutes.
offset: '-00:45:00'
```
#### {% linkable_title Template trigger %}
Template triggers work by evaluating a [template] on each state change. The trigger will fire if the state change caused the template to render 'true'. This is achieved by having the template result in a true boolean expression (`{% raw %}{{ is_state('device_tracker.paulus', 'home') }}{% endraw %}`) or by having the template render 'true' (example below).
```yaml
automation:
trigger:
platform: template
value_template: '{% raw %}{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}{% endraw %}'
```
#### {% linkable_title Time trigger %}
Time can be triggered in many ways. The most common is to specify `after` and trigger at a specific point in time each day. Alternatively, you can also match if the hour, minute or second of the current time has a specific value. You can prefix the value with a `/` to match whenever the value is divisible by that number. You cannot use `after` together with hour, minute or second.
```yaml
automation:
trigger:
platform: time
# Matches every hour at 5 minutes past whole
minutes: 5
seconds: 0
automation 2:
trigger:
platform: time
# When 'after' is used, you cannot also match on hour, minute, seconds.
# Military time format.
after: '15:32:00'
automation 3:
trigger:
platform: time
# You can also match on interval. This will match every 5 minutes
minutes: '/5'
seconds: 0
```
#### {% linkable_title Zone trigger %}
Zone triggers can trigger when an entity is entering or leaving the zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/components/device_tracker.owntracks/).
```yaml
automation:
trigger:
platform: zone
entity_id: device_tracker.paulus
zone: zone.home
# Event is either enter or leave
event: enter
```
## {% linkable_title Conditions %}
Conditions are an optional part of an automation rule and be used to prevent an action from happening when triggered. Conditions look very familiar to triggers but are very different. A trigger will look at events happening at the system while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is on or off.
An automation rule can have mulitiple triggers. By default the action will only fire if all conditions pass. An optional key `condition_type: 'or'` can be set on the automation rule to fire action if any condition matches. In the example below, the automation would trigger if the time is before 05:00 _OR_ after 20:00.
```yaml
automation:
condition_type: or
condition:
- platform: time
before: '05:00'
- platform: time
after: '20:00'
```
If your triggers and conditions are exactly the same, you can use a shortcut to specify conditions. In this case, triggers that are not valid conditions will be ignored.
```yaml
automation:
condition: use_trigger_values
```
#### {% linkable_title Numeric state condition %}
Attempts to parse the state of specified entity as a number and triggers if value is above and/or below a threshold.
```yaml
automation:
condition:
platform: numeric_state
entity_id: sensor.temperature
# At least one of the following required
above: 17
below: 25
# Optional
value_template: '{% raw %}{{ state.attributes.battery }}{% endraw %}'
```
#### {% linkable_title State condition %}
Tests if an entity is a specified state.
```yaml
automation:
condition:
platform: state
entity_id: device_tracker.paulus
state: not_home
```
#### {% linkable_title Sun condition %}
The sun condition can test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger](#sun-trigger).
```yaml
automation:
condition:
platform: sun
after: sunset
# Optional offset value
after_offset: "-1:00:00"
```
#### {% linkable_title Template condition %}
The template condition will test if [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'.
```yaml
automation:
condition:
platform: template
value_template: '{% raw %}{{ state.attributes.battery > 50 }}{% endraw %}'
# Or value_template could be:
# {% raw %}{% if state.attributes.battery > 50 %}true{% else %}false{% endif %}{% endraw %}
```
#### {% linkable_title Time condition %}
The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week
```yaml
automation:
condition:
platform: time
# At least one of the following is required.
after: '15:00:00'
before: '23:00:00'
weekday:
- mon
- wed
- fri
```
Valid values for `weekday` are (`sun`, `mon`, `tue`, `wed`, `thu`, `fri` & `sat`)
#### {% linkable_title Zone condition %}
Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/components/device_tracker.owntracks/).
```yaml
automation:
condition:
platform: zone
entity_id: device_tracker.paulus
zone: zone.home
```
## {% linkable_title Actions %}
When an automation rule fires, it calls a service. For this service you can specify an entity id it should apply to and optional service parameters (to specify for example the brightness).
```yaml
automation:
# Change the light in the kitchen and living room to 150 brightness and color red.
action:
service: homeassistant.turn_on
entity_id:
- light.kitchen
- light.living_room
data:
brightness: 150
rgb_color: [255, 0, 0]
```
```yaml
automation:
# Notify me on my mobile phone of an event
action:
service: notify.notify
data:
message: Something just happened, better take a look!
```
If you want to specify multiple services to be called or include a delay, have a look at the [script component](/components/script/). If you want to describe how certain entities should look, check out the [scene component](/components/scene/).
## {% linkable_title Troubleshooting %}
You can verify that your automation rules are being initialized correctly by watching both the realtime logs and also the logbook. The realtime logs will show the rules being initialized (once for each trigger):
```plain
INFO [homeassistant.components.automation] Initialized rule Rainy Day
INFO [homeassistant.components.automation] Initialized rule Rainy Day
INFO [homeassistant.components.automation] Initialized rule Rainy Day
INFO [homeassistant.components.automation] Initialized rule Rain is over
```
The Logbook component will show a line entry when an automation is triggered. You can look at the previous entry to determine which trigger in the rule triggered the event.
![Logbook example](/images/components/automation/logbook.png)
[template]: /getting-started/templating/
[getting started section]: /getting-started/automation/

View File

@ -0,0 +1,29 @@
---
layout: page
title: APCUPSd Binary Sensor
description: "Instructions on how to set up an APCUPSd binary sensor within Home Assistant."
date: 2016-02-10 18:47
sidebar: true
comments: false
sharing: true
footer: true
logo: apcupsd.png
ha_category: Binary Sensor
ha_release: 0.13
---
In addition to the [APCUPSd Sensor](/components/sensor.apcupsd/) devices, you may also create a device which is simply "on" when the UPS status is online and "off" at all other times.
To enable this sensor, add the following lines to your `configuration.yaml` file for a GET request:
```yaml
# Example configuration.yaml entry
binary_sensor:
- platform: apcupsd
name: UPS Online
```
Configuration variables:
- **resource** (*Required*): The resource or endpoint that contains the value.
- **method** (*Optional*): The method of the request. Default is GET.

View File

@ -1,6 +1,6 @@
---
layout: component
title: "aREST binary sensor"
layout: page
title: "aREST Binary Sensor"
description: "Instructions how to integrate aREST binary sensors within Home Assistant."
date: 2015-11-20 18:15
sidebar: true
@ -9,10 +9,12 @@ sharing: true
footer: true
logo: arest.png
ha_category: Binary Sensor
ha_iot_class: "Local Polling"
ha_release: 0.9
---
The arest binary sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework.
The `arest` binary sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework.
To use your aREST binary sensor in your installation, add the following to your `configuration.yaml` file:
@ -36,7 +38,6 @@ Accessing the URL http://IP_ADDRESS/digital/PIN_NUMBER should give you the state
```bash
$ curl -X GET http://10.100.0.157/digital/9
{"return_value": 0, "id": "office1", "name": "Office", "connected": true}
```
<p class='note'>

View File

@ -0,0 +1,26 @@
---
layout: page
title: "BloomSky Binary Sensor"
description: "Instructions on how to set up BloomSky binary sensors within Home Assistant."
date: 2016-02-22 07:00
sidebar: true
comments: false
sharing: true
footer: true
logo: bloomsky.png
ha_category: Binary Sensor
ha_release: 0.14
---
The `bloomsky` binary sensor platform allows you to get data from your BloomSky device.
To get your BloomSky binary sensors working with Home Assistant, follow the instructions for the [BloomSky component](/components/bloomsky/) first.
To use your BloomSky binary sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
binary_sensor:
- platform: bloomsky
```

View File

@ -1,13 +1,15 @@
---
layout: component
title: "Command line binary sensor"
layout: page
title: "Command line Binary Sensor"
description: "Instructions how to integrate Command binary sensors within Home Assistant."
date: 2016-01-13 12:15
sidebar: true
comments: false
sharing: true
footer: true
logo: command_line.png
ha_category: Binary Sensor
ha_release: 0.12
---
@ -18,9 +20,10 @@ To use your Command binary sensor in your installation, add the following to you
```yaml
# Example configuration.yaml entry
binary_sensor:
platform: command_sensor
platform: command_line
command: cat /proc/sys/net/ipv4/ip_forward
name: 'IP4 forwarding'
sensor_class: opening
payload_on: "1"
payload_off: "0"
value_template: '{% raw %}{{ value.x }}{% endraw %}'
@ -30,9 +33,10 @@ Configuration variables:
- **command** (*Required*): The action to take to get the value.
- **name** (*Optional*): Let you overwrite the the name of the device. By default *name* from the device is used.
- **sensor_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend.
- **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON".
- **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF".
- **value_template** (*Optional*): Defines a [template](/getting-started/templating/) to extract a value from the payload.
- **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload.
## {% linkable_title Examples %}
@ -45,7 +49,7 @@ Check the state of an [SickRage](https://github.com/sickragetv/sickrage) instanc
```yaml
# Example configuration.yaml entry
binary_sensor:
platform: command_sensor
platform: command_line
command: netstat -na | find "33322" | find /c "LISTENING" > nul && (echo "Running") || (echo "Not running")
name: 'sickragerunning'
payload_on: "Running"
@ -58,10 +62,20 @@ Check if [RasPlex](http://www.rasplex.com/) is `online`.
```yaml
binary_sensor:
platform: command_sensor
command: 'ping rasplex.local -c 1 | grep "1 received" | wc -l'
platform: command_line
command: 'ping -c 1 rasplex.local | grep "1 received" | wc -l'
name: 'is_rasplex_online'
payload_on: 1
payload_off: 0
```
An alternative solution could look like this:
```yaml
binary_sensor:
platform: command_line
name: Printer
command: ping -c 1 192.168.1.10 &> /dev/null && echo success || echo fail
payload_on: "success"
payload_off: "fail"
```

View File

@ -0,0 +1,79 @@
---
layout: page
title: "HTTP Binary Sensor"
description: "Instructions how to integrate HTTP binary sensors within Home Assistant."
date: 2016-02-05 12:15
sidebar: true
comments: false
sharing: true
footer: true
logo: http.png
ha_category: Binary Sensor
ha_release: pre 0.7
---
The URL for a binary sensor looks like the example below:
```bash
http://IP_ADDRESS:8123/api/states/binary_sensor.DEVICE_NAME
```
<p class='note'>
You should choose a unique device name (DEVICE_NAME) to avoid clashes with other devices.
</p>
The JSON payload must contain the new state and can have a friendly name. The friendly name is used in the frontend to name the sensor.
```json
{"state": "on", "attributes": {"friendly_name": "Radio"}}
```
For a quick test `curl` can be useful to "simulate" a device.
```bash
$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
-d '{"state": "off", "attributes": {"friendly_name": "Radio"}}' \
http://localhost:8123/api/states/binary_sensor.radio
```
To check if the sensor is working, use again `curl` to retrieve the [current state](/developers/rest_api/#get-apistatesltentity_id).
```bash
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
http://localhost:8123/api/states/binary_sensor.radio
{
"attributes": {
"friendly_name": "Radio"
},
"entity_id": "binary_sensor.radio",
"last_changed": "16:45:51 05-02-2016",
"last_updated": "16:45:51 05-02-2016",
"state": "off"
}
```
## {% linkable_title Examples %}
In this section you find some real life examples of how to use this sensor. Beside `curl`.
### {% linkable_title Using Python request module %}
As already shown on the [API](/developers/rest_api/) page, it's very simple to use Python and the [Requests](http://docs.python-requests.org/en/latest/) module for the interaction with Home Assistant.
```python
response = requests.post(
'http://localhost:8123/api/states/binary_sensor.radio',
headers={'x-ha-access': 'YOUR_PASSWORD', 'content-type': 'application/json'},
data=json.dumps({'state': 'on', 'attributes': {'friendly_name': 'Radio'}}))
print(response.text)
```
### {% linkable_title Using `httpie` %}
[`httpie`](https://github.com/jkbrzt/httpie) is a user-friendly CLI HTTP client.
```bash
$ http -v POST http://localhost:8123/api/states/binary_sensor.radio \
x-ha-access:YOUR_PASSWORD state=off \
attributes:='{"friendly_name": "Radio"}'
```

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Binary Sensor"
description: "Instructions how to setup your binary sensors with Home Assistant."
date: 2015-11-20 14:00
@ -13,4 +13,21 @@ Binary sensors are gathering information about state of switches, contacts, pins
Knowing that there are only two states allows Home Assistant to represent the sensor better in the frontend.
Most binary sensors support the `SENSOR_CLASSES` which let you specify the type of your sensor. The following types are supported:
- **None**: Generic on/off
- **opening**: Door, window, etc
- **motion**: Motion sensor
- **gas'**: CO, CO2, etc
- **smoke'**: Smoke detector
- **moisture**: Specifically a wetness sensor
- **light**: Lightness threshold
- **power**: Power, over-current, etc
- **safety**: Generic on=unsafe, off=safe
- **heat**: On means hot (or too hot)
- **cold**: On means cold (or too cold)
- **moving**: On means moving, Off means stopped
- **sound**: On means sound detected, Off means no sound
- **vibration**: On means vibration detected, Off means no vibration
For analog sensors please check the [component overview](https://home-assistant.io/components/#sensor).

View File

@ -1,6 +1,6 @@
---
layout: component
title: "MQTT binary sensor"
layout: page
title: "MQTT Binary Sensor"
description: "Instructions how to integrate MQTT binary sensors within Home Assistant."
date: 2015-05-30 23:21
sidebar: true
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: mqtt.png
ha_category: Binary Sensor
ha_release: 0.9
---
@ -25,6 +26,7 @@ binary_sensor:
qos: 0
payload_on: "ON"
payload_off: "OFF"
sensor_class: opening
value_template: '{% raw %}{{ value.x }}{% endraw %}'
```
@ -35,7 +37,8 @@ Configuration variables:
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0.
- **payload_on** (*Optional*): The payload that represents on state. Default is "ON".
- **payload_off** (*Optional*): The payload that represents state. Default is "OFF".
- **value_template** (*Optional*): Defines a [template](/getting-started/templating/) to extract a value from the payload.
- **sensor_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend.
- **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload.
For a quick check you can use the commandline tools shipped with `mosquitto` to send MQTT messages. Set the state of your sensor manually:

View File

@ -0,0 +1,88 @@
---
layout: page
title: "MySensors Binary Sensor"
description: "Instructions how to integrate MySensors binary sensors into Home Assistant."
date: 2016-04-13 14:20 +0100
sidebar: true
comments: false
sharing: true
footer: true
logo: mysensors.png
ha_category: Binary Sensor
ha_release: 0.14
---
Integrates MySensors binary sensors into Home Assistant. See the [main component] for configuration instructions.
The following sensor types are supported:
##### MySensors version 1.4 and higher
S_TYPE | V_TYPE
-------------------|---------------------------------------
S_DOOR | V_TRIPPED
S_MOTION | V_TRIPPED
S_SMOKE | V_TRIPPED
##### MySensors version 1.5 and higher
S_TYPE | V_TYPE
---------------|----------------------------------
S_SPRINKLER | V_TRIPPED
S_WATER_LEAK | V_TRIPPED
S_SOUND | V_TRIPPED
S_VIBRATION | V_TRIPPED
S_MOISTURE | V_TRIPPED
For more information, visit the [serial api] of MySensors.
### {% linkable_title Example sketch %}
```cpp
/**
* Documentation: http://www.mysensors.org
* Support Forum: http://forum.mysensors.org
*
* http://www.mysensors.org/build/binary
*/
#include <MySensor.h>
#include <SPI.h>
#include <Bounce2.h>
#define SN "BinarySensor"
#define SV "1.0"
#define CHILD_ID 1
#define BUTTON_PIN 3 // Arduino Digital I/O pin for button/reed switch.
MySensor gw;
Bounce debouncer = Bounce();
MyMessage msg(CHILD_ID, V_TRIPPED);
void setup()
{
gw.begin();
gw.sendSketchInfo(SN, SV);
// Setup the button.
pinMode(BUTTON_PIN, INPUT_PULLUP);
// After setting up the button, setup debouncer.
debouncer.attach(BUTTON_PIN);
debouncer.interval(5);
gw.present(CHILD_ID, S_DOOR);
gw.send(msg.set(0));
}
void loop()
{
if (debouncer.update()) {
// Get the update value.
int value = debouncer.read();
// Send in the new value.
gw.send(msg.set(value == LOW ? 1 : 0));
}
}
```
[main component]: /components/mysensors/
[serial api]: https://www.mysensors.org/download/serial_api_15

View File

@ -1,6 +1,6 @@
---
layout: component
title: "Nest binary sensor"
layout: page
title: "Nest Binary Sensor"
description: "Instructions how to integrate Nest binary sensors within Home Assistant."
date: 2016-01-26 08:00
sidebar: true
@ -12,12 +12,12 @@ ha_category: Binary Sensor
---
The Nest binary sensor platform let you monitor various states of a thermostat from [Nest](https://nest.com).
The `nest` binary sensor platform let you monitor various states of a thermostat from [Nest](https://nest.com).
To set it up, add the following information to your `configuration.yaml` file:
```yaml
sensor:
binary_sensor:
platform: nest
monitored_conditions:
- 'fan'
@ -34,5 +34,14 @@ sensor:
Configuration variables:
- **monitored_conditions** array (*Required*): States to monitor.
- 'fan'
- 'hvac_ac_state'
- 'hvac_aux_heater_state'
- 'hvac_heat_x2_state'
- 'hvac_heat_x3_state'
- 'hvac_alt_heat_state'
- 'hvac_alt_heat_x2_state'
- 'hvac_emer_heat_state'
- 'online'
<p class='note'>You must have the [Nest component](https://home-assistant.io/components/nest/) configured to use this sensor.</p>
<p class='note'>You must have the [Nest component](/components/nest/) configured to use this sensor.</p>

View File

@ -0,0 +1,52 @@
---
layout: page
title: NX584 zones
description: "Instructions on how to set up nx584 zones as sensors"
date: 2016-02-18 20:47
sidebar: true
comments: false
sharing: true
footer: true
logo: networx.png
ha_category: Binary Sensor
ha_iot_class: "Local Push"
ha_release: 0.14
---
The `nx584` platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through [pynx584](http://github.com/kk7ds/pynx584) which is required for this to work.
Enabling this sensor platform exposes all of your zones as binary sensors, which provides visibility through the UI as well as the ability to trigger automation actions instantly when something happens like a door opening, or a motion sensor trigger.
To enable this, add the following lines to your `configuration.yaml`:
```yaml
binary_sensor:
platform: nx584
host: ADDRESS
exclude_zones:
- ZONE ...
zone_types:
ZONE: TYPE
```
Configuration variables:
- **host** (*Optional*): This is the host connection string (host:port) for the nx584 server process. If unset, it is assumed to be `localhost:5007`, which will work if the server process is running on the same system as home-assistant.
- **exclude_zones** (*Optional*): This is a list of zone numbers that should be excluded. Use this to avoid exposing a zone that is of no interest, unconnected, etc.
- **zone_types** (*Optional*): This is a list of zone numbers mapped to zone types. Use this to designate zones as doors, motion sensors, smoke detectors, etc. The list of available zone types relevant to alarm zones are: `opening`, `motion`, `gas`, `smoke`, `moisture`, `safety`.
Example configuration:
```yaml
binary_sensor:
platform: nx584
host: 192.168.1.10:5007
exclude_zones:
- 3
- 5
zone_types:
1: opening
2: opening
4: motion
6: moisture
```

View File

@ -0,0 +1,34 @@
---
layout: page
title: "OctoPrint Binary Sensor"
description: "Instructions how to integrate OctoPrint binary sensors within Home Assistant."
date: 2016-05-05 08:00
sidebar: true
comments: false
sharing: true
footer: true
logo: octoprint.png
ha_category: Binary Sensor
ha_release: 0.19
---
The `OctoPrint` binary sensor platform let you monitor if your 3D printer is printing or if there was a printing error.
To set it up, add the following information to your `configuration.yaml` file:
```yaml
binary_sensor:
platform: octoprint
monitored_conditions:
- Printing
- Printing Error
```
Configuration variables:
- **monitored_conditions** array (*Required*): States to monitor.
- Printing
- Printing Error
<p class='note'>You must have the [OctoPrint component](/components/octoprint/) configured to use this sensor.</p>

View File

@ -1,6 +1,6 @@
---
layout: component
title: "RESTful binary sensor"
layout: page
title: "RESTful Binary Sensor"
description: "Instructions how to integrate REST binary sensors into Home Assistant."
date: 2015-12-17 19:10
sidebar: true
@ -8,6 +8,7 @@ comments: false
sharing: true
footer: true
ha_category: Binary Sensor
ha_release: 0.10
---
@ -17,11 +18,12 @@ To enable this sensor, add the following lines to your `configuration.yaml` file
```yaml
# Example configuration.yaml entry
sensor:
binary_sensor:
platform: rest
resource: http://IP_ADDRESS/ENDPOINT
method: GET
name: REST GET binary sensor
sensor_class: opening
value_template: '{% raw %}{{ value_json.state }}{% endraw %}'
```
@ -29,22 +31,24 @@ or for a POST request:
```yaml
# Example configuration.yaml entry
sensor:
binary_sensor:
platform: rest
resource: http://IP_ADDRESS/ENDPOINT
method: POST
name: REST POST binary sensor
sensor_class: opening
value_template: '{% raw %}{{ value_json.state }}{% endraw %}'
payload: '{ "device" : "door" }'
name: REST POST binary sensor
```
Configuration variables:
- **resource** (*Required*): The resource or endpoint that contains the value.
- **method** (*Optional*): The method of the request. Default is GET.
- **value_template** (*Optional*): Defines a [template](/getting-started/templating/) to extract the value.
- **payload** (*Optional*): The payload to send with a POST request. Usualy formed as a dictionary.
- **name** (*Optional*): Name of the REST binary sensor.
- **sensor_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend.
- **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the value.
- **payload** (*Optional*): The payload to send with a POST request. Usualy formed as a dictionary.
<p class='note warning'>
Make sure that the URL matches exactly your endpoint or resource.

View File

@ -1,6 +1,6 @@
---
layout: component
title: "Raspberry PI GPIO sensor"
layout: page
title: "Raspberry PI GPIO Binary Sensor"
description: "Instructions how to integrate the GPIO sensor capability of a Raspberry PI into Home Assistant."
date: 2015-08-30 19:00
sidebar: true
@ -9,10 +9,11 @@ sharing: true
footer: true
logo: raspberry-pi.png
ha_category: Sensor
ha_release: pre 0.7
---
The rpi_gpio binary sensor platform allows you to read sensor values of the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/).
The `rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/).
To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file:

View File

@ -0,0 +1,42 @@
---
layout: page
title: TCP Binary Sensor
description: "Instructions on how to set up TCP binary sensors within Home Assistant."
date: 2016-02-22 11:05
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Binary Sensor
ha_release: 0.14
---
The TCP Binary Sensor is a type of [TCP Sensor](/components/sensor.tcp/) which is either "off" or "on". In order to use this sensor type, in addition to the configuration for the TCP Sensor, you must supply a `value_on` value to represent what is returned when the device is turned on.
To enable this sensor, add the following lines to your `configuration.yaml`:
```yaml
binary_sensor:
# Example configuration.yaml entry
platform: tcp
name: TCP Binary Sensor
host: IP_ADDRESS
port: PORT
payload: "r State\n"
value_on: 1
timeout: 5
value_template: "{% raw %}{{ value.split(';')[0] }}{% endraw %}"
buffer_size: BUFFER_SIZE
```
Configuration options for the a TCP Sensor:
- **name** (*Required*): The name you'd like to give the sensor in Home Assistant.
- **host** (*Required*): The hostname/IP address to connect to.
- **port** (*Required*): The port to connect to the host on.
- **payload** (*Required*): What to send to the host in order to get the response we're interested in.
- **value_on** (*Required*): The value returned when the device is "on".
- **timeout** (*Optional*): How long in seconds to wait for a response from the service before giving up and disconnecting. Defaults to 10.
- **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the value. By default it's assumed that the entire response is the value.
- **buffer_size** (*Optional*): The size of the receive buffer in bytes. Set this to a larger value if you expect to receive a response larger than the default. Defaults to 1024.

View File

@ -0,0 +1,50 @@
---
layout: page
title: "Template Binary Sensor"
description: "Instructions how to integrate Template binary sensors into Home Assistant."
date: 2016-02-25 15:00
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Binary Sensor
---
The `template` platform supports sensors which breaks out the state and `state_attributes` from other entities.
To enable Template sensors in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
binary_sensor:
platform: template
sensors:
sun_up:
value_template: {% raw %}'{{ states.sun.sun.attributes.elevation > 0}}'{% endraw %}
friendly_name: 'Sun is up'
```
Configuration variables:
- **sensors** array (*Required*): List of your sensors.
- **friendly_name** (*Optional*): Name to use in the Frontend.
- **sensor_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend.
- **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload.
## {% linkable_title Examples %}
In this section you find some real life examples of how to use this sensor.
### {% linkable_title Sensor threshold %}
This example indicates true if a sensor is above a given threshold. Assuming a sensor of `furnace` that provides a current reading for the fan motor, we can determine if the furnace is running by checking that it is over some threshold:
```yaml
sensor:
platform: template
sensors:
furnace_on:
value_template: {{ states.sensor.furnace.state > 2.5 }}
friendly_name: 'Furnace Running
sensor_class: heat
```

View File

@ -0,0 +1,17 @@
---
layout: page
title: "Vera Binary Sensor"
description: "Instructions how to integrate Vera binary sensors into Home Assistant."
date: 2016-03-26 23:00
sidebar: true
comments: false
sharing: true
footer: true
logo: vera.png
ha_category: Binary Sensor
ha_iot_class: "Local Push"
---
The `vera` platform allows you to get data from your [Vera](http://getvera.com/) binary sensors from within Home Assistant.
They will be automatically discovered if the vera component is loaded.

View File

@ -0,0 +1,19 @@
---
layout: page
title: "Wink Binary Sensor"
description: "Instructions how to setup the Wink binary sensors within Home Assistant."
date: 2015-01-20 22:36
sidebar: true
comments: false
sharing: true
footer: true
logo: wink.png
ha_category: Binary Sensor
ha_release: 0.14
---
The Wink binary sensor platform allows you to get data from your [Wink](http://www.wink.com/) binary sensors.
The requirement is that you have setup your [Wink hub](/components/wink/).

View File

@ -1,6 +1,6 @@
---
layout: component
title: ZigBee Binary Sensor
layout: page
title: "ZigBee Binary Sensor"
description: "Instructions on how to set up ZigBee binary sensors within Home Assistant."
date: 2016-01-28 12:38
sidebar: true
@ -11,9 +11,21 @@ logo: zigbee.png
ha_category: Binary Sensor
---
A ZigBee binary sensor in this context is a device connected to one of the digital input pins on a ZigBee module. The states reported by such a device are limited to 'on' or 'off'. By default, a binary sensor is considered 'on' when the ZigBee device's digital input pin is held 'high' and considered 'off' when it is held 'low'. This behaviour can be inverted by setting the `on_state` configuration variable to `low`.
A `zigbee` binary sensor in this context is a device connected to one of the digital input pins on a [ZigBee](http://www.zigbee.org/) module. The states reported by such a device are limited to 'on' or 'off'. By default, a binary sensor is considered 'on' when the ZigBee device's digital input pin is held 'high' and considered 'off' when it is held 'low'. This behaviour can be inverted by setting the `on_state` configuration variable to `low`.
To configure a digital input as a binary sensor, use the following variables:
To enable the ZigBee binary sensors in your installation, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
binary_sensor:
- platform: zigbee
name: Hallway PIR Sensor
pin: 0
address: 0013A20040892FA2
on_state: low
```
Configuration variables:
- **name** (*Required*): The name you'd like to give the binary sensor in Home Assistant.
- **platform** (*Required*): Set to `zigbee`.
@ -21,13 +33,3 @@ To configure a digital input as a binary sensor, use the following variables:
- **address**: The long 64bit address of the remote ZigBee device whose digital input pin you'd like to sample. Do not include this variable if you want to sample the local ZigBee device's pins.
- **on_state**: Either `high` (default) or `low`, depicting whether the binary sensor is considered 'on' when the pin is 'high' or 'low'.
#### Example
```yaml
binary_sensor:
- name: Hallway PIR Sensor
platform: zigbee
pin: 0
address: 0013A20040892FA2
on_state: low
```

View File

@ -0,0 +1,15 @@
---
layout: page
title: "Z-Wave Binary Sensor"
description: "Instructions how to setup the Z-Wave binary sensors within Home Assistant."
date: 2016-02-22 07:00
sidebar: true
comments: false
sharing: true
footer: true
logo: z-wave.png
ha_category: Binary Sensor
ha_release: 0.14
---
To get your Z-Wave binary sensors working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/).

View File

@ -0,0 +1,27 @@
---
layout: page
title: "BloomSky"
description: "Instructions how to integrate the BloomSky within Home Assistant."
date: 2016-02-03 20:00
sidebar: true
comments: false
sharing: true
footer: true
logo: bloomsky.png
ha_category: Hub
---
The `bloomsky` component allows you to access your [BloomSky](http://www.insteon.com/) weather station's [sensors](/components/sensor.bloomsky) and [camera](/components/camera.bloomsky) from Home Assistant.
To integrate your BloomSky hub with Home Assistant, add the following section to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
bloomsky:
api_key: YOUR_API_KEY
```
Configuration variables:
- **api_key** *Required*: Your BloomSky API key, obtained from your [BloomSky dashboard](https://dashboard.bloomsky.com) (click `developers` in the bottom left of the screen)

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Browser"
description: "Instructions how to setup the browser component with Home Assistant."
date: 2015-01-24 14:39
@ -7,12 +7,12 @@ sidebar: true
comments: false
sharing: true
footer: true
logo: browser.png
logo: home-assistant.png
ha_category: Other
---
The browser component provides a service to open urls in the default browser on the host machine.
The `browser` component provides a service to open URLs in the default browser on the host machine.
To load this component, add the following lines to your `configuration.yaml`:
@ -21,8 +21,19 @@ To load this component, add the following lines to your `configuration.yaml`:
browser:
```
#### Service `browser/browse_url`
#### {% linkable_title Service `browser/browse_url` %}
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `url` | no | The url to open
### {% linkable_title Usage %}
To use this service, choose **Call Service** from the **Developer Tools**. Choose the service *browser/browse_url* from the list of **Available services:** and enter the URL into the **Service Data** field and hit **CALL SERVICE**.
```json
{"url": "http://www.google.com"}
```
This will open the given URL on the host machine.

View File

@ -0,0 +1,23 @@
---
layout: page
title: "BloomSky Camera"
description: "Instructions how to integrate the BloomSky camera within Home Assistant."
date: 2016-02-03 20:00
sidebar: true
comments: false
sharing: true
footer: true
logo: bloomsky.png
ha_category: Camera
---
The `bloomsky` camera component allows you to view the current photo created by the camera in the [BloomSky](https://www.bloomsky.com) weather station. This can work in concert with [BloomSky sensors](/components/sensor.bloomsky).
To enable this camera in your installation, set up the [BloomSky component](/components/bloomsky) with your API key and add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
camera:
platform: bloomsky
```

View File

@ -1,6 +1,6 @@
---
layout: component
title: "Foscam IP camera"
layout: page
title: "Foscam IP Camera"
description: "Instructions how to integrate Foscam IP cameras within Home Assistant."
date: 2015-09-17 08:01
sidebar: true
@ -12,7 +12,7 @@ ha_category: Camera
---
The foscam platform allows you to watch the live stream of your [Foscam](http://www.foscam.com/) IP camera in Home Assistant.
The `foscam` platform allows you to watch the live stream of your [Foscam](http://www.foscam.com/) IP camera in Home Assistant.
To enable your Foscam IP camera in your installation, add the following to your `configuration.yaml` file:
@ -20,7 +20,7 @@ To enable your Foscam IP camera in your installation, add the following to your
# Example configuration.yaml entry
camera:
platform: foscam
ip: 192.168.0.123
ip: IP_ADDRESS
name: Door Camera
port: 88
username: USERNAME
@ -29,9 +29,15 @@ camera:
Configuration variables:
- **ip** *Required*: The IP address your camera.
- **port** *Optional*: The port that the camera is running on. The default is 88.
- **name** *Optional*: This parameter allows you to override the name of your camera.
- **username** *Required*: The username for accessing your camera.
- **password** *Required*: The password for accessing your camera.
- **ip** (*Required*): The IP address your camera.
- **port** (*Optional*): The port that the camera is running on. The default is 88.
- **name** (*Optional*): This parameter allows you to override the name of your camera.
- **username** (*Required*): The username for accessing your camera.
- **password** (*Required*): The password for accessing your camera.
<p class='note'>
There seems to be some issues within Foscam with lengthy passwords and passwords containing certain symbols. Be sure to check your camera's documentation.
</p>
### {% linkable_title Control Foscam PTZ (Pan/Tilt/Zoom) - Home/Away %}
Foscam Webcams which support CGI Commands can be controlled by Home Assistant ([Source](http://www.ipcamcontrol.net/files/Foscam%20IPCamera%20CGI%20User%20Guide-V1.0.4.pdf)). For an example of how this can be done, see the [Foscam IP Camera Pan, Tilt, Zoom Control](/cookbook/foscam_away_mode_PTZ/) Cookbook entry.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Generic IP Camera"
description: "Instructions how to integrate IP cameras within Home Assistant."
date: 2015-07-11 0:36
@ -8,20 +8,16 @@ comments: false
sharing: true
footer: true
ha_category: Camera
logo: camcorder.png
ha_release: pre 0.7
---
This component allows you to integrate any IP camera into Home Assistant. It supports fetching images from a url with optional HTTP authentication.
The `generic` camera platform allows you to integrate any IP camera into Home Assistant. It supports fetching images from a url with optional HTTP authentication.
Home Assistant will serve the images via its server, making it possible to view your IP camera's while outside of your network.
Home Assistant will serve the images via its server, making it possible to view your IP camera's while outside of your network. The endpoint is `/api/camera_proxy/camera.[name]?time=[timestamp]`.
As part of the basic support the following features will be provided:
- MJPEG video streaming
- Saving a snapshot
- Recording(JPEG frame capture)
To enable this sensor in your installation, add the following to your `configuration.yaml` file:
To enable this camery in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Camera"
description: "Instructions how to integrate cameras within Home Assistant."
date: 2015-11-09 08:36

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Generic MJPEG IP Camera"
description: "Instructions how to integrate IP cameras within Home Assistant."
date: 2015-11-09 08:36
@ -7,13 +7,17 @@ sidebar: true
comments: false
sharing: true
footer: true
logo: camcorder.png
ha_category: Camera
ha_release: pre 0.7
---
The mjpeg component allows you to integrate IP cameras which are capable to stream their video with MJPEG into Home Assistant.
The `mjpeg` camera platform allows you to integrate IP cameras which are capable to stream their video with MJPEG into Home Assistant.
To enable this sensor in your installation, add the following to your `configuration.yaml` file:
Home Assistant will serve the images via its server, making it possible to view your IP camera's while outside of your network. The endpoint is `/api/camera_proxy/camera.[name]?time=[timestamp]`.
To enable this camera in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
@ -31,3 +35,7 @@ Configuration variables:
- **name** *Optional*: This parameter allows you to override the name of your camera.
- **username** *Optional*: The username for accessing your camera.
- **password** *Optional*: The password for accessing your camera.
<p class='note'>
There is a <a href="https://github.com/shazow/urllib3/issues/800" target="_blank">known issue in urllib3</a> that you will get error messages in your logs like <code>[StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: ''</code> but the component still works fine. You can ignore the messages.
</p>

View File

@ -0,0 +1,46 @@
---
layout: page
title: "Raspberry Pi Camera"
description: "Instructions how to integrate Raspberry Pi within Home Assistant."
date: 2016-04-08 10:00
sidebar: true
comments: false
sharing: true
footer: true
logo: raspberry-pi.png
ha_category: Camera
ha_iot_class: "Local Polling"
ha_release: 0.17
---
The `rpi` platform allows you to integrate the Raspberry Pi camera into Home Assistant. This component uses the application "raspistill" to store the image from camera.
```yaml
# Example configuration.yaml entry
camera:
platform: rpi_camera
name: Raspberry Pi Camera
image_width: 640
image_height: 480
image_quality: 7
image_rotation: 0
timelapse: 1000
horizontal_flip: 0
vertical_flip: 0
file_path: /tmp/image.jpg
```
Configuration variables:
- **name** (optional): name of the camera
- **image_width** (optional): set the image width (default: 640)
- **image_height** (optional): set the image height (default: 480)
- **image_quality** (optional): set the image quality (from 0 to 100, default: 7)
- **image_rotation** (optional): Set image rotation (0-359, default: 0)
- **horizontal_flip** (optional): Set horizontal flip (0 to disable, 1 to enable, default: 0)
- **vertical_flip** (optional): Set vertical flip (0 to disable, 1 to enable, default: 0)
- **timelapse** (optional): Takes a picture every <t>ms (default: 1000)
- **file_path** (optional): Save the picture in a custom file path (default: camera components folder)
The given **file_path** must be an existing file because the camera platform setup make a writeable check on it.

View File

@ -0,0 +1,34 @@
---
layout: page
title: "UniFi Video Camera"
description: "Instructions how to integrate UVC cameras within Home Assistant."
date: 2016-02-07 10:00
sidebar: true
comments: false
sharing: true
footer: true
logo: ubiquiti.png
ha_category: Camera
ha_release: 0.13
---
The `uvc` component allows you to integrate [UniFi Video Camera (UVC)](https://www.ubnt.com/unifi-video/unifi-video-camera/) into Home Assistant.
To enable a UVC camera in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
camera:
platform: uvc
nvr: IP_ADDRESS
port: PORT
key: APIKEY
```
Configuration variables:
- **nvr** *Required**: The IP or hostname of the NVR (Network Video Recorder) server.
- **port** *Optional*: The port number to use for accessing the NVR.
- **key** *Required*: The API key available from the NVR web interface.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Configurator"
description: "Instructions how to integrate the configurator in your components."
date: 2015-03-15 00:51
@ -21,6 +21,6 @@ The configurator component allows components to request information from the use
- Input fields can be defined with a description, and optional type
- It will trigger a callback when the button is pressed
The Hue component in [the demo](/demo) and Plex are implemented using the configurator. See [the source of the demo component](https://github.com/balloob/home-assistant/blob/master/homeassistant/components/demo.py#L132) for a simple example.
The Hue component in [the demo](/demo) and Plex are implemented using the configurator. See [the source of the demo component](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/demo.py#L132) for a simple example.
See [the source](https://github.com/balloob/home-assistant/blob/master/homeassistant/components/configurator.py#L39) for more details on how to use the configurator component.
See [the source](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/configurator.py#L39) for more details on how to use the configurator component.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Conversation"
description: "Instructions how to have conversations with your Home Assistant."
date: 2015-03-15 00:39
@ -7,12 +7,13 @@ sidebar: true
comments: false
sharing: true
footer: true
logo: conversation.png
ha_category: "Other"
logo: home-assistant.png
ha_category: "Voice"
---
The conversation component can process sentences into commands for Home Assistant. It is currently limited to parsing commands in the format `turn <Friendly Name> <on/off>`.
The conversation component can process sentences into commands for Home Assistant. It is currently limited to parsing commands in the format `turn <Friendly Name> <on/off>`.
To enable the conversion option in your installation, add the following to your `configuration.yaml` file:
@ -21,8 +22,12 @@ To enable the conversion option in your installation, add the following to your
conversation:
```
When this component is active and you are using a supported browser voice commands will be activated in the frontend. Browse to [the demo](/demo/) in Chrome to see it in action.
When this component is active and you are using a supported browser voice commands will be activated in the frontend. Browse to [the demo](/demo/) using Chrome to see it in action.
<p class='img'>
<img src="/images/screenshots/voice-commands.png" />
</p>
<p class='note'>
Apple iPhones do not support this feature in any browser.
</p>

View File

@ -0,0 +1,41 @@
---
layout: page
title: "Demo platforms"
description: "Instructions how to use the Platform demos with Home Assistant."
date: 2016-02-24 07:00
sidebar: true
comments: false
sharing: true
footer: true
logo: home-assistant.png
ha_category: Other
---
The `demo` platform allows you to use components which are providing a demo of their implementation. The demo entities are dummies but show you how the acutal platform looks like. This way you can run own demonstration instance like the online [Home Assistant demo](https://home-assistant.io/demo/) or `hass --demo-mode` but combined with your own real/functional platforms.
Available demo platforms:
- [Alarm control panel](/components/alarm_control_panel/) (`alarm_control_panel`)
- [Binary sensor](/components/binary_sensor/) (`binary_sensor`)
- [Camera](/components/camera/) (`camera`)
- [Garage door](/components/garage_door/) (`garage_door`)
- [Light](/components/light/) (`light`)
- [Lock](/components/lock/) (`lock`)
- [Notification](/components/notify/) (`notify`)
- [Roller shutter](/components/rollershutter/) (`rollershutter`)
- [Sensor](/components/sensor/) (`sensor`)
- [Switch](/components/switch/) (`switch`)
- [Thermostat](/components/thermostat/) (`thermostat`)
To integrate a demo platform in Home Assistant, add the following section to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
[component]:
- platform: demo
```
Configuration variables:
- **[component]** (*Required*): The name of the component as stated in the listing above the configuration example.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Presence based lights"
description: "Instructions how to automate your lights with Home Assistant."
date: 2015-01-20 22:36

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Actiontec"
description: "Instructions how to integrate Actiontec routers into Home Assistant."
date: 2015-08-30 19:00

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Aruba"
description: "Instructions how to integrate Aruba routers into Home Assistant."
date: 2015-08-31 08:45
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: aruba.png
ha_category: Presence Detection
ha_release: 0.7
---

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "ASUSWRT"
description: "Instructions how to integrate ASUSWRT based routers into Home Assistant."
date: 2015-08-06 19:00
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: asus.png
ha_category: Presence Detection
ha_release: pre 0.7
---

View File

@ -0,0 +1,29 @@
---
layout: page
title: "Bluetooth Tracker"
description: "Instructions how to integrate bluetooth tracking within Home Assistant."
date: 2016-04-10 17:24
sidebar: true
comments: false
sharing: true
footer: true
logo: bluetooth.png
ha_category: Presence Detection
ha_iot_class: "Local Poll"
ha_release: 0.18
---
This tracker discovers new devices on boot and tracks bluetooth devices periodically based on interval_seconds value. Devices discovered are stored with 'bt_' as the prefix for device mac in `known_devices.yaml`.
<p class='note'>
Requires PyBluez. If you are on raspbian, make sure you first install `bluetooth` and `libbluetooth-dev` by running `sudo apt install bluetooth libbluetooth-dev`
</p>
To use the Bluetooth tracker in your installation, add the following to your `configuration.yaml` file:
```yaml
device_tracker:
platform: bluetooth_tracker
```
For additional configuration variables check the [Device tracker page](/components/device_tracker/).

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "DD-WRT"
description: "Instructions how to integrate DD-WRT based routers into Home Assistant."
date: 2015-05-11 09:00

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "FRITZ!Box"
description: "Instructions how to integrate AVM FRITZ!Box based routers into Home Assistant."
date: 2015-12-13 19:00
@ -9,13 +9,14 @@ sharing: true
footer: true
logo: avm.png
ha_category: Presence Detection
ha_release: 0.10
---
The `fritz` platform offers presence detection by looking at connected devices to a [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) based router.
<p class='note warning'>
It might be necessary to install additional packages: <code>$ sudo apt-get install libxslt-dev libxml2-dev</code>
It might be necessary to install additional packages: <code>$ sudo apt-get install libxslt-dev libxml2-dev python3-lxml</code>
</p>
To use an Fritz!Box router in your installation, add the following to your `configuration.yaml` file:

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "iCloud"
description: "Instructions how to use iCloud to track devices in Home Assistant."
date: 2015-12-15 1000
@ -9,12 +9,13 @@ sharing: true
footer: true
logo: icloud.png
ha_category: Presence Detection
ha_release: 0.10
---
The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices.
It does require that your device has beend registered with "Find My iPhone".
It does require that your device is registered with "Find My iPhone".
To integrate iCloud in Home Assistant, add the following section to your `configuration.yaml` file:
@ -39,3 +40,7 @@ This may cause battery drainage as it wakes up your device to get the current lo
You may receive an email from Apple stating that someone has logged into your account.
</p>
<p class='note warning'>
If you have two-factor authentication enabled on your iCloud account you will not be able to use this presence detection in HA, even with an app-specific password.
</p>

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Locative"
description: "Instructions how to use Locative to track devices in Home Assistant."
date: 2015-10-13 19:00

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "OpenWRT (luci)"
description: "Instructions how to integrate OpenWRT routers into Home Assistant."
date: 2015-03-23 19:59

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Device Tracker"
description: "Instructions how to setup device tracking within Home Assistant."
date: 2015-01-20 22:36
@ -36,4 +36,15 @@ device_tracker:
Once tracked, a file will be created in your config dir called `known_devices.yaml`. Edit this file to adjust which devices to be tracked. Here you can also setup a URL for each device to be used as the entity picture and set whether the device will be show in the UI when in the away state.
Multiple device trackers can be used in parallel, such as [Owntracks](/components/device_tracker.owntracks/) and [Nmap](/components/device_tracker.nmap_scanner/). The state of the device will be determined by the source that reported last. Device tracker will look for global settings (track_new_devices, consider_home and home_interval) under the configuration of the first platform.
Multiple device trackers can be used in parallel, such as [Owntracks](/components/device_tracker.owntracks/) and [Nmap](/components/device_tracker.nmap_scanner/). The state of the device will be determined by the source that reported last. Device tracker will look for global settings (track_new_devices, consider_home and home_interval) under the configuration of the first platform.
To add Nmap tracking just add the mac address to the OwnTracks or iCloud device `mac:` configuration. To use both OwnTracks and Nmap you could use the following example:
```
owntracksdevicename:
name: Friendly Name!
mac: EA:AA:55:E7:C6:94
picture:
track: yes
hide_if_away: no
```

View File

@ -1,6 +1,6 @@
---
layout: component
title: "MQTT device tracker"
layout: page
title: "MQTT Device Tracker"
description: "Instructions how to use MQTT to track devices in Home Assistant."
date: 2015-09-19 20:41
sidebar: true

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Netgear"
description: "Instructions how to integrate Netgear routers into Home Assistant."
date: 2015-03-23 19:59
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: netgear.png
ha_category: Presence Detection
ha_iot_class: "Local Polling"
---
@ -23,6 +24,7 @@ device_tracker:
host: YOUR_ROUTER_IP
username: YOUR_ADMIN_USERNAME
password: YOUR_ADMIN_PASSWORD
port: YOUR_ROUTER_PORT
```
Configuration variables:
@ -30,5 +32,6 @@ Configuration variables:
- **host** (*Required*): The IP address of your router, e.g. 192.168.1.1.
- **username** (*Required*: The username of an user with administrative privileges, usually *admin*.
- **password** (*Required*): The password for your given admin account.
- **port** (*Optional*): The port your router communicates with (defaults to 5000, but 80 is also known to be used on some models)
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Nmap"
description: "Instructions how to integrate Nmap into Home Assistant."
date: 2015-03-23 19:59
@ -27,6 +27,9 @@ device_tracker:
home_interval: 10
```
`home_interval` is an optional value set in minutes. This will be the number of minutes nmap will not scan this device, assuming it is home, in order to preserve the device battery.
Configuration variables:
- **hosts** (*Required*): Thenetwork range to scan in CIDR notation, eg. 192.168.1.1/24
- **home_interval** (*Optional*): The number of minutes nmap will not scan this device, assuming it is home, in order to preserve the device battery.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Owntracks"
description: "Instructions how to use Owntracks to track devices in Home Assistant."
date: 2015-09-22 07:00
@ -10,6 +10,7 @@ footer: true
logo: owntracks.png
ha_category: Presence Detection
featured: true
ha_release: 0.7.4
---
@ -23,9 +24,12 @@ To integrate Owntracks in Home Assistant, add the following section to your `con
# Example configuration.yaml entry
device_tracker:
platform: owntracks
max_gps_accuracy: 200
```
There is no further configuration needed for tracking Owntracks devices.
Configuration variables:
- **max_gps_accuracy** (*Optional*): Sometimes Owntracks can report GPS location with a very low accuracy (few kilometers). That can trigger false zoning in your Home Assistant installation. With the parameter, you can filter these GPS reports. The number has to be in meter. For example, if you put 200 only GPS report with an accuracy under 200 will be take in account.
### {% linkable_title Using Owntracks with other device trackers %}
Owntracks can also be used with other device trackers, such as [Nmap](/components/device_tracker.nmap_scanner/) or [Netgear](/components/device_tracker.netgear/). To do this, fill in the `mac` field to the Owntracks entry in `known_devices.yaml` with the MAC address of the device you want to track. This way the state of the device will be determined by the source that reported last.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "SNMP"
description: "Instructions how to integrate SNMP into Home Assistant."
date: 2015-10-08 12:00
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: network-snmp.png
ha_category: Presence Detection
ha_release: 0.7.5
---
@ -19,9 +20,12 @@ This device tracker needs SNMP to be enabled on the router.
</p>
OID examples:
- Microtik: 1.3.6.1.4.1.14988.1.1.1.2.1.1 (confirmed)
- Mikrotik: 1.3.6.1.4.1.14988.1.1.1.2.1.1 (confirmed, unknown RouterOS version/model)
- Mikrotik: 1.3.6.1.2.1.4.22.1.2 (confirmed, RouterOS 6.x on RB2011)
- Aruba: 1.3.6.1.4.1.14823.2.3.3.1.2.4.1.2 (untested)
- BiPAC 7800DXL: 1.3.6.1.2.1.17.7.1.2.2.1.1 (confirmed on firmware 2.32e)
- OpenWrt: 1.3.6.1.2.1.4.22.1.2 (tested on Chaos Calmer 15.05 firmware, need to install snmpd package)
- pfSense: 1.3.6.1.2.1.4.22.1.2 (tested on 2.2.4-RELEASE, need to enable SNMP service)
To use the snmp platform in your installation, add the following to your `configuration.yaml` file:

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Thomson"
description: "Instructions how to integrate Thomson routers into Home Assistant."
date: 2015-08-30 19:00

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Tomato"
description: "Instructions how to integrate Tomato routers into Home Assistant."
date: 2015-03-23 19:59
@ -33,3 +33,6 @@ Configuration variables:
- **http_id** (*Required*): The value can be obtained by logging in to the Tomato admin interface and search for `http_id` in the page source code.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
A description of the API s available in this [Tomato API](http://paulusschoutsen.nl/blog/2013/10/tomato-api-documentation/) blog post.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "TP-Link"
description: "Instructions how to integrate TP-Link routers into Home Assistant."
date: 2015-06-22 10:30
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: tp-link.png
ha_category: Presence Detection
ha_release: pre 0.7
---

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "OpenWRT (ubus)"
description: "Instructions how to integrate OpenWRT routers into Home Assistant."
date: 2015-03-23 19:59
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: openwrt.png
ha_category: Presence Detection
ha_release: 0.7.6
---
_This is one of the two ways we support OpenWRT. If you encounter problems, try [luci](/components/device_tracker.luci/)._

View File

@ -0,0 +1,37 @@
---
layout: page
title: "Ubiquiti Unifi WAP"
description: "Instructions how to use a Unifi WAP controller as a device tracker module."
date: 2016-02-19 20:59
sidebar: true
comments: false
sharing: true
footer: true
logo: ubiquiti.png
ha_category: Presence Detection
ha_release: 0.14
---
This platform allows you to detect presence by looking at connected devices to a [Ubiquiti](http://ubnt.com/) [Unifi](https://www.ubnt.com/enterprise/#unifi) controller.
To use this device tracker in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
device_tracker:
platform: unifi
host: CONTROLLER
port: PORT
username: YOUR_ADMIN_USERNAME
password: YOUR_ADMIN_PASSWORD
```
Configuration variables:
- **host** (*Optional*): The hostname or IP address of your controller. Defaults to localhost.
- **port** (*Optional*): The port of your controller's web interface. Defaults to 8443.
- **username** (*Required*: The username of an user with administrative privileges, usually *admin*.
- **password** (*Required*): The password for your given admin account.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.

View File

@ -0,0 +1,35 @@
---
layout: page
title: "Discoverable"
description: "Instructions how to setup the discoverable component with Home Assistant."
date: 2016-03-01 07:00
sidebar: true
comments: false
sharing: true
footer: true
---
The Home Assistant discovery protocol is a lightweight feature that introduces support for Home Assistant servers to be discoverable. This will allow [Home Assistant instances](https://github.com/balloob/micropython-home-assistant) running with [MicroPython](https://micropython.org/) to get started without any required configuration (Example from the [MicroPython Home Assistant](https://github.com/balloob/micropython-home-assistant) documentation):
```python
from homeassistant.discovery import get_instance()
hass = get_instance()
for state in hass.states():
print(state)
```
To enable `discovery` in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yml entry
discoverable:
expose_password: yes
```
Configuration variables:
- **expose_password** (*Optional*): It is up to the user to expose the password in the discovery response (Default: off). If password not exposed, uHA instances will have to provide it (`get_instance('my password')`).

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Discovery"
description: "Instructions how to setup Home Assistant to discover new devices."
date: 2015-01-24 14:39
@ -37,5 +37,13 @@ If running home-assistant in a docker container use switch `--net=host` to put i
If you are developing a new platform, please read [how to make your platform discoverable]({{site_root}}/developers/add_new_platform/#discovery).
<p class='note warning'>
There is currently a <a href='https://bitbucket.org/al45tair/netifaces/issues/17/dll-fails-to-load-windows-81-64bit'>known issue</a> with running this playform on a 64-bit version of Python.
There is currently a <a href='https://bitbucket.org/al45tair/netifaces/issues/17/dll-fails-to-load-windows-81-64bit'>known issue</a> with running this platform on a 64-bit version of Python and Windows.
</p>
<p class='note'>
If you are on Windows and you're using Python 3.5, download the Netifaces dependency <a href='http://www.lfd.uci.edu/~gohlke/pythonlibs/#netifaces'>here</a>.
</p>
<p class='note'>
If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of home-assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system.
</p>

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Downloader"
description: "Instructions how to setup the downloader component with Home Assistant."
date: 2015-01-24 14:39
@ -7,8 +7,9 @@ sidebar: true
comments: false
sharing: true
footer: true
logo: downloader.png
logo: home-assistant.png
ha_category: Other
ha_release: pre 0.7
---
The `downloader` component provides a service to download files. It will raise an error and not continue to set itself up when the download directory does not exist.

View File

@ -0,0 +1,44 @@
---
layout: page
title: "Dweet.io"
description: "Record events in InfluxDB."
date: 2016-05-07 07:08
sidebar: true
comments: false
sharing: true
footer: true
logo: dweet.png
ha_category: "History"
featured: true
ha_release: 0.19
---
The `dweet` component makes it possible to transfer details collected with Home Assistant to [Dweet.io](http://dweet.io/) and visualize them with [freeboard.io](https://freeboard.io). Keep in mind that your information will be public!
<p class='img'>
<img src='{{site_root}}/images/screenshots/dweet-freeboard.png' />
</p>
<p class='note warning'>
The publishing interval is limited to 1 second. This means that it's possible to missing fast changes.
</p>
To use the `deweet` component in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
dweet:
name: HAExport
whitelist:
- input_slider.brightness
- input_boolean.notify_home
- sensor.weather_temperature
- sensor.cpu
```
Configuration variables:
- **name** (*Required*): Choose must choose an unique name.
- **whitelist** (*Required*): List of entity IDs you want to publish.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Ecobee"
description: "Instructions for how to integrate Ecobee thermostats and sensors within Home Assistant."
date: 2015-11-30 17:54
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: ecobee.png
ha_category: Hub
featured: true
---

View File

@ -0,0 +1,51 @@
---
layout: page
title: Feedreader
description: "Instructions how to integrate RSS feeds into Home Assistant."
date: 2016-04-18 22:00
sidebar: true
comments: false
sharing: true
footer: true
logo: rss.gif
ha_category: Other
ha_release: 0.18
---
Add an RSS/Atom feed reader that polls feeds every hour and sends new entries into the event bus.
To use RSS feeds in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
feedreader:
urls:
- https://home-assistant.io/atom.xml
- https://github.com/blog.atom
```
Configuration variables:
- **urls** (*Required*): List of URLS for your feeds.
Feedreader events can be used out of the box to trigger automation actions, e.g.:
```yaml
automation:
- alias: Trigger action when new element(s) in RSS feed
trigger:
platform: event
event_type: feedreader
action:
service: script.turn_on
entity_id: script.my_action
```
For more advanced use cases, a custom component registering to the `feedreader` event type could be used instead:
```python
EVENT_FEEDREADER = "feedreader"
hass.bus.listen(EVENT_FEEDREADER, event_listener)
```
To get started developing custom components, please refer to the [developers](/developers) documentation

View File

@ -0,0 +1,12 @@
---
layout: page
title: "Garage door"
description: "Instructions how to integrate Garage doors into Home Assistant."
date: 2016-02-12 07:00
sidebar: true
comments: false
sharing: true
footer: true
---
Home Assistant can give you an interface to control any garage door.

View File

@ -0,0 +1,61 @@
---
layout: page
title: "MQTT Garage door"
description: "Instructions how to setup the MQTT controllable garage doors within Home Assistant."
date: 2016-04-10 07:00
sidebar: true
comments: false
sharing: true
footer: true
logo: mqtt.png
ha_category: Garage Door
ha_release: 0.18
---
The `mqtt` garage door platform let you control your MQTT enabled garage door.
In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with RETAIN flag, the MQTT switch will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the switch will be false/off.
When a state topic is not available, the switch will work in optimistic mode. In this mode, the switch will immediately change state after every command. Otherwise, the switch will wait for state confirmation from device (message from `state_topic`).
Optimistic mode can be forced, even if state topic is available. Try to enable it, if experiencing incorrect switch operation.
To use your MQTT binary sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yml entry
garage_door:
platform: mqtt
state_topic: "home-assistant/garage-door"
command_topic: "home-assistant/garage-door/set"
name: "MQTT Sensor"
optimistic: false
qos: 0
retain: true
state_open: "STATE_OPEN"
state_closed: "STATE_CLOSED"
service_open: "SERVICE_OPEN"
service_close: "SERVICE_CLOSE"
value_template: '{% raw %}{{ value.x }}{% endraw %}'
```
Configuration variables:
- **state_topic** (*Required*): The MQTT topic subscribed to receive sensor values.
- **name** (*Optional*): The name of the sensor. Default is 'MQTT Sensor'.
- **state_open** (*Optional*): The payload that represents open state. Default is"STATE_OPEN"
- **state_closed** (*Optional*): The payload that represents closed state. Default is "STATE_CLOSED"
- **service_open** (*Optional*): The payload that represents open state in service mode. Default is"SERVICE_OPEN"
- **service_close** (*Optional*): The payload that represents closed state in service mode. Default is "SERVICE_CLOSE"
- **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is true if no state topic defined, else false.
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.
- **retain** (*Optional*): If the published message should have the retain flag on or not.
- **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload.
For a quick check you can use the commandline tools shipped with `mosquitto` to send MQTT messages. Set the state of your sensor manually:
```bash
$ mosquitto_pub -h 127.0.0.1 -t home-assistant/garage-door/set -m "OFF"
```

View File

@ -0,0 +1,26 @@
---
layout: page
title: "Wink Garage door"
description: "Instructions how to setup the Wink garage doors within Home Assistant."
date: 2016-02-12 07:00
sidebar: true
comments: false
sharing: true
footer: true
logo: wink.png
ha_category: Garage Door
ha_release: 0.13
---
Wink garage door functionality is currently limited to view only. Wink garage doors will still show the current state of the door, but control has been disabled for third parties. If you have a Chamberlain garage door, and would like to control it via Home Assistant, please contact Chamberlain and request that they re-enabled third-party control.
The following quote is from Wink.
<blockquote>
As part of our agreement with Chamberlain, third-party access to control Chamberlain garage doors has been restricted. Please contact Chamberlain directly to inquire about permissions.
</blockquote>
~~The Wink garage door platform allows you to control your [Wink](http://www.wink.com/) enabled garage door.~~
The requirement is that you have setup your [Wink hub](/components/wink/).

View File

@ -0,0 +1,32 @@
---
layout: page
title: "Graphite"
description: "Instructions on how to record Home Assistant history in Graphite."
date: 2016-02-10 17:11
sidebar: true
comments: false
sharing: true
footer: true
logo:
ha_category: History
ha_release: 0.13
---
The `graphite` component records all events and state changes and feeds the data to a [graphite](http://graphite.wikidot.com/) instance.
To enable this component, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
graphite:
host: IP_ADDRESS
port: 2003
prefix: ha
```
Configuration variables:
- **host** (*Option*): IP address of your graphite host, eg. http://192.168.1.10. Defaults to `localhost`
- **port** (*Optional*): Port to use. Defaults to 2003.
- **prefix** (*Optional*): Prefix is the metric prefix in graphite. Defaults to `ha`.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Group"
description: "Instructions how to setup groups within Home Assistant."
date: 2015-03-23 19:59
@ -15,9 +15,17 @@ Groups allow the user to combine multiple entities into one. A group can be prom
Check the **Set State** page from the **Developer Tools** and browse the **Current entities:** listing for all available entities.
By default, every group appears in the HOME tab. If you name a group `default_view` it will REPLACE the contents of the HOME tab so you can customize it as you wish.
```yaml
# Example configuration.yaml entry
group:
default_view:
view: yes
entities:
- group.awesome_people
- group.climate
kitchen:
name: Kitchen
entities:
@ -35,24 +43,32 @@ group:
Configuration variables:
- **view** (*Optional*): If yes then the entry will be shown as a view (tab).
- **name** (*Optional*): Name of the group.
- **icon** (*Optional*): An optional icon to show in the Frontend.
- **view** (*Optional*): If yes then the entry will be shown as a view.
- **entities** array or comma delimited string (*Required*): List of entites to group.
- **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If it's not a view, then the icon shows when this group is used in another group.
- **entities** (*Required*): array or comma delimited string, list of entities to group.
<p class='img'>
<img src='/images/blog/2016-01-release-12/views.png'>
Example of groups shown as views in the frontend.
</p>
If all entities are switches or lights they can be controlled as one with a switch at the top of the card. Grouped states should share the same type of states (ON/OFF or HOME/NOT_HOME).
If all entities in a group are switches or lights then Home Assistant adds a switch at the top of the card that turns them all on/off at once.
You can create views (tabs) that contain other groups.
Notice in the example below that in order to refer to the group "Living Room", you use `group.living_room` (lowercase and spaces replaced with underscores).
```yaml
# Example configuration.yaml entry
group:
living_room:
- light.bowl
- light.ceiling
- light.tv_back_light
children: device_tracker.child_1, device_tracker.child_2
```
# Example configuration.yaml entry that shows two groups, referred to in a view group (tab)
Living Room:
entities:
- light.light_family_1
- binary_sensor.motion_living
Bedroom: light.light_bedroom, switch.sleeping
Rooms:
view: yes
name: Rooms
entities:
- group.living_room
- group.bedroom
```

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "History"
description: "Instructions how to enable history support for Home Assistant."
date: 2015-03-23 19:59
@ -28,22 +28,22 @@ history:
</p>
<p class='note'>
Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser - no data is transferred to anyone at any time.
Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser. No data is transferred to anyone at any time.
</p>
#### {% linkable_title Implementation details %}
The history is stored in a SQLite databse `home-assistant.db` within your config directory.
The history is stored in a SQLite database `home-assistant.db` within your config directory.
- events table is all events except time_changed that happened while recorder component was running.
- states table contains all the new_state values of state_changed events.
- events table is all events except `time_changed` that happened while recorder component was running.
- states table contains all the `new_state` values of `state_changed` events.
- Inside the states table you have:
- entity_id: the entity_id of the entity
- state: the state of the entity
- attributes: JSON of the state attributes
- last_changed: timestamp last time the state has changed. A state_changed event can happen when just attributes change.
- last_updated: timestamp anything has changed (state, attributes)
- created: timestamp this entry was inserted into the database
- `entity_id`: the entity_id of the entity
- `state`: the state of the entity
- `attributes`: JSON of the state attributes
- `last_changed`: timestamp last time the state has changed. A state_changed event can happen when just attributes change.
- `last_updated`: timestamp anything has changed (state, attributes)
- `created`: timestamp this entry was inserted into the database
When the history component queries the states table it only selects states where the state has changed: `WHERE last_changed=last_updated`
@ -55,3 +55,7 @@ SQLite databases do not support native dates. That's why all the dates are saved
from datetime import datetime
datetime.fromtimestamp(1422830502)
```
#### {% linkable_title API %}
The history information are also available through the [RESTful API](/developers/rest_api/#get-apihistory).

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "HTTP"
description: "Offers a web framework to serve files."
date: 2015-12-06 21:35
@ -21,13 +21,27 @@ http:
development: 1
ssl_certificate: /etc/letsencrypt/live/hass.example.com/fullchain.pem
ssl_key: /etc/letsencrypt/live/hass.example.com/privkey.pem
cors_allowed_origins:
- google.com
- home-assistant.io
```
Configuration variables:
- **api_password** (*Optional*): Protect Home Assistant with a password
- **api_password** (*Optional*): Protect Home Assistant with a password.
- **server_port** (*Optional*): Let you set a port to use. Defaults to 8123.
- **development** (*Optional*): Disable caching and load unvulcanized assets. Useful for Frontend development.
- **ssl_certificate** (*Optional*): Path to your TLS/SSL certificate to serve Home Assistant over a secure connection.
- **ssl_key** (*Optional*): Path to your TLS/SSL key to serve Home Assistant over a secure connection.
- **cors_allowed_origins** (*Optional*): A list of origin domain names to allow [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) requests from. Enabling this will set the `Access-Control-Allow-Origin` header to the Origin header if it is found in the list, and the `Access-Control-Allow-Headers` to `Origin, Accept, X-Requested-With, Content-type, X-HA-access`.
The [Set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post gives you details about the encryption of your traffic using free certificates from [Let's Encrypt](https://letsencrypt.org/).
On top of the `http` component is a [REST API](/developers/rest_api/) and a [Python API](/developers/python_api/) available. There is also support for [Server-sent events](/developers/server_sent_events/) available.
The `http` platforms are not real platforms within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) sends and receives messages over HTTP.
To use those kind of [sensors](/components/sensor.http/) or [binary sensors](components/binary_sensor.http/) in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived.
All [requests](/developers/rest_api/#post-apistatesltentity_id) need to be sent to the endpoint of the device and must be **POST**.

View File

@ -0,0 +1,22 @@
---
layout: page
title: "HVAC"
description: "Instructions on how to integrate HVAC devices status with Home Assistant."
date: 2016-05-07 09:00
sidebar: true
comments: false
sharing: true
footer: true
ha_release: 0.19
---
The `hvac` component is built for the controlling and monitoring of HVAC (heating, ventilating, and air conditioning) devices.
To enable this component, pick one of the platforms and add it to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
hvac:
platform: demo
```

View File

@ -0,0 +1,15 @@
---
layout: page
title: "Z-Wave HVAC"
description: "Instructions on how to integrate HVAC Z-Wave devices status with Home Assistant."
date: 2016-05-07 09:00
sidebar: true
comments: false
sharing: true
footer: true
logo: z-wave.png
ha_category: HVAC
ha_release: 0.19
---
To get your Z-Wave `hvac` devices working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/) and the [HVAC component](/components/hvac/).

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "ManyThing"
description: "Instructions how to setup ManyThing support with IFTTT."
date: 2015-09-07 18:00

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "IFTTT"
description: "Instructions how to setup IFTTT within Home Assistant."
date: 2015-09-07 18:00

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "InfluxDB"
description: "Record events in InfluxDB."
date: 2015-12-06 13:08
@ -9,6 +9,8 @@ sharing: true
footer: true
logo: influxdb.png
ha_category: "History"
featured: true
ha_release: 0.9
---
The `influxdb` component makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. For more details, [see the blog post on InfluxDB](/blog/2015/12/07/influxdb-and-grafana/).
@ -23,6 +25,11 @@ influxdb:
database: DB_TO_STORE_EVENTS
username: MY_USERNAME
password: MY_PASSWORD
ssl: true
verify_ssl: true
blacklist:
- entity.id1
- entity.id2
```
Configuration variables:
@ -32,4 +39,6 @@ Configuration variables:
- **database** (*Optional*): Name of the database to use. Defaults to `home_assistant`. The database must already exist.
- **username** (*Optional*): The username of the database user.
- **password** (*Optional*): The password for the database user account.
- **ssl** (*Optional*): Use https instead of http to connect. Defaults to false.
- **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false.
- **blacklist** (*Optional*): List of entities not logged to influxdb.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Input Boolean"
description: "Instructions how to integrate the Input Boolean component into Home Assistant."
date: 2016-01-17 16:58
@ -17,7 +17,7 @@ The `input_boolean` component allows the user to define boolean values that can
# Example configuration.yaml entry
input_boolean:
notify_home:
name: Notify when someome arrives home
name: Notify when someone arrives home
initial: off
icon: mdi:car
```
@ -31,3 +31,22 @@ Configuration variables:
Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`.
Here's an example of an automation using the above input_boolean. This action will only occur if the switch is on.
```yaml
automation:
alias: Arriving home
trigger:
platform: state
entity_id: binary_sensor.motion_garage
to: 'on'
condition:
platform: state
entity_id: input_boolean.notify_home
state: 'on'
action:
service: notify.pushbullet
data:
title: ""
message: "Honey, I'm home!"
```

View File

@ -0,0 +1,45 @@
---
layout: page
title: "Input Select"
description: "Instructions how to integrate the Input Select component into Home Assistant."
date: 2016-02-02 17:00
sidebar: true
comments: false
sharing: true
footer: true
logo: home-assistant.png
ha_category: Automation
ha_release: 0.13
---
The `input_select` component allows the user to define a list of values that can be selected via the frontend and can be used within conditions of automation. When a user selectes a new item, a state transition event is generated. This state event can be used in an `automation` trigger.
To enable this platform, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
input_select:
who_cooks:
name: Who cooks today
options:
- Paulus
- Anne Therese
initial: Anne Therese
icon: mdi:panda
living_room_preset:
options:
- Visitors
- Visitors with kids
- Home Alone
```
Configuration variables:
- **[alias]** (*Required*): Alias for the input.
- **name** (*Optional*): Friendly name of the input.
- **options** array (*Optional*): List of options to choose from
- **initial** (*Optional*): Initial value when Home Assistant starts.
- **icon** (*Optional*): Icon for entry.
Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`.

View File

@ -0,0 +1,36 @@
---
layout: page
title: "Input Slider"
description: "Instructions how to integrate the Input Slider component into Home Assistant."
date: 2016-03-15 06:00
sidebar: true
comments: false
sharing: true
footer: true
logo: home-assistant.png
ha_category: Automation
ha_release: 0.16
---
The `input_slider` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the slider generate state events. These state events can be utilized as `automation` triggers as well.
```yaml
# Example configuration.yaml entry
input_slider:
slider1:
name: Slider 1
initial: 30
min: -20
max: 35
step: 1
```
Configuration variables:
- **[alias]** (*Required*): Alias for the slider input.
- **name** (*Optional*): Friendly name of the slider input.
- **initial** (*Optional*): Initial value when Home Assistant starts.
- **min** (*Optional*): Minimum value for the slider.
- **max** (*Optional*): Maximum value for the slider.
- **step** (*Optional*): Step value for the slider.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Insteon Hub"
description: "Instructions how to setup the Insteon Hub within Home Assistant."
date: 2016-01-27 08:00
@ -19,7 +19,7 @@ To integrate your Insteon Hub with Home Assistant, add the following section to
```yaml
# Example configuration.yaml entry
insteon:
insteon_hub:
username: YOUR_USERNAME
password: YOUR_PASSWORD
api_key: YOUR_API_KEY

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Introduction"
description: "Details about the introduction within Home Assistant."
date: 2015-10-25 15:15

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "ISY994 Controller"
description: "Instructions how to setup the ISY994 controller within Home Assistant."
date: 2015-01-20 22:36
@ -9,6 +9,7 @@ sharing: true
footer: true
logo: universal_devices.png
ha_category: Hub
ha_release: pre 0.7
---
The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. The controller is also capable of controlling Z-Wave devices but that functionality has not yet been confirmed with Home Assistant.

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Keyboard"
description: "Instructions how to simulate key presses with Home Assistant."
date: 2015-01-24 14:39
@ -7,7 +7,9 @@ sidebar: true
comments: false
sharing: true
footer: true
logo: keyboard.png
ha_category: Automation
ha_release: pre 0.7
---
@ -28,7 +30,7 @@ keyboard:
## {% linkable_title Dependencies %}
You may need to install platform-specific [dependencies for PyUserInput](https://github.com/SavinaRoja/PyUserInput#dependencies) in order to use the keyboard component. In most cases this can be done by running:
You may need to install platform-specific [dependencies for PyUserInput](https://github.com/PyUserInput/PyUserInput#dependencies) in order to use the keyboard component. In most cases this can be done by running:
```bash
$ pip3 install [package name]

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Blinkstick"
description: "Instructions how to setup Blinkstick lights within Home Assistant."
date: 2015-10-08 10:00
@ -9,10 +9,11 @@ sharing: true
footer: true
logo: blinkstick.png
ha_category: Light
ha_release: 0.7.5
---
The blinkstick platform let you can control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant.
The `blinkstick` platform let you can control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant.
To add blinkstick to your installation, add the following to your `configuration.yaml` file:

View File

@ -1,5 +1,5 @@
---
layout: component
layout: page
title: "Philips Hue"
description: "Instructions how to setup Philips Hue within Home Assistant."
date: 2015-03-23 20:09
@ -9,11 +9,10 @@ sharing: true
footer: true
logo: philips_hue.png
ha_category: Light
ha_iot_class: "Local Polling"
featured: true
---
Philips Hue support is integrated into Home Assistant as a light platform. The preferred way to setup the Philips Hue platform is by enabling the [the discovery component](/components/discovery/).
If you want to enable the light component directly, add the following lines to your `configuration.yaml`:
@ -23,6 +22,13 @@ If you want to enable the light component directly, add the following lines to y
light:
platform: hue
host: DEVICE_IP_ADDRESS
# Optional, make this unique if specifying multiple Hue hubs
allow_unreachable: true
filename: my_hue_hub_token.conf
```
Configuration variables:
- **host** (*Required*): IP address of the device, eg. 192.168.1.10.
- **allow_unreachable** (*Optional*): This will allow unreachable bulbs to report their state correctly. By default *name* from the device is used.
- **filename** (*Optional*): Make this unique if specifying multiple Hue hubs.

Some files were not shown because too many files have changed in this diff Show More