From 0b68b478d1a6bd2ec1aa2d2502c7fae96b9629ce Mon Sep 17 00:00:00 2001
From: Anders Melchiorsen
Date: Sat, 10 Feb 2018 15:18:16 +0100
Subject: [PATCH 01/40] Allow zero purge_interval to disable recorder purge
(#4591)
* Allow zero purge_interval to disable recorder purge
* Clarify that zero is a number
---
source/_components/recorder.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown
index 38b9239ba59..78993f11132 100644
--- a/source/_components/recorder.markdown
+++ b/source/_components/recorder.markdown
@@ -40,7 +40,7 @@ recorder:
required: false
type: int
purge_interval:
- description: How often (in days) the purge task runs. If a scheduled purge is missed (e.g., if Home Assistant was not running), the schedule will resume soon after Home Assistant restarts. You can use the [service](#service-purge) call `purge` when required without impacting the purge schedule.
+ description: How often (in days) the purge task runs. If a scheduled purge is missed (e.g., if Home Assistant was not running), the schedule will resume soon after Home Assistant restarts. You can use the [service](#service-purge) call `purge` when required without impacting the purge schedule. If this is set to `0` (zero), purging is disabled.
required: false
default: 1
type: int
From 715e5e642ba58d134b62bfbc99cda37c11100f35 Mon Sep 17 00:00:00 2001
From: Diogo Gomes
Date: Sat, 10 Feb 2018 16:14:19 +0000
Subject: [PATCH 02/40] Added example script (#4615)
* Added example script
* Update media_player.mediaroom.markdown
* Minor cleanup
---
.../_components/media_player.mediaroom.markdown | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/source/_components/media_player.mediaroom.markdown b/source/_components/media_player.mediaroom.markdown
index 17724f0d763..047a79d80c5 100644
--- a/source/_components/media_player.mediaroom.markdown
+++ b/source/_components/media_player.mediaroom.markdown
@@ -50,3 +50,19 @@ The component has been developed for Portuguese TV operators currently using the
In most cases (single STB) you just need to setup the *name* and discovery will do the rest. In case you have more than one STB you are required to set the *host* in each one of the entries.
If the STB is on the same network segment as Home Assistant, it can determine whether the device is turned on or off. Without this, the component will fail to determine the Set-top box status, and you are required to add the *optimistic* configuration variable.
+
+### {% linkable_title Example `press_button` script %}
+
+The `play_media` function can be used in scripts to change channels.
+
+```yaml
+# Example play_media script
+#
+press_button:
+ sequence:
+ service: media_player.play_media
+ data_template:
+ entity_id: media_player.mediaroom_stb
+ media_content_id: "{{ value }}"
+ media_content_type: "channel"
+```
From 3bba87b2484bf590e024c19aae6727e94d4be994 Mon Sep 17 00:00:00 2001
From: themanieldaniel
Date: Sun, 11 Feb 2018 14:40:32 -0500
Subject: [PATCH 03/40] Update logbook.markdown (#4629)
---
source/_components/logbook.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_components/logbook.markdown b/source/_components/logbook.markdown
index adabef99d19..d1a76f39739 100644
--- a/source/_components/logbook.markdown
+++ b/source/_components/logbook.markdown
@@ -26,8 +26,8 @@ Configuration variables:
- **entities** (*Optional*): The list of entity ids to be excluded from creating logbook entries.
- **domains** (*Optional*): The list of domains to be excluded from creating logbook entries.
- **include** (*Optional*): Configure which components should create logbook entries.
- - **entities** (*Optional*): The list of entity ids to be included from creating logbook entries.
- - **domains** (*Optional*): The list of domains to be included from creating logbook entries.
+ - **entities** (*Optional*): The list of entity ids to be included in creating logbook entries.
+ - **domains** (*Optional*): The list of domains to be included in creating logbook entries.
If you want to exclude messages of some entities or domains from the logbook just add the `exclude` parameter like:
From 9329aa74cc6f1f3066dbc57d23bd7bff06e3945e Mon Sep 17 00:00:00 2001
From: ChristianKuehnel
Date: Sun, 11 Feb 2018 23:51:17 +0100
Subject: [PATCH 04/40] sensor.alpha_vantage: removed Google as default stock
(#4618)
* removed Google as default stock
* extended config example
* Add exchange rate
---
source/_components/sensor.alpha_vantage.markdown | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/source/_components/sensor.alpha_vantage.markdown b/source/_components/sensor.alpha_vantage.markdown
index 29712a8d0c9..f984e743546 100644
--- a/source/_components/sensor.alpha_vantage.markdown
+++ b/source/_components/sensor.alpha_vantage.markdown
@@ -14,7 +14,7 @@ featured: false
ha_release: "0.60"
---
-The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market.
+The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market. This platform also provides detail about exchange rates.
To enable the `alpha_vantage` platform, add the following lines to your `configuration.yaml` file:
@@ -23,8 +23,17 @@ To enable the `alpha_vantage` platform, add the following lines to your `configu
sensor:
- platform: alpha_vantage
api_key: YOUR_API_KEY
+ symbols:
+ - symbol: GOOGL
+ name: Google
+ foreign_exchange:
+ - name: USD_EUR
+ from: USD
+ to: EUR
```
+Either a symbol or a foreign exchange must be configured, otherwise you will not get any data.
+
{% configuration %}
api_key:
description: "The API Key from [Alpha Vantage](https://www.alphavantage.co)."
@@ -33,7 +42,6 @@ api_key:
symbols:
description: List of stock market symbols for given companies.
required: false
- default: GOOGL
type: map
keys:
name:
From f566a97641b0844d6a53b9196cdd38f5d2bec403 Mon Sep 17 00:00:00 2001
From: Anders Melchiorsen
Date: Mon, 12 Feb 2018 00:21:20 +0100
Subject: [PATCH 05/40] Purge recorder data by default, allow repack (#4643)
---
source/_components/recorder.markdown | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown
index 78993f11132..039d94ceb2d 100644
--- a/source/_components/recorder.markdown
+++ b/source/_components/recorder.markdown
@@ -38,9 +38,10 @@ recorder:
purge_keep_days:
description: Specify the number of history days to keep in recorder database after a purge.
required: false
+ default: 10
type: int
purge_interval:
- description: How often (in days) the purge task runs. If a scheduled purge is missed (e.g., if Home Assistant was not running), the schedule will resume soon after Home Assistant restarts. You can use the [service](#service-purge) call `purge` when required without impacting the purge schedule. If this is set to `0` (zero), purging is disabled.
+ description: How often (in days) the purge task runs. If a scheduled purge is missed (e.g., if Home Assistant was not running), the schedule will resume soon after Home Assistant restarts. You can use the [service](#service-purge) call `purge` when required without impacting the purge schedule. If this is set to `0` (zero), automatic purging is disabled.
required: false
default: 1
type: int
@@ -122,16 +123,12 @@ If you only want to hide events from e.g. your history, take a look at the [`his
### {% linkable_title Service `purge` %}
-Call the service `recorder.purge` to start purge task, which deletes events and states older than x days, according to `keep_days` service data (*Required*)
+Call the service `recorder.purge` to start a purge task which deletes events and states older than x days, according to `keep_days` service data.
-Automation [action](https://home-assistant.io/getting-started/automation-action/) example:
-
-```yaml
-action:
- service: recorder.purge
- data:
- keep_days: 5
-```
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `keep_days` | yes | The number of history days to keep in recorder database (defaults to the component `purge_keep_days` configuration)
+| `repack` | yes | Rewrite the entire database, possibly saving some disk space (only supported for SQLite)
### {% linkable_title Restore State %}
From cda6c8518660ca93476de0e79449267df9272d3c Mon Sep 17 00:00:00 2001
From: NovapaX
Date: Mon, 12 Feb 2018 04:51:04 +0100
Subject: [PATCH 06/40] Update template_sensor with friendly_name_template
attribute and example (#4644)
* add documentation and example for friendly_name_template
* standard fixes
* another example + no whitespace around pipes
* move the dot
* little example fix
* Minor changes
---
source/_components/sensor.template.markdown | 46 +++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown
index c8d8e2cd0a0..534fe54e9f7 100644
--- a/source/_components/sensor.template.markdown
+++ b/source/_components/sensor.template.markdown
@@ -45,6 +45,10 @@ sensor:
description: Name to use in the frontend.
required: false
type: string
+ friendly_name_template:
+ description: Defines a template for the name to be used in the frontend (this overrides friendly_name).
+ required: false
+ type: template
entity_id:
description: A list of entity IDs so the sensor only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities.
required: false
@@ -244,3 +248,45 @@ sensor:
{% endif %}
```
{% endraw %}
+
+### {% linkable_title Change the Friendly Name Used in the Frontend %}
+
+This example shows how to change the `friendly_name` based on a date.
+Explanation: we add a multiple of 86400 seconds (= 1 day) to the current unix timestamp to get a future date.
+
+{% raw %}
+```yaml
+sensor:
+ - platform: template
+ sensors:
+ forecast_1_day_ahead:
+ friendly_name_template: >-
+ {%- set date = as_timestamp(now()) + (1 * 86400 ) -%}
+ {{ date|timestamp_custom("Tomorrow (%-m/%-d)") }}
+ value_template: "{{ sensor.darksky_weather_forecast_1 }}"
+ forecast_2_days_ahead:
+ friendly_name_template: >-
+ {%- set date = as_timestamp(now()) + (2 * 86400 ) -%}
+ {{ date|timestamp_custom("%A (%-m/%-d)") }}
+ value_template: "{{ sensor.darksky_weather_forecast_2 }}"
+```
+{% endraw %}
+
+This example shows how to change the `friendly_name` based on a state.
+
+{% raw %}
+```yaml
+sensor:
+ - platform: template
+ sensors:
+ net_power:
+ friendly_name_template: >-
+ {% if states('sensor.power_consumption')|float < 0 %}
+ Power Consumption
+ {% else %}
+ Power Production
+ {% end %}
+ value_template: "{{ states('sensor.power_consumption') }}"
+ unit_of_measurement: 'kW'
+```
+{% endraw %}
From 5e77fc8d94769781fb023f533f791552add881be Mon Sep 17 00:00:00 2001
From: Mike O'Driscoll
Date: Mon, 12 Feb 2018 02:31:34 -0500
Subject: [PATCH 07/40] Update TekSavvy sendor documentation. (#4645)
Update the TekSavvy senor documentation for unlimited plans without a cap.
---
source/_components/sensor.teksavvy.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_components/sensor.teksavvy.markdown b/source/_components/sensor.teksavvy.markdown
index 2181e4273de..dd62ca97d4e 100644
--- a/source/_components/sensor.teksavvy.markdown
+++ b/source/_components/sensor.teksavvy.markdown
@@ -45,7 +45,7 @@ api_key:
required: true
type: string
total_bandwidth:
- description: Your bandwidth limit in gigabytes.
+ description: Your bandwidth limit in gigabytes. Set to `0` for unlimited plans without a cap.
required: true
type: string
monitored_conditions:
@@ -72,6 +72,6 @@ monitored_conditions:
offpeak_total:
description: Total bandwidth used during the unlimited period (gigabytes).
onpeak_remaining:
- description: Remaining bandwidth (gigabytes).
+ description: Remaining bandwidth (gigabytes).
{% endconfiguration %}
From 76ab93af93a82762fcbfdce842fd0375f476050c Mon Sep 17 00:00:00 2001
From: Mike O'Driscoll
Date: Mon, 12 Feb 2018 22:44:22 -0500
Subject: [PATCH 08/40] Add documentation for new Start.ca sensor (#4658)
New sensor for ISP usage data for Start.ca
---
source/_components/sensor.startca.markdown | 84 +++++++++++++++++++++
source/images/supported_brands/startca.png | Bin 0 -> 24554 bytes
2 files changed, 84 insertions(+)
create mode 100644 source/_components/sensor.startca.markdown
create mode 100644 source/images/supported_brands/startca.png
diff --git a/source/_components/sensor.startca.markdown b/source/_components/sensor.startca.markdown
new file mode 100644
index 00000000000..cd92fe272ce
--- /dev/null
+++ b/source/_components/sensor.startca.markdown
@@ -0,0 +1,84 @@
+---
+layout: page
+title: "Start.ca"
+description: "Instructions on how to integrate Start.ca data usage within Home Assistant."
+date: 2018-02-12 00:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: startca.png
+ha_category: Sensor
+ha_release: 0.64
+ha_iot_class: "Cloud Polling"
+---
+
+Integrate your [Start.ca](https://www.start.ca/) account information into Home Assistant.
+
+You can get your API key from:
+
+[Start.ca Usage API](https://www.start.ca/support/usage/api)
+
+To use your Start.ca sensor in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: startca
+ api_key: API_KEY
+ total_bandwidth: 400
+ monitored_variables:
+ - usage
+ - usage_gb
+ - limit
+ - used_download
+ - used_upload
+ - used_total
+ - grace_download
+ - grace_upload
+ - grace_total
+ - total_download
+ - total_upload
+ - used_remaining
+```
+
+{% configuration %}
+api_key:
+ description: The Start.ca API key to access the service.
+ required: true
+ type: string
+total_bandwidth:
+ description: Your bandwidth limit in gigabytes. Set to `0` for unlimited plans without a cap.
+ required: true
+ type: string
+monitored_conditions:
+ description: Conditions to display in the frontend.
+ required: true
+ type: list
+ keys:
+ usage:
+ description: Bandwidth usage (percentage).
+ usage_gb:
+ description: Bandwidth usage (gigabytes).
+ limit:
+ description: Monthly bandwidth limit (gigabytes).
+ used_download:
+ description: Bandwidth used by download outside the grace period (gigabytes).
+ used_upload:
+ description: Bandwidth used by upload outside the grace period (gigabytes).
+ used_total:
+ description: Total bandwidth (download and upload sum calculation) used outside the grace period (gigabytes).
+ grace_download:
+ description: Bandwidth used by download during the grace period (gigabytes).
+ grace_upload:
+ description: Bandwidth used by upload during the grace period (gigabytes).
+ grace_total:
+ description: Total bandwidth (download and upload sum calculation) used during the unlimited period (gigabytes).
+ total_download:
+ description: Total bandwidth download (Grace + Used) (gigabytes).
+ total_download:
+ description: Total bandwidth upload (Grace + Used) (gigabytes).
+ used_remaining:
+ description: Remaining bandwidth calucated from used and supplied total bandwidth (gigabytes).
+{% endconfiguration %}
+
diff --git a/source/images/supported_brands/startca.png b/source/images/supported_brands/startca.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b64a25c402ec04f669542afd8358c7f96c06b78
GIT binary patch
literal 24554
zcmb4rg;yKh7wsejcPZ{tplG4EJA8PdNbzC?iWT=jDK5p`y|_~}K!H-+tw4a{?hY^g
zz4iWpM_2@AWoAw;_ujM5-uon6Lrno2gB$|@0Bj{i*|z`yh9Z8SL_?I~D9K7`duARid--b5d5NEF3tf+Xlp+8J
z&yO4-A9!|0QXXKDDiw4KW~lBRI44XiEjFm8cZ^iqq&Ml4x7n;$sHPV!930e6pd=@e
zGJFb4A^r3PsP{Bez?3dX^T}SNA>i*P9q0Fu7hWAxF#b85srzATZdfC0;fNDObG$~;Ig
zX5-&?+9rYIfHUQQbEalL6ZHQcD~M7CsQ!0Qo-73r{@=kU9!`)e;$@TrWR`~Do&TN9
z`@01){_k8$>qKYt-2Yu~lx5@p|AG%SNTj856vT27!Vzb{P4?wk6dyGptNMnZFzDCm
zfEPa3jJeNS;MIy{jHk%J6
zo{O9uAOM+HTC2YAM*(oWW+^#UwvJV&2d+z#+ddvt0Uuv9Qottq_xcOgo?tN>QS$mp
zK!5s&TYtEEG|GyXPCL-%OdW^`sGz=6sl}57NrGX6T66`wXeS?{1;f3OE)JM2cF^b_!^J-c_+;PD$xsa0>iK`ovUQ7k@?Df*~{4>Jm
zP>88&N}ez+HME6ElVlaJ>(pv%cYm&Va6(M%5BVW?haijePFLz;)gBkXUJNxP^`597Pci9qWq=
z9hPvN{Vbmev6CE0;@gBo8mq8yzd3g9VGu-tk>XhbR^STLRpi*xZRMqY2leRz8p)3L
z@&0$UJ}Jxh!=?fKhKYzs9HRXig`oQ&ZM0OW8hD?=NutnoF5XuNCP)Qbi?_}%1Oe7dYd_h0NvluR;B!4pj3DT0mD*rDbhL%1n^eu6r`RlsP&%&sV_{GmSm
z9fnD5VAR;kaUhs=KwKReOVapDufB&z@6%5g5OL@o^|7k>7LbaROOR~jB{osA?sj?)
znl><}v8{0ULt+)yYrmPr*1=Guz8W=2%VuG?A
z8}7Ohc?=V}iA}YG#_5Cl(#Qk2(UOBoX*HxybqGCiXQpQ#l0W#_=evg*%pYd57*piP
z6;QCW8?PrZM$~OgZV`D~!?^h1ML{bY2InQRM!qj9ZdG-q=90IHMs{mtD0za)Y%AW6
z+bpdfqOPdY7F+k3M79WVcX!wHI#F7?l3hWZx{Hw~$l9z8C-Y)5q?S#8F3`4Dh|y)E
zzs51;E8Um1N34N>(0(|{eLt1I>&7O9mRaa_a0%CG8+wlcoiW<@SdoX<>hSdkDcyv-
zp&pB;W5Vbp32OA?!_8~<9Lj0bW>UBjFgB9j8;b{;7x^Eim581-R&®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
literal 0
HcmV?d00001
From 6b61e4be310872a298ebaa98958573588c474337 Mon Sep 17 00:00:00 2001
From: Mike O'Driscoll
Date: Wed, 14 Feb 2018 02:22:36 -0500
Subject: [PATCH 09/40] Make TekSavvy Sensor API a Link (#4664)
* Make TekSavvy Sensor API a Link
Make the URL to getting TekSavvy API an acutal link.
* Remove line break
---
source/_components/sensor.teksavvy.markdown | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/source/_components/sensor.teksavvy.markdown b/source/_components/sensor.teksavvy.markdown
index dd62ca97d4e..9f7a8e70faa 100644
--- a/source/_components/sensor.teksavvy.markdown
+++ b/source/_components/sensor.teksavvy.markdown
@@ -15,8 +15,7 @@ ha_iot_class: "Cloud Polling"
Integrate your [TekSavvy](https://myaccount.teksavvy.com/) account information into Home Assistant.
-You can get your API key from
-https://myaccount.teksavvy.com/ApiKey/ApiKeyManagement
+You can get your API key from [TekSavvy My Account](https://myaccount.teksavvy.com/ApiKey/ApiKeyManagement).
To use your TekSavvy sensor in your installation, add the following to your `configuration.yaml` file:
From 14048b15b0420050cd8bc8476d0d5b194ee2fbe2 Mon Sep 17 00:00:00 2001
From: DubhAd
Date: Thu, 15 Feb 2018 18:00:45 +0000
Subject: [PATCH 10/40] Update to remove Python 3.4 reference (#4675)
Making FAQ more relevant by referencing just Python 3
---
source/_faq/pip3.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_faq/pip3.markdown b/source/_faq/pip3.markdown
index cb957a7cf43..9b4fe56e029 100644
--- a/source/_faq/pip3.markdown
+++ b/source/_faq/pip3.markdown
@@ -10,7 +10,7 @@ ha_category: Installation
---
-This utility should have been installed as part of the Python 3.4 installation. Check if Python 3.4 is installed by running `python3 --version`. If it is not installed, [download it here](https://www.python.org/getit/).
+This utility should have been installed as part of the Python 3 installation. Check if Python 3 is installed by running `python3 --version`. If it is not installed, [download it here](https://www.python.org/getit/).
If you are able to successfully run `python3 --version` but not `pip3`, install Home Assistant by running the following command instead:
From 43f4ef1121de08a5aaea819d61e2a58c699cbb7c Mon Sep 17 00:00:00 2001
From: themanieldaniel
Date: Thu, 15 Feb 2018 13:09:38 -0500
Subject: [PATCH 11/40] Update trigger.markdown (#4630)
---
source/_docs/automation/trigger.markdown | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown
index 140fd421aed..b6a9a283a0e 100644
--- a/source/_docs/automation/trigger.markdown
+++ b/source/_docs/automation/trigger.markdown
@@ -33,7 +33,7 @@ automation:
### {% linkable_title Home Assistant trigger %}
-Use this platform to trigger when Home Assistant starts up and shuts down.
+Triggers when Home Assistant starts up or shuts down.
```yaml
automation:
@@ -56,7 +56,7 @@ automation:
```
### {% linkable_title Numeric state trigger %}
-On state change of a specified entity, attempts to parse the state as a number and triggers once if value is changing from above to below a threshold, or from below to above the given threshold.
+Triggers when numeric value of an entity's state crosses a given threshold. On state change of a specified entity, attempts to parse the state as a number and triggers once if value is changing from above to below or from below to above the given threshold.
```yaml
automation:
@@ -83,7 +83,7 @@ In the example above, a numeric_state that is 17.1-24.9 would fire this trigger.
### {% linkable_title State trigger %}
-Triggers when the state of tracked entities change. If only entity_id given will match all state changes, even if only state attributes change.
+Triggers when the state of a given entity changes. If only entity_id is given trigger will activate for all state changes, even if only state attributes change.
```yaml
automation:
@@ -107,7 +107,7 @@ automation:
### {% linkable_title Sun trigger %}
-Trigger when the sun is setting or rising. An optional time offset can be given to have it trigger for example 45 minutes before sunset, when dusk is setting in.
+Triggers when the sun is setting or rising. An optional time offset can be given to have it trigger a set time before or after the sun event (i.e. 45 minutes before sunset, when dusk is setting in).
```yaml
automation:
From 61897efadef261d54cd535689523577effbb7662 Mon Sep 17 00:00:00 2001
From: Ledernacken6
Date: Thu, 15 Feb 2018 19:20:45 +0100
Subject: [PATCH 12/40] Update homematic.markdown (#4576)
* Update homematic.markdown
* Update homematic.markdown
---
source/_components/homematic.markdown | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown
index 73287f74209..90b1a7e816f 100644
--- a/source/_components/homematic.markdown
+++ b/source/_components/homematic.markdown
@@ -161,6 +161,15 @@ automation:
The channel parameter is equal to the channel of the button you are configuring the automation for. You can view the available channels in the UI you use to pair your devices.
The name depends on if you chose to resolve names or not. If not, it will be the device ID (e.g. LEQ1234657). If you chose to resolve names (and that is successful), it will be the name you have set in your CCU or in the metadata (e.g. "Kitchen Switch").
+You can test whether your button works within HA if you look at the hass terminal. When pressing a button, lines similar to those should appear:
+2018-01-27 11:51:32 INFO (Thread-12) [pyhomematic.devicetypes.generic] HMGeneric.event: address=MEQ1234567:6, interface_id=homeassistant-CCU2, key=PRESS_SHORT, value=True
+2018-01-27 11:51:32 INFO (MainThread) [homeassistant.core] Bus:Handling
+2018-01-27 11:51:32 INFO (Thread-12) [pyhomematic.devicetypes.generic] HMGeneric.event: address=MEQ1234567:6, interface_id=homeassistant-CCU2, key=INSTALL_TEST, value=True
+
+It may happen that "your_nice_name" is not resolved correctly; the according message (#2 in the above example) will be missing. This might be due to secure communication between your HM interface and the HM device. You can change the communication from "secure" to "standard" within your HM-interface to solve that issue (in "Einstellungen" - "Geräte" find your device and change "Übertragungsmodus" from secure to standard) - not recommended for devices that should have secure communication.
+
+
+
### {% linkable_title Services %}
* *homematic.virtualkey*: Simulate a keypress (or other valid action) on CCU/Homegear with device or virtual keys.
From f07e4674456cb95dfe619524c95f3311865e3a4f Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Thu, 15 Feb 2018 19:25:04 +0100
Subject: [PATCH 13/40] Minor changes
---
source/_components/homematic.markdown | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown
index 90b1a7e816f..84a19504b02 100644
--- a/source/_components/homematic.markdown
+++ b/source/_components/homematic.markdown
@@ -13,7 +13,6 @@ ha_iot_class: "Local Push"
featured: false
---
-
The [Homematic](http://www.homematic.com/) component provides bi-directional communication with your CCU/Homegear. It uses a XML-RPC connection to set values on devices and subscribes to receive events the devices and the CCU emit.
If you are using Homegear with paired [Intertechno](http://intertechno.at/) devices, uni-directional communication is possible as well.
@@ -22,7 +21,7 @@ Device support is available for most of the wired and wireless devices, as well
If you want to see if a specific device you have is supported, head over to the [pyhomematic](https://github.com/danielperna84/pyhomematic/tree/master/pyhomematic/devicetypes) repository and browse through the source code. A dictionary with the device identifiers (e.g. HM-Sec-SC-2) can be found within the relevant modules near the bottom. If your device is not supported, feel free to contribute.
We automatically detect all devices we currently support and try to generate useful names. If you enable name-resolving, we try to fetch names from Metadata (Homegear), via JSON-RPC or the XML-API you may have installed on your CCU. Since this may fail this is disabled by default.
-You can manually rename the created entities by using Home Assistants [Customizing](https://home-assistant.io/getting-started/customizing-devices/) feature. With it you are also able to hide entities you don't want to see in the UI.
+You can manually rename the created entities by using Home Assistant's [Customizing](/docs/configuration/customizing-devices/) feature. With it you are also able to hide entities you don't want to see in the UI.
To set up the component, add the following information to your `configuration.yaml` file:
@@ -161,15 +160,16 @@ automation:
The channel parameter is equal to the channel of the button you are configuring the automation for. You can view the available channels in the UI you use to pair your devices.
The name depends on if you chose to resolve names or not. If not, it will be the device ID (e.g. LEQ1234657). If you chose to resolve names (and that is successful), it will be the name you have set in your CCU or in the metadata (e.g. "Kitchen Switch").
-You can test whether your button works within HA if you look at the hass terminal. When pressing a button, lines similar to those should appear:
+You can test whether your button works within Home Assistant if you look at the terminal output. When pressing a button, lines similar to those should appear:
+
+```bash
2018-01-27 11:51:32 INFO (Thread-12) [pyhomematic.devicetypes.generic] HMGeneric.event: address=MEQ1234567:6, interface_id=homeassistant-CCU2, key=PRESS_SHORT, value=True
2018-01-27 11:51:32 INFO (MainThread) [homeassistant.core] Bus:Handling
2018-01-27 11:51:32 INFO (Thread-12) [pyhomematic.devicetypes.generic] HMGeneric.event: address=MEQ1234567:6, interface_id=homeassistant-CCU2, key=INSTALL_TEST, value=True
+```
It may happen that "your_nice_name" is not resolved correctly; the according message (#2 in the above example) will be missing. This might be due to secure communication between your HM interface and the HM device. You can change the communication from "secure" to "standard" within your HM-interface to solve that issue (in "Einstellungen" - "Geräte" find your device and change "Übertragungsmodus" from secure to standard) - not recommended for devices that should have secure communication.
-
-
### {% linkable_title Services %}
* *homematic.virtualkey*: Simulate a keypress (or other valid action) on CCU/Homegear with device or virtual keys.
From a2241a0ce1f24b0151f901fb42b648e5cc37aafa Mon Sep 17 00:00:00 2001
From: Nils Kristian Brekke
Date: Fri, 16 Feb 2018 22:12:45 +0100
Subject: [PATCH 14/40] Specify color temperature ranges and type (#4672)
* Specify color temperature ranges and type
* Add further explanation
---
source/_components/switch.flux.markdown | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/source/_components/switch.flux.markdown b/source/_components/switch.flux.markdown
index 7ebd649bb4a..cfe74efd204 100644
--- a/source/_components/switch.flux.markdown
+++ b/source/_components/switch.flux.markdown
@@ -16,7 +16,9 @@ The `flux` switch platform will change the temperature of your lights similar to
The component will update your lights based on the time of day. It will only affect lights that are turned on and listed in the flux configuration.
-During the day (in between `start time` and `sunset time`), it will fade the lights from the `start_colortemp` to the `sunset_colortemp`. After sunset (between `sunset_time` and `stop_time`), the lights will fade from the `sunset_colortemp` to the `stop_colortemp`. If the lights are still on after the `stop_time` it will continue to change the light to the `stop_colortemp` until the light is turned off. The fade effect is created by updating the lights every periodically.
+During the day (in between `start time` and `sunset time`), it will fade the lights from the `start_colortemp` to the `sunset_colortemp`. After sunset (between `sunset_time` and `stop_time`), the lights will fade from the `sunset_colortemp` to the `stop_colortemp`. If the lights are still on after the `stop_time` it will continue to change the light to the `stop_colortemp` until the light is turned off. The fade effect is created by updating the lights periodically.
+
+The color temperature is specified kelvin, and accepted values are between 1000 and 40000 kelvin. Lower values will seem more red, while higher will look more white.
If you want to update at variable intervals, you can leave the switch turned off and use automation rules that call the service `switch._update` whenever you want the lights updated, where `` equals the `name:` property in the switch configuration.
From 89ea0154a3d3da5f8ce595366b2af7916d98e517 Mon Sep 17 00:00:00 2001
From: Otto Winter
Date: Fri, 16 Feb 2018 22:13:17 +0100
Subject: [PATCH 15/40] Improve MQTT Light docs (#4681)
* Improve MQTT Light docs
* Small adjustment
---
source/_components/light.mqtt.markdown | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown
index 33f76eb5cc1..7f55a2160d7 100644
--- a/source/_components/light.mqtt.markdown
+++ b/source/_components/light.mqtt.markdown
@@ -120,7 +120,7 @@ rgb_command_topic:
required: false
type: string
rgb_state_topic:
- description: The MQTT topic subscribed to receive RGB state updates.
+ description: The MQTT topic subscribed to receive RGB state updates. The expected payload is the RGB values separated by commas, for example `255,0,127`.
required: false
type: string
rgb_value_template:
@@ -233,10 +233,10 @@ To enable a light with brightness (no RGB version) in your installation, add the
light:
- platform: mqtt
name: "Office light"
- state_topic: "office/rgb1/light/status"
- command_topic: "office/rgb1/light/switch"
- brightness_state_topic: 'office/rgb1/light/brightness'
- brightness_command_topic: 'office/rgb1/light/brightness/set'
+ state_topic: "office/light/status"
+ command_topic: "office/light/switch"
+ brightness_state_topic: 'office/light/brightness'
+ brightness_command_topic: 'office/light/brightness/set'
qos: 0
payload_on: "ON"
payload_off: "OFF"
@@ -255,8 +255,8 @@ light:
state_topic: "office/light/status"
command_topic: "office/light/switch"
payload_off: "OFF"
- brightness_state_topic: 'office/rgb1/light/brightness'
- brightness_command_topic: 'office/rgb1/light/brightness/set'
+ brightness_state_topic: 'office/light/brightness'
+ brightness_command_topic: 'office/light/brightness/set'
on_command_type: 'brightness'
```
From bbd245ec732e6e1895d4a72fb9a5a646c29c415d Mon Sep 17 00:00:00 2001
From: Henrik Nicolaisen
Date: Sun, 18 Feb 2018 23:34:24 +0100
Subject: [PATCH 16/40] added smappee documentation (#4354)
* added smappee documentation
* update version and changed options to be optional
---
source/_components/sensor.smappee.markdown | 19 +++++++
source/_components/smappee.markdown | 59 +++++++++++++++++++++
source/_components/switch.smappee.markdown | 20 +++++++
source/images/supported_brands/smappee.png | Bin 0 -> 84388 bytes
4 files changed, 98 insertions(+)
create mode 100644 source/_components/sensor.smappee.markdown
create mode 100644 source/_components/smappee.markdown
create mode 100644 source/_components/switch.smappee.markdown
create mode 100644 source/images/supported_brands/smappee.png
diff --git a/source/_components/sensor.smappee.markdown b/source/_components/sensor.smappee.markdown
new file mode 100644
index 00000000000..f9a3dcf4565
--- /dev/null
+++ b/source/_components/sensor.smappee.markdown
@@ -0,0 +1,19 @@
+---
+layout: page
+title: "Smappee Sensor"
+description: "Instructions how to integrate Smappee energy monitor into Home Assistant."
+date: 2018-01-06 16:15
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: smappee.png
+ha_release: "0.62"
+ha_category: Sensor
+---
+
+[Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches.
+
+Energy monitor measurements will be automatically added when you connect to the Smappee controller.
+
+For more configuration information see the [Smappee component](/components/smappee/) documentation.
diff --git a/source/_components/smappee.markdown b/source/_components/smappee.markdown
new file mode 100644
index 00000000000..db3bd1ac659
--- /dev/null
+++ b/source/_components/smappee.markdown
@@ -0,0 +1,59 @@
+---
+layout: page
+title: "Smappee"
+description: "Instructions how to setup Smappee within Home Assistant."
+date: 2018-01-06 16:15
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: smappee.png
+ha_release: "0.62"
+ha_category: Hub
+---
+
+[Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches.
+
+Switches and Sensors are supported - and will be automatically added when you connect to the Smappee controller.
+
+The smappee component gets information from [Smappee API](https://smappee.atlassian.net/wiki/display/DEVAPI/API+Methods) using the [smappy](https://github.com/EnergieID/smappy) pypy module
+
+
+Info on how to get api access is described in the [smappy wiki](https://github.com/EnergieID/smappy/wiki)
+
+
+# Configuration
+
+```yaml
+# Example configuration.yaml entry
+smappee:
+ host: 10.0.0.5
+ client_id: YOUR_CLIENT_ID
+ client_secret: YOUR_CLIENT_SECRET
+ username: YOUR_MYSMAPPEE_USERNAME
+ password: YOUR_MYSMAPPEE_PASSWORD
+```
+
+```yaml
+# Minimal example configuration.yaml entry
+smappee:
+ host: 10.0.0.5
+```
+
+```yaml
+# Cloud only example configuration.yaml entry
+smappee:
+ client_id: YOUR_CLIENT_ID
+ client_secret: YOUR_CLIENT_SECRET
+ username: YOUR_MYSMAPPEE_USERNAME
+ password: YOUR_MYSMAPPEE_PASSWORD
+```
+
+Configuration variables:
+
+- **host** (*Optional*): Your Local Smappee unit IP.
+- **host_password** (*Optional*): Your Local Smappee password.
+- **client_id** (*Optional*): Your Smappee API client_id.
+- **client_secret** (*Optional*): Your Smappee API client_secret.
+- **username** (*Optional*): Your My Smappee username.
+- **password** (*Optional*): Your My Smappee password.
diff --git a/source/_components/switch.smappee.markdown b/source/_components/switch.smappee.markdown
new file mode 100644
index 00000000000..a28cd69319b
--- /dev/null
+++ b/source/_components/switch.smappee.markdown
@@ -0,0 +1,20 @@
+---
+layout: page
+title: "Smappee Switch"
+description: "Instructions how to integrate Smappee Comfort Plug into Home Assistant."
+date: 2018-01-06 16:15
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: smappee.png
+ha_release: "0.62"
+ha_category: Switch
+ha_iot_class: "Local Push"
+---
+
+[Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches.
+
+Comport Plugs will be automatically added when you connect to the Smappee controller.
+
+For more configuration information see the [Smappee component](/components/smappee/) documentation.
diff --git a/source/images/supported_brands/smappee.png b/source/images/supported_brands/smappee.png
new file mode 100644
index 0000000000000000000000000000000000000000..f69c19d34f10600c287fad337017dd57bac6c8f9
GIT binary patch
literal 84388
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