diff --git a/.gitignore b/.gitignore index 28eb6d32a303..6384f76a26c6 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ public source/_stash source/stylesheets/screen.css +source/.jekyll-cache/ vendor node_modules source/.jekyll-metadata diff --git a/.gitpod.yml b/.gitpod.yml index d51137f42225..6a0df4ab419d 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -11,5 +11,5 @@ github: pullRequestsFromForks: true addCheck: true addComment: false - addBadge: true + addBadge: false addLabel: false diff --git a/Gemfile b/Gemfile index 1a06732930d2..5575c63b3470 100644 --- a/Gemfile +++ b/Gemfile @@ -3,8 +3,8 @@ source "https://rubygems.org" ruby "> 2.5.0" group :development do - gem 'rake', '12.3.2' - gem 'jekyll', '3.8.6' + gem 'rake', '12.3.3' + gem 'jekyll', '4.0.0' gem 'compass', '1.0.3' gem 'sass-globbing', '1.1.5' gem 'stringex', '2.8.5' @@ -18,5 +18,5 @@ group :jekyll_plugins do gem 'jekyll-commonmark-ghpages', '0.1.6' end -gem 'sinatra', '2.0.5' -gem 'nokogiri', '1.10.4' +gem 'sinatra', '2.0.6' +gem 'nokogiri', '1.10.3' diff --git a/Gemfile.lock b/Gemfile.lock index 222b24c147a0..d97ab481bc38 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -27,21 +27,23 @@ GEM ffi (1.11.1) forwardable-extended (2.6.0) http_parser.rb (0.6.0) - i18n (0.9.5) + i18n (1.6.0) concurrent-ruby (~> 1.0) - jekyll (3.8.6) + jekyll (4.0.0) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) - i18n (~> 0.7) - jekyll-sass-converter (~> 1.0) + i18n (>= 0.9.5, < 2) + jekyll-sass-converter (~> 2.0) jekyll-watch (~> 2.0) - kramdown (~> 1.14) + kramdown (~> 2.1) + kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) - rouge (>= 1.7, < 4) + rouge (~> 3.0) safe_yaml (~> 1.0) + terminal-table (~> 1.8) jekyll-commonmark (1.3.1) commonmarker (~> 0.14) jekyll (>= 3.7, < 5.0) @@ -52,15 +54,17 @@ GEM jekyll-paginate (1.1.0) jekyll-redirect-from (0.15.0) jekyll (>= 3.3, < 5.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) + jekyll-sass-converter (2.0.0) + sassc (> 2.0.1, < 3.0) jekyll-sitemap (1.3.1) jekyll (>= 3.7, < 5.0) jekyll-time-to-read (0.1.2) jekyll jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (1.17.0) + kramdown (2.1.0) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) liquid (4.0.3) listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) @@ -76,13 +80,13 @@ GEM forwardable-extended (~> 2.6) public_suffix (3.1.1) rack (2.0.7) - rack-protection (2.0.5) + rack-protection (2.0.6) rack - rake (12.3.2) + rake (12.3.3) rb-fsevent (0.10.3) rb-inotify (0.10.0) ffi (~> 1.0) - rouge (3.6.0) + rouge (3.9.0) ruby-enum (0.7.2) i18n ruby_dep (1.5.0) @@ -90,29 +94,34 @@ GEM sass (3.4.25) sass-globbing (1.1.5) sass (>= 3.1) - sinatra (2.0.5) + sassc (2.1.0) + ffi (~> 1.9) + sinatra (2.0.6) mustermann (~> 1.0) rack (~> 2.0) - rack-protection (= 2.0.5) + rack-protection (= 2.0.6) tilt (~> 2.0) stringex (2.8.5) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) tilt (2.0.9) + unicode-display_width (1.6.0) PLATFORMS ruby DEPENDENCIES compass (= 1.0.3) - jekyll (= 3.8.6) + jekyll (= 4.0.0) jekyll-commonmark-ghpages (= 0.1.6) jekyll-paginate (= 1.1.0) jekyll-redirect-from (= 0.15.0) jekyll-sitemap (= 1.3.1) jekyll-time-to-read (= 0.1.2) - nokogiri (= 1.10.4) - rake (= 12.3.2) + nokogiri (= 1.10.3) + rake (= 12.3.3) sass-globbing (= 1.1.5) - sinatra (= 2.0.5) + sinatra (= 2.0.6) stringex (= 2.8.5) RUBY VERSION diff --git a/source/_components/androidtv.markdown b/source/_components/androidtv.markdown index 47e26e2e6a1d..934c95e9c556 100644 --- a/source/_components/androidtv.markdown +++ b/source/_components/androidtv.markdown @@ -20,11 +20,11 @@ For Fire TV devices, the instructions are as follows: - Turn on ADB Debugging on your Amazon Fire TV: - From the main (Launcher) screen, select Settings. - - Select System > Developer Options. + - Select My Fire TV > Developer Options. - Select ADB Debugging. - Find Amazon Fire TV device IP address: - From the main (Launcher) screen, select Settings. - - Select System > About > Network. + - Select My Fire TV > About > Network. ## Configuration diff --git a/source/_components/fritz.markdown b/source/_components/fritz.markdown index 064c781671c9..87d56c5f247f 100644 --- a/source/_components/fritz.markdown +++ b/source/_components/fritz.markdown @@ -15,7 +15,7 @@ The `fritz` platform offers presence detection by looking at connected devices t ## Setup
-It might be necessary to install additional packages: sudo apt-get install python3-lxml libxslt-dev libxml2-dev zlib1g-dev +If not running Hass.io it might be necessary to install additional packages: sudo apt-get install python3-lxml libxslt-dev libxml2-dev zlib1g-dev If you installed Home Assistant in a virtualenv, run the following commands inside it: pip3 install lxml; be patient this will take a while.
## Configuration diff --git a/source/_components/heos.markdown b/source/_components/heos.markdown index d49f308d4d55..6215885e0cc3 100644 --- a/source/_components/heos.markdown +++ b/source/_components/heos.markdown @@ -76,7 +76,7 @@ You can play a HEOS favorite by number or name with the `media_player.play_media | Attribute | Description | ---------------------- | ---------------------------------------------------------| | `entity_id` | `entity_id` of the player -| `media_content_type` | Set to the value `playlist` +| `media_content_type` | Set to the value `favorite` | `media_content_id` | The nubmer (i.e. `1`) or name (i.e. `Thumbprint Radio`) of the HEOS favorite #### Play Playlist @@ -157,4 +157,4 @@ logger: If the HEOS controller is not signed in to a HEOS account, HEOS favorites will not be populated in the media player source selection and the service `media_player.play_media` for `favorite` and `playlist` will fail. Additionally, the following warning will be logged at startup: > IP_ADDRESS is not logged in to a HEOS account and will be unable to retrieve HEOS favorites: Use the 'heos.sign_in' service to sign-in to a HEOS account -To resolve this issue, use the `heos.sign_out` service to sign the controller into an account as documented above. This only needs to be performed once, as the controller will remain signed in while the account credentials are valid. +To resolve this issue, use the `heos.sign_in` service to sign the controller into an account as documented above. This only needs to be performed once, as the controller will remain signed in while the account credentials are valid. diff --git a/source/_components/plex.markdown b/source/_components/plex.markdown index 713c260050a5..c5ee2b627146 100644 --- a/source/_components/plex.markdown +++ b/source/_components/plex.markdown @@ -14,108 +14,79 @@ redirect_from: --- -The `plex` platform allows you to connect to a [Plex Media Server](https://plex.tv). Once connected, [Plex Clients](https://www.plex.tv/apps-devices/) playing media from the connected Plex Media Server will show up as [Media Players](/components/media_player/) in Home Assistant. It will allow you to control media playback and see the current playing item. +The `plex` platform allows you to connect to a [Plex Media Server](https://plex.tv). Once connected, [Plex Clients](https://www.plex.tv/apps-devices/) playing media from the connected Plex Media Server will show up as [Media Players](/components/media_player/) or report playback status via a [Sensor](/components/sensor/) in Home Assistant. The Media Players will allow you to control media playback and see the current playing item. There is currently support for the following device types within Home Assistant: -- [Media Player](#setup---media-player) +- [Media Player](#media-player) - [Sensor](#sensor) -## Setup - Media Player +## Setup -The preferred way to setup the Plex platform is by enabling the [discovery component](/components/discovery/) which requires GDM enabled on your Plex server. This can be found on your Plex Web App under Settings > (server Name) > settings > Network and choose "Enable local network discovery (GDM)". +Home Assistant offers Plex integration through **Configuration** -> **Integrations** -> **Plex**. Creating a Plex integration will automatically enable both the `media_player` and `sensor` platforms. For legacy support, existing `media_player` and `sensor` configurations are automatically imported and set up as new integrations. -If your Plex server has local authentication enabled or multiple users defined, Home Assistant requires an authentication token to be entered in the frontend. Press "CONFIGURE" to do it. +If your Plex server has been claimed by a Plex account via the [claim interface](https://plex.tv/claim), Home Assistant will require an authentication token to connect. If you don't know your token, see [Finding your account token / X-Plex-Token](https://support.plex.tv/hc/en-us/articles/204059436). -

- -

+When adding a Plex integration, providing this token is usually enough for automatic setup. If multiple servers have been claimed by the account associated with the token, you will be prompted to select one to monitor. If you would like to monitor multiple servers linked to the same account, simply set up an additional Plex integration. -To authorize your device, you'll first need to [click here to claim a token](https://plex.tv/claim). - -If your server enforces SSL connections, write "`on`" or "`true`" in the _"Use SSL"_ field. If it does not have a valid SSL certificate available but you still want to use it, write "`on`" or "`true`" in the _"Do not verify SSL"_ field as well. - -

- -

- -You can also enable the plex platform directly by adding the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: plex -``` - -In the event that [discovery](/components/discovery/) does not work (GDM disabled or non-local Plex server), you can manually create a `plex.conf` file manually and place it in your [configuration directory ](/docs/configuration/) or `/config/` if you are running Hass.io. The following is an example of `plex.conf`: - -```json -{"IP_ADDRESS:PORT": {"token": "TOKEN", "ssl": false, "verify": true}} -``` +If you'd prefer to manually configure the server connection, select the 'Manual setup' checkbox and fill out the appropriate fields on the next page. You will need to provide the following information: {% configuration %} -IP_ADDRESS: - description: IP address of the Plex Media Server. - required: true +Host: + description: Hostname or IP address of the Plex Media Server. type: string -PORT: - description: Port where Plex is listening. - required: true - default: 32400 +Port: + description: Port where Plex server is listening. type: integer -TOKEN: - description: Only if authentication is required. Set to `null` (without quotes) otherwise. - required: false - type: string -ssl: - description: Whether to use SSL/TLS or not. - required: false - default: "`false`" + default: 32400 +Use SSL: + description: Enable to use HTTPS connections to the server. type: boolean + default: false verify: - description: Perform a verification of the certificate. To allow invalid or self-signed SSL certificates set it to `false`. - required: false - default: "`true`" + description: Perform a verification of the certificate. Uncheck to allow invalid or self-signed certificates. type: boolean + default: true +Token: + description: Provide if authentication is required. Also known as `X-Plex-Token`. + type: string + required: false {% endconfiguration %} +The Plex platform will offer to set up a local server by enabling the [discovery component](/components/discovery/) which requires GDM enabled on your Plex server. This can be enabled via your Plex Web App under **Settings** -> **(Server Name)** -> **Settings** -> **Network** and choosing "Enable local network discovery (GDM)". + + ### Customization -You can customize the Plex integration by adding any of the variables below to your configuration: +You can customize each Plex integration by selecting it and opening the options panel represented by the gear icon in the top-right of the interface. Here you can enable/disable each of the `media_player` and `sensor` platforms per integration. -```yaml -# Example configuration.yaml entry -media_player: - - platform: plex - show_all_controls: false - use_episode_art: true - remove_unavailable_clients: true - client_remove_interval: 600 -``` +Additional options for the `media_player` platform: {% configuration %} -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 +Use episode art: + description: Display TV episode art instead of TV show art. default: false type: boolean -use_episode_art: - description: Display TV episode art instead of TV show art. - required: false +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. default: false type: boolean -remove_unavailable_clients: - description: Remove stale plex clients from UI after interval. - required: false +Remove unavailable clients: + description: Remove stale Plex clients from UI after interval. default: true type: boolean -client_remove_interval: - description: How long a client is to be unavailable for before it is cleaned up in seconds. - required: false +Client remove interval: + description: How long a client is to be unavailable for before it is removed. Measured in seconds. default: 600 type: integer {% endconfiguration %} +## Sensor + +The `plex` sensor platform will monitor activity on a given [Plex Media Server](https://plex.tv/). It will create a sensor that shows the number of currently watching users as the state. If you click the sensor for more details it will show you who is watching what. + +## Media Player + ### Service `play_media` Plays a song, playlist, TV episode, or video on a connected client. @@ -167,7 +138,7 @@ Plays a song, playlist, TV episode, or video on a connected client. ### Notes -* At this moment, the Plex platform only supports one Plex Media Server. +* The Plex platform supports multiple Plex Media Servers via configuring multiple Plex integrations. * It is possible to get errors that look like the following. ``` @@ -177,63 +148,3 @@ Plays a song, playlist, TV episode, or video on a connected client. If this occurs, check the setting `Server`>`Network`>`Secure connections` on your Plex Media Server: if it is set to `Preferred` or `Required`, you may need to manually set the `ssl` and `verify` booleans in the `plex.conf` file to, respectively, `true` and `false`. See the **"Setup"** section above for details. * Movies must be located under 'Movies' section in the Plex library to properly get 'playing' state. - -## Sensor - -The `plex` sensor platform will monitor activity on a given [Plex Media Server](https://plex.tv/). It will create a sensor that shows the number of currently watching users as the state. If you click the sensor for more details it will show you who is watching what. - -If your Plex server is on the same local network as Home Assistant, all you need to provide in the `configuration.yaml` is the host or IP address. If you want to access a remote Plex server, you must provide the Plex username, password, and optionally the server name of the remote Plex server. If no server name is given it will use the first server listed. If you use the username and password, all servers in that account are monitored. - -If you don't know your token, see [Finding your account token / X-Plex-Token](https://support.plex.tv/hc/en-us/articles/204059436). - -If you want to enable the plex sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: plex -``` - -{% configuration %} -host: - description: The IP address of your Plex server. - required: false - default: localhost - type: string -port: - description: The port of your Plex Server. - required: false - default: 32400 - type: integer -name: - description: Name of the Plex server. - required: false - default: Plex - type: string -username: - description: The username for the remote Plex server. - required: false - type: string -password: - description: The password for your given account on the remote Plex server. - required: false - type: string -server: - description: The name of your remote Plex server. - required: false - type: string -token: - description: X-Plex-Token of your remote Plex server. - required: false - type: string -ssl: - description: Use HTTPS to connect to Plex server, **NOTE:** host **must not** be an IP when this option is enabled. - required: false - default: false - type: boolean -verify_ssl: - description: Verify the SSL certificate of your Plex server. You may need to disable this check if your local server enforces secure connections with the default certificate. - required: false - default: true - type: boolean -{% endconfiguration %} diff --git a/source/_components/stream.markdown b/source/_components/stream.markdown index acb08911a28a..215c201f939e 100644 --- a/source/_components/stream.markdown +++ b/source/_components/stream.markdown @@ -59,7 +59,7 @@ To do this add either [picture-entity](/lovelace/picture-entity/), [picture-glan Some users on manual installs may see the following error in their logs after restarting: -``` +```text 2019-03-12 08:49:59 ERROR (SyncWorker_5) [homeassistant.util.package] Unable to install package av==6.1.2: Command "/home/pi/home-assistant/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-udfl2b3t/av/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-ftn5zmh2/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/home-assistant/include/site/python3.6/av" failed with error code 1 in /tmp/pip-install-udfl2b3t/av/ 2019-03-12 08:49:59 ERROR (MainThread) [homeassistant.requirements] Not initializing stream because could not install requirement av==6.1.2 2019-03-12 08:49:59 ERROR (MainThread) [homeassistant.setup] Setup failed for stream: Could not install all requirements. @@ -67,6 +67,6 @@ Some users on manual installs may see the following error in their logs after re If you see this error you can solve it by running the following commands and restarting Home Assistant (commands do not need to be ran as the `homeassistant` user): -``` +```text sudo apt-get install -y python-dev pkg-config libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libavresample-dev libavfilter-dev ``` diff --git a/source/_components/trafikverket_train.markdown b/source/_components/trafikverket_train.markdown index 0c78712b0c4f..383e66fa81d1 100644 --- a/source/_components/trafikverket_train.markdown +++ b/source/_components/trafikverket_train.markdown @@ -92,7 +92,7 @@ Click [here](https://www.trafikverket.se/trafikinformation/tag/?ArrDep=departure ```yaml sensor: -- platform: trafikverket +- platform: trafikverket_train api_key: !secret trafikverket_api_key trains: - name: "Train to work" diff --git a/source/_components/unifi.markdown b/source/_components/unifi.markdown index df7ccad1d659..735ce44cd6d4 100644 --- a/source/_components/unifi.markdown +++ b/source/_components/unifi.markdown @@ -44,17 +44,17 @@ unifi: {% configuration %} host: - description: Same address as relevant config entry, needed to identify config entry + description: Same address as relevant config entry, needed to identify config entry. type: string required: true default: None site: - description: Same site as relevant config entry, needed to identify config entry + description: Same site as relevant config entry, needed to identify config entry. type: string required: true default: None block_client: - description: Clients that can be blocked from the network + description: A list of Clients MAC Addresses that can be blocked from the network. type: list required: false default: None @@ -111,7 +111,7 @@ If Home Assistant and the UniFi controller are running on separate machines or V ### Block network access for clients -Allow control of network access to clients configured in `configuration.yaml` +Allow control of network access to clients configured in the `configuration.yaml` file by adding a list of the MAC addresses. Items in this list will have a Home Assistant switch created, using the Unifi Device name, allowing for blocking and unblocking. ### Control clients powered by POE diff --git a/source/_cookbook/sonos_say.markdown b/source/_cookbook/sonos_say.markdown index 28e34f787610..41b1486ad453 100644 --- a/source/_cookbook/sonos_say.markdown +++ b/source/_cookbook/sonos_say.markdown @@ -57,5 +57,5 @@ Note that this example uses the `voicerss` text-to-speech platform. There are ma If you want to use this TTS engine, change the line in the example provided to: ``` -- service: tts.google_say +- service: tts.google_translate_say ``` diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index 5ea23f33090c..e7057b16d6a4 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -10,24 +10,24 @@ This has been tested on FreeNAS 11.2 and should also work on FreeBSD 11.x as wel Create the user and group that Home Assistant will run as. The user/group ID of `8123` can be replaced if this is already in use in your environment. ```bash -# pw groupadd -n homeassistant -g 8123 -# echo 'homeassistant:8123:8123::::::/bin/csh:' | adduser -f - +pw groupadd -n homeassistant -g 8123 +echo 'homeassistant:8123:8123::::::/bin/csh:' | adduser -f - ``` Install the necessary Python packages: ```bash -# pkg update -# pkg upgrade -# pkg install -y python37 py37-sqlite3 ca_root_nss -# python3.7 -m ensurepip +pkg update +pkg upgrade +pkg install -y python37 py37-sqlite3 ca_root_nss +python3.7 -m ensurepip ``` Create the configuration directory: ```bash -# mkdir -p /usr/local/homeassistant -# chown -R homeassistant:homeassistant /usr/local/homeassistant +mkdir -p /usr/local/homeassistant +chown -R homeassistant:homeassistant /usr/local/homeassistant ``` Create the installation directory: @@ -40,13 +40,13 @@ chown -R homeassistant:homeassistant /usr/local/share/homeassistant Install Home Assistant itself: ```bash -# su homeassistant -% cd /usr/local/share/homeassistant -% virtualenv -p python3.7 . -% source ./bin/activate.csh -% pip3 install homeassistant -% deactivate -% exit +su homeassistant +cd /usr/local/share/homeassistant +virtualenv -p python3.7 . +source ./bin/activate.csh +pip3 install homeassistant +deactivate +exit ``` Create an `rc.d` script for the system-level service that enables Home Assistant to start when the jail starts. Create a file at `/usr/local/etc/rc.d/homeassistant` with the following contents: @@ -133,8 +133,8 @@ Make the `rc.d` script executable: Configure the service to start on boot and start the Home Assistant service: ```bash -# sysrc homeassistant_enable="YES" -# service homeassistant start +sysrc homeassistant_enable="YES" +service homeassistant start ``` You can also restart the jail to ensure that Home Assistant starts on boot. diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html index 4ca4f65005a1..6853c447e0ad 100644 --- a/source/_includes/asides/component_navigation.html +++ b/source/_includes/asides/component_navigation.html @@ -12,6 +12,10 @@ {%- assign imp_name = file_parts | first -%} {%- assign imp_url = imp_name | prepend: '/components/' | append: '/' -%} +
+ +
+ {%- if page.ha_iot_class -%}
IoT class: {{ page.ha_iot_class }} @@ -63,3 +67,5 @@

Categories

{%- endif -%} + +