Merge remote-tracking branch 'origin/current' into release-0-41

This commit is contained in:
Paulus Schoutsen 2017-03-23 20:59:47 -07:00
commit 9bd1fd17b0
64 changed files with 1106 additions and 450 deletions

View File

@ -117,6 +117,17 @@ google_analytics_tracking_id: UA-57927901-1
# Facebook Like # Facebook Like
facebook_like: true facebook_like: true
# Liquid template compressor
compress_html:
clippings: []
comments: []
endings: []
ignore:
envs: []
blanklines: true
profile: false
startings: []
social: social:
visible: false visible: false
facebook: facebook:
@ -128,9 +139,9 @@ social:
# Home Assistant release details # Home Assistant release details
current_major_version: 0 current_major_version: 0
current_minor_version: 40 current_minor_version: 40
current_patch_version: 0 current_patch_version: 2
date_released: 2017-03-11 date_released: 2017-03-22
# Either # or the anchor link to latest release notes in the blog post. # Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it. # Must be prefixed with a # and have double quotes around it.
patch_version_notes: "#" patch_version_notes: "#release-0402---march-22"

View File

@ -0,0 +1,249 @@
#components-page{
.component-search{
margin-bottom: 24px;
input{
width: 100%;
padding: 10px;
background-color: #fefefe;
border-radius: 2px;
border: 1px solid;
border-color: #7c7c7c #c3c3c3 #ddd;
}
}
}
@media only screen and (max-width: $lap-end) {
#components-page {
.filter-button-group {
margin-bottom: 16px;
.btn {
display: inline-block;
margin-right: 8px;
margin-bottom: 8px;
&.current {
background-color: #3A5561;
background-image: linear-gradient(to bottom, #3A5561,#3F6B7D);
}
}
}
}
}
@media only screen and (min-width: $desk-start) {
#components-page {
.filter-button-group {
.featured {
margin: 12px 0;
}
.added_in_current_version {
margin-top: 12px;
}
.added_two_versions_ago {
margin-bottom: 12px;
}
.btn {
display: block;
background: 0;
color: black;
box-shadow: none;
text-shadow: none;
padding: 2px;
&.current {
font-weight: bold;
}
}
}
}
}
// styles for the cards
.hass-option-cards {
display: -ms-flexbox;
display: -webkit-box;
display: -webkit-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: flex-start;
margin: -4px; // grid trick, has to match option-card's margin
p.note{
width: 100%;
}
.option-card {
flex: 0 0 auto;
width: 210px;
height: 142px;
display: inline-block;
background-color: #fefefe;
margin: 4px;
border-radius: 2px;
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;
margin: 8px 0;
font: 0/0 a;
&:before { /* create a full-height inline block pseudo=element */
content: ' ';
display: inline-block;
vertical-align: middle; /* vertical alignment of the inline element */
height: 100%;
}
img {
max-width: 100%;
max-height: 50px;
box-shadow: none;
border: none;
vertical-align: middle;
}
}
.title {
text-decoration: none;
font-size: 18px;
color: #000;
line-height: 1.3em;
height: 2.6em;
}
.category {
font-size: 14px;
color: #AAA;
}
}
// fade-in animation
&.show-items .option-card{
opacity:0;
-webkit-animation:new-item-animation .2s linear forwards;
-o-animation:new-item-animation .2s linear forwards;
animation:new-item-animation .2s linear forwards;
}
// fade-out animation
&.remove-items .option-card{
-webkit-animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards;
-o-animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards;
animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards
}
}
// animations for fade-in and fade-out effects of option-cards
@keyframes new-item-animation {
from {
opacity:0;
-webkit-transform:scale(0);
-ms-transform:scale(0);
-o-transform:scale(0);
transform:scale(0)
}
to {
opacity:1;
-webkit-transform:scale(1);
-ms-transform:scale(1);
-o-transform:scale(1);
transform:scale(1)
}
}
@-webkit-keyframes new-item-animation {
from {
opacity:0;
-webkit-transform:scale(0);
transform:scale(0)
}
to {
opacity:1;
-webkit-transform:scale(1);
transform:scale(1)
}
}
@-o-keyframes new-item-animation {
from {
opacity:0;
-o-transform:scale(0);
transform:scale(0)
}
to {
opacity:1;
-o-transform:scale(1);
transform:scale(1)
}
}
// space blocker animation
@keyframes openspace {
to {
height:auto
}
}
@-webkit-keyframes openspace {
to {
height:auto
}
}
@-o-keyframes openspace {
to {
height:auto
}
}
// removal animation
@keyframes removed-item-animation {
from {
opacity:1;
-webkit-transform:scale(1);
-ms-transform:scale(1);
-o-transform:scale(1);
transform:scale(1)
}
to {
-webkit-transform:scale(0);
-ms-transform:scale(0);
-o-transform:scale(0);
transform:scale(0);
opacity:0
}
}
@-webkit-keyframes removed-item-animation {
from {
opacity:1;
-webkit-transform:scale(1);
transform:scale(1)
}
to {
-webkit-transform:scale(0);
transform:scale(0);
opacity:0
}
}
@-o-keyframes removed-item-animation {
from {
opacity:1;
-o-transform:scale(1);
transform:scale(1)
}
to {
-o-transform:scale(0);
transform:scale(0);
opacity:0
}
}

View File

@ -306,132 +306,6 @@ p.note {
} }
} }
#components-page {
.isotope-item {
z-index: 2;
}
.isotope-hidden.isotope-item {
pointer-events: none;
z-index: 1;
}
.isotope,
.isotope .isotope-item {
-webkit-transition-duration: 0.8s;
-moz-transition-duration: 0.8s;
transition-duration: 0.8s;
}
.isotope {
-webkit-transition-property: height, width;
-moz-transition-property: height, width;
transition-property: height, width;
}
.isotope .isotope-item {
-webkit-transition-property: -webkit-transform, opacity;
-moz-transition-property: -moz-transform, opacity;
transition-property: transform, opacity;
}
}
@media only screen and (max-width: $lap-end) {
#components-page {
.filter-button-group {
margin-bottom: 16px;
.btn {
display: inline-block;
margin-right: 8px;
margin-bottom: 8px;
&.current {
background-color: #3A5561;
background-image: linear-gradient(to bottom, #3A5561,#3F6B7D);
}
}
}
}
}
@media only screen and (min-width: $desk-start) {
#components-page {
.filter-button-group {
.featured {
margin: 12px 0;
}
.added_in_current_version {
margin-top: 12px;
}
.added_two_versions_ago {
margin-bottom: 12px;
}
.btn {
display: block;
background: 0;
color: black;
box-shadow: none;
text-shadow: none;
padding: 2px;
&.current {
font-weight: bold;
}
}
}
}
}
.hass-option-cards {
.option-card {
display: inline-block;
width: 202px;
height: 142px;
background-color: #fefefe;
margin-right: 4px;
margin-bottom: 8px;
border-radius: 2px;
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;
margin: 8px 0;
font: 0/0 a;
&:before { /* create a full-height inline block pseudo=element */
content: ' ';
display: inline-block;
vertical-align: middle; /* vertical alignment of the inline element */
height: 100%;
}
img {
max-width: 100%;
max-height: 50px;
box-shadow: none;
border: none;
vertical-align: middle;
}
}
.title {
text-decoration: none;
font-size: 18px;
color: #000;
line-height: 1.3em;
height: 2.6em;
}
.category {
font-size: 14px;
color: #AAA;
}
}
}
.aside-module { .aside-module {
.section { .section {
margin-bottom: 16px; margin-bottom: 16px;

View File

@ -1,3 +1,4 @@
@import 'oscailte/oscailte'; @import 'oscailte/oscailte';
@import 'custom/paulus'; @import 'custom/paulus';
@import 'custom/component_page';
@import 'custom/syntax'; @import 'custom/syntax';

View File

@ -1,7 +1,7 @@
--- ---
layout: page layout: page
title: "Android IP Webcam" title: "Android IP Webcam"
description: "Connect Android devices as IP webcam to Home Assistant" description: "Connect Android devices as an IP webcam to Home Assistant"
date: 2017-03-10 00:00 date: 2017-03-10 00:00
sidebar: true sidebar: true
comments: false comments: false
@ -12,7 +12,7 @@ ha_category: Hub
ha_release: "0.40" ha_release: "0.40"
--- ---
The Android IP webcam component turns your Android phone into a network camera with multiple viewing options. The Android IP webcam component turns an Android phone into a network camera with multiple viewing options.
It's setup as a mjpeg camera and all settings as switches inside of Home Assistant. You can also expose the sensors. If you have multiple phones, you can use all options inside a list. It's setup as a mjpeg camera and all settings as switches inside of Home Assistant. You can also expose the sensors. If you have multiple phones, you can use all options inside a list.
@ -21,10 +21,14 @@ To set it up, download [the IP Webcam app][app] and add the following informatio
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
android_ip_webcam: android_ip_webcam:
<<<<<<< HEAD
<<<<<<< HEAD <<<<<<< HEAD
- host: 192.168.1.10 - host: 192.168.1.10
======= =======
# This should be the ip of your phone # This should be the ip of your phone
=======
# This should be the IP Address of the phone
>>>>>>> origin/current
- host: 192.168.1.10 - host: 192.168.1.10
name: Entrance name: Entrance
>>>>>>> current >>>>>>> current
@ -32,11 +36,11 @@ android_ip_webcam:
Configuration variables: Configuration variables:
- **host** (*Required*): The ip address where your phone have on network. - **host** (*Required*): The IP Address of the phone on the network.
- **port** (*Optional*): Default is set 8080. The port where is ip webcam listens. - **port** (*Optional*): Default is set 8080. The port the IP Webcam listens on.
- **name** (*Optional*): This parameter allows you to override the name of your phone. - **name** (*Optional*): Override the name of the phone.
- **username** (*Optional*): The username for accessing your phone. - **username** (*Optional*): The username to access the phone.
- **password** (*Optional*): The password for accessing your phone. - **password** (*Optional*): The password to access the phone.
- **scan_interval** (*Optional*): Default is 10 seconds. Defines the update interval of the phone. - **scan_interval** (*Optional*): Default is 10 seconds. Defines the update interval of the phone.
- **auto_discovery** (*Optional*): Default is True. Auto detect which sensors and settings are available for setup. - **auto_discovery** (*Optional*): Default is True. Auto detect which sensors and settings are available for setup.
- **sensors** array (*Optional*): Conditions to display sensor in the frontend. See list of supported sensors. - **sensors** array (*Optional*): Conditions to display sensor in the frontend. See list of supported sensors.

View File

@ -8,7 +8,7 @@ comments: false
sharing: true sharing: true
footer: true footer: true
logo: apcupsd.png logo: apcupsd.png
ha_category: Binary Sensor ha_category: System Monitor
ha_release: 0.13 ha_release: 0.13
ha_iot_class: "Local Polling" ha_iot_class: "Local Polling"
--- ---

View File

@ -11,9 +11,9 @@ ha_category: Binary Sensor
logo: home-assistant.png logo: home-assistant.png
--- ---
The `template` platform supports sensors which breaks out the state and `state_attributes` from other entities. The `template` platform supports sensors which breaks out the `state` and `state_attributes` from other entities. The state of a template binary sensor can only be `on` or `off`.
To enable Template binary sensors in your installation, add the following to your `configuration.yaml` file: To enable template binary sensors in your installation, add the following to your `configuration.yaml` file:
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry

View File

@ -31,4 +31,5 @@ Configuration variables:
- **username** (*Required*: The username of an user with administrative privileges, usually `admin`. - **username** (*Required*: The username of an user with administrative privileges, usually `admin`.
- **password** (*Required*): The password for your given admin account. - **password** (*Required*): The password for your given admin account.
By default Home Assistant pulls information about connected devices from DD-WRT every 5 seconds.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.

View File

@ -32,7 +32,7 @@ Configuration variables:
- **hosts** (*Required*): The network address to scan (in any supported NMap format). Mixing subnets and IPs is possible. - **hosts** (*Required*): The network address to scan (in any supported NMap format). Mixing subnets and IPs is possible.
- **home_interval** (*Optional*): The number of minutes nmap will not scan this device, assuming it is home, in order to preserve the device battery. - **home_interval** (*Optional*): The number of minutes nmap will not scan this device, assuming it is home, in order to preserve the device battery.
- **exclude** (*Optional*): Hosts not to include in nmap scanning. - **exclude** (*Optional*): Hosts not to include in nmap scanning. Scanning the host where Home Assistant is running can cause problems (websocket error), so excluding that host is a good idea.
- **scan_options** (*Optional*): Configurable scan options for nmap. Default to `-F --host-timeout 5s` - **scan_options** (*Optional*): Configurable scan options for nmap. Default to `-F --host-timeout 5s`

View File

@ -33,5 +33,6 @@ Configuration variables:
- **password** (*Required*): The password for your given admin account. - **password** (*Required*): The password for your given admin account.
- **verify_ssl** (*Optional*): Verify the controllers SSL certificate. Defaults to True however can also be False or "path/to/custom_cert.pem". - **verify_ssl** (*Optional*): Verify the controllers SSL certificate. Defaults to True however can also be False or "path/to/custom_cert.pem".
- **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard) - **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard)
- **verify_ssl** (*Optional*): Controls if the SSL certificate running on your Unifi webserver must be trusted by a known Certificate Authority on the server running Home Assistant. Defaults to 'True'.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.

View File

@ -30,3 +30,7 @@ Configuration variables:
- **host** (*Optional*): The IP address of your router. Set it if you are not using `192.168.0.1`. - **host** (*Optional*): The IP address of your router. Set it if you are not using `192.168.0.1`.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
Also known to be working with the following devices:
- Irish Virgin Media Super Hub 3.0

View File

@ -26,6 +26,10 @@ Home Assistant can discover and automatically configure zeroconf/mDNS and uPnP d
* Logitech media server (Squeezebox) * Logitech media server (Squeezebox)
* DirecTV * DirecTV
* Apple TV * Apple TV
* Yeelight Sunflower Bulb
* Flux Led/MagicLight
* Linn / Openhome
* Denon Network Receivers
It will be able to add Google Chromecasts and Belkin WeMo switches automatically, for Philips Hue it will require some configuration from the user. It will be able to add Google Chromecasts and Belkin WeMo switches automatically, for Philips Hue it will require some configuration from the user.
@ -43,6 +47,24 @@ Configuration variables:
- **ignore** (*Optional*): A list of platforms that never will be automatically configured by `discovery`. - **ignore** (*Optional*): A list of platforms that never will be automatically configured by `discovery`.
Valid values for ignore are:
* philips_hue: (Philips Hue)
* google_cast: (Google Chromecast)
* panasonic_viera: (Panasonic Viera)
* plex_mediaserver: (Plex media server)
* roku: (Roku media player)
* sonos: (Sonos Speakers)
* yamaha: (Yamaha media player)
* logitech_mediaserver: (Logitech media server - Squeezebox player)
* directv: (DirecTV)
* denonavr: (Denon Network Receivers)
* samsung_tv: (Samsung TV)
* yeelight: (Yeelight Sunflower Bulb)
* flux_led: (Flux Led/MagicLight)
* apple_tv: (Apple TV)
* openhome: (Linn / Openhome)
<p class='note'> <p class='note'>
Home Assistant must be on the same network as the devices for uPnP discovery to work. Home Assistant must be on the same network as the devices for uPnP discovery to work.
If running Home Assistant in a Docker container use switch `--net=host` to put it on the host's network. If running Home Assistant in a Docker container use switch `--net=host` to put it on the host's network.

View File

@ -27,12 +27,10 @@ automation:
- platform: state - platform: state
entity_id: group.all_devices entity_id: group.all_devices
state: 'not_home' state: 'not_home'
condition: condition:
- platform: state - platform: state
entity_id: sun.sun entity_id: sun.sun
state: 'above_horizon' state: 'above_horizon'
action: action:
service: ifttt.trigger service: ifttt.trigger
data: {"event":"manything_on"} data: {"event":"manything_on"}
@ -44,12 +42,10 @@ automation:
- platform: state - platform: state
entity_id: group.all_devices entity_id: group.all_devices
state: 'home' state: 'home'
- platform: state condition:
- condition: state
entity_id: sun.sun entity_id: sun.sun
state: 'above_horizon' state: 'above_horizon'
condition: use_trigger_values
action: action:
service: ifttt.trigger service: ifttt.trigger
data: {"event":"manything_off"} data: {"event":"manything_off"}
@ -73,4 +69,3 @@ domain | `ifttt`
service | `trigger` service | `trigger`
Service Data | `{"event": "manything_on"}` Service Data | `{"event": "manything_on"}`

View File

@ -2,7 +2,7 @@
layout: page layout: page
title: "InfluxDB" title: "InfluxDB"
description: "Record events in InfluxDB." description: "Record events in InfluxDB."
date: 2015-12-06 13:08 date: 2017-03-13 22:09
sidebar: true sidebar: true
comments: false comments: false
sharing: true sharing: true
@ -27,7 +27,7 @@ You will still need to create a database named `home_assistant` via InfluxDB's w
Configuration variables: Configuration variables:
- **host** (*Optional*): IP address of your database host, eg. 192.168.1.10. Defaults to `localhost`. - **host** (*Optional*): IP address of your database host, e.g. 192.168.1.10. Defaults to `localhost`.
- **port** (*Optional*): Port to use. Defaults to 8086. - **port** (*Optional*): Port to use. Defaults to 8086.
- **username** (*Optional*): The username of the database user. - **username** (*Optional*): The username of the database user.
- **password** (*Optional*): The password for the database user account. - **password** (*Optional*): The password for the database user account.
@ -35,8 +35,8 @@ Configuration variables:
- **ssl** (*Optional*): Use https instead of http to connect. Defaults to false. - **ssl** (*Optional*): Use https instead of http to connect. Defaults to false.
- **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. - **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false.
- **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id. - **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id.
- **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in the singel same measurement. - **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement.
- **blacklist** (*Optional*): List of entities not logged to InfluxDB. - **blacklist** (*Optional*): List of entities that should not be logged to InfluxDB.
- **whitelist** (*Optional*): List of the entities (only) that will be logged to InfluxDB. If not set, all entities will be logged. Values set by the **blacklist** option will prevail. - **whitelist** (*Optional*): List of the entities (only) that will be logged to InfluxDB. If not set, all entities will be logged. Values set by the **blacklist** option will prevail.
- **tags** (*Optional*): Tags to mark the data. - **tags** (*Optional*): Tags to mark the data.
@ -44,23 +44,23 @@ Configuration variables:
Starting with 0.36 the InfluxDB component has a new schema to store values in the InfluxDB databases. Starting with 0.36 the InfluxDB component has a new schema to store values in the InfluxDB databases.
- There will not be any tags/fields named time anymore. - There will no longer be any tags/fields named `time`.
- All numeric fields (int/float/bool) will be stored as float inside InfluxDB database. - All numeric fields (int/float/bool) will be stored as float inside InfluxDB database.
- All string fields corresponding to state attributes will be renamed as `FIELDNAME_str`, where `FIELDNAME` is the state attribute, to avoid type conflicts. - All string fields corresponding to state attributes will be renamed as `FIELDNAME_str`, where `FIELDNAME` is the state attribute, to avoid type conflicts.
- All string fields corresponding to a state will be renamed as state (former value). - All string fields corresponding to a state will be renamed as `state` (former value).
- Fields named value will always be stored as float. - Fields named `value` will always be stored as float.
- Fields named state will always be stored as string. - Fields named `state` will always be stored as string.
### {% linkable_title Migration script %} ### {% linkable_title Migration script %}
If you need to migrate your database, you may require to run the `influxdb_migrator` script. Run the script after upgrade to 0.36 but before first regular start of `hass` version 0.36. If you need to migrate your database, you may require to run the `influxdb_migrator` script. Run the script after upgrade to 0.36 but before the first regular start of `hass` version 0.36.
These are the steps the script will perform: These are the steps the script will perform:
1. Create a new database (called `DBNAME__old`) to store old data. 1. Create a new database (called `DBNAME__old`) to store old data.
2. Copy data from `DBNAME` database to `DBNAME__old` database. 2. Copy data from `DBNAME` database to `DBNAME__old` database.
3. Empty `DBNAME` database (using `drop` then `create`). `DBNAME` database is now considered as the new database. 3. Empty `DBNAME` database (using `drop` then `create`). `DBNAME` database is now considered as the new database.
4. For each measurement of `DBNAME__old` database: 4. For each measurement of `DBNAME__old` database:
1. Read all points from the current measuremnt (by group of `1000` points by default) and convert them. 1. Read all points from the current measurement (in groups of 1000 points by default) and convert them.
2. Send group of points to `DBNAME` database. 2. Send group of points to `DBNAME` database.
5. Delete the `DBNAME__old` database if needed. 5. Delete the `DBNAME__old` database if needed.
@ -94,7 +94,7 @@ optional arguments:
- If you run the script with only the `-h` option, you will get a help printout with a short explanation of the different options. - If you run the script with only the `-h` option, you will get a help printout with a short explanation of the different options.
- The host option defaults to `'127.0.0.1'`. - The host option defaults to `'127.0.0.1'`.
- The port option defaults to `8086`. - The port option defaults to `8086`.
- You should be able to omit username and password, if InfluxDB authentication is disabled, which it is by default. - You should be able to omit username and password if InfluxDB authentication is disabled, which it is by default.
- The step option defaults to `1000`. - The step option defaults to `1000`.

View File

@ -37,7 +37,7 @@ Configuration variables:
- **device_id** (*Required*): The Id of your device. - **device_id** (*Required*): The Id of your device.
- **api_key** (*Required*): The API key for Join. - **api_key** (*Required*): The API key for Join.
The notify service has a few optional parameters such as icon and small icon. You can use them like so: The notify service has two optional parameters: `icon` and `small icon`. You can use them like so:
```json ```json
{"message":"Hello!","title":"From Hass","data":{"icon":"https://goo.gl/KVqcYi","smallicon":"http://goo.gl/AU4Wf1"}} {"message":"Hello!","title":"From Hass","data":{"icon":"https://goo.gl/KVqcYi","smallicon":"http://goo.gl/AU4Wf1"}}

View File

@ -19,12 +19,8 @@ The `lifx` platform allows you to integrate your [LIFX](http://www.lifx.com) int
# Example configuration.yaml entry # Example configuration.yaml entry
light: light:
- platform: lifx - platform: lifx
broadcast: 192.168.1.255 server: 192.168.1.10
``` ```
Configuration variables: Configuration variables:
- **server** (*Optional*): Your server address. Only needed if using more than one network interface. Omit if you are unsure. - **server** (*Optional*): Your server address. Only needed if using more than one network interface. Omit if you are unsure.
- **broadcast** (*Optional*): The broadcast address, set to reach all LIFX bulbs.
If there is an issue with lights not showing up when Home Assistant is restarted, add broadcast to your configuration.

View File

@ -11,8 +11,7 @@ logo: mqtt.png
ha_category: Light ha_category: Light
--- ---
The `mqtt` light platform lets you control your MQTT enabled light. It supports setting brightness, color temperature, effects, flashing, on/off, RGB colors, transitions, XY colors and white values.
The `mqtt` light platform let you control your MQTT enabled light.
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. 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.
@ -30,28 +29,55 @@ light:
Configuration variables: Configuration variables:
- **command_topic** (*Required*): The MQTT topic to publish commands to change the switch state. - **command_topic** (*Required*): The MQTT topic to publish commands to change the switch state.
- **name** (*Optional*): The name of the switch. Default is 'MQTT Switch'.
- **state_topic** (*Optional*): The MQTT topic subscribed to receive state updates.
- **brightness_state_topic** (*Optional*): The MQTT topic subscribed to receive brightness state updates.
- **brightness_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's brightness. - **brightness_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's brightness.
- **rgb_state_topic** (*Optional*): The MQTT topic subscribed to receive RGB state updates.
- **rgb_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's RGB state.
- **color_temp_state_topic** (*Optional*): The MQTT topic subscribed to receive color temperature state updates.
- **color_temp_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's color temperature state.
- **state_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the state value.
- **brightness_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the brightness value.
- **rgb_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the RGB value.
- **color_temp_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the color temperature value.
- **brightness_scale** (*Optional*): Defines the maximum brightness value (i.e. 100%) of the MQTT device (defaults to 255). - **brightness_scale** (*Optional*): Defines the maximum brightness value (i.e. 100%) of the MQTT device (defaults to 255).
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. - **brightness_state_topic** (*Optional*): The MQTT topic subscribed to receive brightness state updates.
- **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". - **brightness_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the brightness value.
- **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". - **color_temp_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's color temperature state.
- **color_temp_state_topic** (*Optional*): The MQTT topic subscribed to receive color temperature state updates.
- **color_temp_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the color temperature value.
- **effect_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's effect state.
- **effect_state_topic** (*Optional*): The MQTT topic subscribed to receive effect state updates.
- **effect_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the effect value.
- **effect_list** (*Optional*): The list of effects the light supports.
- **name** (*Optional*): The name of the switch. Default is 'MQTT Switch'.
- **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is true if no state topic defined, else false. - **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is true if no state topic defined, else false.
- **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF".
- **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON".
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.
- **rgb_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's RGB state.
- **rgb_state_topic** (*Optional*): The MQTT topic subscribed to receive RGB state updates.
- **rgb_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the RGB value.
- **state_topic** (*Optional*): The MQTT topic subscribed to receive state updates.
- **state_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the state value.
- **white_value_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's white value.
- **white_value_state_topic** (*Optional*): The MQTT topic subscribed to receive white value updates.
- **white_value_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the white value.
- **xy_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's XY state.
- **xy_state_topic** (*Optional*): The MQTT topic subscribed to receive XY state updates.
- **xy_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the XY value.
<p class='note warning'> <p class='note warning'>
Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics.
</p> </p>
<p class='note warning'>
XY and RGB can not be used at the same time. If both are provided, XY overrides RGB.
</p>
## {% linkable_title Comparison of light MQTT platforms %}
| Function | [`mqtt`](https://home-assistant.io/components/light.mqtt/) | [`mqtt_json`](https://home-assistant.io/components/light.mqtt_json/) | [`mqtt_template`](https://home-assistant.io/components/light.mqtt_template/) |
|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------|
| Brightness | ✔ | ✔ | ✔ |
| Color temperature | ✔ | ✔ | ✔ |
| Effects | ✔ | ✔ | ✔ |
| Flashing | ✘ | ✔ | ✔ |
| RGB Color | ✔ | ✔ | ✔ |
| Transitions | ✘ | ✔ | ✔ |
| XY Color | ✔ | ✔ | ✘ |
| White Value | ✔ | ✔ | ✔ |
## {% linkable_title Examples %} ## {% linkable_title Examples %}
In this section you find some real life examples of how to use this sensor. In this section you find some real life examples of how to use this sensor.

View File

@ -13,25 +13,28 @@ ha_iot_class: "Local Push"
ha_release: 0.26 ha_release: 0.26
--- ---
The `mqtt_json` light platform lets you control a MQTT-enabled light that can receive [JSON](https://en.wikipedia.org/wiki/JSON) messages. The `mqtt_json` light platform lets you control a MQTT-enabled light that can receive [JSON](https://en.wikipedia.org/wiki/JSON) messages.
This platform supports on/off, brightness, RGB colors, transitions, and short/long flashing. The messages sent to/from the lights look similar to this, omitting fields when they aren't needed: This platform supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing and white values. The messages sent to/from the lights look similar to this, omitting fields when they aren't needed:
```json ```json
{ {
"brightness": 255, "brightness": 255,
"color_temp": 155,
"color": { "color": {
"r": 255,
"g": 255, "g": 255,
"b": 255, "b": 255,
"r": 255 "x": 0.123,
"y": 0.123
}, },
"effect": "colorloop",
"state": "ON",
"transition": 2, "transition": 2,
"state": "ON" "white_value": 150
} }
``` ```
In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off. In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off.
When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`). When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`).
@ -48,19 +51,42 @@ light:
Configuration variables: Configuration variables:
- **command_topic** (*Required*): The MQTT topic to publish commands to change the light's state. - **command_topic** (*Required*): The MQTT topic to publish commands to change the light's state.
- **name** (*Optional*): The name of the light. Default is "MQTT JSON Light."
- **state_topic** (*Optional*): The MQTT topic subscribed to receive state updates.
- **brightness** (*Optional*): Flag that defines if the light supports brightness. Default is false. - **brightness** (*Optional*): Flag that defines if the light supports brightness. Default is false.
- **rgb** (*Optional*): Flag that defines if the light supports RGB colors. Default is false. - **color_temperature** (*Optional*): Flag that defines if the light supports color temperature. Default is false.
- **flash_time_short** (*Optional*): The duration, in seconds, of a "short" flash. Default is 2. - **effect** (*Optional*): Flag that defines if the light supports effects. Default is false.
- **effect** (*Optional*): Flag that defines if the light supports effects. Default is false.
- **effect_list** (*Optional*): The list of effects the light supports.
- **flash_time_long** (*Optional*): The duration, in seconds, of a "long" flash. Default is 10. - **flash_time_long** (*Optional*): The duration, in seconds, of a "long" flash. Default is 10.
- **flash_time_short** (*Optional*): The duration, in seconds, of a "short" flash. Default is 2.
- **name** (*Optional*): The name of the light. Default is "MQTT JSON Light."
- **optimistic** (*Optional*): Flag that defines if the light works in optimistic mode. Default is true if no state topic defined, else false. - **optimistic** (*Optional*): Flag that defines if the light 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. - **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.
- **rgb** (*Optional*): Flag that defines if the light supports RGB colors. Default is false.
- **state_topic** (*Optional*): The MQTT topic subscribed to receive state updates.
- **white_value** (*Optional*): Flag that defines if the light supports white values. Default is false.
- **xy** (*Optional*): Flag that defines if the light supports XY colors. Default is false.
<p class='note warning'> <p class='note warning'>
Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics.
</p> </p>
<p class='note warning'>
XY and RGB can not be used at the same time. If both are provided, XY overrides RGB.
</p>
## {% linkable_title Comparison of light MQTT platforms %}
| Function | [`mqtt`](https://home-assistant.io/components/light.mqtt/) | [`mqtt_json`](https://home-assistant.io/components/light.mqtt_json/) | [`mqtt_template`](https://home-assistant.io/components/light.mqtt_template/) |
|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------|
| Brightness | ✔ | ✔ | ✔ |
| Color temperature | ✔ | ✔ | ✔ |
| Effects | ✔ | ✔ | ✔ |
| Flashing | ✘ | ✔ | ✔ |
| RGB Color | ✔ | ✔ | ✔ |
| Transitions | ✘ | ✔ | ✔ |
| XY Color | ✔ | ✔ | ✘ |
| White Value | ✔ | ✔ | ✔ |
## {% linkable_title Examples %} ## {% linkable_title Examples %}
In this section you find some real life examples of how to use this sensor. In this section you find some real life examples of how to use this sensor.

View File

@ -13,11 +13,10 @@ ha_iot_class: "Local Push"
ha_release: 0.33 ha_release: 0.33
--- ---
The `mqtt_template` light platform lets you control a MQTT-enabled light that receive commands on a command topic and optionally sends status update on a state topic. The `mqtt_template` light platform lets you control a MQTT-enabled light that receive commands on a command topic and optionally sends status update on a state topic.
It is format-agnostic so you can use any data format you want (i.e. string, JSON), just configure it with templating. It is format-agnostic so you can use any data format you want (i.e. string, JSON), just configure it with templating.
This platform supports on/off, brightness, RGB colors, transitions, short/long flashing and effects. This platform supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing, effects and white values.
In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off. In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off.
@ -47,7 +46,9 @@ Configuration variables:
- **red_template** (*Optional*): Template to extract red color from the state payload value. - **red_template** (*Optional*): Template to extract red color from the state payload value.
- **green_template** (*Optional*): Template to extract green color from the state payload value. - **green_template** (*Optional*): Template to extract green color from the state payload value.
- **blue_template** (*Optional*): Template to extract blue color from the state payload value. - **blue_template** (*Optional*): Template to extract blue color from the state payload value.
- **color_temp_template** (*Optional*): Template to extract color temperature from the state payload value.
- **effect_template** (*Optional*): Template to extract effect from the state payload value. - **effect_template** (*Optional*): Template to extract effect from the state payload value.
- **white_value_template** (*Optional*): Template to extract white value from the state payload value.
- **optimistic** (*Optional*): Flag that defines if the light works in optimistic mode. Default is true if no state topic or state template is defined, else false. - **optimistic** (*Optional*): Flag that defines if the light works in optimistic mode. Default is true if no state topic or state template is defined, else false.
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. - **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.
@ -55,6 +56,19 @@ Configuration variables:
Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics.
</p> </p>
## {% linkable_title Comparison of light MQTT platforms %}
| Function | [`mqtt`](https://home-assistant.io/components/light.mqtt/) | [`mqtt_json`](https://home-assistant.io/components/light.mqtt_json/) | [`mqtt_template`](https://home-assistant.io/components/light.mqtt_template/) |
|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------|
| Brightness | ✔ | ✔ | ✔ |
| Color temperature | ✔ | ✔ | ✔ |
| Effects | ✔ | ✔ | ✔ |
| Flashing | ✘ | ✔ | ✔ |
| RGB Color | ✔ | ✔ | ✔ |
| Transitions | ✘ | ✔ | ✔ |
| XY Color | ✔ | ✔ | ✘ |
| White Value | ✔ | ✔ | ✔ |
## {% linkable_title Examples %} ## {% linkable_title Examples %}
In this section you find some real life examples of how to use this light. In this section you find some real life examples of how to use this light.

View File

@ -12,9 +12,10 @@ ha_release: 0.39
--- ---
The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant. The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant.
Note that the "Yeelight Sunflower" bulbs are not the same as the "Yeelight WiFi" bulbs.
### {% linkable_title Example configuration %} <p class='note warning'>
The "Yeelight Sunflower" bulbs are not the same as the "Yeelight WiFi" bulbs.
</p>
To enable your lights, add the following lines to your `configuration.yaml` file: To enable your lights, add the following lines to your `configuration.yaml` file:
@ -37,4 +38,3 @@ When the hub is loaded, your lights will appear as devices with their Zigbee IDs
The Yeelight Sunflower hub supports SSDP discovery, but that has not been built into the platform. Let the developer know if that would be helpful to you. The Yeelight Sunflower hub supports SSDP discovery, but that has not been built into the platform. Let the developer know if that would be helpful to you.
</p> </p>

View File

@ -28,7 +28,7 @@ Steps to configure your Amazon Fire TV stick with Home Assistant:
- From the main (Launcher) screen, select Settings. - From the main (Launcher) screen, select Settings.
- Select System > About > Network. - Select System > About > Network.
- The following commands must be run in a Python 2.x environment. They will allow the component to function in an Ubuntu 16.04/Hassbian environment. - The following commands must be run in a Python 2.x environment. They will allow the component to function in an Ubuntu 16.04/Hassbian environment.
- `apt-get install swig libssl-dev python-dev libusb-1.0-0` - `apt-get install swig libssl-dev python-dev libusb-1.0-0 python-yaml`
- `pip install flask` - `pip install flask`
- `pip install https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.24.0.tar.gz` - `pip install https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.24.0.tar.gz`
- `pip install firetv[firetv-server]` - `pip install firetv[firetv-server]`

View File

@ -37,7 +37,7 @@ And then install the following system dependencies:
Debian/Ubuntu/Rasbian: Debian/Ubuntu/Rasbian:
```bash ```bash
sudo apt-get install python-gst-1.0 \ sudo apt-get install python3-gst-1.0 \
gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 \ gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 \
gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \ gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \
gstreamer1.0-tools gstreamer1.0-tools

View File

@ -32,7 +32,7 @@ Configuration variables:
- **host** (*Required*): The IP of the Samsung Smart TV, eg. `192.168.0.10`. - **host** (*Required*): The IP of the Samsung Smart TV, eg. `192.168.0.10`.
- **port** (*Optional*): The port of the Samsung Smart TV. Defaults to 55000. If set to 8001, the new websocket connection will be used (required for 2016+ TVs). - **port** (*Optional*): The port of the Samsung Smart TV. Defaults to 55000. If set to 8001, the new websocket connection will be used (required for 2016+ TVs).
- **name** (*Optional*): The name you would like to give to the Samsung Smart TV. - **name** (*Optional*): The name you would like to give to the Samsung Smart TV.
- **timeout** (*Optional*): The time-out for the communication with the TV. Defaults to 0. - **timeout** (*Optional*): The time-out in seconds for the communication with the TV. Defaults to 0 (no timeout).
- **mac** (*Optional*): The MAC address of the Samsung Smart TV, eg. `00:11:22:33:44:55:66`. Required for power on support via wake on lan. - **mac** (*Optional*): The MAC address of the Samsung Smart TV, eg. `00:11:22:33:44:55:66`. Required for power on support via wake on lan.
Currently known supported models: Currently known supported models:
@ -44,11 +44,14 @@ Currently known supported models:
- ES6800 - ES6800
- F6300 - F6300
- F6500 - F6500
- EH5300
- EH5600 - EH5600
- F6400AF - F6400AF
- D6505 - D6505
- D6300SF - D6300SF
- U6000 (port must be set to 8001) - U6000 (port must be set to 8001)
- K6500AF (port must be set to 8001)
- KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed)
Currently tested but not working models: Currently tested but not working models:

View File

@ -12,7 +12,7 @@ ha_category: Other
ha_release: 0.11 ha_release: 0.11
--- ---
The `mqtt_eventstream` components connects two Home Assistant instances via MQTT. The `mqtt_eventstream` component connects two Home Assistant instances via MQTT.
To integrate MQTT Eventstream into Home Assistant, add the following section to your `configuration.yaml` file: To integrate MQTT Eventstream into Home Assistant, add the following section to your `configuration.yaml` file:
@ -28,3 +28,29 @@ Configuration variables:
- **publish_topic** (*Required*): Topic for publishing local events - **publish_topic** (*Required*): Topic for publishing local events
- **subscribe_topic** (*Required*): Topic to receive events from the remote server. - **subscribe_topic** (*Required*): Topic to receive events from the remote server.
## Multiple Instances
Events from multiple instances can be aggregated to a single master instance by subscribing to a wildcard topic from the master instance.
```yaml
# Example master instance configuration.yaml entry
mqtt_eventstream:
publish_topic: master/topic
subscribe_topic: slaves/#
```
For a multiple instance setup, each slave would publish to their own topic.
```yaml
# Example slave instance configuration.yaml entry
mqtt_eventstream:
publish_topic: slaves/upstairs
subscribe_topic: master/topic
```
```yaml
# Example slave instance configuration.yaml entry
mqtt_eventstream:
publish_topic: slaves/downstairs
subscribe_topic: master/topic
```

View File

@ -9,18 +9,13 @@ sharing: true
footer: true footer: true
logo: twilio.png logo: twilio.png
ha_category: Notifications ha_category: Notifications
ha_release: "0.37" ha_release: 0.37
--- ---
The `twilio` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). The `twilio_call` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com).
Passed message will be read by Text-To-Speech service. Passed message will be read by Text-To-Speech service.
This component is just an adaptation from the Twilio SMS notification platform and won't exist without it. The requirement is that you have setup [Twilio](/components/twilio/).
Free trial account is available at [Twilio](https://twilio.com) website providing free calls to verified phone numbers.
Calls are limited to 10 minutes and will play a short trial message before your message runs.
Upgraded accounts have no limitation.
To use this notification platform in your installation, add the following to your `configuration.yaml` file: To use this notification platform in your installation, add the following to your `configuration.yaml` file:
@ -29,15 +24,11 @@ To use this notification platform in your installation, add the following to you
notify: notify:
- name: NOTIFIER_NAME - name: NOTIFIER_NAME
platform: twilio_call platform: twilio_call
account_sid: ACCOUNT_SID_FROM_TWILIO
auth_token: AUTH_TOKEN_FROM_TWILIO
from_number: E164_PHONE_NUMBER from_number: E164_PHONE_NUMBER
``` ```
Configuration variables: Configuration variables:
- **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`.
- **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`.
- **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. - **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information.
- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`.

View File

@ -14,6 +14,8 @@ ha_release: "0.20"
The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com).
The requirement is that you have setup [Twilio](/components/twilio/).
To use this notification platform in your installation, add the following to your `configuration.yaml` file: To use this notification platform in your installation, add the following to your `configuration.yaml` file:
```yaml ```yaml
@ -21,15 +23,11 @@ To use this notification platform in your installation, add the following to you
notify: notify:
- name: NOTIFIER_NAME - name: NOTIFIER_NAME
platform: twilio_sms platform: twilio_sms
account_sid: ACCOUNT_SID_FROM_TWILIO
auth_token: AUTH_TOKEN_FROM_TWILIO
from_number: E164_PHONE_NUMBER from_number: E164_PHONE_NUMBER
``` ```
Configuration variables: Configuration variables:
- **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`.
- **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`.
- **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. - **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information.
- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`.

View File

@ -33,6 +33,7 @@ Configuration variables:
- **host** (*Required*): The IP of the LG WebOS Smart TV, e.g. 192.168.0.10 - **host** (*Required*): The IP of the LG WebOS Smart TV, e.g. 192.168.0.10
- **name** (*Required*): The name you would like to give to the LG WebOS Smart TV. - **name** (*Required*): The name you would like to give to the LG WebOS Smart TV.
- **filename** (*Optional*): The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. It defaults to `webostv.conf`. - **filename** (*Optional*): The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. It defaults to `webostv.conf`.
- **icon** (*Optional*): The path to an image file to use as the icon in notifications. If provided, this image will override the Home Assistant logo.
A possible automation could be: A possible automation could be:
@ -49,3 +50,20 @@ automation:
data: data:
message: "You should open a window! (Livingroom Co2: {{ states.sensor.netatmo_livingroom_co2.state }}ppm)" message: "You should open a window! (Livingroom Co2: {{ states.sensor.netatmo_livingroom_co2.state }}ppm)"
``` ```
The icon can be overridden for individual notifications by providing a path to an alternative icon image to use:
```yaml
automation:
- alias: Front door motion
trigger:
platform: state
entity_id: binary_sensor.front_door_motion
state: 'on'
action:
service: notify.livingroom_tv
data:
message: "Movement detected: Front Door"
data:
icon: "/home/homeassistant/images/doorbell.png"
```

View File

@ -12,7 +12,7 @@ ha_category: Hub
ha_release: 0.38 ha_release: 0.38
--- ---
The `rflink` component support devices that use [Rflink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo Rflink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). Rflink gateway is an Arduino firmware that allows communication with 433 Mhz devices using cheap hardware (Arduino + 433 Mhz tranceiver). The `rflink` component support devices that use [Rflink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo Rflink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). Rflink gateway is firmware for the Arduino MEGA 2560 that allows communication with 433 Mhz devices using cheap hardware (Arduino + 433 Mhz tranceiver).
The 433 Mhz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors. The 433 Mhz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors.
@ -60,7 +60,17 @@ To expose the usb/serial interface over TCP on a different host (Linux) the foll
$ socat /dev/ttyACM0,b57600 TCP-LISTEN:1234,reuseaddr $ socat /dev/ttyACM0,b57600 TCP-LISTEN:1234,reuseaddr
``` ```
Other methods of exposing the serial interface over TCP are possible (eg: ESP8266 or using Arduino Wifi shield). Basically the serial stream should be directly mapped to the TCP stream. Other methods of exposing the serial interface over TCP are possible (eg: ESP8266 or using Arduino Wifi shield). Essentially the serial stream should be directly mapped to the TCP stream.
Tested with Wifi serial bridge [esp-link V2.2.3](https://github.com/jeelabs/esp-link/releases/tag/v2.2.3) running on a NodeMCU (ESP8266 Wifi module) with ESP8266 TXD0 (pin D10) and RXD0 (pin D9) connected to Arduino MEGA 2560 RX (Pin 2) and TX (Pin 3) respectively.
<p class='note warning'>
Due to different logical levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins.
</p>
<p class='note'>
When re-flashing the Arduino MEGA, disconnect the ESP8266 to avoid programming difficulties.
</p>
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
@ -94,6 +104,9 @@ Wildcards only work at the end of the ID, not in the middle of front!
Even though a lot of devices are supported by Rflink, not all have been tested/implemented. If you have a device supported by Rflink but not by this component please consider testing and adding support yourself or [create an issue](https://github.com/home-assistant/home-assistant/issues/new) and mention `@aequitas` in the description. Even though a lot of devices are supported by Rflink, not all have been tested/implemented. If you have a device supported by Rflink but not by this component please consider testing and adding support yourself or [create an issue](https://github.com/home-assistant/home-assistant/issues/new) and mention `@aequitas` in the description.
### {% linkable_title Device Incorrectly Identified %}
If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFlink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). http://www.nemcon.nl/blog2/faq#RFFind.
### {% linkable_title Technical overview %} ### {% linkable_title Technical overview %}

View File

@ -8,7 +8,8 @@ comments: false
sharing: true sharing: true
footer: true footer: true
logo: apcupsd.png logo: apcupsd.png
ha_category: Sensor ha_release: 0.13
ha_category: System Monitor
--- ---
The `apcupsd` sensor platform allows you to monitor a UPS (battery backup) by using data from the [apcaccess](http://linux.die.net/man/8/apcaccess) command. The `apcupsd` sensor platform allows you to monitor a UPS (battery backup) by using data from the [apcaccess](http://linux.die.net/man/8/apcaccess) command.

View File

@ -17,6 +17,8 @@ The ComEd Hourly Pricing program is an optional program available to ComEd elect
There are two price feeds available: the 5-minute price and current hour average price. There are two price feeds available: the 5-minute price and current hour average price.
To use this sensor in your installation, add the following to your `configuration.yaml` file:
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
sensor: sensor:

View File

@ -27,26 +27,18 @@ sensor:
- platform: hydroquebec - platform: hydroquebec
username: MYUSERNAME username: MYUSERNAME
password: MYPASSWORD password: MYPASSWORD
contract: 123456789 contract: '123456789'
monitored_variables: monitored_variables:
- period_total_bill - period_total_bill
- period_length - period_length
- period_total_days - period_total_days
- period_mean_daily_bill
- period_mean_daily_consumption
- period_total_consumption
- period_lower_price_consumption
- period_higher_price_consumption
- yesterday_total_consumption
- yesterday_lower_price_consumption
- yesterday_higher_price_consumption
``` ```
Configuration variables: Configuration variables:
- **username** (*Required*): Your Hydro-Québec Username - **username** (*Required*): Username used to log into the Hydro-Québec site.
- **password** (*Required*): Your Hydro-Québec Password - **password** (*Required*): Password used to log into the Hydro-Québec site.
- **contract** (*Required*): Your Hydro-Québec Contract - **contract** (required since HA 4.0) Your contract number with Hydro-Québec
- **monitored_variables** array (*Required*): Variables to monitor. - **monitored_variables** array (*Required*): Variables to monitor.
- **period_total_bill** : Current period bill - **period_total_bill** : Current period bill
- **period_length**: Current period length - **period_length**: Current period length

View File

@ -0,0 +1,59 @@
---
layout: page
title: "KWB Easyfire Sensor"
description: "Instructions how to integrate the KWB Easyfire sensor into Home Assistant."
date: 2017-03-06 14:10
sidebar: true
comments: false
sharing: true
footer: true
logo: kwb.png
ha_category: Sensor
ha_iot_class: "Local Polling"
ha_release: 0.40
---
The `kwb` component integrates the sensors of KWB Easyfire pellet central heating units with the Comfort3 controller (http://www.kwbheizung.de/de/produkte/kwb-comfort-3.html) into Home Assistant.
Direct connection via serial (RS485) or via telnet terminal server is supported. The serial cable has to be attached to the control unit port 25 (which is normally used for detached control terminals).
Since this serial protocol is proprietary and closed, only most temperature sensors and a few control relays are supported, the rest is still WIP (see https://www.mikrocontroller.net/topic/274137).
Direct connection via serial port:
```yaml
# Example configuration.yaml entry
- platform: kwb
name: kwb
device: "/dev/ttyUSB0"
type: serial
raw: False
```
Telnet terminal server with a serial-ethernet converter:
```yaml
# Example configuration.yaml entry
- platform: kwb
name: kwb
host: <ip>
port: 23
type: tcp
raw: False
```
Configuration variables:
*Required if used with a serial-ethernet converter*
- **host**: The IP-address of the serial server
- **port**: The TCP-port of the serial server
- **type**: tcp
*Required if used directly with a serial port*
- **device**: The serial device of the machine
- **type**: serial
*Optional for both cases*
- **name**: The name of the device used in the frontend
- **raw**: Should the raw serial output be shown as a sensor

View File

@ -8,7 +8,7 @@ comments: false
sharing: true sharing: true
footer: true footer: true
logo: nut.png logo: nut.png
ha_category: Sensor ha_category: System Monitor
ha_version: 0.34 ha_version: 0.34
--- ---

View File

@ -8,7 +8,7 @@ comments: false
sharing: true sharing: true
footer: true footer: true
logo: onewire.png logo: onewire.png
ha_category: Sensor ha_category: DIY
ha_release: 0.12 ha_release: 0.12
--- ---

View File

@ -7,7 +7,7 @@ sidebar: true
comments: false comments: false
sharing: true sharing: true
footer: true footer: true
ha_category: ha_category: Energy
logo: sma.png logo: sma.png
ha_iot_class: "Local Polling" ha_iot_class: "Local Polling"
ha_release: 0.36 ha_release: 0.36

View File

@ -14,7 +14,7 @@ ha_iot_class: depends
--- ---
This `synologydms` sensor allows getting various statistics from your [Synology NAS](https://www.synology.com). This `synologydsm` sensor allows getting various statistics from your [Synology NAS](https://www.synology.com).
To use the `synologydsm` sensor in your installation, add the following to your `configuration.yaml` file: To use the `synologydsm` sensor in your installation, add the following to your `configuration.yaml` file:

View File

@ -22,7 +22,7 @@ sun:
Configuration variables: Configuration variables:
- **elevation** (*Optional*): The (physical) elevation of your location, in metres above sea level. If omitted will be retrieved from Google Maps. - **elevation** (*Optional*): The (physical) elevation of your location, in metres above sea level. Defaults to the `elevation` in `configuration.yaml`, which is retrieved from Google Maps if not set.
<p class='img'> <p class='img'>
<img src='/images/screenshots/more-info-dialog-sun.png' /> <img src='/images/screenshots/more-info-dialog-sun.png' />

View File

@ -15,7 +15,7 @@ ha_release: 0.37
The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output. The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output.
Polly is a paid service via Amazon Web Services. There is a [free tier](https://aws.amazon.com/polly/pricing/) for the first 12 months and then a charge per million characters afterwards. Polly is a paid service via Amazon Web Services. There is a [free tier](https://aws.amazon.com/polly/pricing/) for the first 12 months and then a charge per million characters afterwards.
To enable text-to-speech with Amazon Polly, add the following lines to your `configuration.yaml`: To get started, add the following lines to your `configuration.yaml` (example for Amazon Polly):
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
@ -29,9 +29,54 @@ tts:
Configuration variables: Configuration variables:
- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. | Parameter | Value | Description |
- **aws_secret_access_key** (*Required if aws_access_key_id is provided*): Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. |---------------------|----------|-------------|
- **profile_name** (*Optional*): A credentials profile name. For more information, please see the [boto3 documentation section about credentials](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file). | `aws_access_key_id` | Required | Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name` |
- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. | `aws_secret_access_key` | Required | Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. |
- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. | `profile_name` | Optional | A credentials profile name. For more information, please see the [boto3 |
| `region_name` | Optional | The region identifier to connect to. The default is `us-east-1`. |
| `name` | Optional | Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`.
|
| `text_type` | text/ssml | text or ssml: Specify wherever to use text (default) or ssml markup |
## Usage
Say to all `media_player` device entities:
```yaml
- service: tts.amazon_polly_say
data_template:
message: '<speak>Hello from Amazon Polly</speak>'
```
or
```yaml
- service: tts.amazon_polly_say
data_template:
message: >
<speak>
Hello from Amazon Polly
</speak>
```
Say to the `media_player.living_room` device entity:
```yaml
- service: tts.amazon_polly_say
data_template:
entity_id: media_player.living_room
message: >
<speak>
Hello from Amazon Polly
</speak>
```
Say with break:
```yaml
- service: tts.amazon_polly_say
data_template:
message: >
<speak>
Hello from
<break time=".9s" />
Amazon Polly
</speak>
```

View File

@ -0,0 +1,35 @@
---
layout: page
title: "Twilio"
description: "Instructions how to add Twilio notifications to Home Assistant."
date: 2016-05-14 14:14
sidebar: true
comments: false
sharing: true
footer: true
logo: twilio.png
ha_category: Hub
ha_release: "0.40"
---
The `twilio` component enables the sending of notifications via SMS and the creation of calls with [Twilio](https://twilio.com).
Free trial account is available at [Twilio](https://twilio.com) website providing free calls to verified phone numbers.
Calls are limited to 10 minutes and will play a short trial message before your message runs. Upgraded accounts have no limitation.
To use this notification component in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
twilio:
account_sid: ACCOUNT_SID_FROM_TWILIO
auth_token: AUTH_TOKEN_FROM_TWILIO
```
Configuration variables:
- **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`.
- **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`.
### {% linkable_title Usage %}
After configuring the base Twilio component, add and configure either or both of the [twilio SMS](https://home-assistant.io/components/notify.twilio_sms/) and [twilio Phone](https://home-assistant.io/components/notify.twilio_call) components to utilize the notification functionality.

View File

@ -16,21 +16,18 @@ Turn on a light in the living room when it starts raining, someone is home, and
```yaml ```yaml
automation: automation:
alias: 'Rainy Day' - alias: 'Rainy Day'
trigger: trigger:
- platform: state - platform: state
entity_id: sensor.precip_intensity entity_id: sensor.precip_intensity
state: 'rain' state: 'rain'
condition:
- platform: state - platform: state
entity_id: group.all_devices entity_id: group.all_devices
state: 'home' state: 'home'
- platform: time - platform: time
after: '14:00' after: '14:00'
before: '23:00' before: '23:00'
condition: use_trigger_values
action: action:
service: light.turn_on service: light.turn_on
entity_id: light.couch_lamp entity_id: light.couch_lamp
@ -39,17 +36,15 @@ automation:
And then of course turn off the lamp when it stops raining but only if it's within an hour before sunset. And then of course turn off the lamp when it stops raining but only if it's within an hour before sunset.
```yaml ```yaml
automation 2: - alias: 'Rain is over'
alias: 'Rain is over'
trigger: trigger:
- platform: state - platform: state
entity_id: sensor.precip_intensity entity_id: sensor.precip_intensity
state: 'None' state: 'None'
- platform: sun condition:
event: 'sunset' - condition: sun
after: 'sunset'
offset: '-01:00:00' offset: '-01:00:00'
condition: use_trigger_values
action: action:
service: light.turn_off service: light.turn_off
entity_id: light.couch_lamp entity_id: light.couch_lamp

View File

@ -22,7 +22,7 @@ sensor:
unit_of_measurement: '%' unit_of_measurement: '%'
value_template: >- value_template: >-
{% raw %}{%- if states.device_tracker.iphone.attributes.battery %} {% raw %}{%- if states.device_tracker.iphone.attributes.battery %}
{{ states.device_tracker.iphone.attributes.battery }} {{ states.device_tracker.iphone.attributes.battery|round }}
{% else %} {% else %}
{{ states.sensor.battery_iphone.state }} {{ states.sensor.battery_iphone.state }}
{%- endif %}{% endraw %} {%- endif %}{% endraw %}

View File

@ -35,7 +35,7 @@ automation 2:
service_template: >{% raw %} service_template: >{% raw %}
notify.{{ trigger.topic.split('/')[-1] }}{% endraw %} notify.{{ trigger.topic.split('/')[-1] }}{% endraw %}
data_template: data_template:
message: {% raw %}{{ trigger.payload }}{% endraw %} message: {% raw %}'{{ trigger.payload }}'{% endraw %}
``` ```
## {% linkable_title Important Template Rules %} ## {% linkable_title Important Template Rules %}

View File

@ -39,7 +39,7 @@ ExecStart=/usr/bin/hass
WantedBy=multi-user.target WantedBy=multi-user.target
``` ```
If you've setup Home Assistant in `virtualenv` following our [python installation guide](https://home-assistant.io/getting-started/installation-virtualenv/) or [manual installation guide for raspberry pi](https://home-assistant.io/getting-started/installation-raspberry-pi/), the following template should work for you. If Home Assistant install is not located at `/srv/homeassistant`, please modify the `Enviroment=` and `ExecStart=` lines appropriately. If you've setup Home Assistant in `virtualenv` following our [python installation guide](https://home-assistant.io/getting-started/installation-virtualenv/) or [manual installation guide for raspberry pi](https://home-assistant.io/getting-started/installation-raspberry-pi/), the following template should work for you. If Home Assistant install is not located at `/srv/homeassistant`, please modify the `ExecStart=` line appropriately.
``` ```
[Unit] [Unit]
@ -48,10 +48,7 @@ After=network.target
[Service] [Service]
Type=simple Type=simple
User=homeassistant User=%i
# Make sure the virtualenv Python binary is used
Environment=VIRTUAL_ENV="/srv/homeassistant"
Environment=PATH="$VIRTUAL_ENV/bin:$PATH"
ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant" ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
[Install] [Install]

View File

@ -12,4 +12,4 @@ redirect_from: /ecosystem/ios/notifications/
The `ios` notify platform enables sending push notifications to the Home Assistant iOS app. The `ios` notify platform enables sending push notifications to the Home Assistant iOS app.
The 'ios' component will automatically load the notify serivce. No extra configuration is needed or supported. The 'ios' component will automatically load the notify service. No extra configuration is needed or supported.

View File

@ -53,9 +53,19 @@ The steps would be:
* Click on "Advanced Settings" * Click on "Advanced Settings"
* Set "Enable auto-restart" if you like * Set "Enable auto-restart" if you like
* Within "Volume" click on "Add Folder" and choose either an existing folder or add a new folder. The "mount point" has to be "/config", so that Home Assistant will use it for the configs and logs. * Within "Volume" click on "Add Folder" and choose either an existing folder or add a new folder. The "mount point" has to be "/config", so that Home Assistant will use it for the configs and logs.
* Within "Network" select "Use same network as Docker Host"
* Confirm the "Advanced Settings" * Confirm the "Advanced Settings"
* Click on "Next" and then "Apply" * Click on "Next" and then "Apply"
* Your Home Assistant within Docker should now run :) * Your Home Assistant within Docker should now run
Remark: to update your Home Assistant on your Docker within Synology NAS, you just have to do the following:
* Go to the Docker-app and move to "Image"-section
* Download the "homeassistant/home-assistant" image - don't care, that it is already there
* wait until the system-message/-notification comes up, that the download is finished (there is no progress bar)
* Move to "Container"-section
* Stop your container if it's running
* Right-click on it and select "Action"->"Clear". You won't loose any data, as all files are stored in your config-directory
* Start the container again - it will then boot up with the new Home Assistant image
### {% linkable_title Restart %} ### {% linkable_title Restart %}

View File

@ -11,7 +11,7 @@ logo: mqtt.png
redirect_from: /components/mqtt/#discovery redirect_from: /components/mqtt/#discovery
--- ---
The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the [HTTP binary sensor](/components/binary_sensor.http/) and the [HTTP sensor](/components/sensor.http/). Only support for binary sensor is available at the moment. The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the [HTTP binary sensor](/components/binary_sensor.http/) and the [HTTP sensor](/components/sensor.http/). Currently, binary sensors, lights and sensors are supported. A discovery binary sensor or sensor will load the `mqtt` platform. For discovered light components the JSON payload can contain a `platform` attribute with one of `mqtt`, `mqtt_json` or `mqtt_template` defined. If no `platform` attribute is defined then `mqtt` is used.
To enable MQTT discovery, add the following to your `configuration.yaml` file: To enable MQTT discovery, add the following to your `configuration.yaml` file:

View File

@ -82,7 +82,7 @@ Configuration variables:
- **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. - **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems.
- **device_config** (*Optional*): This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format: - **device_config** (*Optional*): This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format:
- **polling_intensity** (*Optional*): Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled. - **polling_intensity** (*Optional*): Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled.
- **ignored** (*Optional*): Ignore this entitiy completely. It won't be shown in the Web Interface and no events are generated for it. - **ignored** (*Optional*): Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it.
- **refresh_value** (*Optional*): Enable refreshing of the node value. Only the light component uses this. Defaults to False. - **refresh_value** (*Optional*): Enable refreshing of the node value. Only the light component uses this. Defaults to False.
- **delay** (*Optional*): Specify the delay for refreshing of node value. Only the light component uses this. Defaults to 2 seconds. - **delay** (*Optional*): Specify the delay for refreshing of node value. Only the light component uses this. Defaults to 2 seconds.
- **debug** (*Optional*): Print verbose z-wave info to log. Defaults to False. - **debug** (*Optional*): Print verbose z-wave info to log. Defaults to False.

View File

@ -179,6 +179,9 @@
<li>{% active_link /docs/ecosystem/ios/integration/ Integration with other apps %}</li> <li>{% active_link /docs/ecosystem/ios/integration/ Integration with other apps %}</li>
</ul> </ul>
</li> </li>
<li>{% active_link /docs/ecosystem/nginx/ NGINX %}</li>
<li>{% active_link /docs/ecosystem/scenegen/ scenegen %}</li>
<li>{% active_link /docs/ecosystem/synology/ Synology %}</li>
</ul> </ul>
</ul> </ul>
</div> </div>

View File

@ -0,0 +1,10 @@
---
# Jekyll layout that compresses HTML
# v3.0.2
# http://jch.penibelst.de/
# © 20142015 Anatol Broder
# MIT License
---
{% capture _LINE_FEED %}
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}

View File

@ -1,3 +1,7 @@
---
layout: compress
---
{% capture root_url %}{{ site.root | strip_slash }}{% endcapture %}{% include site/head.html %} {% capture root_url %}{{ site.root | strip_slash }}{% endcapture %}{% include site/head.html %}
<body {% if page.body_id %} id="{{ page.body_id }}"{% endif %}> <body {% if page.body_id %} id="{{ page.body_id }}"{% endif %}>

View File

@ -297,7 +297,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
[aurora]: https://home-assistant.io/components/binary_sensor.aurora/ [aurora]: https://home-assistant.io/components/binary_sensor.aurora/
[netmonitor]: https://home-assistant.io/components/sensor.fritzbox_netmonitor/ [netmonitor]: https://home-assistant.io/components/sensor.fritzbox_netmonitor/
[itach]: https://home-assistant.io/components/remote.itach/ [itach]: https://home-assistant.io/components/remote.itach/
[sunflowers]: https://home-assistant.io/components/light.yeelight-sunflower [sunflowers]: https://home-assistant.io/components/light.yeelightsunflower/
[kodi]: https://home-assistant.io/components/media_player.kodi/ [kodi]: https://home-assistant.io/components/media_player.kodi/
[myq]: https://home-assistant.io/components/cover.myq/ [myq]: https://home-assistant.io/components/cover.myq/
[oemt]: https://home-assistant.io/components/climate.oem/ [oemt]: https://home-assistant.io/components/climate.oem/

View File

@ -17,7 +17,7 @@ It's time for version 0.40 already! For this version, the main focus was on perf
Some people have interpreted our recent added warnings as if 0.39 introduced the issues that caused the warning. This is not the case, the platforms and components have been misbehaving for a while but now we are adding warnings so we are able to track down the culprits. Some people have interpreted our recent added warnings as if 0.39 introduced the issues that caused the warning. This is not the case, the platforms and components have been misbehaving for a while but now we are adding warnings so we are able to track down the culprits.
Before we continue talking about all the improvements in this release I want to take a moment to thank a few people from the Home Assistant community that are fundamental to the success of Home Assistant. Big thanks to [@dale3h], [@CCOSTAN], [@skalavala] [@rrubin0] [@brahmafear] [@bassclarinetl2] and [@torn8o]! These are all people that hang out in our [main chat channel] and help new users get started and help existing users when running into trouble. Home Assistant would not be there without all the effort you put in! 🙇 Before we continue talking about all the improvements in this release I want to take a moment to thank a few people from the Home Assistant community that are fundamental to the success of Home Assistant. Big thanks to [@dale3h], [@CCOSTAN], [@skalavala], [@rrubin0], [@brahmafear], [@bassclarinetl2], and [@torn8o]! These are all people that hang out in our [main chat channel] and help new users get started and help existing users when running into trouble. Home Assistant would not be there without all the effort you put in! 🙇
And that our community kicks ass is also shown in the numbers. We have already raised together over $700 for the [EFF] via the sale of [our t-shirts][hass-shirt]! All of you rock! Another number worth mentioning is that this release brings us passed 600 integrations for Home Assistant. All of you rock, again! And that our community kicks ass is also shown in the numbers. We have already raised together over $700 for the [EFF] via the sale of [our t-shirts][hass-shirt]! All of you rock! Another number worth mentioning is that this release brings us passed 600 integrations for Home Assistant. All of you rock, again!
@ -69,6 +69,25 @@ twilio:
### Reporting Issues ### Reporting Issues
Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template.
### {% linkable_title Release 0.40.1 - March 16 %}
- Fix wake_on_lan ping with None as host ([@iamtpage] - [#6532])
- Don't start the push updater if the Apple TV is 'off' ([@jnewland] - [#6552])
- Fix for the case of zwave value used in several devices. ([@andrey-git] - [#6577])
- Fix hydroquebec ([@titilambert] - [#6574])
- Update pyecobee version to 0.0.7 ([@dale3h] - [#6593])
- Update SMA solar sensor to work with the new add_devices callback ([@kellerza] - [#6602])
- since knx_2_float can't handle 0, bypass converting 0 value from knx to float ([@goofz] - [#6626])
- Fix Osram Lightify colors ([@deisi] - [#6598])
- Bugfix RFLINK remove group ([@pvizeli] - [#6580])
### {% linkable_title Release 0.40.2 - March 22 %}
Hot fix release to fix dependency issues. More detailed information about the issue in [this blog post](/blog/2017/03/22/broken-dependencies/).
- Prevent dependencies that are installed on demand from installing different versions of core dependencies ([@balloob] - [#6738])
- Upgrade PyChromecast to silent some benign errors ([@balloob] - [#6702])
<!--more--> <!--more-->
## All changes ## All changes
@ -295,3 +314,18 @@ Experiencing issues introduced by this release? Please report them in our [issue
[issue]: https://github.com/home-assistant/home-assistant/issues [issue]: https://github.com/home-assistant/home-assistant/issues
[EFF]: https://www.eff.org [EFF]: https://www.eff.org
[hass-shirt]: https://home-assistant.io/blog/2017/02/22/home-assistant-tshirts-have-arrived/ [hass-shirt]: https://home-assistant.io/blog/2017/02/22/home-assistant-tshirts-have-arrived/
[#6532]: https://github.com/home-assistant/home-assistant/pull/6532
[#6552]: https://github.com/home-assistant/home-assistant/pull/6552
[#6574]: https://github.com/home-assistant/home-assistant/pull/6574
[#6577]: https://github.com/home-assistant/home-assistant/pull/6577
[#6580]: https://github.com/home-assistant/home-assistant/pull/6580
[#6593]: https://github.com/home-assistant/home-assistant/pull/6593
[#6598]: https://github.com/home-assistant/home-assistant/pull/6598
[#6602]: https://github.com/home-assistant/home-assistant/pull/6602
[#6626]: https://github.com/home-assistant/home-assistant/pull/6626
[@deisi]: https://github.com/deisi
[@goofz]: https://github.com/goofz
[@iamtpage]: https://github.com/iamtpage
[@jnewland]: https://github.com/jnewland
[#6702]: https://github.com/home-assistant/home-assistant/pull/6702
[#6738]: https://github.com/home-assistant/home-assistant/pull/6738

View File

@ -0,0 +1,26 @@
---
layout: post
title: "0.40.2 and broken dependencies"
description: "Due to a bug in our dependency installation, some older versions can get into a broken state."
date: 2017-03-22 08:04:05 +0000
date_formatted: "March 22, 2017"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
categories: Release-Notes
---
TL; DR: We have just released version 0.40.2 that includes a fix related to the installation of dependencies.
Some users in the last few days have been reporting that their Home Assistant installation fails to start with an error in the http component:
```
ImportError: No module named 'aiohttp.file_sender'
```
The problem is that Home Assistant did not handle the case where a dependency would want to install a core dependency of Home Assistant that is newer than what Home Assistant works with. For now, we have identified the following two components that can cause this issue:
- AppleTV (0.38+)
- Android IP Webcam (0.40+)
This issue has been resolved by 0.40.2. If you are on an impacted version and cannot upgrade to the latest version just yet, a temporary workaround will be to remove the `<config dir>/deps` directory and stop using the above mentioned integrations. In the case of AppleTV, you will also have to disable the discovery component to prevent it from being auto-detected.

View File

@ -0,0 +1,21 @@
---
layout: post
title: "OpenSourceCraft interviews our founder Paulus Schoutsen"
description: "Gregg Pollack from OpenSourceCraft sat down with our founder Paulus Schoutsen to talk about community building."
date: 2017-03-23 08:04:05 +0000
date_formatted: "March 23, 2017"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
categories: Community
og_image: /images/blog/2017-03-opensourcecraft/social.jpg
---
Last month Gregg Pollack from [OpenSourceCraft] visited me in San Diego to talk about Home Assistant. We talked about the community and how all these awesome people make Home Assistant possible. The main interview is embedded below but make sure to check out the [full article including extra video material][article].
<div class="videoWrapper">
<iframe width="560" height="315" src="https://www.youtube.com/embed/osq_2-Qlan0" frameborder="0" allowfullscreen=""></iframe>
</div>
[OpenSourceCraft]: http://codepop.com/open-sourcecraft
[article]: http://codepop.com/open-sourcecraft/episodes/paulus-schoutsen/

View File

@ -42,34 +42,20 @@ Support for these components is provided by the Home Assistant community.
{% for category in categories %} {% for category in categories %}
{% if category and category != 'Other' %} {% if category and category != 'Other' %}
<a href='#{{ category | slugify }}' class="btn"> <a href='#{{ category | slugify }}' class="btn">{{ category }} ({{ components | where: 'ha_category', category | size }})</a>
{{ category }}
({{ components | where: 'ha_category', category | size }})
</a>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
<a href='#other' class="btn">Other</a> <a href='#other' class="btn">Other</a>
</div> </div>
</div> </div>
<div class="grid__item five-sixths lap-one-whole palm-one-whole hass-option-cards" id="componentContainer"> <div class="grid__item five-sixths lap-one-whole palm-one-whole">
{% for component in components %} <div class="component-search">
{% if component.ha_category %} <form onsubmit="event.preventDefault(); return false">
{% assign sliced_version = component.ha_release | split: '.' %} <input type="text" name="search" id="search" class="search" placeholder="Search components...">
{% assign minor_version = sliced_version[1]|plus: 0 %} </form>
<a href='{{ component.url }}'
class='option-card {{ component.ha_category | slugify }}{% if minor_version == site.current_minor_version %} added_in_current_version{% elsif minor_version == added_one_ago_minor_version %} added_one_version_ago{% elsif minor_version == added_two_ago_minor_version %} added_two_versions_ago{% endif %}{% if component.featured %} featured{% endif %}'
{% unless component.featured %}style='display: none'{% endunless %}>
<div class='img-container'>
{% if component.logo %}
<img src='/images/supported_brands/{{ component.logo }}'>
{% endif %}
</div> </div>
<div class='title'>{{ component.title }}</div> <div class="hass-option-cards" id="componentContainer"> </div>
<div class='category'>{{ component.ha_category }}</div>
</a>
{% endif %}
{% endfor %}
</div> </div>
</div> </div>
@ -82,23 +68,145 @@ Support for these components is provided by the Home Assistant community.
{% endfor %} {% endfor %}
{% endcomment %} {% endcomment %}
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> <script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.js"></script>
<script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js"></script>
// undo initial hiding of non-featured cards
if (location.hash !== '') {
if (location.hash === '#all') {
jQuery('#componentContainer a').show();
} else {
jQuery('#componentContainer .featured').hide();
jQuery('#componentContainer .' + location.hash.substr(1)).show();
}
}
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/2.2.2/isotope.pkgd.min.js"></script>
<script>
$(window).load(function(){
var $container = $('#componentContainer');
{% raw %}
<script id="component-template" type="text/x-custom-template">
{{#components}}
<a href="{{url}}" class="option-card">
<div class="img-container">{{{image}}}</div>
<div class='title'>{{title}}</div>
<div class='category'>{{cat}}</div>
</a>
{{/components}}
{{^components}}
<p class='note'>Nothing found!</p>
{{/components}}
</script>
{% endraw %}
<script type="text/javascript">
var current_minor_version = {{site.current_minor_version}};
var added_one_ago_minor_version = {{added_one_ago_minor_version}};
var added_two_ago_minor_version = {{added_two_ago_minor_version}};
// This object contains all components we have
var allComponents = [
{% for component in components %}
{% if component.ha_category %}
{% assign sliced_version = component.ha_release | split: '.' %}
{% assign minor_version = sliced_version[1]|plus: 0 %}
{url:"{{ component.url }}", title:"{{component.title}}", cat:"{{component.ha_category | slugify}}", featured: {% if component.featured %}true{% else %}false{% endif %}, v: {{minor_version}}, logo: "{{component.logo}}"},
{% endif %}
{% endfor %}
false
];
allComponents.pop(); // remove placeholder element at the end
</script>
<script type="text/javascript">
(function(){
var template = $('#component-template').html();
Mustache.parse(template); // make future calls to render faster
function init() {
// do the lowerCase transformation once
for (i=0; i < (allComponents.length); i++) {
allComponents[i].titleLC = allComponents[i].title.toLowerCase();
allComponents[i].catLC = allComponents[i].cat.toLowerCase();
}
// sort the components alphabetically
allComponents.sort(function(a, b){
return a.titleLC.localeCompare(b.titleLC);
});
if (location.hash !== '' && location.hash.indexOf('#search/') === 0) {
// set default value in search from URL
jQuery('.component-search input').val(decodeURIComponent(location.hash).substring(8));
}
}
init();
/**
* filter all components, based on the location's hash and render them into the component box
*/
function applyFilter() {
var rendered, i, filter, search;
var hash = location.hash || '';
var data = {
components: [],
image: function () {
if(this.logo === '') {
return '';
} else {
return '<img src="/images/supported_brands/' + this.logo + '">';
}
}
};
// fade-out css effect on the old elements. This is actually not visible on fast browsers
$('#componentContainer').addClass('remove-items');
if (hash.indexOf('#search/') === -1) {
// reset search box when not searching
jQuery('.component-search input').val(null);
}
if (hash === '#all') {
// shortcut: no need to filter
data.components = allComponents;
} else {
if (hash.indexOf('#search/') === 0) {
// search through title and category
search = decodeURIComponent(hash).substring(8).toLowerCase();
filter = function(comp) {
return (comp.titleLC.indexOf(search) !== -1) ||
(comp.catLC.indexOf(search) !== -1);
};
} else if(hash === '#featured' || hash === '') {
// only show those with featured = true
filter = function(comp) {
return comp.featured;
};
} else if(hash === '#added_in_current_version' || hash === '#added_one_version_ago' || hash === '#added_two_versions_ago') {
// compare against a version
search = current_minor_version;
if (hash === '#added_one_version_ago') {
search = added_one_ago_minor_version;
} else if (hash === '#added_two_versions_ago') {
search = added_two_ago_minor_version;
}
filter = function(comp) {
return comp.v === search;
};
} else {
// regular filter categories
search = hash.substring(1);
filter = function(comp) {
return comp.catLC === search;
};
}
// filter all components using the filter function
for (i=0; i < (allComponents.length); i++) {
if (filter(allComponents[i])) {
data.components.push(allComponents[i]);
}
}
}
rendered = Mustache.render(template, data);
// remove previous elements and css classes, add the new stuff and then trigger the fade-in css animation
$('#componentContainer').html('').removeClass('show-items remove-items').html(rendered).addClass('show-items');
}
/**
* update the browser location hash. This enables users to use the browser-history
*/
function updateHash(newHash) { function updateHash(newHash) {
if ('replaceState' in history) { if ('replaceState' in history) {
history.replaceState('', '', newHash); history.replaceState('', '', newHash);
@ -107,35 +215,7 @@ $(window).load(function(){
} }
} }
function applyFilter() { // update view by filter selection
var hash = location.hash;
var filter;
if (hash == '') {
filter = '.featured'
hash = '#featured'
} else if (hash == '#all') {
filter = '*';
} else {
filter = '.' + hash.substr(1);
}
$('.filter-button-group a.current').removeClass('current');
$('.filter-button-group a[href='+hash+']').addClass('current');
$container.isotope({
filter: filter,
animationOptions: {
duration: 750,
easing: 'linear',
queue: false
},
masonry: {
columnWidth: 210
}
});
}
jQuery('.filter-button-group a').click(function() { jQuery('.filter-button-group a').click(function() {
updateHash(this.getAttribute('href')); updateHash(this.getAttribute('href'));
applyFilter(); applyFilter();
@ -143,8 +223,69 @@ $(window).load(function(){
return false; return false;
}); });
window.addEventListener('hashchange', applyFilter); /**
* Simple debounce implementation, based on http://davidwalsh.name/javascript-debounce-function
*/
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) {
func.apply(context, args);
}
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) {
func.apply(context, args);
}
};
};
// update view by search text
$('.component-search input').keyup(debounce(function() {
var text = $(this).val();
// sanitize input
text = text.replace(/[(\?|\&\{\}\(\))]/gi, '');
updateHash('#search/' + text);
applyFilter(); applyFilter();
}); }, 500));
/**
* Simple debounce implementation, based on http://davidwalsh.name/javascript-debounce-function
*/
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) {
func.apply(context, args);
}
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) {
func.apply(context, args);
}
};
};
// update view by search text
$('.component-search input').keyup(debounce(function() {
var text = $(this).val();
// sanitize input
text = text.replace(/[(\?|\&\{\}\(\))]/gi, '');
updateHash('#search/' + text);
applyFilter();
}, 500));
window.addEventListener('hashchange', applyFilter);
applyFilter();
})();
</script> </script>

View File

@ -17,7 +17,7 @@ A component will be loaded on start if a section (ie. `light:`) for it exists in
Once loaded, a component will only be setup if all dependencies can be loaded and are able to setup. Keep an eye on the logs to see if your component could be loaded and initialized. Once loaded, a component will only be setup if all dependencies can be loaded and are able to setup. Keep an eye on the logs to see if your component could be loaded and initialized.
<p class='note warning'> <p class='note warning'>
You can override a built-in component by having a component with the same name in your <code>config/custom_components</code> folder. If the build-in component is inside a subfolder, take care to place your customization in a folder with the same name in <code>config/custom_components/*folder*</code>. Note that overriding build-in components is not recommended and will probably break things! You can override a built-in component by having a component with the same name in your <code>config/custom_components</code> folder. If the built-in component is inside a subfolder, take care to place your customization in a folder with the same name in <code>config/custom_components/*folder*</code>. Note that overriding built-in components is not recommended and will probably break things!
</p> </p>
<p class='note'> <p class='note'>

View File

@ -11,7 +11,7 @@ ha_release: 0.38
--- ---
If you would like to use your own [State card](/developers/frontend_add_card/) without merging your code into [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer/) you can create your own implementation. If you would like to use your own [State card](/developers/frontend_add_card/) without merging your code into [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer/) you can create your own implementation.
- Put the element source file and its dependencies in `www/custom_ui/` directory under you homeassistant config. - Put the element source file and its dependencies in `www/custom_ui/` directory under your homeassistant config directory.
For example if creating a state card for the `light` domain named `my_custom_light_card` put `state-card-my_custom_light_card.html` in `www/custom_ui/`. For example if creating a state card for the `light` domain named `my_custom_light_card` put `state-card-my_custom_light_card.html` in `www/custom_ui/`.

View File

@ -27,9 +27,9 @@ Have you found an issue in your Home Assistant installation? Please report it. R
- [Issue tracker home-assistant.io](https://github.com/home-assistant/home-assistant.io/issues) (Website and documentation) - [Issue tracker home-assistant.io](https://github.com/home-assistant/home-assistant.io/issues) (Website and documentation)
- [Feature requests Home Assistant](https://community.home-assistant.io/c/feature-requests) - [Feature requests Home Assistant](https://community.home-assistant.io/c/feature-requests)
### {% linkable_title Videos, interviews, talks, and alike %} ### {% linkable_title Videos, talks, workshops and alike %}
- [Home Assistant with Paulus Schoutsen Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 - [Home Assistant workshop](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-clt-workshop) at [CLT 2017](https://chemnitzer.linux-tage.de/2017/de/) - March 2017
- [Home Assistant - Erweiterungen (Platforms/Components)](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2016-puzzle) at [Puzzle ITC](https://www.puzzle.ch/de/) - December 2016 - [Home Assistant - Erweiterungen (Platforms/Components)](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2016-puzzle) at [Puzzle ITC](https://www.puzzle.ch/de/) - December 2016
- [Automating Your Life - Home Automation](http://slides.com/teagan42/life_automation#/) at Develop Denver 2016 - August - [Automating Your Life - Home Automation](http://slides.com/teagan42/life_automation#/) at Develop Denver 2016 - August
- [Building Online Communities: Home Assistant](https://medium.com/@gitter/building-online-communities-home-assistant-8818dff671ad#.och4x4rhx) - July 2016 - [Building Online Communities: Home Assistant](https://medium.com/@gitter/building-online-communities-home-assistant-8818dff671ad#.och4x4rhx) - July 2016
@ -41,10 +41,18 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)?
### {% linkable_title Media coverage %} ### {% linkable_title Media coverage %}
- [Paulus Schoutsen and Home Assistant - Episode 8](http://codepop.com/open-sourcecraft/episodes/paulus-schoutsen/) - March 2017
- [Zammad, Home Assistant und Freifunk - are the winner of the Thomas-Krenn-Awards 2017](https://www.thomas-krenn.com/de/tkmag/allgemein/zammad-home-assistant-und-freifunk-das-sind-die-gewinner-des-thomas-krenn-awards-2017/) - March 2017
- [10 open source software tools for developing IoT applications](http://www.cbronline.com/news/internet-of-things/10-open-source-software-tools-developing-iot-applications/) - March 2017
- [A Look at HASSbian: Raspberry Pi for Home Automation](http://www.piboards.com/2017/03/07/a-look-at-hassbian-raspberry-pi-for-home-automation/)- March 2017
- [Home Assistant with Paulus Schoutsen - Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017
- [Episode #11](https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation) at minute 15:20 by [Python Bytes](https://pythonbytes.fm/) - January 2017 - [Episode #11](https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation) at minute 15:20 by [Python Bytes](https://pythonbytes.fm/) - January 2017
- [Home Assistant: The Python Approach to Home Automation](https://www.linux.com/news/home-assistant-python-approach-home-automation-video) - June 2016
- [Secure home automation, without clouds or dedicated hubs](http://linuxgizmos.com/secure-home-automation-without-clouds-or-dedicated-hubs/) - June 2016
- [Weekend Project: Setting up Home Assistant on your PC or Mac](http://www.automatedhome.co.uk/software/weekend-project-setting-up-home-assistant-on-your-pc-or-mac.html) by [automated home](http://www.automatedhome.co.uk/) - April 2016 - [Weekend Project: Setting up Home Assistant on your PC or Mac](http://www.automatedhome.co.uk/software/weekend-project-setting-up-home-assistant-on-your-pc-or-mac.html) by [automated home](http://www.automatedhome.co.uk/) - April 2016
- [Episode 105 - DIY Home Automation Roundup](https://www.hometech.fm/shows/105) by [HomeTech.fm](https://www.hometech.fm/) - April 2016 - [Episode 105 - DIY Home Automation Roundup](https://www.hometech.fm/shows/105) by [HomeTech.fm](https://www.hometech.fm/) - April 2016
- [5 open source home automation tools](https://opensource.com/life/16/3/5-open-source-home-automation-tools) by [opensource.com](https://opensource.com) - March 2016 - [5 open source home automation tools](https://opensource.com/life/16/3/5-open-source-home-automation-tools) by [opensource.com](https://opensource.com) - March 2016
- [Home Assistant Open Source Python Home Automation Platform](http://www.automatedhome.co.uk/new-products/home-assistant-open-source-python-home-automation-platform.html) - January 2015
### {% linkable_title Site Search %} ### {% linkable_title Site Search %}

View File

@ -12,7 +12,7 @@ footer: true
People are starting to present Home Assistant at meetings and get-togethers. Below you find a couple of bullet points for your presentation. People are starting to present Home Assistant at meetings and get-togethers. Below you find a couple of bullet points for your presentation.
- [Numbers, numbers, numbers](/help/trivia/) and other details - [Numbers, numbers, numbers](/help/trivia/) and other details
- Over 400 implementations - Over 600 implementations
- Not depending on cloud services. We like to keep your privacy private - Not depending on cloud services. We like to keep your privacy private
- Control all your devices from a single, mobile-friendly, interface - Control all your devices from a single, mobile-friendly, interface
- Written in Python3 with 94% test coverage - Written in Python3 with 94% test coverage

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB