From 9e4cc48e0de50e7e8a86654f0124bce3a8edbd6f Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Sun, 19 May 2019 00:13:35 +0200
Subject: [PATCH 38/74] :pencil2: Fix broken link to appdaemon (#9478)
---
source/_docs/ecosystem/hadashboard.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_docs/ecosystem/hadashboard.markdown b/source/_docs/ecosystem/hadashboard.markdown
index 8f06247ee0d..9daa0518206 100755
--- a/source/_docs/ecosystem/hadashboard.markdown
+++ b/source/_docs/ecosystem/hadashboard.markdown
@@ -37,4 +37,4 @@ HADashboard is a modular, skinnable dashboard for [Home Assistant](/) that is in
Glassic Theme
-For full installation instructions see the HADashboard section in the [AppDaemon Project Documentation](http://appdaemon.readthedocs.io/en/stable/DASHBOARD_INSTALL.html). If you're using Hassbian, then the [Hassbian scripts](https://github.com/home-assistant/hassbian-scripts/blob/dev/docs/appdaemon.md) make it easy to install AppDaemon.
+For full installation instructions see the HADashboard section in the [AppDaemon Project Documentation](http://appdaemon.readthedocs.io/en/stable/DASHBOARD_INSTALL.html). If you're using Hassbian, then the [Hassbian scripts](https://github.com/home-assistant/hassbian-scripts/blob/dev/docs/suites/appdaemon.md) make it easy to install AppDaemon.
From de3d650417bfbb91f0812a7d477fd7c9ac159b21 Mon Sep 17 00:00:00 2001
From: Dominik Palo
Date: Sun, 19 May 2019 15:14:43 +0200
Subject: [PATCH 39/74] Fix link to the "DuckDNS suite" (#9487)
---
source/_docs/ecosystem/certificates/lets_encrypt.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown
index bcbecfaccce..024044abddc 100644
--- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown
+++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown
@@ -10,7 +10,7 @@ footer: true
---
-If you are using Hass.io or Hassbian, do not use this guide. Instead, use the [DuckDNS add-on](/addons/duckdns/) for Hass.io or the [DuckDNS suite](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/duckdns.md) for Hassbian to automatically maintain a subdomain including HTTPS certificates via Let's Encrypt.
+If you are using Hass.io or Hassbian, do not use this guide. Instead, use the [DuckDNS add-on](/addons/duckdns/) for Hass.io or the [DuckDNS suite](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/suites/duckdns.md) for Hassbian to automatically maintain a subdomain including HTTPS certificates via Let's Encrypt.
From 8128db038603d57c4be113629e62fa5aa19da6e4 Mon Sep 17 00:00:00 2001
From: Robert Svensson
Date: Sun, 19 May 2019 22:45:31 +0200
Subject: [PATCH 40/74] Add documentation for newly added types of Axis
component
https://github.com/home-assistant/home-assistant/pull/23312
---
source/_components/axis.markdown | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown
index 824fc2ada6a..0f68a2a300a 100644
--- a/source/_components/axis.markdown
+++ b/source/_components/axis.markdown
@@ -11,12 +11,14 @@ logo: axis.png
ha_category:
- Camera
- Binary Sensor
+ - Switch
ha_config_flow: true
ha_release: 0.45
ha_iot_class: Local Push
redirect_from:
- /components/binary_sensor.axis/
- /components/camera.axis/
+ - /components/switch.axis/
---
[Axis Communications](https://www.axis.com/) devices are surveillance cameras, speakers, access control and other security-related network connected hardware. Event API works with firmware 5.50 and newer.
@@ -43,3 +45,11 @@ The following sensor types are supported:
- Passive IR motion detection
- Sound detection
- Day/night mode
+- Inputs and Supervised Inputs
+
+## {% linkable_title Switch %}
+
+The following controllable port types are supported:
+
+- Output
+- Relay
From bc8af817675bfb676553b6367d1a4c4c560a1045 Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Sun, 19 May 2019 22:58:10 +0200
Subject: [PATCH 41/74] :pencil2: Tweak
Redirect_from is only for existing pages
---
source/_components/axis.markdown | 1 -
1 file changed, 1 deletion(-)
diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown
index 0f68a2a300a..b1f99ee480c 100644
--- a/source/_components/axis.markdown
+++ b/source/_components/axis.markdown
@@ -18,7 +18,6 @@ ha_iot_class: Local Push
redirect_from:
- /components/binary_sensor.axis/
- /components/camera.axis/
- - /components/switch.axis/
---
[Axis Communications](https://www.axis.com/) devices are surveillance cameras, speakers, access control and other security-related network connected hardware. Event API works with firmware 5.50 and newer.
From 7509aaff11ce7e819c4e1ed490fbe39fe93eb181 Mon Sep 17 00:00:00 2001
From: bouni
Date: Tue, 14 May 2019 09:49:12 +0200
Subject: [PATCH 42/74] extended spaceapi component documentation
---
source/_components/spaceapi.markdown | 2 ++
1 file changed, 2 insertions(+)
diff --git a/source/_components/spaceapi.markdown b/source/_components/spaceapi.markdown
index 8f83f10ab3c..29de8f0f27c 100644
--- a/source/_components/spaceapi.markdown
+++ b/source/_components/spaceapi.markdown
@@ -114,6 +114,8 @@ sensors:
type: entity_id
{% endconfiguration %}
+The list of sensors can be any sensor, not just temperature or humidity.
+
## {% linkable_title Examples %}
In this section you find some real-life examples of how to use this component.
From 2de75f5f7994382ead7f39fb4aaac9778f82b2c6 Mon Sep 17 00:00:00 2001
From: bouni
Date: Mon, 20 May 2019 12:09:11 +0200
Subject: [PATCH 43/74] added description how to set the location attribute of
a sensor
---
source/_components/spaceapi.markdown | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/source/_components/spaceapi.markdown b/source/_components/spaceapi.markdown
index 29de8f0f27c..beb7cd8d5e1 100644
--- a/source/_components/spaceapi.markdown
+++ b/source/_components/spaceapi.markdown
@@ -116,6 +116,18 @@ sensors:
The list of sensors can be any sensor, not just temperature or humidity.
+## Sensor specific location
+
+The [SpaceAPI specification](https://spaceapi.io/pages/docs.html) requires every sensor to provide a location.
+In order to set a sensor specific location do the following steps:
+
+1. Go to Configuration -> Customization
+2. Select the sensor entity
+3. Pick "Other" from the attribute override pulldown
+4. Set the attribute name to location and the attribute value to your desired location
+
+If no location is set, the location defined in the HA config is used.
+
## {% linkable_title Examples %}
In this section you find some real-life examples of how to use this component.
From 1d6d713ee9eb7160d9f18e102d8a3b1253726e52 Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Mon, 20 May 2019 13:12:22 +0200
Subject: [PATCH 44/74] :x: Remove epsonworkforce file (wrong location) (#9489)
---
source/components/epsonworkforce.markdown | 13 -------------
1 file changed, 13 deletions(-)
delete mode 100644 source/components/epsonworkforce.markdown
diff --git a/source/components/epsonworkforce.markdown b/source/components/epsonworkforce.markdown
deleted file mode 100644
index 9fa39a3d101..00000000000
--- a/source/components/epsonworkforce.markdown
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: page
-title: "Epson Workforce"
-description: "Instructions on how to setup Epson Workforce with Home Assistant."
-date: 2019-04-24 07:00
-sidebar: true
-comments: false
-sharing: true
-footer: true
-ha_release: 0.92
----
-
-The Epson workforce integration.
From f3c6ba044f4d66239dc29bf3e7ee91f21653497e Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Mon, 20 May 2019 13:27:24 +0200
Subject: [PATCH 45/74] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Google=20pub/sub=20-?=
=?UTF-8?q?=20Filter=20is=20required=20(#9479)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* :pencil: Google pub/sub - Filter is required
* There is no default for required keys
---
source/_components/google_pubsub.markdown | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/source/_components/google_pubsub.markdown b/source/_components/google_pubsub.markdown
index f644e671fe3..52413354f72 100644
--- a/source/_components/google_pubsub.markdown
+++ b/source/_components/google_pubsub.markdown
@@ -55,9 +55,8 @@ credentials_json:
type: string
filter:
description: Filter domains and entities for Google Cloud Pub/Sub.
- required: false
+ required: true
type: map
- default: Includes all entities from all domains
keys:
include_domains:
description: List of domains to include (e.g., `light`).
From 4fa6a00bababcce3623c5efc3e00e94658db1447 Mon Sep 17 00:00:00 2001
From: Jason Lawrence
Date: Wed, 22 May 2019 09:55:17 -0500
Subject: [PATCH 46/74] Remove 'include_non_clients' config option
---
source/_components/plex.markdown | 6 ------
1 file changed, 6 deletions(-)
diff --git a/source/_components/plex.markdown b/source/_components/plex.markdown
index 96897830e66..7f79d25cbc0 100644
--- a/source/_components/plex.markdown
+++ b/source/_components/plex.markdown
@@ -94,7 +94,6 @@ You can customize the Plex component by adding any of the variables below to you
media_player:
- platform: plex
entity_namespace: 'plex'
- include_non_clients: true
scan_interval: 5
show_all_controls: false
use_custom_entity_ids: true
@@ -108,11 +107,6 @@ entity_namespace:
description: "Prefix for entity ID's. Useful when using overlapping components (ex. Apple TV and Plex components when you have Apple TV's you use as Plex clients). Go from _media_player.playroom2_ to _media_player.plex_playroom_"
required: false
type: string
-include_non_clients:
- description: "Display non-recontrollable clients (ex. remote clients, PlexConnect Apple TV's)."
- required: false
- default: false
- type: boolean
scan_interval:
description: "Amount in seconds in between polling for device’s current activity."
required: false
From 9c2bbfd1ec020e8ed10a6e7ba98184040d4397fa Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Wed, 22 May 2019 21:45:13 +0200
Subject: [PATCH 47/74] Update monitored_conditions (#9385)
* Update monitored_conditions
* Fix lint
* Add missing colons
---
source/_components/iqvia.markdown | 54 +++++++++++++++----------------
1 file changed, 26 insertions(+), 28 deletions(-)
diff --git a/source/_components/iqvia.markdown b/source/_components/iqvia.markdown
index cb04396076a..12969ba0c89 100644
--- a/source/_components/iqvia.markdown
+++ b/source/_components/iqvia.markdown
@@ -17,7 +17,7 @@ redirect_from:
- /components/pollen/
---
-The `iqvia` sensor platform collects and displays allergy, asthma, and disease
+The `iqvia` sensor platform collects and displays allergy, asthma and disease
information (based on a U.S. ZIP code) from [IQVIA](https://www.iqvia.com/).
Data measured includes:
@@ -39,25 +39,39 @@ iqvia:
- allergy_average_forecasted
- allergy_index_today
- allergy_index_tomorrow
- - allergy_index_yesterday
- asthma_average_forecasted
- asthma_index_today
- asthma_index_tomorrow
- - asthma_index_yesterday
- disease_average_forecasted
- disease_index_today
- - disease_index_yesterday
```
{% configuration %}
- zip_code:
- description: the U.S. ZIP code to gather data for (as a quoted string)
- required: true
- type: string
- monitored_conditions:
- description: the metric types to monitor; valid values are specified below
- required: true
- type: list
+zip_code:
+ description: The U.S. ZIP code to gather data for (as a quoted string).
+ required: true
+ type: string
+monitored_conditions:
+ description: The metric types to monitor.
+ required: true
+ type: list
+ keys:
+ allergy_average_forecasted:
+ description: "The average forecasted allergy index over the next 5 days."
+ allergy_index_today:
+ description: "The allergy index for today."
+ allergy_index_tomorrow:
+ description: "The allergy index for tomorrow."
+ asthma_average_forecasted:
+ description: "The average forecasted asthma index over the next 5 days."
+ asthma_index_today:
+ description: "The asthma index for today."
+ asthma_index_tomorrow:
+ description: "The asthma index for tomorrow."
+ disease_average_forecasted:
+ description: "The average forecasted cold/flu index over the next 5 days."
+ disease_index_today:
+ description: "The cold/flu index for today."
{% endconfiguration %}
@@ -65,22 +79,6 @@ It is important to ensure the ZIP code is quoted if it starts with a 0. Unquoted
ZIP codes that start with 0 will cause errors.
-## {% linkable_title Available Metrics %}
-
-The following metrics can be monitored:
-
-* Allergy Index: Forecasted Average (`allergy_average_forecasted`): the average forecasted allergy index over the next 5 days
-* Allergy Index: Today (`allergy_index_today`): the allergy index for today
-* Allergy Index: Tomorrow (`allergy_index_tomorrow`): the allergy index for tomorrow
-* Allergy Index: Yesterday (`allergy_index_yesterday`): the allergy index for yesterday
-* Asthma Index: Forecasted Average (`asthma_average_forecasted`): the average forecasted asthma index over the next 5 days
-* Asthma Index: Today (`asthma_index_today`): the asthma index for today
-* Asthma Index: Tomorrow (`asthma_index_tomorrow`): the asthma index for tomorrow
-* Asthma Index: Yesterday (`asthma_index_yesterday`): the asthma index for yesterday
-* Cold & Flu: Forecasted Average (`disease_average_forecasted`): the average forecasted cold/flu index over the next 5 days
-* Cold & Flu Index: Today (`disease_index_today`): the cold/flu index for today
-* Cold & Flu Index: Yesterday (`disease_index_yesterday`): the cold/flu index for yesterday
-
## {% linkable_title Understanding the Indices %}
Any index-related sensor will have a value between 0.0 and 12.0. The values
From 9598d3cc8ccb39d505e8627a6f9a7227c23e2875 Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Wed, 22 May 2019 22:44:58 +0200
Subject: [PATCH 48/74] Add UE46ES5500 (fixes #9495) (#9501)
---
source/_components/samsungtv.markdown | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/source/_components/samsungtv.markdown b/source/_components/samsungtv.markdown
index f1368c96cad..9ea5d6c3fdc 100644
--- a/source/_components/samsungtv.markdown
+++ b/source/_components/samsungtv.markdown
@@ -16,11 +16,13 @@ redirect_from:
- /components/media_player.samsungtv/
---
-The `samsungtv` platform allows you to control a
-[Samsung Smart TV](http://www.samsung.com/uk/consumer/tv-audio-video/televisions/).
+The `samsungtv` platform allows you to control a [Samsung Smart TV](http://www.samsung.com/uk/consumer/tv-audio-video/televisions/).
-When the TV is first connected,
-you will need to accept Home Assistant on the TV to allow communication.
+### {% linkable_title Setup %}
+
+When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication.
+
+### {% linkable_title Configuration %}
To add a TV to your installation without relying on the [discovery component](/components/discovery/), add the following to your `configuration.yaml` file:
@@ -28,7 +30,7 @@ To add a TV to your installation without relying on the [discovery component](/c
# Example configuration.yaml entry
media_player:
- platform: samsungtv
- host: 192.168.0.10
+ host: IP_ADDRESS
```
{% configuration %}
@@ -100,6 +102,7 @@ Currently known supported models:
- UE6199UXZG (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button)
- UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button)
- UE49KU6470 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button)
+- UE46ES5500 (partially supported, turn on doesn't works)
Currently tested but not working models:
@@ -116,16 +119,11 @@ Currently tested but not working models:
- MU6125 - Unable to see state and unable to control (Tested on UE58MU6125 on port 8001 and 8801)
- MU6300 - Port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on)
-None of the 2014 (H) and 2015 (J) model series (e.g., J5200) will work,
-since Samsung have used a different (encrypted) type of interface for these.
+None of the 2014 (H) and 2015 (J) model series (e.g., J5200) will work, since Samsung have used a different (encrypted) type of interface for these.
-If your model is not on the list then give it a test,
-if everything works correctly then add it to the list on
+If your model is not on the list then give it a test, if everything works correctly then add it to the list on
[GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/samsungtv.markdown).
-The first letter (U, P, L, H & K) represent the screen type, e.g., LED or
-Plasma. The second letter represents the region, E is Europe, N is North America
-and A is Asia & Australia.
-The two numbers following that represent the screen size.
+The first letter (U, P, L, H & K) represent the screen type, e.g., LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size.
If you add your model remember to remove these first 4 characters before adding to the list.
Changing channels can be done by calling the `media_player.play_media` service
From 68b52b73655fb6290187b4b32b0297af03d6c6c4 Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Wed, 22 May 2019 23:03:47 +0200
Subject: [PATCH 49/74] Add Arch Linux package list (fixes #9455) (#9502)
---
source/hassio/installation.markdown | 42 ++++++++++++++++++-----------
1 file changed, 27 insertions(+), 15 deletions(-)
diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown
index bef555bf76c..2ff644bea37 100644
--- a/source/hassio/installation.markdown
+++ b/source/hassio/installation.markdown
@@ -95,12 +95,14 @@ If you would like to test next release before anyone else, you can install the b
3. Select _System_ from the _Hass.io_ menu, then select _Join Beta Channel_ under _Hass.io supervisor_, then select _Reload_.
4. Select _Dashboard_ from the _Hass.io_ menu, and then select _Update_.
-## {% linkable_title Alternative: install on generic Linux server %}
+## {% linkable_title Alternative: install on a generic Linux host %}
For advanced users, it is also possible to try Hass.io on your [Linux server or inside a virtual machine][linux].
-Examples given here are tested on Ubuntu, but the instructions should work as a guideline for installing on other Linux distrubutions.
+Examples given here are tested on Ubuntu and Arch Linux, but the instructions should work as a guideline for installing on other Linux distrubutions.
-This is the list of packages you need to have available on your system that will run Hass.io if you are using Debian/Ubuntu:
+The packages you need to have available on your system that will run Hass.io may vary.
+
+### {% linkable_title Debian/Ubuntu %}
- apparmor-utils
- apt-transport-https
@@ -113,6 +115,17 @@ This is the list of packages you need to have available on your system that will
- socat
- software-properties-common
+### {% linkable_title Arch Linux %}
+
+ - apparmor
+ - avahi
+ - ca-certificates
+ - curl
+ - dbus
+ - docker
+ - jq
+ - socat
+
You also need to have Docker-CE installed. There are well-documented procedures for installing Docker on Ubuntu at [Docker.com](https://docs.docker.com/install/linux/docker-ce/ubuntu/), you can find installation steps for your Linux distribution in the menu on the left.
@@ -120,22 +133,21 @@ You also need to have Docker-CE installed. There are well-documented procedures
Be sure to install the official Docker-CE from the above listed URL.
-To perform the Hass.io installation, run the following commands:
+To perform the Hass.io installation on Ubuntu, run the following commands:
```bash
-sudo -i
+$ sudo -i
+# apt-get install software-properties-common
+# add-apt-repository universe
+# apt-get update
+# apt-get install -y apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat
+# curl -fsSL get.docker.com | sh
+```
-apt-get install software-properties-common
+And to intall Hass.io the one below. That one is used also for other distributions.
-add-apt-repository universe
-
-apt-get update
-
-apt-get install -y apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat
-
-curl -fsSL get.docker.com | sh
-
-curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh" | bash -s
+```bash
+# curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh" | bash -s
```
From 5df1565f163167921e5c62170e50f755cc54c89a Mon Sep 17 00:00:00 2001
From: Claudio Barca
Date: Wed, 22 May 2019 23:04:27 +0200
Subject: [PATCH 50/74] Add note for ARM architecture (#9497)
* Add note for ARM architecture
* Minor change
---
source/_docs/installation/docker.markdown | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown
index 01bf2e37a54..f9c7affff37 100644
--- a/source/_docs/installation/docker.markdown
+++ b/source/_docs/installation/docker.markdown
@@ -49,7 +49,8 @@ $ docker run --init -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -
```
When running Home Assistant in Docker on Windows, you may have some difficulty getting ports to map for routing (since the `--net=host` switch actually applies to the hypervisor's network interface). To get around this, you will need to add port proxy ipv4 rules to your local Windows machine, like so (Replacing '192.168.1.10' with whatever your Windows IP is, and '10.0.50.2' with whatever your Docker container's IP is):
-```
+
+```bash
netsh interface portproxy add v4tov4 listenaddress=192.168.1.10 listenport=8123 connectaddress=10.0.50.2 connectport=8123
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8123 connectaddress=10.0.50.2 connectport=8123
```
@@ -125,7 +126,8 @@ The steps would be:
- Install "Container Station" package on your Qnap NAS
- Launch Container Station and move to "Create Container"-section
- - Search image "homeassistant/home-assistant" with Docker hub and click on "Install"
+ - Search image "homeassistant/home-assistant" with Docker hub and click on "Install"
+ Make attention to CPU architecture of your NAS. For ARM CPU types the correct image is "homeassistant/armhf-homeassistant"
- Choose "latest" version and click next
- Choose a container-name you want (e.g., "homeassistant")
- Click on "Advanced Settings"
From e5ea97bc9f4bb6f84799500450e78585e444920a Mon Sep 17 00:00:00 2001
From: Jason Lawrence
Date: Thu, 23 May 2019 10:31:06 -0500
Subject: [PATCH 51/74] Remove scan interval config option
---
source/_components/plex.markdown | 6 ------
1 file changed, 6 deletions(-)
diff --git a/source/_components/plex.markdown b/source/_components/plex.markdown
index 96897830e66..d0c56a1f492 100644
--- a/source/_components/plex.markdown
+++ b/source/_components/plex.markdown
@@ -95,7 +95,6 @@ media_player:
- platform: plex
entity_namespace: 'plex'
include_non_clients: true
- scan_interval: 5
show_all_controls: false
use_custom_entity_ids: true
use_episode_art: true
@@ -113,11 +112,6 @@ include_non_clients:
required: false
default: false
type: boolean
-scan_interval:
- description: "Amount in seconds in between polling for device’s current activity."
- required: false
- default: 10
- type: int
show_all_controls:
description: "Forces all controls to display. Ignores dynamic controls (ex. show volume controls for client A but not for client B) based on detected client capabilities. This option allows you to override this detection if you suspect it to be incorrect."
required: false
From 0825525a01dc4efa9e6fc224b716425b4679d50a Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Thu, 23 May 2019 11:03:31 -0700
Subject: [PATCH 52/74] Release 93.2
---
_config.yml | 4 ++--
source/_posts/2019-05-16-release-93.markdown | 25 ++++++++++++++++++++
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/_config.yml b/_config.yml
index 05a445c3601..d5aa5c751ed 100644
--- a/_config.yml
+++ b/_config.yml
@@ -139,8 +139,8 @@ social:
# Home Assistant release details
current_major_version: 0
current_minor_version: 93
-current_patch_version: 1
-date_released: 2019-05-17
+current_patch_version: 2
+date_released: 2019-05-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.
diff --git a/source/_posts/2019-05-16-release-93.markdown b/source/_posts/2019-05-16-release-93.markdown
index bae22fde63f..685225332f2 100644
--- a/source/_posts/2019-05-16-release-93.markdown
+++ b/source/_posts/2019-05-16-release-93.markdown
@@ -118,6 +118,31 @@ For those of you that like to power down your Sonos, Home Assistant should now h
[honeywell docs]: /components/honeywell/
[onvif docs]: /components/onvif/
+## {% linkable_title Release 0.93.2 - May 22 %}
+
+- Fix auto version update Hass.io ([@pvizeli] - [#23935])
+- Bump pytraccar ([@ludeeus] - [#23939]) ([traccar docs])
+- Fixes issue with multiple alerts ([@ludeeus] - [#23945]) ([alert docs])
+- Setup integration dependencies before loading it ([@aerialls] - [#23957])
+- Make Discord payload data key not required ([@cyrosy] - [#23964]) ([discord docs])
+- upgrade broadlink library ([@Danielhiversen] - [#23966]) ([broadlink docs])
+
+[#23935]: https://github.com/home-assistant/home-assistant/pull/23935
+[#23939]: https://github.com/home-assistant/home-assistant/pull/23939
+[#23945]: https://github.com/home-assistant/home-assistant/pull/23945
+[#23957]: https://github.com/home-assistant/home-assistant/pull/23957
+[#23964]: https://github.com/home-assistant/home-assistant/pull/23964
+[#23966]: https://github.com/home-assistant/home-assistant/pull/23966
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@aerialls]: https://github.com/aerialls
+[@cyrosy]: https://github.com/cyrosy
+[@ludeeus]: https://github.com/ludeeus
+[@pvizeli]: https://github.com/pvizeli
+[alert docs]: /components/alert/
+[broadlink docs]: /components/broadlink/
+[discord docs]: /components/discord/
+[traccar docs]: /components/traccar/
+
## {% linkable_title If you need help... %}
...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
From bad2816aadad35637924db8d82b3513d65625471 Mon Sep 17 00:00:00 2001
From: Joost Boomkamp
Date: Fri, 24 May 2019 10:02:25 +0200
Subject: [PATCH 53/74] tiny typo (#9511)
---
source/_docs/ecosystem/nginx_subdomain.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_docs/ecosystem/nginx_subdomain.markdown b/source/_docs/ecosystem/nginx_subdomain.markdown
index 64831bd8194..2c15ad8d7fb 100644
--- a/source/_docs/ecosystem/nginx_subdomain.markdown
+++ b/source/_docs/ecosystem/nginx_subdomain.markdown
@@ -64,7 +64,7 @@ You want another instance available at https://countryside.example.org
You can either :
* Create a new user, `bob`, to hold the configuration file in `/home/bob/.homeassistant/configuration.yaml` and run Home Assistant as this new user
- * Create another configuration directory in `/home/alice/.homeassistan2/configuration.yaml` and run Home Assistant using `hass --config /home/alice/.homeassistant2/`
+ * Create another configuration directory in `/home/alice/.homeassistant2/configuration.yaml` and run Home Assistant using `hass --config /home/alice/.homeassistant2/`
In both solution, change port number used by modifying `configuration.yaml` file.
From 3130ec0653474996cc5c6e547f15fd4e740b3fe4 Mon Sep 17 00:00:00 2001
From: David Bonnes
Date: Fri, 24 May 2019 22:52:05 +0100
Subject: [PATCH 54/74] Add geniushub sensors for issues (#9492)
* Initial commit
* :pencil2: Tweak
* Initial commit
---
source/_components/geniushub.markdown | 41 ++++++++++++++++++++++-----
1 file changed, 34 insertions(+), 7 deletions(-)
diff --git a/source/_components/geniushub.markdown b/source/_components/geniushub.markdown
index 00789f70031..23aa01aa395 100644
--- a/source/_components/geniushub.markdown
+++ b/source/_components/geniushub.markdown
@@ -11,17 +11,47 @@ logo: geniushub.png
ha_category:
- Climate
- Water heater
+ - Sensor
+ - Binary sensor
ha_release: 0.92
ha_iot_class: Local Polling
---
-The `geniushub` integration links Home Assistant with your Genius Hub (the hub does not have to be in the same network as HA).
+The `geniushub` integration links Home Assistant with your Genius Hub for controlling its Zones and Devices. Currently, there is no support for Zone schedules.
-Currently only **Radiator** and **Hot Water Temperature** zones are supported. Within HA, each **Radiator** zone will appear as a `Climate` device, and each **Hot Water Temperature** zone will appear as a `WaterHeater` device.
+It uses the [geniushub-client](https://pypi.org/project/geniushub-client/) library.
-The device's `operating_mode` can be set to one of `off`, `timer`, `on` (i.e. **Override** mode) or `eco`. The `eco` mode is a proxy for the **Footprint** mode and so is only available to **Radiator** zones that have room sensors.
+### {% linkable_title Zones %}
-Other properties are available via the device's state attributes, which includes a JSON data structure called `status`. For example, in the case of **Radiator** zones/`Climate` devices:
+Each Zone controlled by your Genius hub will be exposed as either a:
+
+ - `Climate` entity, for **Radiator** Zones, and
+ - `Water Heater`, for **Hot Water Temperature** Zones
+
+Other Zone types, such as **On / Off** Zones, are not currently supported.
+
+Each such entity will report back its mode, state, setpoint and current temperature; other properties are available via its attributes (see below).
+
+In addition, the entity's mode and setpoint can be changed. The entity's `operating_mode` can be set to one of `off`, `timer`, `on` (i.e. **Override** mode) or `eco`. The `eco` mode is a proxy for the **Footprint** mode and so is only available to **Radiator** Zones that have room sensors.
+
+### {% linkable_title Devices %}
+
+If the Hub is directly polled using the v3 API (see below), then each Device controlled by your Genius hub will be exposed as either a:
+
+ - `Sensor` entity with a % battery, for any Device with a battery (e.g. a Genius Valve), or
+ - `Binary Sensor` entity with on/off state for any Device that is a switch (e.g. a Smart Plug)
+
+Each such entity will report back its primary state; in addition, `assigned_zone` and `last_comms` (last communications time) are available via the entity's attributes.
+
+### {% linkable_title Issues %}
+
+There are three `Sensor` entities that will indicate the number of **Errors**, **Warnings** and **Information** issues.
+
+Each such entity has a state attribute that will contain a list of any such issues. For example, `error_list`.
+
+### {% linkable_title State Attributes %}
+
+Other properties are available via each entity's state attributes. For example, in the case of **Radiator** Zones/`Climate` devices:
```json
{
@@ -35,7 +65,6 @@ Other properties are available via the device's state attributes, which includes
}
}
}
-
```
This data can be accessed in automations, etc. via a value template. For example:
@@ -54,8 +83,6 @@ value_template: "{{ state_attr('climate.main_room', 'status').occupied }}"
```
{% endraw %}
-Currently, there is no support for modifying schedules and neither do they appear in the state attributes.
-
## {% linkable_title Configuration %}
To add your Genius Hub into your Home Assistant installation, add one of the following to your `configuration.yaml` file.
From ea232283b3c14a4c70924a4df64eb38edb7d0972 Mon Sep 17 00:00:00 2001
From: Jardi Martinez <1088732+jardiamj@users.noreply.github.com>
Date: Sat, 25 May 2019 17:34:41 -0700
Subject: [PATCH 55/74] Update source/_components/mcp23017.markdown
Co-Authored-By: Anders Melchiorsen
---
source/_components/mcp23017.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown
index b5b9ca0338e..6eb6cf88fcc 100644
--- a/source/_components/mcp23017.markdown
+++ b/source/_components/mcp23017.markdown
@@ -16,7 +16,7 @@ ha_release: 0.92
ha_iot_class: Local Polling
---
-The `mcp23017` component is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages.
+The `mcp23017` component is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding sections.
## {% linkable_title Binary Sensor %}
From 29f831a0fd51a16ee7e24e0c719de3e7d1073998 Mon Sep 17 00:00:00 2001
From: Jardi Martinez <1088732+jardiamj@users.noreply.github.com>
Date: Sat, 25 May 2019 17:34:50 -0700
Subject: [PATCH 56/74] Update source/_components/mcp23017.markdown
Co-Authored-By: Anders Melchiorsen
---
source/_components/mcp23017.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown
index 6eb6cf88fcc..bad3108f9b1 100644
--- a/source/_components/mcp23017.markdown
+++ b/source/_components/mcp23017.markdown
@@ -26,7 +26,7 @@ The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-1
## {% linkable_title Configuration %}
-To use the I/O pins of an mcp23017 connected to and I2C bus of your Raspberry Pi as binary sensors, add the following to your `configuration.yaml` file:
+To use the I/O pins of an mcp23017 connected to an I2C bus of your Raspberry Pi as binary sensors, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
From 1094afdcde75b16278526a6bf6b17ccf1025ad60 Mon Sep 17 00:00:00 2001
From: Jardi Martinez <1088732+jardiamj@users.noreply.github.com>
Date: Sat, 25 May 2019 17:35:03 -0700
Subject: [PATCH 57/74] Update source/_components/mcp23017.markdown
Co-Authored-By: Anders Melchiorsen
---
source/_components/mcp23017.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown
index bad3108f9b1..b3584bf9a63 100644
--- a/source/_components/mcp23017.markdown
+++ b/source/_components/mcp23017.markdown
@@ -84,7 +84,7 @@ The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-1
## {% linkable_title Configuration %}
-To use the I/O pins of an mcp23017 connected to and I2C bus of your Raspberry Pi as switches, add the following to your `configuration.yaml` file:
+To use the I/O pins of an mcp23017 connected to an I2C bus of your Raspberry Pi as switches, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
From b074788c96b08e0ad8e36d8c0eec01de6e49a5b1 Mon Sep 17 00:00:00 2001
From: "Jardi A. Martinez Jordan" <1088732+jardiamj@users.noreply.github.com>
Date: Sat, 25 May 2019 18:18:59 -0700
Subject: [PATCH 58/74] Updated documentation for mcp23017 component.
---
source/_components/mcp23017.markdown | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown
index b3584bf9a63..f7c71b9119b 100644
--- a/source/_components/mcp23017.markdown
+++ b/source/_components/mcp23017.markdown
@@ -18,13 +18,15 @@ ha_iot_class: Local Polling
The `mcp23017` component is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding sections.
+For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017).
+
## {% linkable_title Binary Sensor %}
The `mcp23017` binary sensor platform allows you to read sensor values from the I/O pins of your [MCP23017 I2C I/O expander](https://www.adafruit.com/product/732).
The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-15 to port B (B1-B8).
-## {% linkable_title Configuration %}
+### {% linkable_title Configuration %}
To use the I/O pins of an mcp23017 connected to an I2C bus of your Raspberry Pi as binary sensors, add the following to your `configuration.yaml` file:
@@ -74,15 +76,13 @@ pull_mode:
NOTE: MCP23017 only has internal pull-up resistors, if you want to use pull-down you will have to wire your own pull-down resistors.
-For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017).
-
## {% linkable_title Switch %}
The `mcp23017` switch platform allows you to write to the I/O pins of your [MCP23017 I2C I/O expander](https://www.adafruit.com/product/732).
The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-15 to port B (B1-B8).
-## {% linkable_title Configuration %}
+### {% linkable_title Configuration %}
To use the I/O pins of an mcp23017 connected to an I2C bus of your Raspberry Pi as switches, add the following to your `configuration.yaml` file:
@@ -117,5 +117,3 @@ invert_logic:
default: false
type: boolean
{% endconfiguration %}
-
-For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017).
From 28aa919d0b67d303c0ba40ad2154a8116c0c8255 Mon Sep 17 00:00:00 2001
From: jgriff2
Date: Sun, 26 May 2019 14:54:40 -0700
Subject: [PATCH 59/74] Update remote_rpi_gpio.markdown
---
source/_components/remote_rpi_gpio.markdown | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)
diff --git a/source/_components/remote_rpi_gpio.markdown b/source/_components/remote_rpi_gpio.markdown
index 9cc1eef6b6b..ab7112f0eb8 100644
--- a/source/_components/remote_rpi_gpio.markdown
+++ b/source/_components/remote_rpi_gpio.markdown
@@ -30,21 +30,16 @@ To use your Remote Raspberry Pi's GPIO in your installation, add the following t
# Example configuration.yaml entry
binary_sensor:
- platform: remote_rpi_gpio
+ address:
ports:
11: PIR Office
12: PIR Bedroom
-```
-
-or
-
-```yaml
-# Example configuration.yaml entry
-remote_rpi_gpio:
- host: 10.0.1.9
- binary_sensors:
- 6: Pin6
- switches:
- 4: Pin4
+
+switch:
+ - platform: remote_rpi_gpio
+ address:
+ ports:
+ 4: Garage Relay
```
{% configuration %}
From be34da7215bf5e1a1646b5c95a9686ad36abb260 Mon Sep 17 00:00:00 2001
From: Kevin Fronczak
Date: Mon, 27 May 2019 06:22:58 -0400
Subject: [PATCH 60/74] Update Blink docs with new options (#9508)
* Update example configs with new options
* Minor changes
---
source/_components/blink.markdown | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/source/_components/blink.markdown b/source/_components/blink.markdown
index 0232e4de8d4..483831ff3c7 100644
--- a/source/_components/blink.markdown
+++ b/source/_components/blink.markdown
@@ -73,6 +73,16 @@ sensors:
required: false
type: list
default: all (`battery`, `temperature`, `wifi_strength`)
+offset:
+ description: How far back in time (minutes) to look for motion. Motion is determined if a new video has been recorded between now and the last time you refreshed plus this offset.
+ required: false
+ type: integer
+ default: 1
+mode:
+ description: Set to 'legacy' to enable use of old API endpoint subdomains (APIs can differ based on region, so use this if you are having issues with the integration).
+ required: false
+ type: string
+ default: not set
{% endconfiguration %}
Once Home Assistant starts, the `blink` component will create the following platforms:
From 13e2a2d0d57119c36557fbafbcbd01e3a03ae442 Mon Sep 17 00:00:00 2001
From: Honza Slesinger
Date: Tue, 28 May 2019 14:15:22 +0200
Subject: [PATCH 61/74] Fixing service name to call (#9524)
---
source/_components/python_script.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/python_script.markdown b/source/_components/python_script.markdown
index b6ff87d258e..574a426b159 100644
--- a/source/_components/python_script.markdown
+++ b/source/_components/python_script.markdown
@@ -38,7 +38,7 @@ hass.bus.fire(name, { "wow": "from a Python script!" })
```
- Start Home Assistant
- - Call service `python_script/hello_world` with parameters
+ - Call service `python_script.hello_world` with parameters
```json
{
From f8349115ffc18b6a0f8bf9f119825b13e1597cd2 Mon Sep 17 00:00:00 2001
From: Dylan
Date: Tue, 28 May 2019 08:16:45 -0400
Subject: [PATCH 62/74] adding icon_template example (#9527)
---
.../binary_sensor.template.markdown | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown
index a5648394bca..71cb01894b7 100644
--- a/source/_components/binary_sensor.template.markdown
+++ b/source/_components/binary_sensor.template.markdown
@@ -215,3 +215,30 @@ binary_sensor:
or is_state('binary_sensor.family_room_144', 'on') }}
```
{% endraw %}
+
+### {% linkable_title Change the icon when state changes %}
+
+This example demonstrates how to use `icon_template` to change the entity's
+icon as its state changes, it evaluates the state of its own sensor and uses a
+conditional statement to output the appropriate icon.
+
+
+{% raw %}
+```yaml
+sun:
+binary_sensor:
+ - platform: template
+ sensors:
+ sun_up:
+ entity_id:
+ - sun.sun
+ value_template: >-
+ {{ is_state("sun.sun", "above_horizon") }}
+ icon_template: >-
+ {% if is_state("binary_sensor.sun_up", "on") %}
+ mdi:weather-sunset-up
+ {% else %}
+ mdi:weather-sunset-down
+ {% endif %}
+```
+{% endraw %}
From dda0e1af18483e1c962926f31506d433fe4a6b49 Mon Sep 17 00:00:00 2001
From: Jef D
Date: Tue, 28 May 2019 14:44:18 +0200
Subject: [PATCH 63/74] Link to where the parameters can typically be found
(#9526)
* Link to where the parameters can typically be found
* Update link
---
source/_docs/scripts/service-calls.markdown | 2 ++
1 file changed, 2 insertions(+)
diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown
index 6a706456f13..616ef6ffd3e 100644
--- a/source/_docs/scripts/service-calls.markdown
+++ b/source/_docs/scripts/service-calls.markdown
@@ -41,6 +41,8 @@ data:
rgb_color: [255, 0, 0]
```
+A full list of the parameters for a service can be found on the documentation page of each component, in the same way as it's done for the `light.turn_on` [service](/components/light/#service-lightturn_on).
+
### {% linkable_title Use templates to decide which service to call %}
You can use [templating] support to dynamically choose which service to call. For example, you can call a certain service based on if a light is on.
From 110d939767d53560ae3cc40074ca4bae10e71860 Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Wed, 29 May 2019 10:18:13 +0200
Subject: [PATCH 64/74] =?UTF-8?q?=20=E2=9C=8F=EF=B8=8F=20Extra=20info=20fo?=
=?UTF-8?q?r=20DB=20size=20sensor=20(#9528)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* :pencil2: Extra info for a good working sensor
* Minor change
---
source/_components/sql.markdown | 2 ++
1 file changed, 2 insertions(+)
diff --git a/source/_components/sql.markdown b/source/_components/sql.markdown
index bf3ba0cfb08..a2ee887e342 100644
--- a/source/_components/sql.markdown
+++ b/source/_components/sql.markdown
@@ -131,6 +131,8 @@ sensor:
#### {% linkable_title MariaDB/MySQL %}
+Change `table_schema="hass"` to the name that you use as the database name, to ensure that your sensor will work properly.
+
{% raw %}
```yaml
sensor:
From ff5ce7bfec26050409a32f2067cb78bf5ea413a7 Mon Sep 17 00:00:00 2001
From: jeff-h
Date: Wed, 29 May 2019 20:25:59 +1200
Subject: [PATCH 65/74] Add camera example. (#9521)
* Add camera example.
* :pencil2: Tweak
* :pencil2: Tweak
* Needs raw
---
source/_lovelace/picture-entity.markdown | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown
index 792ea1ab73f..e375c25a9cb 100644
--- a/source/_lovelace/picture-entity.markdown
+++ b/source/_lovelace/picture-entity.markdown
@@ -132,3 +132,21 @@ state_image:
"on": /local/bed_light_on.png
"off": /local/bed_light_off.png
```
+
+Displaying a live feed from an FFMPEG camera:
+
+{% raw %}
+```yaml
+type: picture-entity
+entity: camera.backdoor
+camera_view: live
+tap_action:
+ action: call-service
+ service: camera.snapshot
+ service_data:
+ entity_id: camera.backdoor
+ filename: '/shared/backdoor-{{ now().strftime("%Y-%m-%d-%H%M%S") }}.jpg'
+```
+{% endraw %}
+
+The filename needs to be a path that is writable by Home Assistant in your system. You may need to configure `whitelist_external_dirs` ([documentation](https://www.home-assistant.io/docs/configuration/basic/)).
From 7733304ca79b2980bf25ae3f293e1cfe3a6a8854 Mon Sep 17 00:00:00 2001
From: Ian
Date: Wed, 29 May 2019 09:27:42 -0500
Subject: [PATCH 66/74] Update travis.yml
Recent compartmentalization of the HASS install has caused some things to break within Travis, and [this fix has been demonstrated to correct the issue](https://github.com/Apocrathia/home-assistant-config/pull/25).
---
source/_docs/ecosystem/backup/backup_github.markdown | 1 +
1 file changed, 1 insertion(+)
diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown
index 497b788520c..397b7cbc608 100644
--- a/source/_docs/ecosystem/backup/backup_github.markdown
+++ b/source/_docs/ecosystem/backup/backup_github.markdown
@@ -162,6 +162,7 @@ python:
- "3.5"
before_install:
- mv travis_secrets.yaml secrets.yaml
+ - sudo apt-get install -y libudev-dev
install:
- pip3 install homeassistant
script:
From 538bf59b5c7ea05bcf6066c303845d87490890db Mon Sep 17 00:00:00 2001
From: Koen Ekelschot
Date: Wed, 29 May 2019 20:23:57 +0200
Subject: [PATCH 67/74] Fix new log entry example
---
source/_components/system_log.markdown | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/source/_components/system_log.markdown b/source/_components/system_log.markdown
index 79229d5cdc8..3096336ea0f 100644
--- a/source/_components/system_log.markdown
+++ b/source/_components/system_log.markdown
@@ -141,8 +141,9 @@ automation:
to: 'on'
action:
service: system_log.write
- message: 'Door opened!'
- level: info
+ data_template:
+ message: 'Door opened!'
+ level: info
```
{% endraw %}
From 89d2eac7135d7cd9c4588129d703557e30e9b2b7 Mon Sep 17 00:00:00 2001
From: IIIdefconIII
Date: Wed, 29 May 2019 22:33:22 +0200
Subject: [PATCH 68/74] Update apache.markdown
---
source/_docs/ecosystem/apache.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_docs/ecosystem/apache.markdown b/source/_docs/ecosystem/apache.markdown
index 92c27eb51a7..ec06ed63eb9 100644
--- a/source/_docs/ecosystem/apache.markdown
+++ b/source/_docs/ecosystem/apache.markdown
@@ -28,7 +28,7 @@ Enable [`mod_proxy_wstunnel`](https://httpd.apache.org/docs/2.4/mod/mod_proxy_ws
$ sudo a2enmod proxy_wstunnel
```
-To be able to access to your Home Assistant instance by using https://home.example.org, add to following file to `/etc/httpd/conf/extra/` as `hass.conf`
+To be able to access to your Home Assistant instance by using https://home.example.org, add the following file to `/etc/httpd/conf/extra/` as `hass.conf`
```text
From 72a5b68b43d3a5abbb132cfb0fdc85a2f1a5ac06 Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Wed, 29 May 2019 23:39:18 +0200
Subject: [PATCH 69/74] :pencil2: Tweak
After this we will merge it
---
source/_components/solax.markdown | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)
diff --git a/source/_components/solax.markdown b/source/_components/solax.markdown
index 18c0d21321f..180fee62291 100644
--- a/source/_components/solax.markdown
+++ b/source/_components/solax.markdown
@@ -8,8 +8,10 @@ comments: false
sharing: true
footer: true
logo: solax-logo.png
-ha_category: Sensor
-ha_release: 0.91
+ha_category:
+ - Energy
+ - Sensor
+ha_release: 0.94
ha_iot_class: Local Polling
---
@@ -33,17 +35,7 @@ ip_address:
type: string
{% endconfiguration %}
-
-### {% linkable_title Full configuration sample %}
-
-A full configuration entry would look like the sample below.
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: solax
- ip_address: 192.168.0.3
-```
+### {% linkable_title Optional template sensor %}
If you would like to convert the values from multiple panels or view the total power the house is using, you can use the [template platform](/components/sensor.template/).
From 5492da48660e9e6bfa00195256fef9c6ba39e1d9 Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Wed, 29 May 2019 23:41:30 +0200
Subject: [PATCH 70/74] :pencil2: Tweak
After this we will merge it
---
source/_components/remote_rpi_gpio.markdown | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/source/_components/remote_rpi_gpio.markdown b/source/_components/remote_rpi_gpio.markdown
index ab7112f0eb8..50f75828065 100644
--- a/source/_components/remote_rpi_gpio.markdown
+++ b/source/_components/remote_rpi_gpio.markdown
@@ -12,7 +12,7 @@ ha_category:
- DIY
- Binary Sensor
- Switch
-ha_release:
+ha_release: 0.94
ha_iot_class: Local Push
---
@@ -22,8 +22,6 @@ The `rpi_gpio` component is the base for all related GPIO platforms in Home Assi
The `remote_rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/).
-## {% linkable_title Configuration %}
-
To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file:
```yaml
@@ -77,8 +75,6 @@ For more details about the GPIO layout, visit the Wikipedia [article](https://en
The `remote_rpi_gpio` switch platform allows you to control the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/).
-## {% linkable_title Configuration %}
-
To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file:
```yaml
From e7e18cc24b96752c041f492503e6da7914feea80 Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Wed, 29 May 2019 23:43:35 +0200
Subject: [PATCH 71/74] :pencil2: Tweak
After this we will merge it
---
source/_components/mcp23017.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown
index f7c71b9119b..2ac764d35ec 100644
--- a/source/_components/mcp23017.markdown
+++ b/source/_components/mcp23017.markdown
@@ -12,7 +12,7 @@ ha_category:
- DIY
- Binary Sensor
- Switch
-ha_release: 0.92
+ha_release: 0.94
ha_iot_class: Local Polling
---
From 11e131ccfb83c9675041dfe701ecf4ab2b480ebf Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Wed, 29 May 2019 23:45:19 +0200
Subject: [PATCH 72/74] :pencil2: Tweak
After this we will merge it
---
source/_components/spaceapi.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/spaceapi.markdown b/source/_components/spaceapi.markdown
index beb7cd8d5e1..34d9add3420 100644
--- a/source/_components/spaceapi.markdown
+++ b/source/_components/spaceapi.markdown
@@ -116,7 +116,7 @@ sensors:
The list of sensors can be any sensor, not just temperature or humidity.
-## Sensor specific location
+## {% linkable_title Sensor specific location %}
The [SpaceAPI specification](https://spaceapi.io/pages/docs.html) requires every sensor to provide a location.
In order to set a sensor specific location do the following steps:
From fae2293b1552927bb15ff7621e3f3cdba46f882a Mon Sep 17 00:00:00 2001
From: Klaas Schoute
Date: Wed, 29 May 2019 23:53:13 +0200
Subject: [PATCH 73/74] :pencil2: Put something in a html note
---
source/_components/mcp23017.markdown | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown
index 2ac764d35ec..4629de4e426 100644
--- a/source/_components/mcp23017.markdown
+++ b/source/_components/mcp23017.markdown
@@ -74,7 +74,9 @@ pull_mode:
default: "`UP`"
{% endconfiguration %}
-NOTE: MCP23017 only has internal pull-up resistors, if you want to use pull-down you will have to wire your own pull-down resistors.
+
+ MCP23017 only has internal pull-up resistors, if you want to use pull-down you will have to wire your own pull-down resistors.
+
## {% linkable_title Switch %}
From 5d99d95c0c87ea58d691c3919a88b127fc8f6715 Mon Sep 17 00:00:00 2001
From: Morten Trab
Date: Thu, 30 May 2019 10:37:08 +0200
Subject: [PATCH 74/74] Add Repetier-Server component documentation (#9362)
* Updated to newest developer version of Repetier platform
* :pencil2: Tweak
After this we will merge it
* Added Repetier Logo file
---
source/_components/repetier.markdown | 111 ++++++++++++++++++++
source/images/supported_brands/repetier.png | Bin 0 -> 27990 bytes
2 files changed, 111 insertions(+)
create mode 100644 source/_components/repetier.markdown
create mode 100755 source/images/supported_brands/repetier.png
diff --git a/source/_components/repetier.markdown b/source/_components/repetier.markdown
new file mode 100644
index 00000000000..15654ed411a
--- /dev/null
+++ b/source/_components/repetier.markdown
@@ -0,0 +1,111 @@
+---
+layout: page
+title: Repetier-Server Component
+description: "Instructions how to add Repetier-Server sensors to Home Assistant."
+date: 2019-05-01
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: repetier.png
+ha_category:
+ - Hub
+ - Sensor
+featured: false
+ha_release: 0.94
+ha_iot_class: Local Polling
+---
+
+[Repetier-Server](https://www.repetier-server.com/) is a 3D printer/CNC server, able to control multiple devices on the same server.
+This component handles the main integration to the server.
+
+There is currently support for the following device types within Home Assistant:
+
+- Sensor
+
+## {% linkable_title Configuration %}
+
+```yaml
+repetier:
+ - host: REPETIER_HOST
+ api_key: YOUR_API_KEY
+```
+
+{% configuration %}
+repetier:
+ type: list
+ required: true
+ keys:
+ host:
+ description: The host IP or hostname of your Repetier-Server.
+ required: true
+ type: string
+ api_key:
+ description: API-key for the user used to connect to Repetier-Server
+ required: true
+ type: string
+ port:
+ description: The port used to connect to the host
+ required: false
+ type: integer
+ default: 3344
+ sensors:
+ description: Configuration for the sensors.
+ required: false
+ type: map
+ keys:
+ monitored_conditions:
+ description: The sensors to activate.
+ type: list
+ default: all
+ keys:
+ "current_state":
+ description: Text of current state.
+ "extruder_temperature":
+ description: Temperatures of all available extruders. These will be displayed as `printer_name_extruder_N`.
+ "bed_temperature":
+ description: Temperatures of all available heated beds. These will be displayed as `printer_name_bed_N`.
+ "chamber_temperature":
+ description: Temperatures of all available heated chambers. These will be displayed as `printer_name_chamber_N`.
+ "current_job":
+ description: Returns percentage done of current job in state, and current job information as attributes.
+ "job_start":
+ description: Start timestamp of job start.
+ "job_end":
+ description: Estimated job end timestamp.
+{% endconfiguration %}
+
+Example with multiple Repetier Servers:
+
+```yaml
+repetier:
+ - host: REPETIER_HOST
+ api_key: YOUR_API_KEY
+ sensors:
+ monitored_conditions:
+ - 'current_state'
+ - 'current_job'
+ - host: REPETIER_HOST
+ api_key: YOUR_API_KEY
+ port: 3344
+```
+
+If the Repetier-Server host is equipped with a web camera it is possible to add this as well.
+
+```yaml
+camera:
+ - platform: mjpeg
+ name: Repetier
+ still_image_url: http://YOUR_REPETIER_HOST_IP:8080/?action=snapshot
+ mjpeg_url: http://YOUR_REPETIER_HOST_IP:8080/?action=stream
+```
+
+### {% linkable_title Retrieve API-key %}
+
+To generate the needed API-key do the following:
+
+* Go to your Repetier Server web-console
+* Push the settings icon (the gear icon)
+* Select User Profiles.
+* Create a new user, deselect all options and click Create User.
+* Edit the newly created user and take note of the API-key for this user, that's the one to use in the Home Assistant Settings
diff --git a/source/images/supported_brands/repetier.png b/source/images/supported_brands/repetier.png
new file mode 100755
index 0000000000000000000000000000000000000000..7cbba43ad45cdc70bc56f6c84f95c0013b2b45a2
GIT binary patch
literal 27990
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 JW&IQR#l_c!
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
literal 0
HcmV?d00001
|