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: true
# Liquid template compressor
compress_html:
clippings: []
comments: []
endings: []
ignore:
envs: []
blanklines: true
profile: false
startings: []
social:
visible: false
facebook:
@ -128,9 +139,9 @@ social:
# Home Assistant release details
current_major_version: 0
current_minor_version: 40
current_patch_version: 0
date_released: 2017-03-11
current_patch_version: 2
date_released: 2017-03-22
# Either # or the anchor link to latest release notes in the blog post.
# 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 {
.section {
margin-bottom: 16px;

View File

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

View File

@ -1,7 +1,7 @@
---
layout: page
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
sidebar: true
comments: false
@ -12,7 +12,7 @@ ha_category: Hub
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.
@ -21,10 +21,14 @@ To set it up, download [the IP Webcam app][app] and add the following informatio
```yaml
# Example configuration.yaml entry
android_ip_webcam:
<<<<<<< HEAD
<<<<<<< HEAD
- host: 192.168.1.10
=======
# This should be the ip of your phone
=======
# This should be the IP Address of the phone
>>>>>>> origin/current
- host: 192.168.1.10
name: Entrance
>>>>>>> current
@ -32,11 +36,11 @@ android_ip_webcam:
Configuration variables:
- **host** (*Required*): The ip address where your phone have on network.
- **port** (*Optional*): Default is set 8080. The port where is ip webcam listens.
- **name** (*Optional*): This parameter allows you to override the name of your phone.
- **username** (*Optional*): The username for accessing your phone.
- **password** (*Optional*): The password for accessing your phone.
- **host** (*Required*): The IP Address of the phone on the network.
- **port** (*Optional*): Default is set 8080. The port the IP Webcam listens on.
- **name** (*Optional*): Override the name of the phone.
- **username** (*Optional*): The username to access the phone.
- **password** (*Optional*): The password to access 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.
- **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
footer: true
logo: apcupsd.png
ha_category: Binary Sensor
ha_category: System Monitor
ha_release: 0.13
ha_iot_class: "Local Polling"
---

View File

@ -19,12 +19,12 @@ To use your BeagleBone Black's GPIO in your installation, add the following to y
```yaml
# Example configuration.yaml entry
binary_sensor:
- platform: bbb_gpio
pins:
P8_12:
name: Door
GPIO0_26:
name: Window
- platform: bbb_gpio
pins:
P8_12:
name: Door
GPIO0_26:
name: Window
```
Configuration variables:

View File

@ -11,9 +11,9 @@ ha_category: Binary Sensor
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
# Example configuration.yaml entry

View File

@ -31,4 +31,5 @@ Configuration variables:
- **username** (*Required*: The username of an user with administrative privileges, usually `admin`.
- **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.

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.
- **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`

View File

@ -33,5 +33,6 @@ Configuration variables:
- **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".
- **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.

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`.
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)
* DirecTV
* 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.
@ -43,6 +47,24 @@ Configuration variables:
- **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'>
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.

View File

@ -20,46 +20,42 @@ After setting up IFTTT, Maker Channel and ManyThing Channel, you can use the fol
```yaml
# Example configuration.yaml entry
automation:
- alias: 'ManyThing Recording ON'
# This calls an IFTTT recipe to turn on recording of the ManyThing Camera
# if we leave the house during the day.
trigger:
- platform: state
entity_id: group.all_devices
state: 'not_home'
- alias: 'ManyThing Recording ON'
# This calls an IFTTT recipe to turn on recording of the ManyThing Camera
# if we leave the house during the day.
trigger:
- platform: state
entity_id: group.all_devices
state: 'not_home'
condition:
- platform: state
entity_id: sun.sun
state: 'above_horizon'
action:
service: ifttt.trigger
data: {"event":"manything_on"}
condition:
- platform: state
entity_id: sun.sun
state: 'above_horizon'
action:
service: ifttt.trigger
data: {"event":"manything_on"}
- alias: 'ManyThing Recording OFF'
# This calls an IFTTT recipe to turn off recording of the ManyThing Camera
# when we are home unless it's nighttime.
trigger:
- platform: state
entity_id: group.all_devices
state: 'home'
- platform: state
entity_id: sun.sun
state: 'above_horizon'
condition: use_trigger_values
action:
service: ifttt.trigger
data: {"event":"manything_off"}
- alias: 'ManyThing Recording OFF'
# This calls an IFTTT recipe to turn off recording of the ManyThing Camera
# when we are home unless it's nighttime.
trigger:
- platform: state
entity_id: group.all_devices
state: 'home'
condition:
- condition: state
entity_id: sun.sun
state: 'above_horizon'
action:
service: ifttt.trigger
data: {"event":"manything_off"}
```
### {% linkable_title Setting up a recipe %}
<p class='img'>
<img src='/images/components/ifttt/IFTTT_manything_trigger.png' />
You need to setup a unique trigger for each event you sent to IFTTT.
You need to setup a unique trigger for each event you sent to IFTTT.
For ManyThing support, you need to set up an `on` and `off` event.
</p>
@ -73,4 +69,3 @@ domain | `ifttt`
service | `trigger`
Service Data | `{"event": "manything_on"}`

View File

@ -2,7 +2,7 @@
layout: page
title: "InfluxDB"
description: "Record events in InfluxDB."
date: 2015-12-06 13:08
date: 2017-03-13 22:09
sidebar: true
comments: false
sharing: true
@ -27,7 +27,7 @@ You will still need to create a database named `home_assistant` via InfluxDB's w
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.
- **username** (*Optional*): The username of the database user.
- **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.
- **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.
- **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in the singel same measurement.
- **blacklist** (*Optional*): List of entities not logged to InfluxDB.
- **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 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.
- **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.
- 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 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).
- Fields named value will always be stored as float.
- Fields named state will always be stored as string.
- 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 `state` will always be stored as string.
### {% 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:
1. Create a new database (called `DBNAME__old`) to store old data.
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.
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.
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.
- The host option defaults to `'127.0.0.1'`.
- 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`.

View File

@ -37,7 +37,7 @@ Configuration variables:
- **device_id** (*Required*): The Id of your device.
- **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
{"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
light:
- platform: lifx
broadcast: 192.168.1.255
server: 192.168.1.10
```
Configuration variables:
- **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
---
The `mqtt` light platform let you control your MQTT enabled 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.
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:
- **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.
- **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).
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.
- **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON".
- **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF".
- **brightness_state_topic** (*Optional*): The MQTT topic subscribed to receive brightness state updates.
- **brightness_value_template** (*Optional*): Defines a [template](/topics/templating/) to extract the brightness value.
- **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.
- **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'>
Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics.
</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 %}
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
---
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
{
"brightness": 255,
"color_temp": 155,
"color": {
"r": 255,
"g": 255,
"b": 255,
"r": 255
"x": 0.123,
"y": 0.123
},
"effect": "colorloop",
"state": "ON",
"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.
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:
- **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.
- **rgb** (*Optional*): Flag that defines if the light supports RGB colors. Default is false.
- **flash_time_short** (*Optional*): The duration, in seconds, of a "short" flash. Default is 2.
- **color_temperature** (*Optional*): Flag that defines if the light supports color temperature. Default is false.
- **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_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.
- **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'>
Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics.
</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 %}
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
---
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.
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.
@ -47,7 +46,9 @@ Configuration variables:
- **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.
- **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.
- **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.
- **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.
</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 %}
In this section you find some real life examples of how to use this light.

View File

@ -11,10 +11,11 @@ ha_category: Light
ha_release: 0.39
---
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.
The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant.
### {% 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:
@ -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.
</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.
- 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.
- `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 https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.24.0.tar.gz`
- `pip install firetv[firetv-server]`

View File

@ -37,7 +37,7 @@ And then install the following system dependencies:
Debian/Ubuntu/Rasbian:
```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 \
gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \
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`.
- **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.
- **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.
Currently known supported models:
@ -44,11 +44,14 @@ Currently known supported models:
- ES6800
- F6300
- F6500
- EH5300
- EH5600
- F6400AF
- D6505
- D6300SF
- 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:

View File

@ -12,7 +12,7 @@ ha_category: Other
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:
@ -28,3 +28,29 @@ Configuration variables:
- **publish_topic** (*Required*): Topic for publishing local events
- **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
logo: twilio.png
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.
This component is just an adaptation from the Twilio SMS notification platform and won't exist without it.
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.
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:
@ -29,15 +24,11 @@ To use this notification platform in your installation, add the following to you
notify:
- name: NOTIFIER_NAME
platform: twilio_call
account_sid: ACCOUNT_SID_FROM_TWILIO
auth_token: AUTH_TOKEN_FROM_TWILIO
from_number: E164_PHONE_NUMBER
```
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.
- **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 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:
```yaml
@ -21,15 +23,11 @@ To use this notification platform in your installation, add the following to you
notify:
- name: NOTIFIER_NAME
platform: twilio_sms
account_sid: ACCOUNT_SID_FROM_TWILIO
auth_token: AUTH_TOKEN_FROM_TWILIO
from_number: E164_PHONE_NUMBER
```
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.
- **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
- **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`.
- **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:
@ -49,3 +50,20 @@ automation:
data:
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
---
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.
@ -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
```
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
# 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.
### {% 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 %}

View File

@ -8,7 +8,8 @@ comments: false
sharing: true
footer: true
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.

View File

@ -13,10 +13,12 @@ ha_release: "0.40"
ha_iot_class: "Cloud Polling"
---
The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant.
The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant.
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
# Example configuration.yaml entry
sensor:
@ -33,5 +35,5 @@ Configuration variables:
- **five_minute**: The latest 5-minute price in cents.
- **current_hour_average**: The latest current hour average price in cents.
- **name** (*Optional*): Custom name for the sensor.
- **offset** (*Optional*): The pricing feeds provide only the *supply* cost of the electricity. The offset parameter allows you to provide a fixed constant that will be added to the pricing data to provide a more accurate representation of the total electricity cost per kWh.
- **offset** (*Optional*): The pricing feeds provide only the *supply* cost of the electricity. The offset parameter allows you to provide a fixed constant that will be added to the pricing data to provide a more accurate representation of the total electricity cost per kWh.

View File

@ -27,26 +27,18 @@ sensor:
- platform: hydroquebec
username: MYUSERNAME
password: MYPASSWORD
contract: 123456789
contract: '123456789'
monitored_variables:
- period_total_bill
- period_length
- 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:
- **username** (*Required*): Your Hydro-Québec Username
- **password** (*Required*): Your Hydro-Québec Password
- **contract** (*Required*): Your Hydro-Québec Contract
- **username** (*Required*): Username used to log into the Hydro-Québec site.
- **password** (*Required*): Password used to log into the Hydro-Québec site.
- **contract** (required since HA 4.0) Your contract number with Hydro-Québec
- **monitored_variables** array (*Required*): Variables to monitor.
- **period_total_bill** : Current period bill
- **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
footer: true
logo: nut.png
ha_category: Sensor
ha_category: System Monitor
ha_version: 0.34
---

View File

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

View File

@ -7,7 +7,7 @@ sidebar: true
comments: false
sharing: true
footer: true
ha_category:
ha_category: Energy
logo: sma.png
ha_iot_class: "Local Polling"
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:

View File

@ -11,7 +11,7 @@ logo: home-assistant.png
ha_category: Weather
---
The sun component will use your current location to track if the sun is above or below the horizon.The sun can be used within automation as [a trigger with an optional offset to simulate dawn/dusk][automation-trigger].
The sun component will use your current location to track if the sun is above or below the horizon. The sun can be used within automation as [a trigger with an optional offset to simulate dawn/dusk][automation-trigger].
[automation-trigger]: /getting-started/automation-trigger/#sun-trigger
@ -22,7 +22,7 @@ sun:
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'>
<img src='/images/screenshots/more-info-dialog-sun.png' />

View File

@ -19,12 +19,12 @@ To use yourBeagleBone Black's GPIO in your installation, add the following to yo
```yaml
# Example configuration.yaml entry
switch:
- platform: bbb_gpio
pins:
GPIO0_7:
name: LED Red
P9_12:
name: LED Green
- platform: bbb_gpio
pins:
GPIO0_7:
name: LED Red
P9_12:
name: LED Green
```
Configuration variables:

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.
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
# Example configuration.yaml entry
@ -29,9 +29,54 @@ tts:
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`.
- **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).
- **region_name** (*Required*): 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`.
| Parameter | Value | Description |
|---------------------|----------|-------------|
| `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` |
| `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`. |
| `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,42 +16,37 @@ Turn on a light in the living room when it starts raining, someone is home, and
```yaml
automation:
alias: 'Rainy Day'
trigger:
- platform: state
entity_id: sensor.precip_intensity
state: 'rain'
- platform: state
entity_id: group.all_devices
state: 'home'
- platform: time
after: '14:00'
before: '23:00'
condition: use_trigger_values
action:
service: light.turn_on
entity_id: light.couch_lamp
- alias: 'Rainy Day'
trigger:
- platform: state
entity_id: sensor.precip_intensity
state: 'rain'
condition:
- platform: state
entity_id: group.all_devices
state: 'home'
- platform: time
after: '14:00'
before: '23:00'
action:
service: light.turn_on
entity_id: light.couch_lamp
```
And then of course turn off the lamp when it stops raining but only if it's within an hour before sunset.
```yaml
automation 2:
alias: 'Rain is over'
trigger:
- platform: state
entity_id: sensor.precip_intensity
state: 'None'
- platform: sun
event: 'sunset'
offset: '-01:00:00'
condition: use_trigger_values
action:
service: light.turn_off
entity_id: light.couch_lamp
- alias: 'Rain is over'
trigger:
- platform: state
entity_id: sensor.precip_intensity
state: 'None'
condition:
- condition: sun
after: 'sunset'
offset: '-01:00:00'
action:
service: light.turn_off
entity_id: light.couch_lamp
```

View File

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

View File

@ -17,51 +17,51 @@ Just some sample automation rules to get you started.
automation:
# Turns on lights 1 hour before sunset if people are home
# and if people get home between 16:00-23:00
- alias: 'Rule 1 Light on in the evening'
trigger:
# Prefix the first line of each trigger configuration
# with a '-' to enter multiple
- platform: sun
event: sunset
offset: '-01:00:00'
- platform: state
entity_id: group.all_devices
state: 'home'
condition:
# Prefix the first line of each condition configuration
# with a '-'' to enter multiple
- condition: state
entity_id: group.all_devices
state: 'home'
- condition: time
after: '16:00:00'
before: '23:00:00'
action:
service: homeassistant.turn_on
entity_id: group.living_room
- alias: 'Rule 1 Light on in the evening'
trigger:
# Prefix the first line of each trigger configuration
# with a '-' to enter multiple
- platform: sun
event: sunset
offset: '-01:00:00'
- platform: state
entity_id: group.all_devices
state: 'home'
condition:
# Prefix the first line of each condition configuration
# with a '-'' to enter multiple
- condition: state
entity_id: group.all_devices
state: 'home'
- condition: time
after: '16:00:00'
before: '23:00:00'
action:
service: homeassistant.turn_on
entity_id: group.living_room
# Turn off lights when everybody leaves the house
- alias: 'Rule 2 - Away Mode'
trigger:
platform: state
entity_id: group.all_devices
state: 'not_home'
action:
service: light.turn_off
entity_id: group.all_lights
- alias: 'Rule 2 - Away Mode'
trigger:
platform: state
entity_id: group.all_devices
state: 'not_home'
action:
service: light.turn_off
entity_id: group.all_lights
# Notify when Paulus leaves the house in the evening
- alias: 'Leave Home notification'
trigger:
platform: zone
event: leave
zone: zone.home
entity_id: device_tracker.paulus
condition:
condition: time
after: '20:00'
action:
service: notify.notify
data:
message: 'Paulus left the house'
- alias: 'Leave Home notification'
trigger:
platform: zone
event: leave
zone: zone.home
entity_id: device_tracker.paulus
condition:
condition: time
after: '20:00'
action:
service: notify.notify
data:
message: 'Paulus left the house'
```

View File

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

View File

@ -39,7 +39,7 @@ ExecStart=/usr/bin/hass
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]
@ -48,10 +48,7 @@ After=network.target
[Service]
Type=simple
User=homeassistant
# Make sure the virtualenv Python binary is used
Environment=VIRTUAL_ENV="/srv/homeassistant"
Environment=PATH="$VIRTUAL_ENV/bin:$PATH"
User=%i
ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
[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' 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"
* 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 "Network" select "Use same network as Docker Host"
* Confirm the "Advanced Settings"
* 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 %}

View File

@ -11,7 +11,7 @@ logo: mqtt.png
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:

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.
- **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.
- **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.
- **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.

View File

@ -179,6 +179,9 @@
<li>{% active_link /docs/ecosystem/ios/integration/ Integration with other apps %}</li>
</ul>
</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>
</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 %}
<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/
[netmonitor]: https://home-assistant.io/components/sensor.fritzbox_netmonitor/
[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/
[myq]: https://home-assistant.io/components/cover.myq/
[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.
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!
@ -69,6 +69,25 @@ twilio:
### 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.
### {% 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-->
## 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
[EFF]: https://www.eff.org
[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

@ -40,36 +40,22 @@ Support for these components is provided by the Home Assistant community.
<a href='#added_one_version_ago' class="btn added_one_version_ago">Added in {{ added_one_ago_version }} ({{ one_ago_version_components_count }})</a>
<a href='#added_two_versions_ago' class="btn added_two_versions_ago">Added in {{ added_two_ago_version }} ({{ two_ago_version_components_count }})</a>
{% for category in categories %}
{% if category and category != 'Other' %}
<a href='#{{ category | slugify }}' class="btn">
{{ category }}
({{ components | where: 'ha_category', category | size }})
</a>
{% endif %}
{% endfor %}
{% for category in categories %}
{% if category and category != 'Other' %}
<a href='#{{ category | slugify }}' class="btn">{{ category }} ({{ components | where: 'ha_category', category | size }})</a>
{% endif %}
{% endfor %}
<a href='#other' class="btn">Other</a>
</div>
</div>
<div class="grid__item five-sixths lap-one-whole palm-one-whole hass-option-cards" id="componentContainer">
{% for component in components %}
{% if component.ha_category %}
{% assign sliced_version = component.ha_release | split: '.' %}
{% assign minor_version = sliced_version[1]|plus: 0 %}
<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 class='title'>{{ component.title }}</div>
<div class='category'>{{ component.ha_category }}</div>
</a>
{% endif %}
{% endfor %}
<div class="grid__item five-sixths lap-one-whole palm-one-whole">
<div class="component-search">
<form onsubmit="event.preventDefault(); return false">
<input type="text" name="search" id="search" class="search" placeholder="Search components...">
</form>
</div>
<div class="hass-option-cards" id="componentContainer"> </div>
</div>
</div>
@ -82,23 +68,145 @@ Support for these components is provided by the Home Assistant community.
{% endfor %}
{% endcomment %}
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<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');
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js"></script>
{% 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) {
if ('replaceState' in history) {
history.replaceState('', '', newHash);
@ -107,44 +215,77 @@ $(window).load(function(){
}
}
function applyFilter() {
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
}
});
}
// update view by filter selection
jQuery('.filter-button-group a').click(function() {
updateHash(this.getAttribute('href'));
applyFilter();
return false;
});
/**
* 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));
/**
* 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>

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.
<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 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.
- 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/`.

View File

@ -27,13 +27,13 @@ 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)
- [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
- [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
- [Home Assistant Support 101 - Getting around in Home Assistant](https://www.youtube.com/watch?v=dRfk9JAlPJk) ([Slides](https://docs.google.com/presentation/d/1PUnOpeFZxNj4LEjaohGqH_1hOGQGuS5yRHD1ThHr6nk/edit?usp=sharing)) - June 2016
- [Home Assistant Support 101 - Getting around in Home Assistant](https://www.youtube.com/watch?v=dRfk9JAlPJk) ([Slides](https://docs.google.com/presentation/d/1PUnOpeFZxNj4LEjaohGqH_1hOGQGuS5yRHD1ThHr6nk/edit?usp=sharing)) - June 2016
- [Awaken your home: Python and the Internet of Things](https://www.youtube.com/watch?v=Cfasc9EgbMU&list=PLKsVm4cWHDQB9JBcD7_ZfNcvC6xx47QHT&index=1) at PyCon 2016 - June 2016
- [Automating your Home with Home Assistant](https://www.youtube.com/watch?v=4-6rTwKl6ww&list=PLKsVm4cWHDQB9JBcD7_ZfNcvC6xx47QHT&index=2) at OpenIoT 2016 - March 2016
@ -41,10 +41,18 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)?
### {% 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
- [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
- [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
- [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 %}

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.
- [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
- Control all your devices from a single, mobile-friendly, interface
- 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