diff --git a/.themes/classic/source/javascripts/libs/swfobject-dynamic.js b/.themes/classic/source/javascripts/libs/swfobject-dynamic.js index b021614524fa..a94423494226 100644 --- a/.themes/classic/source/javascripts/libs/swfobject-dynamic.js +++ b/.themes/classic/source/javascripts/libs/swfobject-dynamic.js @@ -202,7 +202,7 @@ var swfobject = function() { function hasPlayerVersion(rv) { var pv = ua.pv, v = rv.split("."); v[0] = parseInt(v[0], 10); - v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0" + v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g., "9" instead of "9.0.0" v[2] = parseInt(v[2], 10) || 0; return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; } diff --git a/_config.yml b/_config.yml index 901bd01abf40..7896bba25474 100644 --- a/_config.yml +++ b/_config.yml @@ -141,14 +141,14 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 79 -current_patch_version: 3 -date_released: 2018-10-02 +current_minor_version: 80 +current_patch_version: 0 +date_released: 2018-10-12 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0793---october-2" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/plugins/filters.rb b/plugins/filters.rb index 41ad3357a8ba..9e3324252daf 100644 --- a/plugins/filters.rb +++ b/plugins/filters.rb @@ -32,7 +32,7 @@ def site_url # input - a url # # Returns input with all urls expanded to include the full site url - # e.g. /images/awesome.gif => http://example.com/images/awesome.gif + # e.g., /images/awesome.gif => http://example.com/images/awesome.gif # def full_url(input) expand_url(input, site_url) @@ -40,8 +40,8 @@ def full_url(input) # Prepends input with a url fragment # - # input - An absolute url, e.g. /images/awesome.gif - # url - The fragment to prepend the input, e.g. /blog + # input - An absolute url, e.g., /images/awesome.gif + # url - The fragment to prepend the input, e.g., /blog # # Returns the modified url, e.g /blog # diff --git a/sass/inuitcss/generic/_helper.scss b/sass/inuitcss/generic/_helper.scss index 3a488142bae6..39d45f29a5ec 100644 --- a/sass/inuitcss/generic/_helper.scss +++ b/sass/inuitcss/generic/_helper.scss @@ -5,7 +5,7 @@ /** * A series of helper classes to use arbitrarily. Only use a helper class if an * element/component doesn’t already have a class to which you could apply this - * styling, e.g. if you need to float `.main-nav` left then add `float:left;` to + * styling, e.g., if you need to float `.main-nav` left then add `float:left;` to * that ruleset as opposed to adding the `.float--left` class to the markup. * * A lot of these classes carry `!important` as you will always want them to win diff --git a/sass/inuitcss/objects/_beautons.scss b/sass/inuitcss/objects/_beautons.scss index cdb9a3becf2f..a6255287853a 100644 --- a/sass/inuitcss/objects/_beautons.scss +++ b/sass/inuitcss/objects/_beautons.scss @@ -175,7 +175,7 @@ .btn--tertiary{} /** - * Positive actions; e.g. sign in, purchase, submit, etc. + * Positive actions; e.g., sign in, purchase, submit, etc. */ .btn--positive{ background-color:#4A993E; @@ -183,7 +183,7 @@ } /** - * Negative actions; e.g. close account, delete photo, remove friend, etc. + * Negative actions; e.g., close account, delete photo, remove friend, etc. */ .btn--negative{ background-color:#b33630; diff --git a/sass/inuitcss/objects/_sprite.scss b/sass/inuitcss/objects/_sprite.scss index 898646bc7cf5..85459fd51bbb 100644 --- a/sass/inuitcss/objects/_sprite.scss +++ b/sass/inuitcss/objects/_sprite.scss @@ -22,7 +22,7 @@ * * Where ‘’ might map to a star in your particular icon font. * - * These all require extension in your theme stylesheet, e.g. in your own CSS: + * These all require extension in your theme stylesheet, e.g., in your own CSS: * .sprite{ background-image:url(path/to/your/sprite.png); diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 0ac8d019945d..755d039a2f79 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -14,7 +14,7 @@ featured: false You should not use this if you are also using the [DuckDNS add-on]. The DuckDNS add-on has integrated Let's Encrypt support.

-Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This addon will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration. This add-on uses port 80 to verify the certificate request. You will need to stop all other add-ons that also use this port. +Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This add-on will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration. This add-on uses port 80 to verify the certificate request. You will need to stop all other add-ons that also use this port. ```json { @@ -43,7 +43,7 @@ If you use another port such as `8123` or an SSL proxy, change the port number. ## {% linkable_title Enabling auto-renewals %} -Out of the box, the add-on will not automatically renew your certificate. In fact, it only starts, tries to get/renew your certificte, and then stops. It's up to you to manually start it again whenever your certificate comes close to expiry. +Out of the box, the add-on will not automatically renew your certificate. In fact, it only starts, tries to get/renew your certificate, and then stops. It's up to you to manually start it again whenever your certificate comes close to expiry. However, you can automate this process using Home Assistant. diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown index aa7d509c18b8..42519d3cfed4 100644 --- a/source/_addons/samba.markdown +++ b/source/_addons/samba.markdown @@ -10,7 +10,7 @@ footer: true featured: true --- -This addon allows you to set up a [Samba](https://samba.org/) server to access Hass.io folders using Windows network shares. +This add-on allows you to set up a [Samba](https://samba.org/) server to access Hass.io folders using Windows network shares. ```json { diff --git a/source/_addons/snips.markdown b/source/_addons/snips.markdown index e8377a1b5a73..b002ff1a4a17 100644 --- a/source/_addons/snips.markdown +++ b/source/_addons/snips.markdown @@ -15,7 +15,7 @@ The Snips add-on depends on the Mosquitto add on to bridge to Home Assistant, so Home Assistant comes with certain Intents builtin to handle common tasks. A complete list of Intents can be found in this wiki [Hass Snips Bundle](https://github.com/tschmidty69/hass-snips-bundle-intents/wiki). -The Snips addon by default comes with an assistant that allows you to turn on lights or switches, open covers, or add and list items to a shopping list if that component is enabled. +The Snips add-on by default comes with an assistant that allows you to turn on lights or switches, open covers, or add and list items to a shopping list if that component is enabled. If using a USB microphone and speakers plugged into the Raspberry Pi output, Snips will work without any change to the configuration. Trying saying things like: @@ -71,7 +71,7 @@ There is an active [discord](https://discordapp.com/invite/3939Kqx) channel for ### {% linkable_title Examples %} -So now you can turn lights on and off, let's check the weather. Log on to the [console](https://console.snips.ai/). If this is your first time, create a new assistant and add the Home Assistant skill, along with the Weather skill by snips. Download your assistant manually and copy it to the `/share` folder on your HassIO installation using the Samba addon. +So now you can turn lights on and off, let's check the weather. Log on to the [console](https://console.snips.ai/). If this is your first time, create a new assistant and add the Home Assistant skill, along with the Weather skill by snips. Download your assistant manually and copy it to the `/share` folder on your HassIO installation using the Samba add-on. Next create a weather sensor, e.g., one for (Dark Sky)[/components/sensor.darksky/] and put the `api_key` in your `secrets.yaml` file. diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown index 479b05c98f66..0fa91e88684a 100644 --- a/source/_addons/ssh.markdown +++ b/source/_addons/ssh.markdown @@ -35,7 +35,7 @@ To start this add-on for the first time, you either need to include a key (enclo The username for login over SSH is `root`. The complete login command is `ssh root@hassio.local`. -After logging in, you will find yourself in this add-ons container. The Home Assistant configuration directory is mounted on the path `/config`. +After logging in, you will find yourself in this add-on's container. The Home Assistant configuration directory is mounted on the path `/config`. Configuration variables: diff --git a/source/_components/alarm_control_panel.nx584.markdown b/source/_components/alarm_control_panel.nx584.markdown index a98ad9050a6b..a46cbf752733 100644 --- a/source/_components/alarm_control_panel.nx584.markdown +++ b/source/_components/alarm_control_panel.nx584.markdown @@ -22,8 +22,20 @@ alarm_control_panel: - platform: nx584 ``` -Configuration variables: - -- **host** (*Optional*): The host where the nx584 server process is running. Defaults to `localhost`. -- **port** (*Optional*): The port where the Alarm panel is listening. Defaults to `5007`. - +{% configuration %} +host: + description: The host where the nx584 server process is running. + required: false + default: localhost + type: string +name: + description: This parameter allows you to override the name. + required: false + default: NX584 + type: string +port: + description: The port where the Alarm panel is listening. + required: false + default: 5007 + type: integer +{% endconfiguration %} diff --git a/source/_components/alert.markdown b/source/_components/alert.markdown index bbb2e6b72897..033cd9188738 100644 --- a/source/_components/alert.markdown +++ b/source/_components/alert.markdown @@ -51,13 +51,13 @@ alert: {% configuration %} name: - description: The friendly name of the alert. + description: The friendly name of the alert. This can include a [template][template]. required: true type: string done_message: description: > A message sent after an alert transitions from `on` to `off`. Is only sent - if an alert notification was sent for transitioning from `off` to `on`. + if an alert notification was sent for transitioning from `off` to `on`. This can include a [template][template]. required: false type: string entity_id: @@ -191,3 +191,5 @@ sent 30 minutes after that, and a 60 minute delay will fall between every following notification. For example, if the garage door opens at 2:00, a notification will be sent at 2:15, 2:45, 3:45, 4:45, etc., continuing every 60 minutes. + +[template]: /docs/configuration/templating/ diff --git a/source/_components/android_ip_webcam.markdown b/source/_components/android_ip_webcam.markdown index b11ac13595e8..a16ca91b979c 100644 --- a/source/_components/android_ip_webcam.markdown +++ b/source/_components/android_ip_webcam.markdown @@ -25,49 +25,92 @@ android_ip_webcam: - host: 192.168.1.10 ``` -Configuration variables: - -- **host** (*Required*): The IP Address of the phone on the network. -- **port** (*Optional*): Default is set 8080. The port the IP Webcam listens on. -- **name** (*Optional*): Override the name of the phone. -- **username** (*Optional*): The username to access the phone. -- **password** (*Optional*): The password to access the phone. -- **scan_interval** (*Optional*): Default is 10 seconds. Defines the update interval of the phone. -- **sensors** array (*Optional*): Conditions to display sensor in the frontend. See the list of supported sensors. -- **switches** array (*Optional*): Conditions to display settings in the frontend. See the list of supported settings. -- **motion_sensor** (*Optional*): Activate motion sensor if auto_discovery is disabled. +{% configuration %} +host: + description: The IP Address of the phone on the network. + required: true + type: string +port: + description: The port the IP Webcam listens on. + required: false + default: 8080 + type: integer +name: + description: Override the name of the phone. + required: false + default: IP Webcam + type: string +username: + description: The username to access the phone. + required: inclusive + type: string +password: + description: The password to access the phone. + required: inclusive + type: string +scan_interval: + description: Defines the update interval of the phone. + required: false + default: 10 + type: integer +sensors: + description: Conditions to display sensor in the frontend. See the list of supported sensors. + required: false + type: list + keys: + audio_connections: + description: Audio Connections + battery_level: + description: Battery Level + battery_temp: + description: Battery Temperature + battery_voltage: + description: Battery Voltage + light: + description: Light Level + motion: + description: Motion + pressure: + description: Pressure + proximity: + description: Proximity + sound: + description: Sound + video_connections: + description: Video Connections +switches: + description: Conditions to display settings in the frontend. See the list of supported switches. + required: false + type: list + keys: + exposure_lock: + description: Exposure Lock + ffc: + description: Front-facing Camera + focus: + description: Focus + gps_active: + description: GPS Active + night_vision: + description: Night Vision + overlay: + description: Overlay + torch: + description: Torch + whitebalance_lock: + description: White Balance Lock + video_recording: + description: Video Recording +motion_sensor: + description: Activate motion sensor if auto_discovery is disabled. + required: false + type: boolean +{% endconfiguration %}

You need to enable logging in the Android app (`Data logging` > `Enable data logging`), if you wish to see the sensor states in Home Assistant. The sensor states stays as `unknown`, until it's enabled.

-### {% linkable_title Supported features %} - -Sensors: - -- audio_connections -- battery_level -- battery_temp -- battery_voltage -- light -- motion -- pressure -- proximity -- sound -- video_connections - -Settings (Switches): - -- exposure_lock -- ffc -- focus -- gps_active -- night_vision -- overlay -- torch -- whitebalance_lock -- video_recording - ## {% linkable_title Full example %} ```yaml diff --git a/source/_components/apple_tv.markdown b/source/_components/apple_tv.markdown index e9008af63856..c9a0e3f0606d 100644 --- a/source/_components/apple_tv.markdown +++ b/source/_components/apple_tv.markdown @@ -42,13 +42,28 @@ apple_tv: credentials: CREDENTIALS_2 ``` -Configuration variables: - -- **host** (*Required*): The IP-address of the device. -- **login_id** (*Required*): An identifier used to login to the device, see below. -- **name** (*Optional*): The name of the device used in the frontend. -- **start_off** (*Optional*): Set to true if the device should start in fake standby. -- **credentials** (*Optional*): Credentials used for AirPlay playback. +{% configuration %} +host: + description: The IP-address of the device. + required: true + type: string +login_id: + description: An identifier used to login to the device, see below. + required: true + type: string +name: + description: The name of the device used in the frontend. + required: false + type: string +start_off: + description: Set to true if the device should start in fake standby. + required: false + type: boolean +credentials: + description: Credentials used for AirPlay playback. + required: false + type: string +{% endconfiguration %} In order to connect to the device, you need a *login id*. The easiest way to obtain this identifier is to use the `apple_tv_scan` service (described below). Additional information about `start_off` and `credentials` can also be found under the guides section. diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown index 9b2faadd9881..fc630149a00f 100644 --- a/source/_components/axis.markdown +++ b/source/_components/axis.markdown @@ -30,24 +30,62 @@ axis: - camera ``` -## {% linkable_title Configuration variables %} - -- **device** (*Required*): Unique name -- **host** (*Required*): The IP address to your Axis device. -- **username** (*Optional*): The username to your Axis device. Default 'root'. -- **password** (*Optional*): The password to your Axis device. Default 'pass'. -- **trigger_time** (*Optional*): Minimum time (in seconds) a sensor should keep its positive value. Default 0. -- **port** (*Optional*): Configure port web server of device is accessible from. Default 80. -- **location** (*Optional*): Physical location of your Axis device. Default not set. -- **include** (*Required*): This cannot be empty else there would be no use adding the device at all. - - **camera**: Stream MJPEG video to Home Assistant. - - **motion**: The built-in motion detection in Axis cameras. - - **vmd3**: ACAP Motion Detection app which has better algorithms for motion detection. - - **pir**: PIR sensor that can trigger on a motion. - - **sound**: Sound detector. - - **daynight**: Certain cameras have day/night mode if they have built-in IR lights. - - **tampering**: Signals when camera believes that it has been tampered with. - - **input**: Trigger on whatever you have connected to device input port. +{% configuration %} +device: + description: A unique name + required: true + type: string +host: + description: The IP address to your Axis device. + required: true + type: string +username: + description: The username to your Axis device. + required: false + default: root + type: string +password: + description: The password to your Axis device. + required: false + default: pass + type: string +trigger_time: + description: Minimum time (in seconds) a sensor should keep its positive value. + required: false + default: 0 + type: integer +port: + description: Configure port web server of device is accessible from. + required: false + default: 80 + type: integer +location: + description: Physical location of your Axis device. + required: false + default: not set + type: string +include: + description: This cannot be empty else there would be no use adding the device at all. + required: true + type: map + keys: + camera: + description: Stream MJPEG video to Home Assistant. + motion: + description: The built-in motion detection in Axis cameras. + vmd3: + description: ACAP Motion Detection app which has better algorithms for motion detection. + pir: + description: PIR sensor that can trigger on a motion. + sound: + description: Sound detector. + daynight: + description: Certain cameras have day/night mode if they have built-in IR lights. + tampering: + description: Signals when camera believes that it has been tampered with. + input: + description: Trigger on whatever you have connected to device input port. +{% endconfiguration %} A full configuration example could look like this: diff --git a/source/_components/binary_sensor.aurora.markdown b/source/_components/binary_sensor.aurora.markdown index f1c165381ece..460500c24c35 100644 --- a/source/_components/binary_sensor.aurora.markdown +++ b/source/_components/binary_sensor.aurora.markdown @@ -28,10 +28,18 @@ binary_sensor: - platform: aurora ``` -Configuration variables: - -- **forecast_threshold** (*Optional*): Provide your own threshold number above which the sensor will trigger. Defaults to 75. -- **name** (*Optional*): The name of the sensor. Default is 'Aurora Visibility'. +{% configuration %} +forecast_threshold: + description: Provide your own threshold number above which the sensor will trigger. + required: false + default: 75 + type: integer +name: + description: The name of the sensor. + required: false + default: Aurora Visibility + type: string +{% endconfiguration %} ```yaml binary_sensor: diff --git a/source/_components/binary_sensor.bbb_gpio.markdown b/source/_components/binary_sensor.bbb_gpio.markdown index f35f488a7eaf..66e4c98f4fa1 100644 --- a/source/_components/binary_sensor.bbb_gpio.markdown +++ b/source/_components/binary_sensor.bbb_gpio.markdown @@ -30,14 +30,36 @@ binary_sensor: name: Window ``` -Configuration variables: - -- **pins** array (*Required*): Array of used pins. - - **pin_name** (*Required*): Pin numbers and corresponding names. - - **name** (*Required*): Friendly name to use for the frontend. - - **bouncetime** (*Optional*): Debounce time for reading input pin defined in milliseconds [ms]. Defaults to `50 ms`. - - **invert_logic** (*Optional*): If `true`, inverts the input logic to ACTIVE LOW. Default is `false` (ACTIVE HIGH). - - **pull_mode** (*Optional*): Type of internal pull resistor connected to input. Options are `UP` - pull-up resistor and `DOWN` - pull-down resistor. Defaults to `UP`. +{% configuration %} +pins: + description: List of used pins. + required: true + type: map + keys: + pin_name: + description: Port numbers and corresponding names. + required: true + type: map + keys: + name: + description: Friendly name to use for the frontend. + required: true + type: string + bouncetime: + description: Debounce time for reading input pin defined in milliseconds [ms]. + required: false + default: 50 + type: integer + invert_logic: + description: If `true`, inverts the input logic to ACTIVE LOW + required: false + default: false + type: boolean + pull_mode: + description: Type of internal pull resistor connected to input. Options are `UP` - pull-up resistor and `DOWN` - pull-down resistor. + required: false + default: UP + type: string +{% endconfiguration %} For more details about the GPIO layout, visit the [article](http://elinux.org/Beagleboard:BeagleBoneBlack) about the BeagleBone Black. - diff --git a/source/_components/binary_sensor.command_line.markdown b/source/_components/binary_sensor.command_line.markdown index c206c3cb9279..0bf0512d2653 100644 --- a/source/_components/binary_sensor.command_line.markdown +++ b/source/_components/binary_sensor.command_line.markdown @@ -27,16 +27,45 @@ binary_sensor: command: cat /proc/sys/net/ipv4/ip_forward ``` -Configuration variables: - -- **command** (*Required*): The action to take to get the value. -- **name** (*Optional*): Let you overwrite the name of the device. By default *name* from the device is used. -- **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. -- **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". -- **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. -- **scan_interval** (*Optional*): Defines number of seconds for polling interval (defaults to 60 seconds). -- **command_timeout** (*Optional*): Defines number of seconds for command timeout (defaults to 15 seconds). +{% configuration %} +command: + description: The action to take to get the value. + required: true + type: string +name: + description: Let you overwrite the name of the device. By default *name* from the device is used. + required: false + default: name + type: string +device_class: + description: The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. + required: false + type: string +payload_on: + description: The payload that represents enabled state. + required: false + default: ON + type: string +payload_off: + description: The payload that represents disabled state. + required: false + default: OFF + type: string +value_template: + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. + required: false + type: string +scan_interval: + description: Defines number of seconds for polling interval. + required: false + default: 60 + type: integer +command_timeout: + description: Defines number of seconds for command timeout. + required: false + default: 15 + type: integer +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/binary_sensor.concord232.markdown b/source/_components/binary_sensor.concord232.markdown index 39320bb67230..f734d4afa5bb 100644 --- a/source/_components/binary_sensor.concord232.markdown +++ b/source/_components/binary_sensor.concord232.markdown @@ -22,8 +22,15 @@ binary_sensor: - platform: concord232 ``` -Configuration variables: - -- **host** (*Optional*): The host where the concord232 server process is running. Defaults to `localhost`. -- **port** (*Optional*): The port where the Alarm panel is listening. Defaults to 5007. - +{% configuration %} +host: + description: The host where the concord232 server process is running. + required: false + default: localhost + type: string +port: + description: The port where the Alarm panel is listening. + required: false + default: 5007 + type: integer +{% endconfiguration %} diff --git a/source/_components/binary_sensor.ffmpeg_motion.markdown b/source/_components/binary_sensor.ffmpeg_motion.markdown index 0607a0127af0..eaf15a86a793 100644 --- a/source/_components/binary_sensor.ffmpeg_motion.markdown +++ b/source/_components/binary_sensor.ffmpeg_motion.markdown @@ -35,16 +35,45 @@ binary_sensor: input: FFMPEG_SUPPORTED_INPUT ``` -Configuration variables: - -- **input** (*Required*): An FFmpeg-compatible input file, stream, or feed. -- **name** (*Optional*): Override the name of your camera for the frontend. -- **initial_state** (*Optional*): Start `ffmpeg` with Home Assistant. Defaults to `true`. -- **changes** (*Optional*): How much needs to change between two frames to detect it as motion (a lower value is more sensitive). Defaults to 10%. -- **reset** (*Optional*): The time to reset the state after no new motion is detected. Defaults to 20 seconds. -- **repeat** (*Optional*): How many events need to be detected in *repeat_time* in order to trigger a motion. Defaults to 0 repeats (deactivated). -- **repeat_time** (*Optional*): The span of time *repeat* events need to occur in before triggering a motion. Defaults to 0 seconds (deactivated). -- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g., video denoise filtering. +{% configuration %} +input: + description: An FFmpeg-compatible input file, stream, or feed. + required: true + type: string +name: + description: Override the name of your camera for the frontend. + required: false + type: string +initial_state: + description: Start `ffmpeg` with Home Assistant. + required: false + default: true + type: boolean +changes: + description: How much needs to change between two frames to detect it as motion, value in percentage (a lower value is more sensitive). + required: false + default: 10% + type: integer +reset: + description: The time to reset the state after no new motion is detected. + required: false + default: 20 + type: integer +repeat: + description: How many events need to be detected in *repeat_time* in order to trigger a motion, 0 repeats means deactivated. + required: false + default: 0 + type: integer +repeat_time: + description: The span of time *repeat* events need to occur in before triggering a motion, 0 seconds means deactivated. + required: false + default: 0 + type: integer +extra_arguments: + description: Extra options to pass to `ffmpeg`, e.g., video denoise filtering. + required: false + type: string +{% endconfiguration %} To experiment with values (changes/100 is the scene value in `ffmpeg`): diff --git a/source/_components/binary_sensor.ffmpeg_noise.markdown b/source/_components/binary_sensor.ffmpeg_noise.markdown index 842be8203e17..ae2077cd2988 100644 --- a/source/_components/binary_sensor.ffmpeg_noise.markdown +++ b/source/_components/binary_sensor.ffmpeg_noise.markdown @@ -30,16 +30,44 @@ binary_sensor: input: FFMPEG_SUPPORTED_INPUT ``` -Configuration variables: - -- **input** (*Required*): An FFmpeg-compatible input file, stream, or feed. -- **name** (*Optional*): Override the name of your camera. -- **initial_state** (*Optional*): Default true. Start ffmpeg with home-assistant. -- **peak** (*Optional*): Default -30. The threshold of detecting noise, in dB. 0 is very loud and -100 is low. -- **duration** (*Optional*): Default 1 second. How long the noise needs to be over the peak to trigger the state. -- **reset** (*Optional*): Default 20 seconds. The time to reset the state after no new noise is over the peak. -- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, like audio frequency filtering. -- **output** (*Optional*): Allows you to send the audio output of this sensor to an Icecast server or other FFmpeg-supported output, e.g., to stream with Sonos after a state is triggered. +{% configuration %} +input: + description: An FFmpeg-compatible input file, stream, or feed. + required: true + type: string +name: + description: Override the name of your camera. + required: false + type: string +initial_state: + description: Start ffmpeg with home-assistant. + required: false + default: true + type: boolean +peak: + description: The threshold of detecting noise, in dB. 0 is very loud and -100 is low. + required: false + default: -30 + type: integer +duration: + description: How long the noise needs to be over the peak to trigger the state. + required: false + default: 1 + type: integer +reset: + description: The time to reset the state after no new noise is over the peak. + required: false + default: 20 + type: integer +extra_arguments: + description: Extra options to pass to `ffmpeg`, like audio frequency filtering. + required: false + type: string +output: + description: Allows you to send the audio output of this sensor to an Icecast server or other FFmpeg-supported output, e.g., to stream with Sonos after a state is triggered. + required: false + type: string +{% endconfiguration %} To experiment with values: diff --git a/source/_components/binary_sensor.knx.markdown b/source/_components/binary_sensor.knx.markdown index 6f5ff0979062..97004e94b8e2 100644 --- a/source/_components/binary_sensor.knx.markdown +++ b/source/_components/binary_sensor.knx.markdown @@ -26,13 +26,29 @@ binary_sensor: address: '6/0/2' ``` -Configuration variables: - -- **address** (*Required*): KNX group address of the binary sensor. -- **name** (*Optional*): A name for this device used within Home Assistant. -- **device_class** (*Optional*): HASS device class e.g., "motion". -- **significant_bit** (*Optional*): Specify which significant bit of the KNX value should be used. Default is 1. -- **reset_after** (*Optional*): Reset back to OFF state after specified milliseconds. +{% configuration %} +address: + description: KNX group address of the binary sensor. + required: true + type: string +name: + description: A name for this device used within Home Assistant. + required: false + type: string +device_class: + description: HASS device class e.g., "motion". + required: false + type: string +significant_bit: + description: Specify which significant bit of the KNX value should be used. + required: false + default: 1 + type: integer +reset_after: + description: Reset back to OFF state after specified milliseconds. + required: false + type: integer +{% endconfiguration %} You can also attach actions to binary sensors (e.g., to switch on a light when a switch was pressed). In this example, one light is switched on when the button was pressed once and two others when the button was pressed a second time. @@ -57,10 +73,23 @@ binary_sensor: service: homeassistant.turn_on ``` -Configuration variables: - -- **name** (*Optional*): A name for this device used within Home Assistant. -- **counter** (*Optional*): Set to 2 if your only want the action to be executed if the button was pressed twice. To 3 for three times button pressed. Defaults to 1. -- **hook** (Optional): Indicates if the automation should be executed on what state of the binary sensor. Values: "on" or "off". Defaults to "on". -- **action**: Specify a list of actions analog to the [automation rules](/docs/automation/action/). - +{% configuration %} +name: + description: A name for this device used within Home Assistant. + required: false + type: string +counter: + description: Set to 2 if your only want the action to be executed if the button was pressed twice. To 3 for three times button pressed. + required: false + default: 1 + type: integer +hook: + description: Indicates if the automation should be executed on what state of the binary sensor. Values are "on" or "off". + required: false + default: "on" + type: string +action: + description: Specify a list of actions analog to the [automation rules](/docs/automation/action/). + required: false + type: list +{% endconfiguration %} diff --git a/source/_components/binary_sensor.modbus.markdown b/source/_components/binary_sensor.modbus.markdown index 62f5765dd3e1..fbc300c29842 100644 --- a/source/_components/binary_sensor.modbus.markdown +++ b/source/_components/binary_sensor.modbus.markdown @@ -32,13 +32,26 @@ binary_sensor: coil: 110 ``` -Configuration variables: +{% configuration %} +coils: + description: The array contains a list of coils to read from. + required: true + type: [map, list] + keys: + name: + description: Name of the sensor. + required: true + type: string + slave: + description: The number of the slave (Optional for TCP and UDP Modbus). + required: true + type: integer + coil: + description: Coil number. + required: true + type: integer +{% endconfiguration %} -- **coils** array (*Required*): The array contains a list of coils to read from. - - **name** (*Required*): Name of the sensor. - - **slave** (*Required*): The number of the slave (Optional for TCP and UDP Modbus). - - **coil** (*Required*): Coil number. - It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. ## {% linkable_title Full example %} diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index 42b942922260..132c59298e0d 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -109,12 +109,14 @@ value_template: required: false type: string force_update: - description: > - Sends update events even if the value has not changed. - Useful if you want to have meaningful value graphs in history. - reqired: false + description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. + required: false type: boolean - default: false + default: False +off_delay: + description: For sensors that only sends ‘On’ state updates, this variable sets a delay in seconds after which the sensor state will be updated back to ‘Off’. + required: false + type: integer device: description: 'Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false diff --git a/source/_components/binary_sensor.nx584.markdown b/source/_components/binary_sensor.nx584.markdown index cce9c46eb0f8..0f9c17dea933 100644 --- a/source/_components/binary_sensor.nx584.markdown +++ b/source/_components/binary_sensor.nx584.markdown @@ -25,12 +25,39 @@ binary_sensor: platform: nx584 ``` -Configuration variables: - -- **host** (*Optional*): This is the host where the nx584 server process is running. If unset, it is assumed to be `localhost`, which will work if the server process is running on the same system as Home Assistant. -- **port** (*Optional*): The port where the server process is running. Defaults to `5007`. -- **exclude_zones** (*Optional*): This is a list of zone numbers that should be excluded. Use this to avoid exposing a zone that is of no interest, unconnected, etc. -- **zone_types** (*Optional*): This is a list of zone numbers mapped to zone types. Use this to designate zones as doors, motion sensors, smoke detectors, etc. The list of available zone types relevant to alarm zones are: `opening`, `motion`, `gas`, `smoke`, `moisture`, `safety`. +{% configuration %} +host: + description: This is the host where the nx584 server process is running. If unset, it is assumed to be `localhost`, which will work if the server process is running on the same system as Home Assistant. + required: false + default: localhost + type: string +port: + description: The port where the server process is running. + required: false + default: 5007 + type: integer +exclude_zones: + description: This is a list of zone numbers that should be excluded. Use this to avoid exposing a zone that is of no interest, unconnected, etc. + required: false + type: [list, integer] +zone_types: + description: This is a list of zone numbers mapped to zone types. Use this to designate zones as doors, motion sensors, smoke detectors, etc. See the list of available zone types relevant to alarm zones below. + required: false + type: map + keys: + opening: + description: Opening + motion: + description: Motion + gas: + description: Gas + smoke: + description: Smoke + moisture: + description: Moisture + safety: + description: Safety +{% endconfiguration %} An extended configuration entry could look like this: diff --git a/source/_components/binary_sensor.octoprint.markdown b/source/_components/binary_sensor.octoprint.markdown index 369205ad94a1..56d0395e8cfa 100644 --- a/source/_components/binary_sensor.octoprint.markdown +++ b/source/_components/binary_sensor.octoprint.markdown @@ -13,26 +13,8 @@ ha_release: 0.19 ha_iot_class: "Local Polling" --- - -The `octoprint` binary sensor platform let you monitor if your 3D printer is printing or if there was a printing error. +The `octoprint` sensor platform let you monitor various states of your 3D printer and its print jobs.

-You must have the [OctoPrint component](/components/octoprint/) configured to use this sensor. +You must have the [OctoPrint component](/components/octoprint/) configured to use this binary sensor. After configuring that component, binary sensors automatically appear.

- -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -binary_sensor: - - platform: octoprint - monitored_conditions: - - Printing - - Printing Error -``` - -Configuration variables: - -- **monitored_conditions** array (*Required*): States to monitor. - - **Printing**: State of the printer. - - **Printing Error**: Error while printing. -- **name** (*Optional*): The name of the sensor. Default is 'OctoPrint'. diff --git a/source/_components/binary_sensor.xiaomi_aqara.markdown b/source/_components/binary_sensor.xiaomi_aqara.markdown index e782c1e9e9a7..190d72b2c3cb 100644 --- a/source/_components/binary_sensor.xiaomi_aqara.markdown +++ b/source/_components/binary_sensor.xiaomi_aqara.markdown @@ -31,7 +31,7 @@ The requirement is that you have setup the [`xiaomi aqara` component](/component | Gas Leak Detector | natgas | JTQJ-BF-01LM/BW | on, off | | | | | Water Leak Sensor | sensor_wleak.aq1 | SJCGQ11LM | on, off | | | | | Button (1st gen) | switch | WXKG01LM | on (through long_click_press), off | `click`| `click_type`| `long_click_press`, `long_click_release`, `hold`, `single`, `double` | -| Button (2nd gen) | sensor_switch.aq2 | WXKG11LM | off (always) | `click` | `click_type` | `single`, `double` | +| Button (2nd gen) | sensor_switch.aq2, remote.b1acn01 | WXKG11LM | off (always) | `click` | `click_type` | `single`, `double` | | Aqara Wireless Switch (Single) | 86sw1 | WXKG03LM | off (always) | `click` | `click_type` | `single` | | Aqara Wireless Switch (Double) | 86sw2 | WXKG02LM | off (always) | `click` | `click_type` | `single`, `both` | | Cube | cube | MFKZQ01LM | off (always) | `cube_action` | `action_type`, `action_value` (rotate) | `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall`, `rotate` (degrees at action_value) | diff --git a/source/_components/bmw_connected_drive.markdown b/source/_components/bmw_connected_drive.markdown index ce7688c9d9dc..064d426cbb8d 100644 --- a/source/_components/bmw_connected_drive.markdown +++ b/source/_components/bmw_connected_drive.markdown @@ -21,7 +21,7 @@ This component provides the following platforms: - Binary Sensors: Doors, windows, condition based services, check control messages, parking lights, door lock state, charging status (electric cars) and connections status (electric cars). - Device tracker: The location of your car. - Lock: Control the lock of your car. - - Sensors: Mileage, remaining range, remaining fuel, charging time remaing (electric cars), charging status (electric cars), remaing range electric (electric cars). + - Sensors: Mileage, remaining range, remaining fuel, charging time remaining (electric cars), charging status (electric cars), remaining range electric (electric cars). To enable this component in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/calendar.google.markdown b/source/_components/calendar.google.markdown index 1c074f5ed81f..ffa9233da250 100644 --- a/source/_components/calendar.google.markdown +++ b/source/_components/calendar.google.markdown @@ -157,7 +157,7 @@ Otherwise everything following the hash sign would be considered a YAML comment. ### {% linkable_title Sensor attributes %} - **offset_reached**: If set in the event title and parsed out will be `on`/`off` once the offset in the title in minutes is reached. So the title `Very important meeting #Important !!-10` would trigger this attribute to be `on` 10 minutes before the event starts. - - **all_day**: `True`/`False` if this is an all day event. Will be `False` if there is no event found. + - **all_day**: `true`/`false` if this is an all day event. Will be `false` if there is no event found. - **message**: The event title with the `search` and `offset` values extracted. So in the above example for **offset_reached** the **message** would be set to `Very important meeting` - **description**: The event description. - **location**: The event Location. diff --git a/source/_components/camera.dispatcher.markdown b/source/_components/camera.dispatcher.markdown index 26eb74febcdf..b0f3c63b851e 100644 --- a/source/_components/camera.dispatcher.markdown +++ b/source/_components/camera.dispatcher.markdown @@ -36,6 +36,13 @@ from homeassistant.helpers.dispatcher import async_dispatcher_send async_dispatcher_send(hass, 'name_of_dispatcher_signal', image_data) ``` -Configuration variables: -- **signal** (*Required*): The signal name of dispatcher signal they send image data to this camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. +{% configuration %} +signal: + description: The signal name of dispatcher signal they send image data to this camera. + required: true + type: string +name: + description: This parameter allows you to override the name of your camera. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/camera.ffmpeg.markdown b/source/_components/camera.ffmpeg.markdown index 481c835a1535..e87ea2118445 100644 --- a/source/_components/camera.ffmpeg.markdown +++ b/source/_components/camera.ffmpeg.markdown @@ -25,11 +25,20 @@ camera: input: FFMPEG_SUPPORTED_INPUT ``` -Configuration variables: - -- **input** (*Required*): An FFmpeg-compatible input file, stream, or feed. -- **name** (*Optional*): Override the name of your camera. -- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. +{% configuration %} +input: + description: An FFmpeg-compatible input file, stream, or feed. + required: true + type: string +name: + description: Override the name of your camera. + required: false + type: string +extra_arguments: + description: Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. + required: false + type: string +{% endconfiguration %} ### {% linkable_title Image quality %} diff --git a/source/_components/camera.foscam.markdown b/source/_components/camera.foscam.markdown index c9d1aabd5059..8215b0f2ffb9 100644 --- a/source/_components/camera.foscam.markdown +++ b/source/_components/camera.foscam.markdown @@ -28,18 +28,34 @@ camera: password: YOUR_PASSWORD ``` -Configuration variables: - -- **ip** (*Required*): The IP address your camera. -- **port** (*Optional*): The port that the camera is running on. The default is 88. -- **username** (*Required*): The username for accessing your camera. -- **password** (*Required*): The password for accessing your camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. +{% configuration %} +ip: + description: The IP address your camera. + required: true + type: string +port: + description: The port that the camera is running on. + required: false + default: 88 + type: integer +username: + description: The username for accessing your camera. + required: true + type: string +password: + description: The password for accessing your camera. + required: true + type: string +name: + description: This parameter allows you to override the name of your camera. + required: false + type: string +{% endconfiguration %}

There seems to be some issues within Foscam with lengthy passwords and passwords containing certain symbols. Be sure to check your camera's documentation.

- + ### {% linkable_title Control Foscam PTZ (Pan/Tilt/Zoom) - Home/Away %} Foscam Webcams which support CGI Commands can be controlled by Home Assistant ([Source](http://www.ipcamcontrol.net/files/Foscam%20IPCamera%20CGI%20User%20Guide-V1.0.4.pdf)). For an example of how this can be done, see the [Foscam IP Camera Pan, Tilt, Zoom Control](/cookbook/foscam_away_mode_PTZ/) Cookbook entry. diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown index 99f7e03aa7e8..a5c9d503d680 100644 --- a/source/_components/camera.generic.markdown +++ b/source/_components/camera.generic.markdown @@ -27,17 +27,48 @@ camera: still_image_url: http://194.218.96.92/jpg/image.jpg ``` -Configuration variables: - -- **still_image_url** (*Required*): The URL your camera serves the image on, eg. http://192.168.1.21:2112/. Can be a [template](/topics/templating/). -- **name** (*Optional*): This parameter allows you to override the name of your camera. -- **username** (*Optional*): The username for accessing your camera. -- **password** (*Optional*): The password for accessing your camera. -- **authentication** (*Optional*): Type for authenticating the requests `basic` (default) or `digest`. -- **limit_refetch_to_url_change** (*Optional*): True/false value (default: false). Limits re-fetching of the remote image to when the URL changes. Only relevant if using a template to fetch the remote image. -- **content_type** (*Optional*): Set the content type for the IP camera if it is not a jpg file (default: `image/jpeg`). Use `image/svg+xml` to add a dynamic svg file. -- **framerate** (*Optional*): The number of frames-per-second (FPS) of the stream (setting this too high may cause too much traffic on the network or be heavy on the camera). -- **verify_ssl** (*Optional*): True/false value (default: true). Enable or disable SSL certificate verification. +{% configuration %} +still_image_url: + description: "The URL your camera serves the image on, eg. http://192.168.1.21:2112/. Can be a [template](/topics/templating/)." + required: true + type: string +name: + description: This parameter allows you to override the name of your camera. + required: false + type: string +username: + description: The username for accessing your camera. + required: false + type: string +password: + description: The password for accessing your camera. + required: false + type: string +authentication: + description: "Type for authenticating the requests `basic` or `digest`." + required: false + default: basic + type: string +limit_refetch_to_url_change: + description: True/false value. Limits re-fetching of the remote image to when the URL changes. Only relevant if using a template to fetch the remote image. + required: false + default: false + type: boolean +content_type: + description: Set the content type for the IP camera if it is not a jpg file. Use `image/svg+xml` to add a dynamic svg file. + required: false + default: image/jpeg + type: string +framerate: + description: The number of frames-per-second (FPS) of the stream. Can cause heavy traffic on the network and/or heavy load on the camera. + required: false + type: integer +verify_ssl: + description: Enable or disable SSL certificate verification. + required: false + default: true + type: boolean +{% endconfiguration %}

diff --git a/source/_components/camera.logi_circle.markdown b/source/_components/camera.logi_circle.markdown index 1b5254007000..beed202eafa4 100644 --- a/source/_components/camera.logi_circle.markdown +++ b/source/_components/camera.logi_circle.markdown @@ -31,13 +31,17 @@ camera: - platform: logi_circle ``` -Configuration variables: - -- **scan_interval**: (*Optional*): How frequently to query for new camera stills. Defaults to 60 seconds. +{% configuration %} +scan_interval: + description: How frequently to query for new camera stills, value are in seconds. + required: false + default: 60 + type: integer +{% endconfiguration %} ### {% linkable_title Service `camera.logi_circle_livestream_record` %} -Initiates a recording of the camera's live stream. +Initiates a recording of the camera's live stream. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -60,10 +64,10 @@ The path part of `filename` must be an entry in the `whitelist_external_dirs` in ### {% linkable_title Service `camera.logi_circle_set_config` %} -Sets an configuration property for your camera. +Sets a configuration property for your camera. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Name(s) of entities to set the operation mode for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | | `mode` | no | Configuration property to set. Allowed values: `BATTERY_SAVING`, `LED`, `PRIVACY_MODE` | -| `value` | no | Mode value. Allowed values: `true`, `false` | \ No newline at end of file +| `value` | no | Mode value. Allowed values: `true`, `false` | diff --git a/source/_components/camera.onvif.markdown b/source/_components/camera.onvif.markdown index 649cad832ff1..6d34a37788c5 100644 --- a/source/_components/camera.onvif.markdown +++ b/source/_components/camera.onvif.markdown @@ -24,15 +24,38 @@ camera: host: 192.168.1.111 ``` -Configuration variables: - -- **host** (*Required*): An IP or hostname of the camera. -- **name** (*Optional*): Override the name of your camera. -- **username** (*Optional*): The username for the camera. -- **password** (*Optional*): The password for the camera. -- **port** (*Optional*): The port for the camera. This defaults to 5000. -- **profile** (*Optional*): Video profile that will be used to obtain the stream. This defaults to 0. More details below. -- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [FFmpeg component](/components/ffmpeg). +{% configuration %} +host: + description: An IP or hostname of the camera. + required: true + type: string +name: + description: Override the name of your camera. + required: false + type: string +username: + description: The username for the camera. + required: false + type: string +password: + description: The password for the camera. + required: false + type: string +port: + description: The port for the camera. + required: false + default: 5000 + type: integer +profile: + description: Video profile that will be used to obtain the stream, more details below. + required: false + default: 0 + type: integer +extra_arguments: + description: "Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [FFmpeg component](/components/ffmpeg)." + required: false + type: string +{% endconfiguration %} Most of the Onvif cameras support more than one audio/video Profile. Each profile provides different image quality. Usually, the first profile has the highest quality, and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn't able to render the highest quality image in real-time - especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in config `profile` variable. diff --git a/source/_components/camera.xiaomi.markdown b/source/_components/camera.xiaomi.markdown index 14c4f9356869..05e213825ded 100644 --- a/source/_components/camera.xiaomi.markdown +++ b/source/_components/camera.xiaomi.markdown @@ -36,7 +36,7 @@ Hassbian users: Don't forget to install `ffmpeg` support on your platform, other

-The live stream writing by the camera is not an supported format when the hass reads through FTP for Yi 720p and Xiaofang Cameras, so this platform retrives the video which was saved 1 minute earlier. +The live stream writing by the camera is not a supported format when the hass reads through FTP for Yi 720p and Xiaofang Cameras, so this platform retrives the video which was saved 1 minute earlier.

diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/climate.generic_thermostat.markdown index 274ac0377f9e..89d09a5981e8 100644 --- a/source/_components/climate.generic_thermostat.markdown +++ b/source/_components/climate.generic_thermostat.markdown @@ -34,7 +34,7 @@ Configuration variables: - **max_temp** (*Optional*): Set maximum set point available (default: 35) - **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. As of version 0.59, it will retain the target temperature set before restart if available. - **ac_mode** (*Optional*): Set the switch specified in the *heater* option to be treated as a cooling device instead of a heating device. -- **min_cycle_duration** (*Optional*): Set a minimum amount of time that the switch specified in the *heater* option must be in it's current state prior to being switched either off or on. +- **min_cycle_duration** (*Optional*): Set a minimum amount of time that the switch specified in the *heater* option must be in its current state prior to being switched either off or on. - **cold_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched on. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will start when the sensor equals or goes below 24.5. - **hot_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched off. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will stop when the sensor equals or goes above 25.5. - **keep_alive** (*Optional*): Set a keep-alive interval. If set, the switch specified in the *heater* option will be triggered every time the interval elapses. Use with heaters and A/C units that shut off if they don't receive a signal from their remote for a while. Use also with switches that might lose state. The keep-alive call is done with the current valid climate component state (either on or off). diff --git a/source/_components/climate.opentherm_gw.markdown b/source/_components/climate.opentherm_gw.markdown index 4b67af4667b2..1248a6578160 100644 --- a/source/_components/climate.opentherm_gw.markdown +++ b/source/_components/climate.opentherm_gw.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "OpenTherm Gateway" +title: "OpenTherm Gateway Climate" description: "Control your OpenTherm Gateway from Home Assistant." date: 2018-08-29 16:23 sidebar: true @@ -18,48 +18,8 @@ The `opentherm_gw` climate platform is used to control the [OpenTherm Gateway](h # {% linkable_title Configuration %} -```yaml -# Example configuration.yaml entry -climate: - - platform: opentherm_gw - device: /dev/ttyUSB0 -``` - -{% configuration %} -device: - description: "Path to OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html)." - required: true - type: string -name: - description: The name for the device within Home Assistant. - required: false - type: string - default: OpenTherm Gateway -precision: - description: "The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`." - required: false - type: float - default: "`0.5` for Celsius and `1.0` for Fahrenheit." -floor_temperature: - description: Some thermostats round all temperatures down to the lower value according to their precision. Default behaviour for Home Assistant is to round temperatures to the nearest value. Set this to `True` to override Home Assistant and round to the lower value according to the configured `precision`. - required: false - type: boolean -{% endconfiguration %} +Configuration of this platform is achieved through the [OpenTherm Gateway Hub](/components/opentherm_gw/) configuration.

The OpenTherm protocol is based on polling. The thermostat sends requests to the boiler at specific intervals. As a result, it may take some time for changes to propagate between Home Assistant and the thermostat.

- -# {% linkable_title Example %} - -A full configuration example with the OpenTherm Gateway connected to a remote host running `ser2net` looks like the one below. - -```yaml -# Full example configuration.yaml entry -climate: - - platform: opentherm_gw - device: socket://otgw.example.org:2345 - name: Thermostat - precision: 0.5 - floor_temperature: True -``` diff --git a/source/_components/climate.sensibo.markdown b/source/_components/climate.sensibo.markdown index 02003d4aa6aa..85577dcdf81c 100644 --- a/source/_components/climate.sensibo.markdown +++ b/source/_components/climate.sensibo.markdown @@ -24,12 +24,16 @@ climate: api_key: ``` -Configuration variables: - -- **api_key** (*Required*): Your API key. -- **id** (*Optional*): A unit ID or a list of IDs. If none specified then all units accessible by the `api_key` will be used. - -To get your API key visit +{% configuration %} +api_key: + description: Your Sensibo API key (To get your API key visit ). + required: true + type: string +id: + description: A unit ID or a list of IDs. If none specified then all units accessible by the `api_key` will be used. + required: false + type: string +{% endconfiguration %}

If you create the API key using a dedicated user (and not your main user), @@ -46,3 +50,26 @@ climate: - id1 - id2 ``` + +### {% linkable_title Adding a quick switch example %} + +If you want a "Quick Switch" to turn your AC On / Off, you can do that using the following `Switch Template`: + +{% raw %} +```yaml +switch: + - platform: template + switches: + ac: + friendly_name: "AC" + value_template: "{{ is_state('climate.ac', 'cool') or is_state('climate.ac', 'heat') or is_state('climate.ac', 'dry') or is_state('climate.ac', 'heat')}}" + turn_on: + service: climate.turn_on + data: + entity_id: climate.ac + turn_off: + service: climate.turn_off + data: + entity_id: climate.ac +``` +{% endraw %} diff --git a/source/_components/cover.knx.markdown b/source/_components/cover.knx.markdown index d6d3733c1e19..4e43d315cf16 100644 --- a/source/_components/cover.knx.markdown +++ b/source/_components/cover.knx.markdown @@ -33,17 +33,54 @@ cover: travelling_time_up: 61 ``` -Configuration variables: - -- **name** (*Optional*): A name for this device used within Home Assistant. -- **move_long_address**: KNX group address for moving the cover full up or down. -- **move_short_address** (*Optional*): KNX group address for moving the cover short time up or down. If the KNX device has a stop group address you can use that here. -- **position_address** (*Optional*): KNX group address for moving the cover to the dedicated position. -- **position_state_address** (*Optional*): Separate KNX group address for requesting the current position of the cover. -- **angle_address** (*Optional*): KNX group address for moving the cover to the dedicated angle. -- **angle_state_address** (*Optional*): Separate KNX group address for requesting the current angle of cover. -- **travelling_time_down** (*Optional*): Time cover needs to travel down in seconds. Needed to calculate the intermediate positions of cover while traveling. Defaults to 25. -- **travelling_time_up** (*Optional*): Time cover needs to travel up in seconds. Needed to calculate the intermediate positions of cover while traveling. Defaults to 25. -- **invert_position** (*Optional*): Set this to true if your actuator report fully closed as 100%. -- **invert_angle** (*Optional*): Set this to true if your actuator reports tilt fully closed as 100%. - +{% configuration %} +name: + description: A name for this device used within Home Assistant. + required: false + default: KNX Cover + type: string +move_long_address: + description: KNX group address for moving the cover full up or down. + required: false + type: string +move_short_address: + description: KNX group address for moving the cover short time up or down. If the KNX device has a stop group address you can use that here. + required: false + type: string +position_address: + description: KNX group address for moving the cover to the dedicated position. + required: false + type: string +position_state_address: + description: Separate KNX group address for requesting the current position of the cover. + required: false + type: string +angle_address: + description: KNX group address for moving the cover to the dedicated angle. + required: false + type: string +angle_state_address: + description: Separate KNX group address for requesting the current angle of cover. + required: false + type: string +travelling_time_down: + description: Time cover needs to travel down in seconds. Needed to calculate the intermediate positions of cover while traveling. + required: false + default: 25 + type: integer +travelling_time_up: + description: Time cover needs to travel up in seconds. Needed to calculate the intermediate positions of cover while traveling. + required: false + default: 25 + type: integer +invert_position: + description: Set this to true if your actuator report fully closed as 100%. + required: false + default: false + type: boolean +invert_angle: + description: Set this to true if your actuator reports tilt fully closed as 100%. + required: false + default: false + type: boolean +{% endconfiguration %} diff --git a/source/_components/cover.mqtt.markdown b/source/_components/cover.mqtt.markdown index b3f15bfeccd7..26bb333b6b3c 100644 --- a/source/_components/cover.mqtt.markdown +++ b/source/_components/cover.mqtt.markdown @@ -159,6 +159,35 @@ unique_id: description: An ID that uniquely identifies this cover. If two covers have the same unique ID, Home Assistant will raise an exception. required: false type: string +device: + description: 'Information about the device this cover is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string {% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/cover.opengarage.markdown b/source/_components/cover.opengarage.markdown index d9327afa2a64..2675766c3fa8 100644 --- a/source/_components/cover.opengarage.markdown +++ b/source/_components/cover.opengarage.markdown @@ -33,14 +33,36 @@ cover: name: Right Garage Door ``` -Configuration variables: - -- **covers** array (*Required*): List of your doors. - - **identifier** (*Required*): Name of the cover as slug. Multiple entries are possible. - - **host** (*Required*): IP address of device. - - **port** (*Optional*): HTTP Port. Default is `80`. - - **device_key** (*Required*): Access key to control device. Default is `opendoor`. - - **name** (*Optional*): Name to use in the Frontend. If not provided, it will use name configured in device. +{% configuration %} +covers: + description: List of your doors. + required: true + type: map + keys: + identifier: + description: Name of the cover as slug. Multiple entries are possible. + required: true + type: map + keys: + host: + description: IP address of device. + required: true + type: string + port: + description: HTTP Port. + required: false + default: 80 + type: integer + device_key: + description: Access key to control device. + required: true + default: opendoor + type: string + name: + description: Name to use in the Frontend. If not provided, it will use name configured in device. + required: false + type: string +{% endconfiguration %} **Example with more detail:**

diff --git a/source/_components/datadog.markdown b/source/_components/datadog.markdown index 7a3ec052c742..c78a0c8bd463 100644 --- a/source/_components/datadog.markdown +++ b/source/_components/datadog.markdown @@ -33,9 +33,25 @@ To use the `datadog` component in your installation, add the following to your ` datadog: ``` -Configuration variables: - -- **host** (*Optional*): The IP address or hostname of your Datadog host, e.g., 192.168.1.23. Defaults to `localhost`. -- **port** (*Optional*): Port to use. Defaults to 8125. -- **prefix** (*Optional*): Prefix to use. Defaults to `hass`. -- **rate** (*Optional*): The sample rate of UDP packets sent to Datadog. Defaults to 1. +{% configuration %} +host: + description: The IP address or hostname of your Datadog host, e.g., 192.168.1.23. + required: false + default: localhost + type: string +port: + description: Port to use. + required: false + default: 8125 + type: integer +prefix: + description: Prefix to use. + required: false + default: hass + type: string +rate: + description: The sample rate of UDP packets sent to Datadog. + required: false + default: 1 + type: integer +{% endconfiguration %} diff --git a/source/_components/device_tracker.actiontec.markdown b/source/_components/device_tracker.actiontec.markdown index fbf211965001..f33d631b8f39 100644 --- a/source/_components/device_tracker.actiontec.markdown +++ b/source/_components/device_tracker.actiontec.markdown @@ -33,11 +33,20 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, eg. `192.168.1.1`. -- **username** (*Required*: The username of an user with administrative privileges, usually `admin`. -- **password** (*Required*): The password for your given admin account. +{% configuration %} +host: + description: The IP address of your router, eg. `192.168.1.1`. + required: true + type: string +username: + description: The username of an user with administrative privileges, usually `admin`. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.aruba.markdown b/source/_components/device_tracker.aruba.markdown index e84c37954b04..5ccea64ab67a 100644 --- a/source/_components/device_tracker.aruba.markdown +++ b/source/_components/device_tracker.aruba.markdown @@ -34,11 +34,19 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, e.g., `192.168.1.1`. -- **username** (*Required*): The username of an user with administrative privileges, usually `admin`. -- **password** (*Required*): The password for your given admin account. +{% configuration %} +host: + description: The IP address of your router, e.g., `192.168.1.1`. + required: true + type: string +username: + description: The username of an user with administrative privileges, usually `admin`. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - diff --git a/source/_components/device_tracker.automatic.markdown b/source/_components/device_tracker.automatic.markdown index c109862af844..e4d8880f57ec 100644 --- a/source/_components/device_tracker.automatic.markdown +++ b/source/_components/device_tracker.automatic.markdown @@ -37,20 +37,32 @@ device_tracker: - 2004 Subaru Impreza ``` -Configuration variables: - -- **client_id** (*Required*): The OAuth client id (get from https://developer.automatic.com/). -- **secret** (*Required*): The OAuth client secret (get from https://developer.automatic.com/). -- **current_location** (*Optional*): Set to `true` if you have requested `scope:current_location` for your account. Home Assistant will then be able to receive periodic location updates during trips. -- **devices** (*Optional*): The list of vehicle display names you wish to track. If not provided, all vehicles will be tracked. +{% configuration %} +client_id: + description: "The OAuth client id (get from https://developer.automatic.com/)." + required: true + type: string +secret: + description: "The OAuth client secret (get from https://developer.automatic.com/)." + required: true + type: string +current_location: + description: "Set to `true` if you have requested `scope:current_location` for your account. Home Assistant will then be able to receive periodic location updates during trips." + required: false + default: false + type: boolean +devices: + description: The list of vehicle display names you wish to track. If not provided, all vehicles will be tracked. + required: false + type: list +{% endconfiguration %} Home Assistant will also fire events when an update is received from Automatic. These can be used to trigger automations, as shown in the example below. A list of available event types can be found in the [Automatic Real-Time Events documentation](https://developer.automatic.com/api-reference/#real-time-events). - ```yaml # Example automatic event automation automation: - - trigger: + - trigger: - platform: event event_type: automatic_update event_data: @@ -60,6 +72,7 @@ automation: action: - service: light.turn_off ``` +

You can obtain the correct ID for your vehicle from your known_devices.yaml file. Be sure to lower-case any letters contained in your vehicle's ID when using it in an automation trigger.

diff --git a/source/_components/device_tracker.bluetooth_le_tracker.markdown b/source/_components/device_tracker.bluetooth_le_tracker.markdown index 83c21c615b7a..421a6e0708ba 100644 --- a/source/_components/device_tracker.bluetooth_le_tracker.markdown +++ b/source/_components/device_tracker.bluetooth_le_tracker.markdown @@ -36,10 +36,18 @@ device_tracker: - platform: bluetooth_le_tracker ``` -Configuration variables: - -- **track_new_devices** (*Optional*): If new discovered devices are tracked by default. Defaults to `True`. -- **interval_seconds** (*Optional*): Seconds between each scan for new devices. Defaults to `12` seconds. +{% configuration %} +track_new_devices: + description: If new discovered devices are tracked by default. + required: false + default: true + type: boolean +interval_seconds: + description: Seconds between each scan for new devices. + required: false + default: 12 + type: integer +{% endconfiguration %} As some BT LE devices change their MAC address regularly, a new device is only discovered when it has been seen 5 times. Some BTLE devices (e.g., fitness trackers) are only visible to the devices that they are paired with. In this case, the BTLE tracker won't see this device. diff --git a/source/_components/device_tracker.bt_home_hub_5.markdown b/source/_components/device_tracker.bt_home_hub_5.markdown index ce8890a0ed70..22c67170faba 100644 --- a/source/_components/device_tracker.bt_home_hub_5.markdown +++ b/source/_components/device_tracker.bt_home_hub_5.markdown @@ -11,7 +11,6 @@ logo: bt.png ha_category: Presence Detection --- - This platform offers presence detection by looking at connected devices to a [BT Home Hub 5](https://en.wikipedia.org/wiki/BT_Home_Hub) based router. To use a BT Home Hub 5 router in your installation, add the following to your `configuration.yaml` file: @@ -23,8 +22,12 @@ device_tracker: host: 192.168.1.254 ``` -Configuration variables: - -- **host** (*Optional*): The IP address of your router, Default: 192.168.1.254. +{% configuration %} +host: + description: The IP address of your router. + required: false + default: 192.168.1.254 + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.cisco_ios.markdown b/source/_components/device_tracker.cisco_ios.markdown index 589241b8eb63..ef48b6abac62 100644 --- a/source/_components/device_tracker.cisco_ios.markdown +++ b/source/_components/device_tracker.cisco_ios.markdown @@ -18,7 +18,7 @@ This is a presence detection scanner for [Cisco](http://www.cisco.com) IOS devic This device tracker needs SSH to be enabled on the router.

-Before using this scanner it is recommended that you lower the ARP cache timeout on your router, as Cisco IOS normally comes with a 4 hour default ARP cache timeout. +Before using this scanner it is recommended that you lower the ARP cache timeout on your router, as Cisco IOS normally comes with a 4 hour default ARP cache timeout. For example, the following commands will lower the timeout to 2 minutes on Vlan1: @@ -43,7 +43,7 @@ copy running-config startup-config ```

-If you have a very large number of devices on your VLan (+1000), then you may want to adjust the ARP cache timeout to suit your needs. See [this discussion](https://supportforums.cisco.com/discussion/10169296/arp-timeout) to learn more. +If you have a very large number of devices on your VLan (+1000), then you may want to adjust the ARP cache timeout to suit your needs. See [this discussion](https://supportforums.cisco.com/discussion/10169296/arp-timeout) to learn more.

To use this device tracker in your installation, add the following to your `configuration.yaml` file: @@ -57,12 +57,19 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, e.g., 192.168.1.1. -- **username** (*Required*): The username of an user with administrative privileges. -- **password** (*Required*): The password for your given admin account. - +{% configuration %} +host: + description: The IP address of your router, e.g., 192.168.1.1. + required: true + type: string +username: + description: The username of an user with administrative privileges. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - diff --git a/source/_components/device_tracker.ddwrt.markdown b/source/_components/device_tracker.ddwrt.markdown index 826046d029fc..01e1c68ce5eb 100644 --- a/source/_components/device_tracker.ddwrt.markdown +++ b/source/_components/device_tracker.ddwrt.markdown @@ -25,11 +25,20 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, e.g., `192.168.1.1`. -- **username** (*Required*: The username of an user with administrative privileges, usually `admin`. -- **password** (*Required*): The password for your given admin account. +{% configuration %} +host: + description: The IP address of your router, e.g., `192.168.1.1`. + required: true + type: string +username: + description: The username of an user with administrative privileges, usually `admin`. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +{% endconfiguration %} By default Home Assistant pulls information about connected devices from DD-WRT every 5 seconds. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.fritz.markdown b/source/_components/device_tracker.fritz.markdown index ed813ae1c376..07d2eee540fc 100644 --- a/source/_components/device_tracker.fritz.markdown +++ b/source/_components/device_tracker.fritz.markdown @@ -31,15 +31,23 @@ device_tracker: - platform: fritz ``` -Configuration variables: - -- **host** (*Optional*): The IP address of your router, eg. `192.168.1.1`. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. -- **username** (*Optional*: The username of an user with administrative privileges, usually `admin`. -- **password** (*Optional*): The password for your given admin account. +{% configuration %} +host: + description: The IP address of your router, e.g., `192.168.1.1`. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. + required: false + type: string +username: + description: The username of an user with administrative privileges, usually `admin`. + required: false + type: string +password: + description: The password for your given admin account. + required: false + type: string +{% endconfiguration %}

It seems that it is not necessary to use it in current generation Fritz!Box routers because the necessary data can be retrieved anonymously.

See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - diff --git a/source/_components/device_tracker.geofency.markdown b/source/_components/device_tracker.geofency.markdown index be09d277a1bb..e6f68b9efa86 100644 --- a/source/_components/device_tracker.geofency.markdown +++ b/source/_components/device_tracker.geofency.markdown @@ -22,9 +22,12 @@ device_tracker: - platform: geofency ``` -Configuration variables: - -- **mobile_beacons** (*Optional*): List of beacon names that are to be treated as *mobile*. The name must match the name you configure in Geofency. By default, beacons will be treated as *stationary*. +{% configuration %} +mobile_beacons: + description: List of beacon names that are to be treated as *mobile*. The name must match the name you configure in Geofency. By default, beacons will be treated as *stationary*. + required: false + type: list +{% endconfiguration %} A full sample configuration for the `geofency` platform is shown below: @@ -43,4 +46,4 @@ Geofency will automatically generate the device tracker name used for geofences, When you enter a geofence or stationary beacon, your location name in Home Assistant will be set to the name of the geofence or beacon location in Geofency. When you exit a geofence or stationary beacon, your location name in Home Assistant will be set to 'not home'. For mobile beacons, the location name will be 'not_home' whenever the beacon is entered or exited outside of a [zone](/components/zone/), otherwise, it will be set to the name of the zone. -To make Geofency work better with the [proximity](/components/proximity/) component, you should enable the 'Send Current Location' feature in the Webhook configuration screen. This ensures that the _current_ GPS coordinates are included in exit events instead of the coordinates of the (center of) the zone that was exited. \ No newline at end of file +To make Geofency work better with the [proximity](/components/proximity/) component, you should enable the 'Send Current Location' feature in the Webhook configuration screen. This ensures that the _current_ GPS coordinates are included in exit events instead of the coordinates of the (center of) the zone that was exited. diff --git a/source/_components/device_tracker.icloud.markdown b/source/_components/device_tracker.icloud.markdown index a57ba44d4b43..6867eaae0071 100644 --- a/source/_components/device_tracker.icloud.markdown +++ b/source/_components/device_tracker.icloud.markdown @@ -13,7 +13,7 @@ ha_release: "0.10" --- -The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. +The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. It does require that your device is registered with "Find My iPhone". @@ -28,13 +28,30 @@ device_tracker: account_name: accountname ``` -Configuration variables: - -- **username** (*Required*): The username for the iCloud account. -- **password** (*Required*): The password for your given username. -- **account_name** (*Optional*): The friendly name for the account_name. If this isn't given, it will use the account_name of the username (so the part before the `@` in the email address). -- **max_interval** (*Optional*): Maximum interval in minutes between subsequent location upates. This tracker uses dynamic intervals for requesting location updates. When iphone is stationary, interval will eventually be set to `max_interval` to save battery. When iphone starts moving again interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Default is 30 min. Minimum value is 1 min. -- **gps_accuracy_threshold** (*Optional*): iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows more precise location monitoring and fewer false positive zone changes. Default is 1000 meters. +{% configuration %} +username: + description: The username for the iCloud account. + required: true + type: string +password: + description: The password for your given username. + required: true + type: string +account_name: + description: The friendly name for the account_name. If this isn't given, it will use the account_name of the username (so the part before the `@` in the email address). + required: false + type: string +max_interval: + description: Maximum interval in minutes between subsequent location upates. This tracker uses dynamic intervals for requesting location updates. When iphone is stationary, interval will eventually be set to `max_interval` to save battery. When iphone starts moving again interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Minimum value is 1 min. + required: false + default: 30 + type: integer +gps_accuracy_threshold: + description: iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows more precise location monitoring and fewer false positive zone changes. + required: false + default: 1000 + type: integer +{% endconfiguration %}

Low `max_interval` may cause battery drainage as it wakes up your device to get the current location. @@ -50,7 +67,7 @@ To disable the drainage of the battery, a dynamic interval is being used for eac 2 Factor Authentication is the improved version of 2 Steps Authentication, this is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. 4 services are available for this component: -- **icloud_update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g. to check if anyone is home when door's been opened. +- **icloud_update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g., to check if anyone is home when door's been opened. - **icloud_lost_iphone**: This service will play the Lost iPhone sound on a certain iDevice. The `account_name` and `device_name` are optional. - **icloud_set_interval**: This service will change the dynamic interval of an iDevice. The `account_name` and `device_name` are optional. If `interval` is used in the service_data, the iDevice will be updated with that new interval. That interval will be fixed until the iDevice changes zone or if this service is called again. If `interval` isn't used in the service_data, the interval for that iDevice will revert back to its default dynamic interval based on its current zone, its distance towards home and its battery level. - **icloud_reset_account**: This service can be used to reset an iCloud account. This is helpful when not all devices are being found by the component or if you have added a new iDevice to your account. The `account_name` is optional. diff --git a/source/_components/device_tracker.keenetic_ndms2.markdown b/source/_components/device_tracker.keenetic_ndms2.markdown index d2d9fc506be2..01e8b8b96bbe 100644 --- a/source/_components/device_tracker.keenetic_ndms2.markdown +++ b/source/_components/device_tracker.keenetic_ndms2.markdown @@ -21,18 +21,34 @@ To use a Keenetic router in your installation, add the following to your `config # Example configuration.yaml entry device_tracker: - platform: keenetic_ndms2 - host: !secret router_ip - username: !secret router_username - password: !secret router_password + host: YOUR_HOST + username: YOUR_USERNAME + password: YOUR_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, e.g., 192.168.1.1. -- **port** (*Optional*): The Telnet port of your router. Default is 23. -- **username** (*Required*): The username to login into the router (user should have read access to telnet interface of the router). -- **password** (*Required*): The password for the specified username. -- **interface** (*Optional*): Ihe internal name of the interface to get devices connected to. Default is 'Home'. For expert users only. - +{% configuration %} +host: + description: The IP address of your router, e.g., 192.168.1.1. + required: true + type: string +port: + description: The Telnet port of your router. + required: false + default: 23 + type: integer +username: + description: The username to login into the router (user should have read access to telnet interface of the router). + required: true + type: string +password: + description: The password for the specified username. + required: true + type: string +interface: + description: Ihe internal name of the interface to get devices connected to. For expert users only. + required: false + default: Home + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.linksys_ap.markdown b/source/_components/device_tracker.linksys_ap.markdown index 70cc3e17a147..1204e61f77ad 100644 --- a/source/_components/device_tracker.linksys_ap.markdown +++ b/source/_components/device_tracker.linksys_ap.markdown @@ -29,12 +29,25 @@ device_tracker: password: YOUR_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The hostname or IP address of your access point, eg. `192.168.1.1`. -- **username** (*Required*): The username of an user with administrative privileges (read-only is sufficient). -- **password** (*Required*): The password for your given admin account. -- **verify_ssl** (*Optional*): Verify SSL certificate for HTTPS request. Defaults to true. +{% configuration %} +host: + description: The hostname or IP address of your access point, e.g., `192.168.1.1`. + required: true + type: string +username: + description: The username of an user with administrative privileges (read-only is sufficient). + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +verify_ssl: + description: Verify SSL certificate for HTTPS request. + required: false + default: true + type: boolean +{% endconfiguration %} ## {% linkable_title Example %} diff --git a/source/_components/device_tracker.linksys_smart.markdown b/source/_components/device_tracker.linksys_smart.markdown index 0cc22363fd93..601771a86bd6 100644 --- a/source/_components/device_tracker.linksys_smart.markdown +++ b/source/_components/device_tracker.linksys_smart.markdown @@ -34,8 +34,11 @@ device_tracker: host: 192.168.1.1 ``` -Configuration variables: - -- **host** (*Required*): The hostname or IP address of your router, eg. `192.168.1.1`. +{% configuration %} +host: + description: The hostname or IP address of your router, e.g., `192.168.1.1`. + required: true + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.luci.markdown b/source/_components/device_tracker.luci.markdown index c95813e34785..3e74b5ed9720 100644 --- a/source/_components/device_tracker.luci.markdown +++ b/source/_components/device_tracker.luci.markdown @@ -37,16 +37,28 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, e.g., `192.168.1.1`. -- **username** (*Required*): The username of an user with administrative privileges, usually `admin`. -- **password** (*Required*): The password for your given admin account. -- **ssl** (*Optional*): If your router enforces SSL connections, set to `true`. Defaults to `false`. +{% configuration %} +host: + description: The hostname or IP address of your router, e.g., `192.168.1.1`. + required: true + type: string +username: + description: The username of an user with administrative privileges, usually `admin`. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +ssl: + description: If your router enforces SSL connections, set to `true`. + required: false + default: false + type: boolean +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.

-Some installations have [a small bug](https://github.com/openwrt/luci/issues/576). The timeout for luci RPC calls is not set and this makes the call fail. +Some installations have [a small bug](https://github.com/openwrt/luci/issues/576). The timeout for luci RPC calls is not set and this makes the call fail.

- diff --git a/source/_components/device_tracker.mercedesme.markdown b/source/_components/device_tracker.mercedesme.markdown index 3707d5ca1cdb..c436e507c84c 100644 --- a/source/_components/device_tracker.mercedesme.markdown +++ b/source/_components/device_tracker.mercedesme.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Mercedes me" +title: "Mercedes me Device Tracker" description: "Instructions on for how to integrate Mercedes me into Home Assistant." date: 2018-01-27 10:00 sidebar: true diff --git a/source/_components/device_tracker.mikrotik.markdown b/source/_components/device_tracker.mikrotik.markdown index da1dceee4d96..5476d7902bcd 100644 --- a/source/_components/device_tracker.mikrotik.markdown +++ b/source/_components/device_tracker.mikrotik.markdown @@ -41,11 +41,24 @@ device_tracker: password: ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router. -- **username** (*Required*: The username of an user with administrative privileges. -- **password** (*Required*): The password for your given admin account. -- **port** (*Optional*): Mikrotik API port. Defaults to `8728`. +{% configuration %} +host: + description: The IP address of your router. + required: true + type: string +username: + description: The username of an user with administrative privileges. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +port: + description: Mikrotik API port. + required: false + default: 8728 + type: integer +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.mqtt.markdown b/source/_components/device_tracker.mqtt.markdown index cf8f006de1f4..bb40d07ea515 100644 --- a/source/_components/device_tracker.mqtt.markdown +++ b/source/_components/device_tracker.mqtt.markdown @@ -26,11 +26,16 @@ device_tracker: annetherese_n4: 'location/annetherese' ``` -Configuration variables: - -- **devices** (*Required*): List of devices with their topic. -- **qos** (*Optional*): The QoS level of the topic. - +{% configuration %} +devices: + description: List of devices with their topic. + required: true + type: list +qos: + description: The QoS level of the topic. + required: false + type: integer +{% endconfiguration %} Example JSON you can publish to the topic (e.g., via mqtt.publish service): diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown index 8bdcacc8cde0..78f05695e00a 100644 --- a/source/_components/device_tracker.netgear.markdown +++ b/source/_components/device_tracker.netgear.markdown @@ -26,16 +26,42 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **url** (*Optional*): The base URL, e.g., `http://routerlogin.com:5000` for example. If not provided `host` and `port` are used. If none provided autodetection of the URL will be used. -- **host** (*Optional*): The IP address of your router, e.g., `192.168.1.1`. -- **port** (*Optional*): The port your router communicates with. -- **username** (*Optional*): The username of a user with administrative privileges. If not provided `admin` will be used. -- **password** (*Required*): The password for your given admin account. -- **devices** (*Optional*): If provided only specified devices will be reported. Can be MAC address or the device name as reported in the Netgear UI. -- **exclude** (*Optional*): Devices to exclude from the scan. -- **accesspoints** (*Optional*): Also track devices on the specified APs. Only supports MAC address. +{% configuration %} +url: + description: The base URL, e.g., `http://routerlogin.com:5000` for example. If not provided `host` and `port` are used. If none provided autodetection of the URL will be used. + required: false + type: string +host: + description: The IP address of your router, e.g., `192.168.1.1`. + required: false + type: string +port: + description: The port your router communicates with. + required: false + default: 5000 + type: integer +username: + description: The username of a user with administrative privileges. + required: false + default: admin + type: string +password: + description: The password for your given admin account. + required: true + type: string +devices: + description: If provided only specified devices will be reported. Can be MAC address or the device name as reported in the Netgear UI. + required: false + type: list +exclude: + description: Devices to exclude from the scan. + required: false + type: list +accesspoints: + description: Also track devices on the specified APs. Only supports MAC address. + required: false + type: list +{% endconfiguration %} When `accesspoints` is specified an extra device will be reported for each device connected to the APs specified here, as `MY-LAPTOP on RBS40`. `Router` will be reported as AP name for the main AP. Only tested with Orbi. diff --git a/source/_components/device_tracker.nmap_tracker.markdown b/source/_components/device_tracker.nmap_tracker.markdown index a94ea14aeda7..aa268fe6fcf0 100644 --- a/source/_components/device_tracker.nmap_tracker.markdown +++ b/source/_components/device_tracker.nmap_tracker.markdown @@ -19,7 +19,7 @@ As an alternative to the router-based device tracking, it is possible to directl Please keep in mind that modern smart phones will usually turn off WiFi when they are idle. Simple trackers like this may not be reliable on their own.

-You might have to install the packages for `arp` and `nmap`. On Debian based hosts (for example Hassbian and Raspbian) do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`. +You might have to install the packages for `arp` and `nmap`. On Debian based hosts (for example Hassbian and Raspbian) do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`.

If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. @@ -36,12 +36,25 @@ device_tracker: hosts: 192.168.1.0/24 ``` -Configuration variables: - -- **hosts** (*Required*): The network address to scan (in any supported Nmap format). Mixing subnets and IPs is possible. -- **home_interval** (*Optional*): The number of minutes Nmap will not scan this device, assuming it is home, in order to preserve the device battery. -- **exclude** (*Optional*): Hosts not to include in Nmap scanning. Scanning the host where Home Assistant is running can cause problems (websocket error), so excluding that host is a good idea. -- **scan_options** (*Optional*): Configurable scan options for Nmap. Default to `-F --host-timeout 5s` +{% configuration %} +hosts: + description: The network address to scan (in any supported Nmap format). Mixing subnets and IPs is possible. + required: true + type: string +home_interval: + description: The number of minutes Nmap will not scan this device, assuming it is home, in order to preserve the device battery. + required: false + type: integer +exclude: + description: Hosts not to include in Nmap scanning. Scanning the host where Home Assistant is running can cause problems (websocket error), so excluding that host is a good idea. + required: false + type: list +scan_options: + description: Configurable scan options for Nmap. + required: false + default: -F --host-timeout 5s + type: string +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/device_tracker.openwrt.markdown b/source/_components/device_tracker.openwrt.markdown index 2f4b0f5a18e6..f9f720ac7304 100644 --- a/source/_components/device_tracker.openwrt.markdown +++ b/source/_components/device_tracker.openwrt.markdown @@ -25,7 +25,7 @@ There are _multiple_ ways of integrating an OpenWRT router for presence detectio * [ubus](/components/device_tracker.ubus/) * [luci](/components/device_tracker.luci/) * __passive/event-based__ - External services which notify Home Assistant of devices via the [REST API endpoint](/developers/rest_api.markdown). + External services which notify Home Assistant of devices via the [REST API endpoint](https://developers.home-assistant.io/docs/en/external_api_rest.html). * Advantages: * devices typically registered in under one second when they connect * very few network requests diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown index a3de574f9120..66838f654e4b 100644 --- a/source/_components/device_tracker.owntracks.markdown +++ b/source/_components/device_tracker.owntracks.markdown @@ -25,15 +25,39 @@ device_tracker: - platform: owntracks ``` -Configuration variables: - -- **max_gps_accuracy** (*Optional*): Sometimes Owntracks can report GPS location with a very low accuracy (few kilometers). That can trigger false zoning in your Home Assistant installation. With the parameter, you can filter these GPS reports. The number has to be in meter. For example, if you put 200 only GPS report with an accuracy under 200 will be take in account. -- **waypoints** (*Optional*): Owntracks users can define [waypoints](http://owntracks.org/booklet/features/waypoints/) (a.k.a regions) which are similar in spirit to Home Assistant zones. If this configuration variable is `True`, the Owntracks users who are in `waypoint_whitelist` can export waypoints from the device and Home Assistant will import them as zone definitions. Defaults to `True`. -- **waypoint_whitelist** (*Optional*): A list of user names (as defined for [Owntracks](/components/device_tracker.owntracks/)) who can export their waypoints from Owntracks to Home Assistant. This would be the `username` portion of the Base Topic Name, (e.g., owntracks/**username**/iPhone). Defaults to all users who are connected to Home Assistant via Owntracks. -- **secret** (*Optional*): [Payload encryption key](http://owntracks.org/booklet/features/encrypt/). This is usable when communicating with a third-party untrusted server or a public server (where anybody can subscribe to any topic). By default the payload is assumed to be unencrypted (although the communication between Home Assistant and the server might still be encrypted). This feature requires the `libsodium` library to be present. -- **mqtt_topic** (*Optional*): The topic to subscribe for Owntracks updates on your MQTT instance (defaults to `owntracks/#`). -- **events_only** (*Optional*): Home Assistant will ignore all location updates and rely solely on geofence enter/leave events. -- **region_mapping** (*Optional*): Dictionary to remap names of regions as configured in the Owntracks app to Home Assistant zones. Use this if you have multiple homes or Home Assistant instances and want to map a different label to 'home'. `key: value` maps Owntracks region `key` to Home Assistant zone `value`. +{% configuration %} +max_gps_accuracy: + description: Sometimes Owntracks can report GPS location with a very low accuracy (few kilometers). That can trigger false zoning in your Home Assistant installation. With the parameter, you can filter these GPS reports. The number has to be in meter. For example, if you put 200 only GPS report with an accuracy under 200 will be take in account. + required: false + type: integer +waypoints: + description: "Owntracks users can define [waypoints](http://owntracks.org/booklet/features/waypoints/) (a.k.a regions) which are similar in spirit to Home Assistant zones. If this configuration variable is `true`, the Owntracks users who are in `waypoint_whitelist` can export waypoints from the device and Home Assistant will import them as zone definitions." + required: false + default: true + type: boolean +waypoint_whitelist: + description: "A list of user names (as defined for [Owntracks](/components/device_tracker.owntracks/)) who can export their waypoints from Owntracks to Home Assistant. This would be the `username` portion of the Base Topic Name, (e.g., owntracks/**username**/iPhone)" + required: false + default: All users who are connected to Home Assistant via Owntracks. + type: list +secret: + description: "[Payload encryption key](http://owntracks.org/booklet/features/encrypt/). This is usable when communicating with a third-party untrusted server or a public server (where anybody can subscribe to any topic). By default the payload is assumed to be unencrypted (although the communication between Home Assistant and the server might still be encrypted). This feature requires the `libsodium` library to be present." + required: false + type: string +mqtt_topic: + description: The topic to subscribe for Owntracks updates on your MQTT instance. + required: false + default: owntracks/# + type: string +events_only: + description: Home Assistant will ignore all location updates and rely solely on geofence enter/leave events. + required: false + type: boolean +region_mapping: + description: "Dictionary to remap names of regions as configured in the Owntracks app to Home Assistant zones. Use this if you have multiple homes or Home Assistant instances and want to map a different label to 'home'. `key: value` maps Owntracks region `key` to Home Assistant zone `value`." + required: false + type: list +{% endconfiguration %} A full sample configuration for the `owntracks` platform is shown below: @@ -42,9 +66,9 @@ A full sample configuration for the `owntracks` platform is shown below: device_tracker: - platform: owntracks max_gps_accuracy: 200 - waypoints: True + waypoints: true mqtt_topic: "owntracks/#" - events_only: True + events_only: true waypoint_whitelist: - jon - ram @@ -107,5 +131,5 @@ You can use iBeacons of both types together, so if you have a Zone `drive` with By default, any Owntracks user connected to Home Assistant can export their waypoint definitions (from the *Export - Export to Endpoint* menu item) which will then be translated to zone definitions in Home Assistant. The zones will be named `- - `. This functionality can be controlled in 2 ways: -1. The configuration variable `waypoints` can be set to `False` which will disable importing waypoints for all users. +1. The configuration variable `waypoints` can be set to `false` which will disable importing waypoints for all users. 2. The configuration variable `waypoint_whitelist` can contain a list of users who are allowed to import waypoints. diff --git a/source/_components/device_tracker.quantum_gateway.markdown b/source/_components/device_tracker.quantum_gateway.markdown new file mode 100644 index 000000000000..05ff8524740e --- /dev/null +++ b/source/_components/device_tracker.quantum_gateway.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Quantum Gateway" +description: "Instructions on how to integrate Quantum Gateways into Home Assistant." +date: 2018-09-30 01:40 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Presence Detection +logo: fios.svg +ha_release: 0.81 +--- + +The `quantum_gateway` device tracker platform offers presence detection by looking at connected devices to a Verizon Fios gateway. + +It was tested with a Verizon Fios-G1100 Quantum Gateway. + +## {% linkable_title Configuration %} + +To use a Verizon Fios Quantum Gateway in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: quantum_gateway + host: 192.168.1.1 + password: YOUR_PASSWORD +``` + +{% configuration %} +host: + description: The IP address of your router, e.g., `192.168.1.1`. + required: false + type: string + default: myfiosgateway.com +password: + description: The password for the `admin` user. The default password may be printed on the gateway itself. + required: true + type: string +{% endconfiguration %} + +See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.sky_hub.markdown b/source/_components/device_tracker.sky_hub.markdown index 792aece8a851..0b9c175bf93c 100644 --- a/source/_components/device_tracker.sky_hub.markdown +++ b/source/_components/device_tracker.sky_hub.markdown @@ -23,9 +23,12 @@ device_tracker: - platform: sky_hub ``` -Configuration variables: - -- **host** (*Optional*): The IP address of your router. Defaults to `192.168.1.254`. +{% configuration %} +host: + description: The IP address of your router. + required: false + default: 192.168.1.254 + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown index 29c2a371378c..0e79012f0b18 100644 --- a/source/_components/device_tracker.snmp.markdown +++ b/source/_components/device_tracker.snmp.markdown @@ -54,18 +54,33 @@ If you want to use encryption, you must enable SNMP version 3 by adding `authkey device_tracker: - platform: snmp host: 192.168.1.1 - community: username - authkey: authpass - privkey: privpass + community: USERNAME + authkey: AUTHPASS + privkey: PRIVPASS baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1 ``` -Configuration variables: - -- **host** (*Required*): The IP address of the router, eg. 192.168.1.1. -- **community** (*Required*): The SNMP community which is set for the device. Most devices have a default community set to `public` with read-only permission (which is sufficient). -- **baseoid** (*Required*): The OID prefix where wireless client registrations can be found, usually vendor specific. It's advised to use the numerical notation. To find this base OID, check vendor documentation or check the MIB file for your device. -- **authkey** (*Inclusive*): Authentication key for SNMPv3. Variable privkey must also be set. -- **privkey** (*Inclusive*): Privacy key SNMPv3. Variable authkey must also be set. +{% configuration %} +host: + description: The IP address of the router, e.g., 192.168.1.1. + required: true + type: string +community: + description: The SNMP community which is set for the device. Most devices have a default community set to `public` with read-only permission (which is sufficient). + required: true + type: string +baseoid: + description: The OID prefix where wireless client registrations can be found, usually vendor specific. It's advised to use the numerical notation. To find this base OID, check vendor documentation or check the MIB file for your device. + required: true + type: string +authkey: + description: Authentication key for SNMPv3. Variable privkey must also be set. + required: inclusive + type: string +privkey: + description: Privacy key SNMPv3. Variable authkey must also be set. + required: inclusive + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.swisscom.markdown b/source/_components/device_tracker.swisscom.markdown index 49c4f72ba96d..890b537a4b5d 100644 --- a/source/_components/device_tracker.swisscom.markdown +++ b/source/_components/device_tracker.swisscom.markdown @@ -27,8 +27,12 @@ device_tracker: - platform: swisscom ``` -Configuration variables: - -- **host** (*Optional*): The IP address of your router. Set it if you are not using `192.168.1.1`. +{% configuration %} +host: + description: The IP address of your router. + required: false + default: 192.168.1.1 + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.tado.markdown b/source/_components/device_tracker.tado.markdown index 70f130c7e019..db808501a586 100644 --- a/source/_components/device_tracker.tado.markdown +++ b/source/_components/device_tracker.tado.markdown @@ -27,11 +27,20 @@ device_tracker: home_id: YOUR_HOME_ID ``` -Configuration variables: - -- **username** (*Required*): The username for your Tado account. -- **password** (*Required*): The password for your Tado account. -- **home_id** (*Optional*): The id of your home of which you want to track devices. If provided, the Tado device tracker will tack *all* devices known to Tado associated with this home. See below how to find it. +{% configuration %} +username: + description: The username for your Tado account. + required: true + type: string +password: + description: The password for your Tado account. + required: true + type: string +home_id: + description: The id of your home of which you want to track devices. If provided, the Tado device tracker will tack *all* devices known to Tado associated with this home. See below how to find it. + required: false + type: integer +{% endconfiguration %} After configuration, your device has to be at home at least once before showing up as *home* or *away*. Polling Tado API for presence information will happen at most once every 30 seconds. diff --git a/source/_components/device_tracker.thomson.markdown b/source/_components/device_tracker.thomson.markdown index 810d586d27bd..97decda817a4 100644 --- a/source/_components/device_tracker.thomson.markdown +++ b/source/_components/device_tracker.thomson.markdown @@ -27,10 +27,19 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, eg. 192.168.1.1. -- **username** (*Required*: The username of an user with administrative privileges, usually *admin*. -- **password** (*Required*): The password for your given admin account. +{% configuration %} +host: + description: The IP address of your router, e.g., 192.168.1.1. + required: true + type: string +username: + description: The username of an user with administrative privileges, usually *admin*. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.tplink.markdown b/source/_components/device_tracker.tplink.markdown index 89b476817960..29a969f4aa7b 100644 --- a/source/_components/device_tracker.tplink.markdown +++ b/source/_components/device_tracker.tplink.markdown @@ -36,11 +36,20 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, e.g., 192.168.1.1. -- **username** (*Required*): The username of a user with administrative privileges, usually *admin*. The Archer D9 last firmware does not require a username. -- **password** (*Required*): The password for your given admin account. +{% configuration %} +host: + description: The IP address of your router, e.g., 192.168.1.1. + required: true + type: string +username: + description: The username of an user with administrative privileges, usually *admin*. The Archer D9 last firmware does not require a username. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +{% endconfiguration %} For Archer C9 models running firmware version 150811 or later please use the encrypted password you can retrieve like this: @@ -54,6 +63,3 @@ For Archer C9 models running firmware version 150811 or later please use the enc See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. For Archer D9 model the default ip is 192.168.1.1, the username is not necessary and you can leave that field blank. - - - diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/device_tracker.ubus.markdown index d87102a0bbcb..2e9217696171 100644 --- a/source/_components/device_tracker.ubus.markdown +++ b/source/_components/device_tracker.ubus.markdown @@ -69,12 +69,25 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, eg. 192.168.1.1. -- **username** (*Required*): The username of an user with administrative privileges, usually *root*. -- **password** (*Required*): The password for your given account. -- **dhcp_software** (*Optional*): The DHCP software used in your router: `dnsmasq`, `dhcpd`, or `none`. Defaults to `dnsmasq`. +{% configuration %} +host: + description: The IP address of your router, e.g., 192.168.1.1. + required: true + type: string +username: + description: The username of an user with administrative privileges, usually `root`. + required: true + type: string +password: + description: The password for your given admin account. + required: true + type: string +dhcp_software: + description: "The DHCP software used in your router: `dnsmasq`, `dhcpd`, or `none`." + required: false + default: dnsmasq + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.upc_connect.markdown b/source/_components/device_tracker.upc_connect.markdown index 1f77bc8d869a..c196d366c520 100644 --- a/source/_components/device_tracker.upc_connect.markdown +++ b/source/_components/device_tracker.upc_connect.markdown @@ -23,9 +23,13 @@ device_tracker: - platform: upc_connect ``` -Configuration variables: - -- **host** (*Optional*): The IP address of your router. Set it if you are not using `192.168.0.1`. +{% configuration %} +host: + description: The IP address of your router. + required: false + default: 192.168.0.1 + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. @@ -33,4 +37,3 @@ Also known to be working with the following devices: - Irish Virgin Media Super Hub 3.0 - Ziggo Connectbox NL - Unitymedia Connect Box (DE) - diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index 4f4ef7f5a745..ab7905080174 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -59,8 +59,6 @@ discovery: - homekit ``` -{% linkable_title Configuration variables: %} - {% configuration discovery %} ignore: description: A list of platforms that never will be automatically configured by `discovery`. diff --git a/source/_components/dweet.markdown b/source/_components/dweet.markdown index fdfab021d8fa..41a45e6d6f5f 100644 --- a/source/_components/dweet.markdown +++ b/source/_components/dweet.markdown @@ -29,7 +29,7 @@ To use the `dweet` component in your installation, add the following to your `co ```yaml # Example configuration.yaml entry dweet: - name: HAExport + name: YOUR_UNIQUE_IDENTIFIER whitelist: - input_number.brightness - input_boolean.notify_home @@ -37,8 +37,14 @@ dweet: - sensor.cpu ``` -Configuration variables: - -- **name** (*Required*): Choose must choose an unique name. -- **whitelist** (*Required*): List of entity IDs you want to publish. +{% configuration %} +name: + description: A unique identifier for your Home Assistant instance. + required: true + type: string +whitelist: + description: List of entity IDs you want to publish + required: true + type: list +{% endconfiguration %} diff --git a/source/_components/dyson.markdown b/source/_components/dyson.markdown index adc8af1d33bb..b02d948f7ee8 100644 --- a/source/_components/dyson.markdown +++ b/source/_components/dyson.markdown @@ -32,19 +32,41 @@ dyson: device_ip: DEVICE_IP_2 ``` -Configuration variables: +{% configuration %} +username: + description: Dyson account username (email address). + required: true + type: string +password: + description: Dyson account password. + required: true + type: string +language: + description: "Dyson account language country code. Known working codes: `FR`, `NL`, `GB`, `AU`. Other codes should be supported." + required: true + type: string +devices: + description: List of devices. + required: false + type: map + keys: + device_id: + description: Device ID. The Serial Number of the device. Found in the smart phone app device settings page. + required: true + type: string + device_ip: + description: Device IP address. + required: true + type: string +{% endconfiguration %} -- **username** (*Required*): Dyson account username (email address). -- **password** (*Required*): Dyson account password. -- **language** (*Required*): Dyson account language country code. Known working codes: `FR`, `NL`, `GB`, `AU`. But others codes should work. -- **devices** (*Optional*): List of devices. - - **device_id** (*Required*): Device ID. The Serial Number of the device. Found in the mobiles applications device settings page. - - **device_ip** (*Required*): Device IP address. +The `devices` list is optional, but you'll have to provide them if discovery is not working (warnings in the logs and the devices are not available in Home Assistant web interface). -`devices` list is optional but you'll have to provide them if discovery is not working (warnings in the logs and the devices are not available in Home Assistant web interface). -*If your are using a robot vacuum (Dyson 360 Eye), discovery is not yet supported so you have to provide `devices` list.* +

+Discovery is not yet supported for any robot vacuum models (Dyson 360 Eye). For these devices, you will need to provide them in the `devices` list. +

-To find devices IP address, you can use your router or `nmap`: +To find a devices IP address, you can use your router or `nmap`: ```bash $ nmap -p 1883 XXX.XXX.XXX.XXX/YY -- open diff --git a/source/_components/emoncms_history.markdown b/source/_components/emoncms_history.markdown index 3903a53a606e..00f978f7fd6d 100644 --- a/source/_components/emoncms_history.markdown +++ b/source/_components/emoncms_history.markdown @@ -21,7 +21,7 @@ To use the `emoncms_history` component in your installation, add the following t ```yaml # Example configuration.yaml entry emoncms_history: - api_key: put your emoncms WRITE api key here + api_key: YOUR_EMONCMS_WRITE_API_KEY url: https://emoncms.org inputnode: 19 whitelist: @@ -29,10 +29,26 @@ emoncms_history: - sensor.owm_wind_speed ``` -Configuration variables: - -- **api_key** (*Required*): Your emoncms write api key -- **url** (*Required*): The root URL of your Emoncms installation. (Use https://emoncms.org for the cloud based version) -- **inputnode** (*Required*): Input node that will be used inside emoncms. Please make sure you use a dedicated, not used before, node for this component! -- **whitelist** (*Required*): List of entity IDs you want to publish. -- **scan_interval** (*Optional*): Defines, in seconds, how regularly the states of the whitelisted entities are being gathered and send to emoncms. Default is 30 seconds. +{% configuration %} +api_key: + description: Your Emoncms write api key + required: true + type: string +url: + description: The root URL of your Emoncms installation. (Use https://emoncms.org for the cloud based version) + required: true + type: string +inputnode: + description: Input node that will be used inside Emoncms. Please make sure you use a dedicated, not used before, node for this component! + required: true + type: integer +whitelist: + description: List of entity IDs you want to publish. + required: true + type: list +scan_interval: + description: Defines, in seconds, how regularly the states of the whitelisted entities are being gathered and send to Emoncms. + required: false + type: integer + default: 30 +{% endconfiguration %} diff --git a/source/_components/ffmpeg.markdown b/source/_components/ffmpeg.markdown index 38034e4e06aa..24f4f30de986 100644 --- a/source/_components/ffmpeg.markdown +++ b/source/_components/ffmpeg.markdown @@ -29,10 +29,18 @@ To set it up, add the following information to your `configuration.yaml` file: ffmpeg: ``` -Configuration variables: - -- **ffmpeg_bin** (*Optional*): Default `ffmpeg`. The name or path to the `ffmpeg` binary. -- **run_test** (*Optional*): Default True. Check if `input` is usable by ffmpeg. +{% configuration %} +ffmpeg_bin: + description: The name or path to the `ffmpeg` binary. + required: false + default: ffmpeg + type: string +run_test: + description: Check if `input` is usable by ffmpeg. + required: false + default: True + type: boolean +{% endconfiguration %} ### {% linkable_title Raspbian Debian Jessie Lite Installations %} To get the binary on Raspbian Debian Jessie Lite on a RPi you need to perform the following: @@ -100,4 +108,3 @@ Stream mapping: Press [q] to stop, [?] for help frame= 223 fps= 40 q=-1.0 Lsize= 16709kB time=00:00:07.40 bitrate=18497.5kbits/s dup=58 drop=0 speed=1.32x ``` - diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index b4c686990fdb..43700fe2efd8 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -36,13 +36,13 @@ Since release 0.80, the `Authorization Code` type of `OAuth` account linking is - Input any string you like into `Client Secret`, Home Assistant doesn't need this field. - Change `Authorization URL` to `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize` (replace with your actual URL). - Change `Token URL` to `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token` (replace with your actual URL). - - In the `Client information` section: + - In the `Configure your client` section: - Do **NOT** check `Google to transmit clientID and secret via HTTP basic auth header`. - Click 'Save' at the top right corner, then click 'Test' to generate a new draft version of the Test App. 2. Change your `configuration.yaml` file: - - Remove `client_id`, `access_token`, `agent_uer_id` config from `google_assistant:` since they are no longer needed. + - Remove `client_id`, `access_token`, `agent_user_id` config from `google_assistant:` since they are no longer needed. 3. Restart Home Assistant, open the `Google Assistant` app on your mobile phone then go to `Settings > Home Control`, re-link `[test] your app name`. -4. A browser will be open and asking you to login to your Home Assistant instance, it will edirect back to `Google Assistant` app right afterward. +4. A browser will be open and asking you to login to your Home Assistant instance, it will redirect back to `Google Assistant` app right afterward.

If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app. @@ -192,3 +192,7 @@ The request_sync service may fail with a 404 if the project_id of the Homegraph When using NGINX, ensure that your `proxy_pass` line *does not* have a trailing `/`, as this will result in errors. Your line should look like: proxy_pass http://localhost:8123; + +### {% linkable_title Unlink and relink %} + +If you're having trouble with *Account linking failed* after you unlinked your service, try clearing the browser history and cache. diff --git a/source/_components/graphite.markdown b/source/_components/graphite.markdown index 4802e4a75863..c4b8a78e2b1c 100644 --- a/source/_components/graphite.markdown +++ b/source/_components/graphite.markdown @@ -21,9 +21,21 @@ To enable this component, add the following lines to your `configuration.yaml`: graphite: ``` -Configuration variables: - -- **host** (*Option*): IP address of your graphite host, eg. http://192.168.1.10. Defaults to `localhost` -- **port** (*Optional*): Port to use. Defaults to 2003. -- **prefix** (*Optional*): Prefix is the metric prefix in graphite. Defaults to `ha`. +{% configuration %} +host: + description: IP address of your graphite host, e.g., http://192.168.1.10. + required: false + type: string + default: localhost +port: + description: This is a description of what this key is for. + required: false + type: integer + default: 2003 +prefix: + description: Prefix is the metric prefix in graphite. + required: false + type: string + default: ha +{% endconfiguration %} diff --git a/source/_components/group.markdown b/source/_components/group.markdown index 5e5232e86aa1..d6b86a353295 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -62,6 +62,7 @@ Configuration variables: - **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If the group is a view and both name and icon have been specified, the icon will appear at the top of the frontend and the name will be displayed as the mouse-over text. If it's not a view, then the icon shows when this group is used in another group. - **control** (*Optional*): Set value to `hidden`. If hidden then the group switch will be hidden. - **entities** (*Required*): array or comma delimited string, list of entities to group. +- **all** (*Optional*) Set this to `true` if the group state should only turn _on_ if __all__ grouped entities are _on_.

@@ -121,7 +122,7 @@ group: ## {% linkable_title Group behavior %} -When any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`. +By default when any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`. If you set the `all` option to `true` though, this behavior is inverted and all members of the group have to be `on` for the group to turn on as well. ## {% linkable_title Customize group order %} You can also order your groups using [customize](/docs/configuration/customizing-devices/) with `order: ` if they don't show up in the order you want them in. diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index f25897b42985..08d4835bd673 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -95,7 +95,7 @@ homekit: required: false type: list entity_config: - description: Configuration for specific entities. All subordinate keys are the corresponding entity ids to the domains, e.g. `alarm_control_panel.alarm`. + description: Configuration for specific entities. All subordinate keys are the corresponding entity ids to the domains, e.g., `alarm_control_panel.alarm`. required: false type: map keys: diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown index a60d144ec27f..64783bc44e29 100644 --- a/source/_components/homematic.markdown +++ b/source/_components/homematic.markdown @@ -294,7 +294,7 @@ action: When the connection to your HomeMatic CCU or Homegear is lost, Home Assistant will stop getting updates from devices. This may happen after rebooting the CCU for example. Due to the nature of the communication protocol this cannot be handled automatically, so you must call *homematic.reconnect* in this case. That's why it is usually a good idea to check if your HomeMatic components are still updated properly, in order to detect connection losses. This can be done in several ways through an automation: -- If you have a sensor which you know will be updated frequently (e.g. an outdoor temperature sensor or light sensor) you could set up an automation like this: +- If you have a sensor which you know will be updated frequently (e.g., an outdoor temperature sensor or light sensor) you could set up an automation like this: ```yaml automation: @@ -309,7 +309,7 @@ When the connection to your HomeMatic CCU or Homegear is lost, Home Assistant wi service: homematic.reconnect ``` -- If you have a CCU you can also create a system variable on the CCU, which stores it's last reboot time. Since Home Assistant can still refresh system variables from the CCU (even after a reboot), this is a pretty reliable way to detect situations where you need to call *homematic.reconnect*. This is how this can be done: +- If you have a CCU you can also create a system variable on the CCU, which stores its last reboot time. Since Home Assistant can still refresh system variables from the CCU (even after a reboot), this is a pretty reliable way to detect situations where you need to call *homematic.reconnect*. This is how this can be done: 1. Create a string variable **V_Last_Reboot** on the CCU diff --git a/source/_components/http.markdown b/source/_components/http.markdown index ef9c3369fec8..3c3b20ca888f 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -15,11 +15,6 @@ The `http` component serves all files and data required for the Home Assistant frontend. You only need to add this to your configuration file if you want to change any of the default settings. -

-It is HIGHLY recommended that you set the `api_password`, -especially if you are planning to expose your installation to the internet. -

-

Don't use option `server_host` on a Hass.io installation!

@@ -32,7 +27,7 @@ http: {% configuration %} api_password: - description: Protect Home Assistant with a password. + description: Protect the Home Assistant API with a password - this password can also be used to log in to the frontend. Where possible you should use a long lasting access token instead of this. required: false type: string server_host: diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index 9df07711f80f..4052506b526c 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -12,7 +12,7 @@ ha_category: History ha_release: 0.9 --- -The `influxdb` component makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. For more details, [see the blog post on InfluxDB](/blog/2015/12/07/influxdb-and-grafana/). +The `influxdb` component makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. See the [official installation documentation](https://docs.influxdata.com/influxdb/v1.6/introduction/installation/) for how to set up an InfluxDB database, or if you're using Hass.io, [there is a community add-on](https://community.home-assistant.io/t/community-hass-io-add-on-influxdb/54491) available. ## {% linkable_title Configuration %} @@ -25,28 +25,117 @@ influxdb: You will still need to create a database named `home_assistant` via InfluxDB's command line interface. For instructions on how to create a database check the [InfluxDB documentation](https://docs.influxdata.com/influxdb/latest/introduction/getting_started/#creating-a-database) relevant to the version you have installed. -Configuration variables: - -- **host** (*Optional*): IP address of your database host, e.g., 192.168.1.10. Defaults to `localhost`. -- **port** (*Optional*): Port to use. Defaults to 8086. -- **username** (*Optional*): The username of the database user. The user needs read/write privileges on the database. -- **password** (*Optional*): The password for the database user account. -- **database** (*Optional*): Name of the database to use. Defaults to `home_assistant`. The database must already exist. -- **ssl** (*Optional*): Use https instead of http to connect. Defaults to false. -- **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. -- **max_retries** (*Optional*): Allow the component to retry if there was a network error when transmitting data -- **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id. -- **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. -- **component_config**, **component_config_domain**, **component_config_glob** (*Optional*): These attributes contains component-specific override values. See [Customizing devices and services](/getting-started/customizing-devices/) for format. - - **override_measurement** (*Optional*): Measurement name to use for this component, takes precedence over the global 'override_measurement' and component-specific 'unit_of_measurement' attribute. -- **exclude** (*Optional*): Configure which components should be excluded from recording to InfluxDB. - - **entities** (*Optional*): The list of entity ids to be excluded from recording to InfluxDB. - - **domains** (*Optional*): The list of domains to be excluded from recording to InfluxDB. -- **include** (*Optional*): Configure which components should be included in recordings to InfluxDB. If set, all other entities will not be recorded to InfluxDB. Values set by the **blacklist** option will prevail. - - **entities** (*Optional*): The list of entity ids to be included from recordings to InfluxDB. - - **domains** (*Optional*): The list of domains to be included from recordings to InfluxDB. -- **tags** (*Optional*): Tags to mark the data. -- **tags_attributes** (*Optional*): The list of attribute names which should be reported as tags and not fields to InfluxDB. For example, if set to `friendly_name`, it will be possible to group by entities' friendly names as well, in addition to their ids. +{% configuration %} +host: + type: string + description: IP address of your database host, e.g., 192.168.1.10 + required: false + default: localhost +port: + type: integer + description: Port to use + required: false + default: 8086 +username: + type: string + description: The username of the database user. The user needs read/write privileges on the database + required: false +password: + type: string + description: The password for the database user account. + required: false +database: + type: string + description: Name of the database to use. The database must already exist. + required: false + default: home_assistant +ssl: + type: boolean + description: Use https instead of http to connect. + required: false + default: false +verify_ssl: + type: boolean + description: Verify SSL certificate for https request. + required: false + default: true +max_retries: + type: integer + description: Set this to allow the component to retry if there was a network error when transmitting data. + required: false + default: 0 +default_measurement: + type: string + description: Measurement name to use when an entity doesn't have a unit. + required: false + default: uses the entity id of the entity +override_measurement: + type: string + description: Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. + required: false +exclude: + type: list + description: Configure which components should be excluded from recording to InfluxDB. + required: false + keys: + entities: + type: list + description: The list of entity ids to be excluded from recording to InfluxDB. + required: false + domains: + type: list + description: The list of domains to be excluded from recording to InfluxDB. + required: false +include: + type: list + description: Configure which components should be included in recordings to InfluxDB. If set, all other entities will not be recorded to InfluxDB. Values set by the **exclude** lists will take precedence. + required: false + keys: + entities: + type: string, list + description: The list of entity ids to be included in recording to InfluxDB. + required: false + domains: + type: string, list + description: The list of domains to be included in recording to InfluxDB. + required: false +tags: + type: string, list + description: Tags to mark the data. + default: 0 +tags_attributes: + type: string, list + description: The list of attribute names which should be reported as tags and not fields to InfluxDB. For example, if set to `friendly_name`, it will be possible to group by entities' friendly names as well, in addition to their ids. + required: false + default: 0 +component_config: + type: string + required: false + description: This attribute contains component-specific override values. See [Customizing devices and services](/getting-started/customizing-devices/) for format. + keys: + override_measurement: + type: string + description: Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. + required: false +component_config_domain: + type: string + required: false + description: This attribute contains domain-specific component override values. See [Customizing devices and services](/getting-started/customizing-devices/) for format. + keys: + override_measurement: + type: string + description: Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. + required: false +component_config_glob: + type: string + required: false + description: This attribute contains component-specific override values. See [Customizing devices and services](/getting-started/customizing-devices/) for format. + keys: + override_measurement: + type: string + description: Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. + required: false +{% endconfiguration %} ## {% linkable_title Helper scripts %} diff --git a/source/_components/insteon.markdown b/source/_components/insteon.markdown index 7cb8e635ec74..d52e115b918c 100644 --- a/source/_components/insteon.markdown +++ b/source/_components/insteon.markdown @@ -61,11 +61,11 @@ insteon: hub_version: 1 ``` -Addtional configuration items are available: +Additional configuration items are available: ```yaml insteon: - + device_override: - address: ADDRESS cat: CATEGORY @@ -244,13 +244,13 @@ events. The following events are available: - **insteon.button_on** - **address**: (required) The Insteon device address in lower case without - dots (e.g. 1a2b3c) + dots (e.g., 1a2b3c) - **button**: (Optional) The button id in lower case. For a 4-button remote the values are `a` to `d`. For an 8 button remote the values are `a` to `g`. For a one-button remote this field is not used. - **insteon.button_of** - **address**: (required) The Insteon device address in lower case without - dots (e.g. 1a2b3c) + dots (e.g., 1a2b3c) - **button**: (Optional) The button id in lower case. For a 4-button remote the values are a to d. For an 8 button remote the values are `a` to `g`. For a one-button remote this field is not used. diff --git a/source/_components/intent_script.markdown b/source/_components/intent_script.markdown index 17e664d38086..bf41572753c6 100644 --- a/source/_components/intent_script.markdown +++ b/source/_components/intent_script.markdown @@ -13,7 +13,7 @@ ha_release: "0.50" ha_qa_scale: internal --- -The `intent_script` component allows users to configure actions and responses to intents. Intents can be fired by any component that supports it. Examples are [Alexa](/components/alexa/) (Amazon Echo), [API.ai](/components/dialogflow/) (Google Assistant) and [Snips](/components/snips/). +The `intent_script` component allows users to configure actions and responses to intents. Intents can be fired by any component that supports it. Examples are [Alexa](/components/alexa/) (Amazon Echo), [Dialogflow](/components/dialogflow/) (Google Assistant) and [Snips](/components/snips/). ```yaml # Example configuration.yaml entry diff --git a/source/_components/kira.markdown b/source/_components/kira.markdown index 0e74ad07b69c..7a0f3bc3772a 100644 --- a/source/_components/kira.markdown +++ b/source/_components/kira.markdown @@ -38,16 +38,45 @@ kira: port: 65432 ``` -Configuration variables: - -- **sensors** (*Optional*): Kira sensors to register - - **name** (*Optional*): Name of this sensor. - - **host** (*Optional*): Bind address for this sensor. 0.0.0.0 is default. - - **port** (*Optional*): UDP port to listen for packets on. 65432 is default. -- **remotes** (*Optional*): Remote Kira modules to register - - **name** (*Optional*): Name of this remote. - - **host** (*Required*): IP address of Kira module to send commands to. - - **port** (*Optional*): UDP port to send packets to. 65432 is default. +{% configuration %} +sensors: + description: Kira sensors to register. + required: false + type: map + keys: + name: + description: Name of this sensor. + required: false + type: string + host: + description: Bind address for this sensor. + required: false + default: 0.0.0.0 + type: string + port: + description: UDP port to listen for packets on. + required: false + default: 65432 + type: integer +remotes: + description: Remote Kira modules to register. + required: false + type: map + keys: + name: + description: Name of this remote. + required: false + type: string + host: + description: IP address of Kira module to send commands to. + required: true + type: string + port: + description: UDP port to send packets to. + required: false + default: 65432 + type: integer +{% endconfiguration %} If no sensors or remotes are specified, a sensor with default values will be added. @@ -70,13 +99,30 @@ The first time the Kira component is loaded, `kira_codes.yaml` will be created i type: nec ``` -Configuration variables: - -- **name** (*Required*): The name of this code. -- **code** (*Required*): The data for this code (see below). -- **device** (*Optional*): The device this code is associated with. Default is "unknown". -- **type** (*Optional*): The type of this code. If this field is omitted, the type will be autodetected if possible. -- **repeat** (*Optional*): The number of times to repeat this code (on transmit). Default is 1. +{% configuration %} +name: + description: The name of this code. + required: true + type: string +code: + description: The data for this code (see below). + required: true + type: string +device: + description: The device this code is associated with. + required: false + default: unknown + type: string +type: + description: The type of this code. If this field is omitted, the type will be autodetected if possible. + required: false + type: string +repeat: + description: The number of times to repeat this code (on transmit). + required: false + default: 1 + type: integer +{% endconfiguration %} Some manufacturers (e.g., Samsung) require an IR code to be sent a number of times in a row in rapid succession (usually 3). This doesn't apply to the vast majority of devices, but it can be helpful if needed. diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index 802b288f4c20..4f1b5b2c4a1f 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -23,7 +23,7 @@ The component requires a local KNX/IP interface like the [Weinzierl 730](http://

There is currently support for the following device types within Home Assistant: - + - [Binary Sensor](/components/binary_sensor.knx) - [Cover](/components/cover.knx) - [Sensor](/components/sensor.knx) @@ -47,12 +47,16 @@ Optional, recommended for large KNX installations (>100 devices) and/or if you w knx: config_file: '/path/to/xknx.yaml' ``` - -- **config_file** (*Optional*): The path for XKNX configuration file. +{% configuration %} +config_file: + description: The path for XKNX configuration file. + required: false + type: string +{% endconfiguration %} If the auto detection of the KNX/IP device does not work you can specify ip/port of the tunneling device: -```yaml +```yaml knx: tunneling: host: '192.168.2.23' @@ -60,9 +64,17 @@ knx: local_ip: '192.168.2.109' ``` -- **host**: Host of the KNX/IP tunneling device. -- **port**: Port of the KNX/IP tunneling device. -- **local_ip**: IP of the local interface. +{% configuration %} +host: + description: Host of the KNX/IP tunneling device. + type: string +port: + description: Port of the KNX/IP tunneling device. + type: integer +local_ip: + description: IP of the local interface. + type: string +{% endconfiguration %} Explicit connection to a KNX/IP routing device: @@ -73,7 +85,11 @@ knx: local_ip: '192.168.2.109' ``` -- **local_ip**: The local IP address of interface (which should be used for multicasting). +{% configuration %} +local_ip: + description: The local IP address of interface (which should be used for multicasting). + type: string +{% endconfiguration %} ```yaml knx: @@ -81,9 +97,21 @@ knx: fire_event_filter: ["1/0/*", "6/2,3,4-6/*"] ``` -- **fire_event** (*Optional*): If set to True, platform will write all received KNX messages to event bus -- **fire_event_filter** (*Optional*): If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus. -- **state_updater** (*Optional*): The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behavior. +{% configuration %} +fire_event: + description: If set to True, platform will write all received KNX messages to event bus + required: inclusive + type: boolean +fire_event_filter: + description: If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus. + required: inclusive + type: [list, string] +state_updater: + description: The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behavior. + required: false + default: true + type: boolean +{% endconfiguration %} ### {% linkable_title Services %} @@ -91,12 +119,18 @@ In order to directly interact with the KNX bus, you can now use the following se ``` Domain: knx -Service: send +Service: send Service Data: {"address": "1/0/15", "payload": 0} ``` -* **address**: KNX group address -* **payload**: Payload, either an integer or an array of integers +{% configuration %} +address: + description: KNX group address + type: string +payload: + description: Payload, either an integer or an array of integers + type: [integer, list] +{% endconfiguration %} ### {% linkable_title Exposing sensor values or time to knx bus %} @@ -115,11 +149,18 @@ knx: address: '0/0/23' ``` -* **type**: Type of the exposed value. Either time or datetime or any supported type of [KNX Sensor](/components/sensor.knx/) (e.g., "temperature" or "humidity"). -* **entity_id**: Entity id of the HASS component to be exposed. Not necessary for types time and datetime. -* **address**: KNX group address. +{% configuration %} +type: + description: Type of the exposed value. Either time or datetime or any supported type of [KNX Sensor](/components/sensor.knx/) (e.g., "temperature" or "humidity"). + type: string +entity_id: + description: Entity id of the HASS component to be exposed. Not necessary for types time and datetime. + type: string +address: + description: KNX group address. + type: string +{% endconfiguration %} ### {% linkable_title Known issues %} Due to lame multicast support the routing abstraction and the gateway scanner only work with Python >=3.5. - diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown index 1467787a4935..cd55944cb37b 100644 --- a/source/_components/konnected.markdown +++ b/source/_components/konnected.markdown @@ -52,7 +52,7 @@ access_token: required: true type: string api_host: - description: Override the IP address/host (and port number) of Home Assistant that the Konnected device(s) will use to communicate sensor state updates. If omitted, this is defaulted to the value of `base_url` in the `http` component. If you've set `base_url` to an external hostname, then you'll want to set this value back to your _local_ IP address and port (e.g. `http://192.168.1.101:8123`). + description: Override the IP address/host (and port number) of Home Assistant that the Konnected device(s) will use to communicate sensor state updates. If omitted, this is defaulted to the value of `base_url` in the `http` component. If you've set `base_url` to an external hostname, then you'll want to set this value back to your _local_ IP address and port (e.g., `http://192.168.1.101:8123`). required: false type: url default: value of `base_url` diff --git a/source/_components/lifx.markdown b/source/_components/lifx.markdown new file mode 100644 index 000000000000..11c478c64210 --- /dev/null +++ b/source/_components/lifx.markdown @@ -0,0 +1,132 @@ +--- +layout: page +title: "LIFX" +description: "Instructions on how to integrate LIFX into Home Assistant." +date: 2018-10-08 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lifx.png +ha_category: Light +ha_iot_class: "Local Polling" +ha_release: 0.81 +--- + +The `lifx` component allows you to integrate your [LIFX](https://www.lifx.com) into Home Assistant. + +_Please note, the `lifx` component does not support Windows. The `lifx_legacy` light platform (supporting basic functionality) can be used instead._ + +You can configure the LIFX component by going to the integrations page inside the config panel. + +## {% linkable_title Set state %} + +The LIFX bulbs allow a change of color and brightness even when they are turned off. This way you can control the light during the day so its settings are correct when events for turning on are received, for example from motion detectors or external buttons. + +The normal `light.turn_on` call cannot be used for this because it always turns the power on. Thus, LIFX has its own service call that allows color changes without affecting the current power state. + +### {% linkable_title Service `light.lifx_set_state` %} + +Change the light to a new state. + +| Service data attribute | Description | +| ---------------------- | ----------- | +| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `transition` | Duration (in seconds) for the light to fade to the new state. +| `zones` | List of integers for the zone numbers to affect (each LIFX Z strip has 8 zones, starting at 0). +| `infrared` | Automatic infrared level (0..255) when light brightness is low (for compatible bulbs). +| `power` | Turn the light on (`True`) or off (`False`). Leave out to keep the power as it is. +| `...` | Use `color_name`, `brightness` etc. from [`light.turn_on`]({{site_root}}/components/light/#service-lightturn_on) to specify the new state. + +## {% linkable_title Light effects %} + +The LIFX platform supports several light effects. You can start these effects with default options by using the `effect` attribute of the normal [`light.turn_on`]({{site_root}}/components/light/#service-lightturn_on) service, for example like this: +```yaml +automation: + - alias: ... + trigger: + # ... + action: + - service: light.turn_on + data: + entity_id: light.office, light.kitchen + effect: lifx_effect_pulse +``` + +However, if you want to fully control a light effect, you have to use its dedicated service call, like this: +```yaml +script: + colorloop_start: + alias: 'Start colorloop' + sequence: + - service: light.lifx_effect_colorloop + data: + entity_id: group.livingroom + brightness: 255 + period: 10 + spread: 30 +          change: 35 +``` + +The available light effects and their options are listed below. + +### {% linkable_title Service `light.lifx_effect_pulse` %} + +Run a flash effect by changing to a color and then back. + +| Service data attribute | Description | +| ---------------------- | ----------- | +| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `color_name` | A color name such as `red` or `green`. +| `rgb_color` | A list containing three integers representing the RGB color you want the light to be. +| `brightness` | Integer between 0 and 255 for how bright the color should be. +| `period` | The duration of a single pulse (in seconds). +| `cycles` | The total number of pulses. +| `mode` | The way to change between colors. Valid modes: `blink` (default), `breathe`, `ping`, `strobe`, `solid`. +| `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). + +### {% linkable_title Service `light.lifx_effect_colorloop` %} + +Run an effect with colors looping around the color wheel. All participating lights will coordinate to keep similar (but not identical) colors. + +| Service data attribute | Description | +| ---------------------- | ----------- | +| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `brightness` | Number between 0 and 255 indicating brightness of the effect. Leave this out to maintain the current brightness of each participating light. +| `period` | Duration (in seconds) between starting a new color change. +| `transition` | Duration (in seconds) where lights are actively changing color. +| `change` | Hue movement per period, in degrees on a color wheel (ranges from 0 to 359). +| `spread` | Maximum color difference between participating lights, in degrees on a color wheel (ranges from 0 to 359). +| `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). + +### {% linkable_title Service `light.lifx_effect_stop` %} + +Run an effect that does nothing, thereby stopping any other effect that might be running. + +| Service data attribute | Description | +| ---------------------- | ----------- | +| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. + + +## {% linkable_title Advanced configuration %} + +There are some manual configuration options available. These should only be needed if you have more than one network interface and automatic configuration does not find your LIFX devices. + +```yaml +# Example configuration.yaml entry +lifx: + light: + server: IP_ADDRESS + broadcast: IP_ADDRESS +``` + +{% configuration %} +server: + description: Your server address. Will listen on all interfaces if omitted. + required: false + type: string +broadcast: + description: The broadcast address for discovering lights. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/light.hyperion.markdown b/source/_components/light.hyperion.markdown index c7622a1a3fc7..622fdca3720a 100644 --- a/source/_components/light.hyperion.markdown +++ b/source/_components/light.hyperion.markdown @@ -61,3 +61,22 @@ light: type: list default: "['HDMI', 'Cinema brighten lights', 'Cinema dim lights', 'Knight rider', 'Blue mood blobs', 'Cold mood blobs', 'Full color mood blobs', 'Green mood blobs', 'Red mood blobs', 'Warm mood blobs', 'Police Lights Single', 'Police Lights Solid', 'Rainbow mood', 'Rainbow swirl fast', 'Rainbow swirl', 'Random', 'Running dots', 'System Shutdown', 'Snake', 'Sparks Color', 'Sparks', 'Strobe blue', 'Strobe Raspbmc', 'Strobe white', 'Color traces', 'UDP multicast listener', 'UDP listener', 'X-Mas']" {% endconfiguration %} + +## {% linkable_title Example %} + +To start Hyperion with an effect, use the following automation: + +```yaml +automation: +- id: one + alias: Turn Hyperion effect on when light goes on + trigger: + - platform: state + entity_id: light.hyperion + to: 'on' + action: + - service: light.turn_on + data: + entity_id: light.hyperion + effect: "Full color mood blobs" +``` diff --git a/source/_components/light.knx.markdown b/source/_components/light.knx.markdown index 4a229b62586e..2fc2af1508c2 100644 --- a/source/_components/light.knx.markdown +++ b/source/_components/light.knx.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: knx.png ha_category: Light -ha_release: 0.44 +ha_release: 0.44 ha_iot_class: "Local Polling" --- @@ -26,21 +26,39 @@ To use your KNX light in your installation, add the following lines to your `con # Example configuration.yaml entry light: - platform: knx - name: Kitchen-Light-1 address: '1/0/9' - brightness_address: '1/0/11' ``` -Configuration variables: - -- **address** (*Required*): KNX group address for switching the light on and off. -- **name** (*Optional*): A name for this device used within Home Assistant. -- **brightness_address** (Optional): KNX group address for dimming light. -- **state_address** (*Optional*): separate KNX group address for retrieving the switch state of the light. -- **brightness_state_address** (*Optional*): separate KNX group address for retrieving the dimmed state of the light. -- **color_address** (*Optional*): separate KNX group address for setting the color of the light. -- **color_state_address** (*Optional*): separate KNX group address for retrieving the color of the light. +{% configuration %} +address: + description: KNX group address for switching the light on and off. + required: true + type: string +name: + description: A name for this device used within Home Assistant. + required: false + type: string +brightness_address: + description: KNX group address for dimming light. + required: false + type: string +state_address: + description: separate KNX group address for retrieving the switch state of the light. + required: false + type: string +brightness_state_address: + description: separate KNX group address for retrieving the dimmed state of the light. + required: false + type: string +color_address: + description: separate KNX group address for setting the color of the light. + required: false + type: string +color_state_address: + description: separate KNX group address for retrieving the color of the light. + required: false + type: string +{% endconfiguration %} Some KNX devices can change their state internally without any messages on the KNX bus, e.g., if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object. For switching/light actuators that are only controlled by a single group address and can't change their state internally, you don't have to configure the state address. - diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown index cb6dc00f2f9e..511306f4aecd 100644 --- a/source/_components/light.lifx.markdown +++ b/source/_components/light.lifx.markdown @@ -13,110 +13,4 @@ ha_iot_class: "Local Polling" ha_release: 0.12 --- -The `lifx` platform allows you to integrate your [LIFX](http://www.lifx.com) into Home Assistant. - -_Please note, the `lifx` platform does not support Windows. The `lifx_legacy` platform (supporting basic functionality) can be used instead._ - -```yaml -# Example configuration.yaml entry -light: - - platform: lifx -``` -{% configuration %} -broadcast: - description: The broadcast address for discovering lights. Only needed if using more than one network interface. Omit if you are unsure. - required: false - type: string -server: - description: Your server address. Will listen on all interfaces if omitted. Omit if you are unsure. - required: false - type: string -{% endconfiguration %} - -## {% linkable_title Set state %} - -The LIFX bulbs allow a change of color and brightness even when they are turned off. This way you can control the light during the day so its settings are correct when events for turning on are received, for example from motion detectors or external buttons. - -The normal `light.turn_on` call cannot be used for this because it always turns the power on. Thus, LIFX has its own service call that allows color changes without affecting the current power state. - -### {% linkable_title Service `light.lifx_set_state` %} - -Change the light to a new state. - -| Service data attribute | Description | -| ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. -| `transition` | Duration (in seconds) for the light to fade to the new state. -| `zones` | List of integers for the zone numbers to affect (each LIFX Z strip has 8 zones, starting at 0). -| `infrared` | Automatic infrared level (0..255) when light brightness is low (for compatible bulbs). -| `power` | Turn the light on (`True`) or off (`False`). Leave out to keep the power as it is. -| `...` | Use `color_name`, `brightness` etc. from [`light.turn_on`]({{site_root}}/components/light/#service-lightturn_on) to specify the new state. - -## {% linkable_title Light effects %} - -The LIFX platform supports several light effects. You can start these effects with default options by using the `effect` attribute of the normal [`light.turn_on`]({{site_root}}/components/light/#service-lightturn_on) service, for example like this: -```yaml -automation: - - alias: ... - trigger: - # ... - action: - - service: light.turn_on - data: - entity_id: light.office, light.kitchen - effect: lifx_effect_pulse -``` - -However, if you want to fully control a light effect, you have to use its dedicated service call, like this: -```yaml -script: - colorloop_start: - alias: 'Start colorloop' - sequence: - - service: light.lifx_effect_colorloop - data: - entity_id: group.livingroom - brightness: 255 - period: 10 - spread: 30 -          change: 35 -``` - -The available light effects and their options are listed below. - -### {% linkable_title Service `light.lifx_effect_pulse` %} - -Run a flash effect by changing to a color and then back. - -| Service data attribute | Description | -| ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. -| `color_name` | A color name such as `red` or `green`. -| `rgb_color` | A list containing three integers representing the RGB color you want the light to be. -| `brightness` | Integer between 0 and 255 for how bright the color should be. -| `period` | The duration of a single pulse (in seconds). -| `cycles` | The total number of pulses. -| `mode` | The way to change between colors. Valid modes: `blink` (default), `breathe`, `ping`, `strobe`, `solid`. -| `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). - -### {% linkable_title Service `light.lifx_effect_colorloop` %} - -Run an effect with colors looping around the color wheel. All participating lights will coordinate to keep similar (but not identical) colors. - -| Service data attribute | Description | -| ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. -| `brightness` | Number between 0 and 255 indicating brightness of the effect. Leave this out to maintain the current brightness of each participating light. -| `period` | Duration (in seconds) between starting a new color change. -| `transition` | Duration (in seconds) where lights are actively changing color. -| `change` | Hue movement per period, in degrees on a color wheel (ranges from 0 to 359). -| `spread` | Maximum color difference between participating lights, in degrees on a color wheel (ranges from 0 to 359). -| `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). - -### {% linkable_title Service `light.lifx_effect_stop` %} - -Run an effect that does nothing, thereby stopping any other effect that might be running. - -| Service data attribute | Description | -| ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. +For installation instructions, see [the LIFX component](/components/lifx/). diff --git a/source/_components/light.markdown b/source/_components/light.markdown index b4e6102c8f6e..cf7a4413e1bc 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -19,7 +19,7 @@ The light component supports multiple entries in configuration.yaml To set the default color and brightness values when the light is turned on, create a custom `light_profiles.csv` (as described below in the `profile` attribute of `light.turn_on`). -The `.default` suffix should be added to the entity identifier of each light to define a default value, e.g. for `light.ceiling_2` the `id` field is `light.ceiling_2.default`. To define a default for all lights, the identifier `group.all_lights.default` can be used. Individual settings always supercede the `all_lights` default setting. +The `.default` suffix should be added to the entity identifier of each light to define a default value, e.g., for `light.ceiling_2` the `id` field is `light.ceiling_2.default`. To define a default for all lights, the identifier `group.all_lights.default` can be used. Individual settings always supercede the `all_lights` default setting. ### {% linkable_title Service `light.turn_on` %} @@ -29,7 +29,7 @@ Most lights do not support all attributes. You can check the platform documentat | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of lights. Else targets all. | `transition` | yes | Number that represents the time (in seconds) the light should take to transition to the new state. | `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. | `hs_color` | yes | A list containing two floats representing the hue and saturation of the color you want the light to be. Hue is scaled 0-360, and saturation is scaled 0-100. diff --git a/source/_components/light.mochad.markdown b/source/_components/light.mochad.markdown index 9721e9d6c981..c175d48ffd15 100644 --- a/source/_components/light.mochad.markdown +++ b/source/_components/light.mochad.markdown @@ -26,10 +26,24 @@ light: - address: a5 ``` -Configuration variables: - -- **address** (*Required*): The X10 address of the light. -- **name** (*Optional*): The name of the light. Default is: x10_light_dev_*address*. -- **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl. -- **brightness_levels** (*Optional*): The number of brightness levels the X10 light device supports. This can either be 32, 64, or 256 (note that the max -value sent to the device will be n-1 because it starts at 0) +{% configuration %} +address: + description: The X10 address of the light. + required: true + type: string +name: + description: The name of the light. + required: false + default: x10_light_dev_address + type: string +comm_type: + description: pl (powerline) or rf (radio frequency). + required: false + default: pl + type: string +brightness_levels: + description: The number of brightness levels the X10 light device supports. This can either be 32, 64, or 256 (note that the max value sent to the device will be n-1 because it starts at 0). + required: false + default: 32 + type: integer +{% endconfiguration %} diff --git a/source/_components/light.mqtt_template.markdown b/source/_components/light.mqtt_template.markdown index 27f5e0f0b335..adf44a2a92e5 100644 --- a/source/_components/light.mqtt_template.markdown +++ b/source/_components/light.mqtt_template.markdown @@ -52,7 +52,7 @@ state_topic: required: false type: string command_on_template: - description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *on* state changes. Available variables: `state`, `brightness`, `red`, `green`, `blue`, `flash`, `transition` and `effect`." + description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *on* state changes. Available variables: `state`, `brightness`, `red`, `green`, `blue`, `white_value`, `flash`, `transition` and `effect`." required: true type: string command_off_template: diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown index 4597bc7f8fa4..79f5a9b36c18 100644 --- a/source/_components/light.xiaomi_miio.markdown +++ b/source/_components/light.xiaomi_miio.markdown @@ -13,7 +13,7 @@ ha_iot_class: "Local Polling" ha_release: 0.53 --- -The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips Zhirui LED Bulb E14 Candle Lamp, Xiaomi Philips LED Ceiling Lamp and Xiaomi Philips Eyecare Lamp 2. +The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips Zhirui LED Bulb E14 Candle Lamp, Xiaomi Philips LED Ceiling Lamp, Xiaomi Philips Eyecare Lamp 2 and Philips Zhirui Desk Lamp. ## Features @@ -62,6 +62,17 @@ The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philip - reminder - eyecare_mode +### Philips Zhirui Desk Lamp + +* Power (on, off) +* Brightness +* Scene (1, 2, 3, 4) +* Delayed turn off (Resolution in seconds) +* Attributes + - model + - scene + - delayed_turn_off + Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. To add a Xiaomi Philips Light to your installation, add the following to your configuration.yaml file: @@ -91,7 +102,7 @@ name: type: string default: Xiaomi Philips Light model: - description: The model of your miio light. Valid values are `philips.light.bulb`, `philips.light.candle2`, `philips.light.sread1`, `philips.light.ceiling` and `philips.light.zyceiling`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. + description: The model of your miio light. Valid values are `philips.light.bulb`, `philips.light.candle`, `philips.light.candle2`, `philips.light.sread1`, `philips.light.ceiling`, `philips.light.zyceiling` and `philips.light.mono1`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. required: false type: string {% endconfiguration %} diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index d5d5adb4e80d..83cc0d5a648d 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -40,6 +40,7 @@ Configuration variables: - **transition** (*Optional*, default 350): Smooth transitions over time (in ms). - **use_music_mode** (*Optional*, default False): Enable music mode. - **save_on_change** (*Optional*, default False): Saves the bulb state in its nonvolatile memory when changed from Home Assistant. +- **model** (*Optional*): Yeelight model. Possible values are `mono1`, `color1`, `strip1`, `bslamp1`, `ceiling1`, `ceiling2`, `ceiling3`, `ceiling4`. The setting is used to enable model specific features f.e. a particular color temperature range. #### {% linkable_title Music mode %} Per default the bulb limits the amount of requests per minute to 60, a limitation which can be bypassed by enabling the music mode. In music mode the bulb is commanded to connect back to a socket provided by the component and it tries to keep the connection open, which may not be wanted in all use-cases. @@ -53,22 +54,27 @@ Determine your bulb IP (using router, software, ping ...). Information on how to enable "LAN Mode" can be found [here](https://getyeti.co/posts/how-to-control-yeelight-and-your-smarthome-with-yeti).

+### {% linkable_title Supported models %} +

This component is tested to work with the following models. If you have a different model and it is working please let us know.

-- **YLDP01YL**: LED Bulb (White) -- **YLDP02YL**: LED Bulb (Color) -- **YLDP03YL**: LED Bulb (Color) - E26 -- **YLDP05YL**: LED Bulb (White) II -- **YLDP06YL**: LED Bulb (Color) II -- **YLDD01YL**: Lightstrip (Color) -- **YLDD02YL**: Lightstrip (Color) -- **MJCTD01YL**: Xiaomi Mijia Bedside Lamp - WIFI Version! -- **MJTD01YL**: Xiaomi Mijia Smart LED Desk Lamp (autodiscovery isn't possible because the device doesn't support mDNS due to the small amount of RAM) -- **YLXD02YL**: Yeelight Ceiling Light 4 (Jiaoyue 650) -- **YLXD01YL**: Yeelight Smart LED Ceiling Light - Youth Version - +| Model ID | Model number | Product name | +|------------|--------------|--------------------------------------------------| +| `mono1` | YLDP01YL | LED Bulb (White) | +| ? | YLDP05YL | LED Bulb (White) - 2nd generation | +| `color1` | YLDP02YL | LED Bulb (Color) | +| `color1` | YLDP03YL | LED Bulb (Color) - E26 | +| `color2` | YLDP06YL | LED Bulb (Color) - 2nd generation | +| `strip1` | YLDD01YL | Lightstrip (Color) | +| `strip1` | YLDD02YL | Lightstrip (Color) | +| `bslamp1` | MJCTD01YL | Xiaomi Mijia Bedside Lamp - WIFI Version! | +| `lamp1` | MJTD01YL | Xiaomi Mijia Smart LED Desk Lamp (autodiscovery isn't possible because the device doesn't support mDNS due to the small amount of RAM) | +| `ceiling1` | ? | Yeelight Ceiling Light | +| `ceiling2` | YLXD01YL | Yeelight Smart LED Ceiling Light - Youth Version | +| `ceiling3` | ? | Yeelight Ceiling Light | +| `ceiling4` | YLXD02YL | Yeelight Ceiling Light 4 (Jiaoyue 650) | ## {% linkable_title Platform Services %} diff --git a/source/_components/lirc.markdown b/source/_components/lirc.markdown index ad96e2316b2e..7127b52caf7e 100644 --- a/source/_components/lirc.markdown +++ b/source/_components/lirc.markdown @@ -41,7 +41,7 @@ For more information have a look at `/usr/share/doc/lirc/README.Debian.gz` where Now teach LIRC about your particular remote control by preparing a lircd configuration file (`/etc/lirc/lircd.conf`). Search the [LIRC remote database](http://lirc.sourceforge.net/remotes/) for your model. If you can't find it, then you can always use the `irrecord` program to learn your remote. This will create a valid configuration file. Add as many remotes as you want by pasting them into the file. If `irrecord` doesn't work (e.g., for some air conditioner remotes), then the `mode2` program is capable of reading the codes in raw mode, followed by `irrecord -a` to extract hex codes. -Next, you have to make a `~/.lircrc` file that maps keypresses to system actions. The file has to be in the home dir of the user running Home Assistant, e.g. in `/home/homeassistant/.lircrc` if you're running in a virtual env. [The configuration](http://www.lirc.org/html/configure.html) is a bit tedious but it must be done. Use the `prog = home-assistant` for all keys you want to be recognized by Home Assistant. The values you set for `button` must be the same as in the `lircd.conf` file and the values you put for `config` entry will be the sensor value in Home Assistant when you press the button. An example may look like this: +Next, you have to make a `~/.lircrc` file that maps keypresses to system actions. The file has to be in the home dir of the user running Home Assistant, e.g., in `/home/homeassistant/.lircrc` if you're running in a virtual env. [The configuration](http://www.lirc.org/html/configure.html) is a bit tedious but it must be done. Use the `prog = home-assistant` for all keys you want to be recognized by Home Assistant. The values you set for `button` must be the same as in the `lircd.conf` file and the values you put for `config` entry will be the sensor value in Home Assistant when you press the button. An example may look like this: ```bash begin diff --git a/source/_components/lock.template.markdown b/source/_components/lock.template.markdown new file mode 100644 index 000000000000..155ba1390013 --- /dev/null +++ b/source/_components/lock.template.markdown @@ -0,0 +1,142 @@ +--- +layout: page +title: "Template Lock" +description: "Instructions on how to integrate Template Locks into Home Assistant." +date: 2018-10-09 19:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Lock +ha_release: 0.81 +ha_iot_class: "Local Push" +logo: home-assistant.png +ha_qa_scale: internal +--- + +The `template` platform creates locks that combines components. + +For example, if you have a garage door with a toggle switch that operates the motor and a sensor that allows you know whether the door is open or closed, you can combine these into a lock that knows whether the garage door is open or closed. + +This can simplify the GUI and make it easier to write automations. You can mark the components you have combined as `hidden` so they don't appear themselves. + +In optimistic mode, the lock will immediately change state after every command. Otherwise, the lock will wait for state confirmation from the template. Try to enable it, if experiencing incorrect lock operation. + +## {% linkable_title Configuration %} + +To enable Template Locks in your installation, add the following to your `configuration.yaml` file: + +{% raw %} +```yaml +# Example configuration.yaml entry +lock: + - platform: template + name: Garage door + value_template: "{{ is_state('sensor.door', 'on') }}" + lock: + service: switch.turn_on + data: + entity_id: switch.door + unlock: + service: switch.turn_off + data: + entity_id: switch.door +``` +{% endraw %} + +{% configuration %} + name: + description: Name to use in the frontend. + required: false + type: string + default: Template Lock + value_template: + description: Defines a template to set the state of the lock. + required: true + type: template + lock: + description: Defines an action to run when the lock is locked. + required: true + type: action + unlock: + description: Defines an action to run when the lock is unlocked. + required: true + type: action + optimistic: + description: Flag that defines if lock works in optimistic mode. + required: false + type: boolean + default: false +{% endconfiguration %} + +## {% linkable_title Considerations %} + +If you are using the state of a platform that takes extra time to load, the Template Lock may get an `unknown` state during startup. This results in error messages in your log file until that platform has completed loading. If you use `is_state()` function in your template, you can avoid this situation. For example, you would replace {% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} + +## {% linkable_title Examples %} + +In this section, you find some real-life examples of how to use this lock. + +### {% linkable_title Lock from Switch %} + +This example shows a lock that copies data from a switch. + +{% raw %} +```yaml +lock: + - platform: template + name: Garage Door + value_template: "{{ is_state('switch.source', 'on') }}" + lock: + service: switch.turn_on + data: + entity_id: switch.source + unlock: + service: switch.turn_off + data: + entity_id: switch.source +``` +{% endraw %} + +### {% linkable_title Optimistic Mode %} + +This example shows a lock in optimistic mode. This lock will immediately change state after command and will not wait for state update from the sensor. + +{% raw %} +```yaml +lock: + - platform: template + name: Garage Door + value_template: "{{ is_state('sensor.skylight.state', 'on') }}" + optimistic: true + lock: + service: switch.turn_on + data: + entity_id: switch.source + unlock: + service: switch.turn_off + data: + entity_id: switch.source +``` +{% endraw %} + +### {% linkable_title Sensor and Two Switches %} + +This example shows a lock that takes its state from a sensor, and uses two momentary switches to control a device. + +{% raw %} +```yaml +lock: + - platform: template + name: Garage Door + value_template: "{{ is_state('sensor.skylight.state', 'on') }}" + lock: + service: switch.turn_on + data: + entity_id: switch.skylight_open + unlock: + service: switch.turn_on + data: + entity_id: switch.skylight_close +``` +{% endraw %} diff --git a/source/_components/matrix.markdown b/source/_components/matrix.markdown index 75bd6da0e6af..d965ea1a9f50 100644 --- a/source/_components/matrix.markdown +++ b/source/_components/matrix.markdown @@ -31,7 +31,7 @@ Configuration variables: {% configuration %} username: - description: "The matrix username that Home Assistant should use to log in. *Note*: You must specify a full matrix ID here, including the homeserver domain, e.g. '@my_matrix_bot:matrix.org'. Please note also that the '@' character has a special meaning in YAML, so this must always be given in quotes." + description: "The matrix username that Home Assistant should use to log in. *Note*: You must specify a full matrix ID here, including the homeserver domain, e.g., '@my_matrix_bot:matrix.org'. Please note also that the '@' character has a special meaning in YAML, so this must always be given in quotes." required: true type: string password: diff --git a/source/_components/media_player.denon.markdown b/source/_components/media_player.denon.markdown index ebfe0177bae3..61fc86002fee 100644 --- a/source/_components/media_player.denon.markdown +++ b/source/_components/media_player.denon.markdown @@ -24,7 +24,8 @@ Supported devices: To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: -**Telnet platform** +## {% linkable_title Telnet platform %} + ```yaml # Example configuration.yaml entry media_player: @@ -32,10 +33,16 @@ media_player: host: IP_ADDRESS ``` -Configuration variables: - -- **host** (*Required*): IP address of the device. Example: 192.168.1.32 -- **name** (*Optional*): Name of the device. +{% configuration %} +host: + description: "IP address of the device. Example: 192.168.1.32" + required: true + type: string +name: + description: The name of the device + required: false + type: string +{% endconfiguration %} A few notes for platform: denon diff --git a/source/_components/media_player.mpd.markdown b/source/_components/media_player.mpd.markdown index 51888be2b20a..da37e9c478b7 100644 --- a/source/_components/media_player.mpd.markdown +++ b/source/_components/media_player.mpd.markdown @@ -27,12 +27,26 @@ media_player: host: IP_ADDRESS ``` -Configuration variables: - -- **host** (*Required*): IP address of the Host where Music Player Daemon is running. -- **port** (*Optional*): Port of the Music Player Daemon. Defaults to 6600. -- **name** (*Optional*): Name of your Music Player Daemon. Defaults to "MPD". -- **password** (*Optional*): Password for your Music Player Daemon. +{% configuration %} +host: + description: IP address of the Host where Music Player Daemon is running. + required: true + type: string +port: + description: Port of the Music Player Daemon. + required: false + type: integer + default: 6600 +name: + description: Name of your Music Player Daemon. + required: false + type: string + default: MPD +password: + description: Password for your Music Player Daemon. + required: false + type: string +{% endconfiguration %} Example script to load a saved playlist called "DeckMusic" and set the volume: diff --git a/source/_components/media_player.plex.markdown b/source/_components/media_player.plex.markdown index bc45310c3525..45db859c70eb 100644 --- a/source/_components/media_player.plex.markdown +++ b/source/_components/media_player.plex.markdown @@ -52,8 +52,8 @@ In case [discovery](/components/discovery/) does not work (GDM disabled or non-l - **IP_ADDRESS** (*Required*): IP address of the Plex Media Server. - **PORT** (*Required*): Port where Plex is listening. Default is 32400. - **TOKEN** (*Optional*): Only if authentication is required. Set to `null` (without quotes) otherwise. -- **ssl** (*Optional*): Whether to use SSL/TLS or not. Defaults to `False` if not present. -- **verify** (*Optional*): Perform a verification of the certificate. To allow invalid or self-signed SSL certificates set it to `False`. Defaults to `True` if not present. +- **ssl** (*Optional*): Whether to use SSL/TLS or not. Defaults to `false` if not present. +- **verify** (*Optional*): Perform a verification of the certificate. To allow invalid or self-signed SSL certificates set it to `false`. Defaults to `true` if not present. ## {% linkable_title Customization %} diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 9a80e3ad3937..92139ec1d547 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -81,8 +81,10 @@ Currently known supported models: - KS8000 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KU6020 (port must be set to 8001, and `pip3 install websocket-client` must be executed) +- KU6100 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KU6290 (port must be set to 8001) - KU7000 (port must be set to 8001) +- NU8000 - MU6170UXZG (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) - K5600AK (partially supported, turn on works but state is not updated) diff --git a/source/_components/media_player.vizio.markdown b/source/_components/media_player.vizio.markdown index 12916a2ed3c1..8345c3b1e808 100644 --- a/source/_components/media_player.vizio.markdown +++ b/source/_components/media_player.vizio.markdown @@ -56,7 +56,7 @@ Initiation will show you two different values: Finally, at this point a PIN code should be displayed at the top of your TV. With all these values, you can now finish pairing: ```bash -$ pyvizio --ip={ip} pair_finish --token={challenge_token} --pin={tv_pin} +$ pyvizio --ip={ip} pair-finish --token={challenge_token} --pin={tv_pin} ``` You will need the authentication token returned by this command to configure Home Assistant. diff --git a/source/_components/media_player.vlc.markdown b/source/_components/media_player.vlc.markdown index 09254957645a..0037537535af 100644 --- a/source/_components/media_player.vlc.markdown +++ b/source/_components/media_player.vlc.markdown @@ -24,10 +24,16 @@ media_player: - platform: vlc ``` -Configuration variables: - -- **name** (*Optional*): The name to use in the frontend. -- **arguments** (*Optional*): Additional arguments to be passed to VLC. +{% configuration %} +name: + description: The name to use in the frontend. + required: false + type: string +arguments: + description: Additional arguments to be passed to VLC. + required: false + type: string +{% endconfiguration %} Only the "music" media type is supported for now. diff --git a/source/_components/media_player.yamaha.markdown b/source/_components/media_player.yamaha.markdown index b996e642a47e..88a481b27d63 100644 --- a/source/_components/media_player.yamaha.markdown +++ b/source/_components/media_player.yamaha.markdown @@ -30,15 +30,33 @@ To add a Yamaha Network Receiver to your installation, add the following to your media_player: - platform: yamaha ``` -Configuration variables: - -- **name** (*Optional*): Name of the device. This overrides the - default name (often model number) that is returned by the device. -- **host** (*Optional*): IP address or hostname of the device -- **source_ignore** (*Optional*): List of sources to hide in the front-end -- **source_names** (*Optional*): Mapping of internal AVR source names to custom ones, allowing one to rename e.g., `HDMI1` to `ChromeCast` -- **zone_ignore** (*Optional*): List of zones to hide in the front-end -- **zone_names** (*Optional*): Mapping of zone names to custom ones, allowing one to rename e.g., `Main_Zone` to `Family Room` + +{% configuration %} +name: + description: Name of the device. This overrides the default name (often model number) that is returned by the device. + required: false + type: string +host: + description: IP address or hostname of the device. + required: false + type: string +source_ignore: + description: List of sources to hide in the front-end. + required: false + type: list +source_names: + description: Mapping of internal AVR source names to custom ones, allowing one to rename e.g., `HDMI1` to `ChromeCast`. + required: false + type: list +zone_ignore: + description: List of zones to hide in the front-end. + required: false + type: list +zone_names: + description: Mapping of zone names to custom ones, allowing one to rename e.g., `Main_Zone` to `Family Room`. + required: false + type: list +{% endconfiguration %} ### {% linkable_title Discovery notes %} diff --git a/source/_components/media_player.yamaha_musiccast.markdown b/source/_components/media_player.yamaha_musiccast.markdown index 7d98e77102f0..925f378816cc 100644 --- a/source/_components/media_player.yamaha_musiccast.markdown +++ b/source/_components/media_player.yamaha_musiccast.markdown @@ -24,15 +24,28 @@ media_player: - platform: yamaha_musiccast host: 192.168.xx.xx ``` -Configuration variables: -- **host** (*Required*): IP address or hostname of the device -- **port** (*Optional*): UDP source port. If multiple devices are present, specify a different port per device -- **interval_seconds** (*Optional*): Polling interval (default: 480 seconds = 8 minutes) - -A few notes: - -- Currently, this component supports powering on/off, mute, volume control, and source selection. Playback controls, for instance, play and stop are available for sources that support it. +{% configuration %} +host: + description: IP address or hostname of the device. + required: true + type: string +port: + description: UDP source port. If multiple devices are present, specify a different port per device. + required: false + type: integer +interval_seconds: + description: Polling interval in seconds. + required: false + type: integer + default: 480 +{% endconfiguration %} + +### {% linkable_title Supported operations %} + +Currently, this component supports powering on/off, mute, volume control, and source selection. Playback controls, for instance, play and stop are available for sources that support it. + +### {% linkable_title Example configuration %} A full configuration example will look like the sample below: ```yaml diff --git a/source/_components/modbus.markdown b/source/_components/modbus.markdown index dcccf0ede679..402cef31af26 100644 --- a/source/_components/modbus.markdown +++ b/source/_components/modbus.markdown @@ -30,15 +30,25 @@ modbus: port: 2020 ``` -Configuration variables: - -- **type** (*Required*): Type of the connection to Modbus. Possible values are: - - *tcp*: Modbus TCP protocol according to "MODBUS Messaging Implementation Guide version 1.0b" provided by Schneider Automation, - - *udp*: Modbus TCP form, but using UDP for transport (removes the overheads required for TCP), - - *rtuovertcp*: Modbus RTU message transmitted with a TCP/IP wrapper and sent over a network instead of serial lines. -- **host** (*Required*): The IP address of your Modbus device, eg. 192.168.1.1. -- **port** (*Required*): The port for the communication. -- **timeout** (*Optional*): Timeout for slave response in seconds. (default: 3) +{% configuration %} +type: + description: Type of the connection to Modbus. Possible values are `tcp` (Modbus TCP protocol according to "MODBUS Messaging Implementation Guide version 1.0b" provided by Schneider Automation.), `udp`(Modbus TCP form, but using UDP for transport. It removes the overheads required for TCP.) and `rtuovertcp` (Modbus RTU message transmitted with a TCP/IP wrapper and sent over a network instead of serial lines.). + required: true + type: string +host: + description: The IP address of your Modbus device, e.g., 192.168.1.1. + required: true + type: string +port: + description: The port for the communication. + required: true + type: integer +timeout: + description: Timeout for slave response in seconds. + required: false + default: 3 + type: integer +{% endconfiguration %} For a serial connection: @@ -54,16 +64,41 @@ modbus: parity: N ``` -Configuration variables: - -- **type** (*Required*): Type of the connection to Modbus. -- **method** (*Required*): Method of the connection to Modbus. -- **port** (*Required*): The port where your Modbus device is connected to your Home Assistant host. -- **baudrate** (*Required*): The speed for the serial connection. -- **stopbits** (*Required*): The stopbits for the serial connection. -- **bytesize** (*Required*): The bytesize for the serial connection. -- **parity** (*Required*): The parity for the serial connection. -- **timeout** (*Optional*): Timeout for slave response in seconds. (default: 3) +{% configuration %} +type: + description: Type of the connection to Modbus. + required: true + type: string +method: + description: Method of the connection to Modbus. + required: true + type: string +port: + description: The port where your Modbus device is connected to your Home Assistant host. + required: true + type: string +baudrate: + description: The speed for the serial connection. + required: true + type: integer +stopbits: + description: The stopbits for the serial connection. + required: true + type: integer +bytesize: + description: The bytesize for the serial connection. + required: true + type: integer +parity: + description: The parity for the serial connection. + required: true + type: string +timeout: + description: Timeout for slave response in seconds. + required: false + default: 3 + type: integer +{% endconfiguration %} ### {% linkable_title Services %} diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index a6e021b94fa9..9a22aeba8437 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -107,3 +107,7 @@ set_nest_eta: eta: 00:10:30 eta_window: 00:05 ``` + +{% linkable_title Troubleshooting %} + +- If you're getting [rickrolled](https://www.youtube.com/watch?v=dQw4w9WgXcQ) instead of being able to see your Nest cameras, you may not have set up your developer account's permissions correctly. Go back through and make sure you've selected read/write under every category that it's an option. diff --git a/source/_components/notify.flock.markdown b/source/_components/notify.flock.markdown index d164e2151ce8..f0612e929ca7 100644 --- a/source/_components/notify.flock.markdown +++ b/source/_components/notify.flock.markdown @@ -17,7 +17,7 @@ The `flock` platform uses [Flock.com](https://flock.com) to deliver notification ## {% linkable_title Setup %} -Go to the [Flock.com Admin website](https://admin.flock.com/#!/webhooks) and create a new "Incoming Webhooks". Choose a channel to send the notifications from Home Assistant to, specifiy a name and press *Save and Generate URL*. +Go to the [Flock.com Admin website](https://admin.flock.com/#!/webhooks) and create a new "Incoming Webhooks". Choose a channel to send the notifications from Home Assistant to, specify a name and press *Save and Generate URL*.

diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index 029f65144784..41a46d12ba4f 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -99,7 +99,7 @@ Assuming the previous test completed successfully and your browser was registere 1. Open Home Assistant in Chrome or Firefox. 2. Open the sidebar and click the Services button at the bottom (shaped like a remote control), located below the Developer Tools. -3. From the Services dropdown, search for your HTML5 notify service (E.G. notify.NOTIFIER_NAME) and select it. +3. From the Services dropdown, search for your HTML5 notify service (e.g., notify.NOTIFIER_NAME) and select it. 4. In the Service Data text box enter: {"message":"hello world"}, then press the CALL SERVICE button. 5. If everything worked you should see a popup notification. diff --git a/source/_components/notify.knx.markdown b/source/_components/notify.knx.markdown index 4e81f1e2362e..72c18e724d4c 100644 --- a/source/_components/notify.knx.markdown +++ b/source/_components/notify.knx.markdown @@ -28,8 +28,13 @@ notify: address: '5/1/10' ``` -Configuration variables: - -* **address** (*Required*): KNX group address of the notification. -* **name** (*Optional*): A name for this device used within Home Assistant. - +{% configuration %} +address: + description: KNX group address of the notification. + required: true + type: string +name: + description: A name for this device used within Home Assistant. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/notify.markdown b/source/_components/notify.markdown index 7f3225bd73cb..63cf49b985d6 100644 --- a/source/_components/notify.markdown +++ b/source/_components/notify.markdown @@ -55,6 +55,16 @@ A simple way to test if you have set up your notify platform correctly, is to us "message": "The sun is {% raw %}{% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}{% endraw %}!" } ``` + +The automation equivalent would be: + +```yaml +action: + service: notify.notify + data: + message: "The sun is {% raw %}{% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}{% endraw %}!" +``` + For services which have support for sending images. ```json @@ -67,6 +77,19 @@ For services which have support for sending images. } ``` +The automation equivalent would be: + +```yaml +action: + service: notify.notify + data: + message: "Test plugin" + data: + photo: + url: "http://www.gbsun.de/gbpics/berge/berge106.jpg" +``` + + If the service support sending the location, the data from this sample can be used. ```json @@ -80,3 +103,15 @@ If the service support sending the location, the data from this sample can be us } ``` +The automation equivalent would be: + +```yaml +action: + service: notify.notify + data: + message: "Test plugin" + data: + location: + latitude: 7.3284 + longitude: 46.38234 +``` diff --git a/source/_components/notify.nfandroidtv.markdown b/source/_components/notify.nfandroidtv.markdown index 6ec1639edb2a..2933ca017893 100644 --- a/source/_components/notify.nfandroidtv.markdown +++ b/source/_components/notify.nfandroidtv.markdown @@ -13,7 +13,7 @@ ha_release: 0.32 --- -Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). You can use this plarform to send notifications to your Android TV device. An overlay with the message content will appear for a configurable amount of seconds and then disapper again. Sending images (e.g. security cam) is supported too. +Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). You can use this plarform to send notifications to your Android TV device. An overlay with the message content will appear for a configurable amount of seconds and then disapper again. Sending images (e.g., security cam) is supported too. The notifications are in the global scope of your Android TV device. They will be displayed regardless of which application is running. diff --git a/source/_components/notify.pushsafer.markdown b/source/_components/notify.pushsafer.markdown index 6060016e1c52..886be8aa0aea 100644 --- a/source/_components/notify.pushsafer.markdown +++ b/source/_components/notify.pushsafer.markdown @@ -35,69 +35,66 @@ notify: Message to two devices with formatted text. -```json -{ - "title": "Test to 2 devices", - "message": "Attention [b]bold[/b] text[br][url=https://www.pushsafer.com]Link to Pushsafer[/url]", - "target": ["1111", "2222"], - "data": { - "icon": "2", - "iconcolor": "#FF0000", - "sound": "2", - "vibration": "1", - "url": "https://www.home-assistant.io/", - "urltitle": "Open Home Assistant", - "time2live": "0" - } -} + +```yaml +action: + service: notify.notify + data: + title: "Test to 2 devices" + message: "Attention [b]bold[/b] text[br][url=https://www.pushsafer.com]Link to Pushsafer[/url]" + data: + icon: "2" + iconcolor: "#FF0000" + sound: "2" + vibration: "1" + url: "https://www.home-assistant.io/" + urltitle: "Open Home Assistant" + time2live: "0" ``` Message to one device with formatted text and image from an external URL. -```json -{ - "title": "Test to 1 device with image from an url", - "message": "Attention [i]italic[/i] Text[br][url=https://www.home-assistant.io/]Testlink[/url]", - "target": ["1111"], - "data": { - "icon": "14", - "iconcolor": "#FFFF00", - "sound": "22", - "vibration": "3", - "url": "https://www.home-assistant.io/", - "urltitle": "Open Home Assistant", - "time2live": "60", - "picture1": { - "url":"https://www.home-assistant.io/images/components/alexa/alexa-512x512.png" - } - } -} +```yaml +action: + service: notify.notify + data: + title: "Test to 1 device with image from an url" + message: "Attention [i]italic[/i] Text[br][url=https://www.home-assistant.io/]Testlink[/url]" + data: + icon: "14" + iconcolor: "#FFFF00" + sound: "22" + vibration: "31" + url: "https://www.home-assistant.io/" + urltitle: "Open Home Assistant" + time2live: "60" + picture1: + url: "https://www.home-assistant.io/images/components/alexa/alexa-512x512.png" ``` Message to two devices and one device group with formatted text and local image. -```json -{ - "title": "Test to 3 devices with local image", - "message": "Attention [i]italic[/i] Text[br][url=https://www.home-assistant.io/]Testlink[/url]", - "target": ["1111","2222","gs3333"], - "data": { - "icon": "20", - "iconcolor": "#FF00FF", - "sound": "33", - "vibration": "0", - "url": "https://www.home-assistant.io/", - "urltitle": "Open Home Assistant", - "time2live": "10", - "priority": "2", - "retry": "60", - "expire": "600", - "answer": "1", - "picture1": { - "path":"C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg" - } - } -} +```yaml +action: + service: notify.notify + data: + title: "Test to 3 devices with local image" + message: "Attention [i]italic[/i] Text[br][url=https://www.home-assistant.io/]Testlink[/url]" + target: ["1111","2222","gs3333"], + data: + icon: "20" + iconcolor: "#FF00FF" + sound: "33" + vibration: "0" + url: "https://www.home-assistant.io/" + urltitle: "Open Home Assistant" + time2live: "10" + priority: "2" + retry: "60" + expire: "600" + answer: "1" + picture1: { + path: "C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg" ``` To customize your push-notification you can take a look at the [Pushsafer API description](https://www.pushsafer.com/en/pushapi). diff --git a/source/_components/notify.telegram.markdown b/source/_components/notify.telegram.markdown index 42acb5bd290b..934965200ee4 100644 --- a/source/_components/notify.telegram.markdown +++ b/source/_components/notify.telegram.markdown @@ -277,11 +277,11 @@ action: {% configuration %} url: - description: A remote path to an document. Either this or the `file` configuration option is required. + description: A remote path to a document. Either this or the `file` configuration option is required. required: true type: string file: - description: A local path to an document. Either this or the `url` configuration option is required. + description: A local path to a document. Either this or the `url` configuration option is required. required: true type: string caption: diff --git a/source/_components/notify.xmpp.markdown b/source/_components/notify.xmpp.markdown index 2073c7b263b3..eea60e42d3b7 100644 --- a/source/_components/notify.xmpp.markdown +++ b/source/_components/notify.xmpp.markdown @@ -39,9 +39,9 @@ Configuration variables: - **room** (*Optional*): Room's name (e.g., example@conference.jabber.org). If set, send a message to chatroom instead of the recipient.

- Pre Home-Assistant `sleekxmpp` was used to connect to XMPP-servers. Sleekxmpp as of version 1.3.2, does not support >TLS1. If you are running your own XMPP server (e.g. Prosody, ejabberd) make sure to allow using TLS1. + Pre Home-Assistant 0.80 `sleekxmpp` was used to connect to XMPP-servers. Sleekxmpp as of version 1.3.2, does not support >TLS1. If you are running your own XMPP server (e.g. Prosody, ejabberd) make sure to allow using TLS1. - Home-Assistant after uses `slixmpp`, which also supports TLSv1.1 and TLSv1.2. + Home-Assistant after 0.80 uses `slixmpp`, which also supports TLSv1.1 and TLSv1.2.

All Jabber IDs (JID) must include the domain. Make sure that the password matches the account provided as sender. diff --git a/source/_components/octoprint.markdown b/source/_components/octoprint.markdown index 29e6c039ed9c..f921c6eaabfe 100644 --- a/source/_components/octoprint.markdown +++ b/source/_components/octoprint.markdown @@ -14,25 +14,113 @@ ha_release: 0.19 ha_iot_class: "Local Polling" --- -[OctoPrint](http://octoprint.org/) is a web interface for your 3D printer. This is the main component to integrate OctoPrint sensors, you will have to setup sensors and binary sensors separately. +[OctoPrint](http://octoprint.org/) is a web interface for your 3D printer. This is the main component to integrate OctoPrint sensors. -To get started with the OctoPrint API, please follow the directions on their [site](http://docs.octoprint.org/en/master/api/general.html). Once OctoPrint is configured you will need to add your API key and host to your `configuration.yaml`. +## {% linkable_title Base Configuration %} +To get started with the OctoPrint API, please follow the directions on their [site](http://docs.octoprint.org/en/master/api/general.html). Once OctoPrint is configured you will need to add your API key and host to your `configuration.yaml`. ```yaml octoprint: host: YOUR_OCTOPRINT_HOST api_key: YOUR_API_KEY - bed: false - number_of_tools: 1 ``` -Configuration variables: +{% configuration %} +octoprint: + type: list + required: true + keys: + host: + description: IP address or hostname of Octoprint host. + required: true + type: string + api_key: + description: The retrieved api key. + required: true + type: string + name: + description: The name for this printer, must be unique if multiple printers are defined. + required: false + type: string + default: 'OctoPrint' + port: + description: The port of the Octoprint server. + required: false + type: integer + default: 80 + ssl: + description: Enable or disable SSL + required: false + type: boolean + default: false + bed: + description: If the printer has a heated bed. + required: false + type: boolean + default: false + number_of_tools: + description: Number of temperature adjustable tools. i.e. nozzle. + required: false + type: integer + default: 1 + sensors: + description: Configuration for the sensors + required: false + type: map + keys: + monitored_conditions: + description: The sensors to activate + type: list + default: all (`Current State`, `Temperatures`, `Job Percentage`, `Time Elapsed`, `Time Remaining`) + keys: + "Current State": + description: Text of current state. + "Temperatures": + description: Temperatures of all available tools, eg. `print`, `head`, `print bed`, etc. These will be displayed as `tool0`, `tool1`, or `toolN` please refer to your OctoPrint frontend to associate the tool number with an actual device. + "Job Percentage": + description: Percentage of the job. + "Time Elapsed": + description: Time elapsed on current print job, in seconds. + "Time Remaining": + description: Time remaining on current print job, in seconds. + binary_sensors: + description: Configuration for the binary sensors + required: false + type: map + keys: + monitored_conditions: + description: The sensors to activate + type: list + default: all (`Printing`, `Printing Error`) + keys: + "Printing": + description: State of the printer. + "Printing Error": + description: Error while printing. +{% endconfiguration %} + +

+If you are tracking temperature it is recommended to set `bed` and/or `number_of_tools` in your octoprint configuration. This will allow the octoprint sensors to load if the printer is offline during Home Assistant startup. +

+ +Example with multiple printers: -- **host** (*Required*): IP address or hostname of Octoprint host. -- **api_key** (*Required*): The retrieved api key. -- **bed** (*Optional*): If the printer has a heated bed. -- **number_of_tools** (*Optional*): Number of temperature adjustable tools. i.e. nozzle. +```yaml +octoprint: + - host: YOUR_OCTOPRINT_HOST + api_key: YOUR_API_KEY + name: PRINTER_NAME_1 + number_of_tools: 2 + sensors: + monitored_conditions: + - 'Current State' + - 'Job Percentage' + - host: YOUR_OCTOPRINT_HOST + api_key: YOUR_API_KEY + name: PRINTER_NAME_2 + number_of_tools: 1 +``` If the OctoPrint host is equipped with a web camera it is possible to add this as well. diff --git a/source/_components/opentherm_gw.markdown b/source/_components/opentherm_gw.markdown new file mode 100644 index 000000000000..307694883a6a --- /dev/null +++ b/source/_components/opentherm_gw.markdown @@ -0,0 +1,70 @@ +--- +layout: page +title: "OpenTherm Gateway Hub" +description: "Control your OpenTherm Gateway from Home Assistant." +date: 2018-10-07 16:23 +sidebar: true +comments: false +sharing: true +footer: true +logo: opentherm.png +ha_category: Hub +ha_release: 0.81 +ha_iot_class: "Local Push" +--- + +The `opentherm_gw` component is used to control the [OpenTherm Gateway](http://otgw.tclcode.com/) from Home Assistant. +When enabled, this component will automatically add it's [`climate` entity](/components/climate.opentherm_gw) to Home Assistant. + +# {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +opentherm_gw: + device: /dev/ttyUSB0 +``` + +{% configuration %} +device: + description: "Path to OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html)." + required: true + type: string +climate: + description: "Settings for the `opentherm_gw` climate entity." + required: false + type: map + keys: + name: + description: "The name for the device within Home Assistant." + required: false + type: string + default: "OpenTherm Gateway" + precision: + description: "The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`." + required: false + type: float + default: "`0.5` for Celsius and `1.0` for Fahrenheit." + floor_temperature: + description: "Some thermostats round all temperatures down to the lower value according to their precision. Default behavior for Home Assistant is to round temperatures to the nearest value. Set this to `True` to override Home Assistant and round to the lower value according to the configured `precision`." + required: false + type: boolean + default: false +{% endconfiguration %} + +

+The OpenTherm protocol is based on polling. The thermostat sends requests to the boiler at specific intervals. As a result, it may take some time for changes to propagate between Home Assistant and the thermostat. +

+ +# {% linkable_title Example %} + +A full configuration example with the OpenTherm Gateway connected to a remote host running `ser2net` looks like the one below. + +```yaml +# Full example configuration.yaml entry +opentherm_gw: + device: socket://otgw.example.org:2345 + climate: + name: Thermostat + precision: 0.5 + floor_temperature: True +``` diff --git a/source/_components/openuv.markdown b/source/_components/openuv.markdown index 390249c7d309..cc66c3df92a5 100644 --- a/source/_components/openuv.markdown +++ b/source/_components/openuv.markdown @@ -114,5 +114,5 @@ These sensors display the approximate number of minutes a particular skin type c * Skin Type VI

-The above guidelines constitude estimates and are intended to help informed decision making. They should not replace analysis, advice, or diagnosis from a trained medical professional. +The above guidelines constitute estimates and are intended to help informed decision making. They should not replace analysis, advice, or diagnosis from a trained medical professional.

diff --git a/source/_components/panel_iframe.markdown b/source/_components/panel_iframe.markdown index ba13cf6967b1..9f79b38edb3f 100644 --- a/source/_components/panel_iframe.markdown +++ b/source/_components/panel_iframe.markdown @@ -60,3 +60,4 @@ panel_iframe: type: icon {% endconfiguration %} +

Do **not** create one that are named `lovelace` it will overwrite lovelace causing it to never load.

diff --git a/source/_components/prometheus.markdown b/source/_components/prometheus.markdown index 42eddb459964..ea36b0278df8 100644 --- a/source/_components/prometheus.markdown +++ b/source/_components/prometheus.markdown @@ -39,8 +39,14 @@ You can then configure Prometheus to fetch metrics from Home Assistant by adding - job_name: 'hass' scrape_interval: 60s metrics_path: /api/prometheus + + # Legacy api password params: api_password: ['PASSWORD'] + + # Long-Lived Access Token + bearer_token: 'your.longlived.token + scheme: https static_configs: - targets: ['HOSTNAME:8123'] diff --git a/source/_components/remote.harmony.markdown b/source/_components/remote.harmony.markdown index 6785cdb9fc44..3d9743b3715a 100644 --- a/source/_components/remote.harmony.markdown +++ b/source/_components/remote.harmony.markdown @@ -43,15 +43,31 @@ You can override some default configuration values on a discovered hub (e.g., th activity: Watch TV ``` -Configuration variables: - -- **name** (*Required*): The hub's name to display in the frontend. This name must match the name you have set on the Hub. -- **host** (*Optional*): The Harmony device's IP address. Leave empty for the IP to be discovered automatically. -- **port** (*Optional*): The Harmony device's port. Defaults to 5222. -- **activity** (*Optional*): Activity to use when `turn_on` service is called without any data. Overrides the `activity` setting for this discovered hub. -- **delay_secs** (*Optional*): Default duration in seconds between sending commands to a device. - -Configuration file: +{% configuration %} +name: + description: The hub's name to display in the frontend. This name must match the name you have set on the Hub. + required: true + type: string +host: + description: The Harmony device's IP address. Leave empty for the IP to be discovered automatically. + required: false + type: string +port: + description: The Harmony device's port. + required: false + type: integer + default: 5222 +activity: + description: Activity to use when `turn_on` service is called without any data. Overrides the `activity` setting for this discovered hub. + required: false + type: string +delay_secs: + description: Default duration in seconds between sending commands to a device. + required: false + type: float +{% endconfiguration %} + +### {% linkable_title Configuration file %} Upon startup one file will be written to your Home Assistant configuration directory per device in the following format: `harmony_REMOTENAME.conf`. The file will contain: diff --git a/source/_components/scene.elkm1.markdown b/source/_components/scene.elkm1.markdown new file mode 100644 index 000000000000..346e54be32a5 --- /dev/null +++ b/source/_components/scene.elkm1.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Elk-M1 Scene" +description: "Instructions on how to integrate Elk-M1 tasks (macros)." +date: 2018-10-07 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: elkproducts.png +ha_release: 0.81 +ha_category: Scene +ha_iot_class: "Local Push" +--- + +The `elkm1` platform allows you to control your [Elk-M1](https://www.elkproducts.com/m1_controls.html). + +Elk-M1 tasks are represented as `scene` entities. + +

+Full configuration details can be found on the main [Elk-M1 component](/components/elkm1/) page. +

diff --git a/source/_components/scene.hunterdouglas_powerview.markdown b/source/_components/scene.hunterdouglas_powerview.markdown index 2ef810a113ee..a418c8f4ddd2 100644 --- a/source/_components/scene.hunterdouglas_powerview.markdown +++ b/source/_components/scene.hunterdouglas_powerview.markdown @@ -23,6 +23,9 @@ scene: address: IP_ADDRESS ``` -Configuration variables: - -- **address** (*Required*): IP address of the PowerView Hub, eg. 192.168.1.10. +{% configuration %} +address: + description: IP address of the PowerView Hub, eg. 192.168.1.10. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/scene.knx.markdown b/source/_components/scene.knx.markdown index 7fd18417d87f..95fe53698a75 100644 --- a/source/_components/scene.knx.markdown +++ b/source/_components/scene.knx.markdown @@ -29,9 +29,17 @@ scene: scene_number: 23 ``` -Configuration variables: - -- **address** (*Required*): KNX group address of the binary sensor. -- **scene_number** (*Required*): Zero-indexed KNX scene number to be activated. -- **name** (*Optional*): A name for this device used within Home Assistant. - +{% configuration %} +address: + description: KNX group address of the binary sensor. + required: true + type: string +scene_number: + description: Zero-indexed KNX scene number to be activated. + required: true + type: integer +name: + description: A name for this device used within Home Assistant. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/scene.lifx_cloud.markdown b/source/_components/scene.lifx_cloud.markdown index 7b6ac7a27994..219dcb48beeb 100644 --- a/source/_components/scene.lifx_cloud.markdown +++ b/source/_components/scene.lifx_cloud.markdown @@ -21,10 +21,17 @@ scene: token: YOUR_LIFX_TOKEN ``` -Configuration variables: - -- **token** (*Required*): The API token for your LIFX Cloud account. -- **timeout** (*Optional*): Network timeout in seconds (defaults to 10). +{% configuration %} +token: + description: The API token for your LIFX Cloud account. + required: true + type: string +timeout: + description: Network timeout in seconds. + required: false + default: 10 + type: integer +{% endconfiguration %} ### Getting an API token diff --git a/source/_components/sensor.bbox.markdown b/source/_components/sensor.bbox.markdown index a45e4bdb5edb..3f456901862a 100644 --- a/source/_components/sensor.bbox.markdown +++ b/source/_components/sensor.bbox.markdown @@ -34,11 +34,23 @@ sensor: - current_up_bandwidth ``` -Configuration variables: - -- **monitored_variables** array (*Required*): Sensors to display in the frontend. - - **down_max_bandwidth**: Maximum bandwidth available for download. - - **up_max_bandwidth**: Maximum bandwidth available for upload. - - **current_down_bandwidth**: Instant measure of the current used bandwidth for download. - - **current_up_bandwidth**: Instant measure of the current used bandwidth for upload. - +{% configuration %} +name: + description: Name to display in the frontend. + required: false + default: Bbox + type: string +monitored_variables: + description: Sensors to display in the frontend. + required: true + type: list + keys: + down_max_bandwidth: + description: Maximum bandwidth available for download. + up_max_bandwidth: + description: Maximum bandwidth available for upload. + current_down_bandwidth: + description: Instant measure of the current used bandwidth for download. + current_up_bandwidth: + description: Instant measure of the current used bandwidth for upload. +{% endconfiguration %} diff --git a/source/_components/sensor.bme680.markdown b/source/_components/sensor.bme680.markdown index aa7b7103a534..814b276edce2 100644 --- a/source/_components/sensor.bme680.markdown +++ b/source/_components/sensor.bme680.markdown @@ -107,7 +107,7 @@ aq_humidity_baseline: default: 40 type: integer aq_humidity_bias: - description: The bias for humidity to the gas resistance measurement in the air quality calculations expressed as a percentage of the total calculation e.g., 25% hudidtity to 75% gas. + description: The bias for humidity to the gas resistance measurement in the air quality calculations expressed as a percentage of the total calculation e.g., 25% humidity to 75% gas. required: false default: 25 type: integer diff --git a/source/_components/sensor.bom.markdown b/source/_components/sensor.bom.markdown index 7774077d9cff..c3cc033404c8 100644 --- a/source/_components/sensor.bom.markdown +++ b/source/_components/sensor.bom.markdown @@ -25,8 +25,6 @@ To add the BOM weather observation to your installation, add the following to yo # Example configuration.yaml entry sensor: - platform: bom - station: IDS60801.94675 - name: Adelaide monitored_conditions: - apparent_t - cloud @@ -64,11 +62,74 @@ To get the station ID for any BOM station: - The URL will look like: http://www.bom.gov.au/products/IDx60801/[station].shtml - For Adelaide, the URL will look like `http://www.bom.gov.au/products/IDS60801/IDS60801.94675.shtml`; the station ID is `IDS60801.94675`. -Configuration variables: - -- **station** (*Optional*): The station ID string as identified from the BOM website. If not given, defaults to the closest station. -- **name** (*Optional*): The name you would like to give to the weather station. -- **monitored_conditions** (*Required*): A list of the conditions to monitor. +{% configuration %} +station: + description: The station ID string as identified from the BOM website. + required: false + type: string + default: If not given, defaults to the closest station based on location data in configuration.yaml. +name: + description: The name you would like to give to the weather station. + required: false + type: string +monitored_conditions: + description: A list of the conditions to monitor. + required: true + type: list + keys: + apparent_t: + description: Feels like temperature in C. + cloud: + description: Cloud cover. + cloud_base_m: + description: Cloud Base in m. + cloud_oktas: + description: Cloud Oktas. + cloud_type_id: + description: Cloud type ID. + cloud_type: + description: Cloud type description. + delta_t: + description: Delta temperature in C. + gust_kmh: + description: Wind gust in km/h. + gust_kt: + description: Wing gust in kt. + air_temp: + description: Air temperature in C. + dewpt: + description: Drew point in C. + press: + description: Pressure in mbar. + press_qnh: + description: Pressure in qnh. + press_msl: + description: Pressure in msl. + press_tend: + description: Pressure trend. + rain_trace: + description: Raing today in mm. + rel_hum: + description: Relative Humidity in %. + sea_state: + description: Sea state. + swell_dir_worded: + description: Swell direction. + swell_height: + description: Swell hight in m. + swell_period: + description: Swell period. + vis_km: + description: Visibility in km. + weather: + description: Weather summary. + wind_dir: + description: Wind direction. + wind_spd_kmh: + description: Wind speed in km/h. + wind_spd_kt: + description: Wind speed in kt. +{% endconfiguration %}

This sensor is an alternative to the [`bom`](/components/weather.bom/) weather platform. diff --git a/source/_components/sensor.cert_expiry.markdown b/source/_components/sensor.cert_expiry.markdown index 99b0578b76b3..f65dc2acdd1c 100644 --- a/source/_components/sensor.cert_expiry.markdown +++ b/source/_components/sensor.cert_expiry.markdown @@ -13,7 +13,7 @@ ha_release: 0.44 ha_iot_class: "depends" --- -The `cert_expiry` sensor fetches information from a configured URL and displays the certificate expiry in days. +The `cert_expiry` sensor fetches information from a configured URL and displays the certificate expiry in days. ## {% linkable_title Configuration %} @@ -26,13 +26,23 @@ sensor: host: home-assistant.io ``` -Configuration variables: - -- **host** (*Required*): The host FQDN (or IP) to retrieve certificate from. -- **port** (*Optional*): The port number where the server is running. Defaults to `443`. -- **name** (*Optional*): The friendly name for the certificate. +{% configuration %} +host: + description: The host FQDN (or IP) to retrieve certificate from. + required: true + type: string +port: + description: The port number where the server is running. + required: false + default: 443 + type: integer +name: + description: The friendly name for the certificate. + required: false + default: SSL Certificate Expiry + type: string +{% endconfiguration %}

Make sure that the URL exactly matches your endpoint or resource.

- diff --git a/source/_components/sensor.citybikes.markdown b/source/_components/sensor.citybikes.markdown index c23e5783aaae..265b448755c8 100644 --- a/source/_components/sensor.citybikes.markdown +++ b/source/_components/sensor.citybikes.markdown @@ -23,17 +23,38 @@ To enable it, add the following lines to your `configuration.yaml`: # Example configuration.yaml entry (using radius) sensor: - platform: citybikes - radius: 500 ``` -Configuration options: +{% configuration %} +name: + description: The base name of this group of monitored stations. The entity ID of every monitored station in this group will be prefixed with this base name, in addition to the network ID. + required: false + type: string +network: + description: The name of the bike sharing system to poll. + required: false + default: Defaults to the system that operates in the monitored location. + type: string +latitude: + description: Latitude of the location, around which bike stations are monitored. + required: false + default: Defaults to the latitude in your `configuration.yaml` file. + type: string +longitude: + description: Longitude of the location, around which bike stations are monitored. + required: false + default: Defaults to the longitude in your `configuration.yaml` file. + type: string +radius: + description: The radius (in meters or feet, depending on the Home Assistant configuration) around the monitored location. Only stations closer than this distance will be monitored. + required: false + type: integer +stations: + description: A list of specific stations to monitor. The list should contain station `ID`s or `UID`s, which can be obtained from the CityBikes API. + required: false + type: list +{% endconfiguration %} -- **name** (*Optional*): The base name of this group of monitored stations. The entity ID of every monitored station in this group will be prefixed with this base name, in addition to the network ID. -- **network** (*Optional*): The name of the bike sharing system to poll. Defaults to the system that operates in the monitored location. -- **latitude** (*Optional*): Latitude of the location, around which bike stations are monitored. Defaults to the latitude in your `configuration.yaml` file. -- **longitude** (*Optional*): Longitude of the location, around which bike stations are monitored. Defaults to the longitude in your `configuration.yaml` file. -- **radius** (*Optional*): The radius (in meters or feet, depending on the Home Assistant configuration) around the monitored location. Only stations closer than this distance will be monitored. -- **stations** array (*Optional*): A list of specific stations to monitor. The list should contain station `ID`s or `UID`s, which can be obtained from the CityBikes API. ## {% linkable_title Example %} diff --git a/source/_components/sensor.command_line.markdown b/source/_components/sensor.command_line.markdown index 04f31df2ae67..9e03ee8eae0f 100644 --- a/source/_components/sensor.command_line.markdown +++ b/source/_components/sensor.command_line.markdown @@ -27,15 +27,38 @@ sensor: command: SENSOR_COMMAND ``` -Configuration variables: - -- **command** (*Required*): The action to take to get the value. -- **name** (*Optional*): Name of the command sensor. -- **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. -- **scan_interval** (*Optional*): Defines number of seconds for polling interval (defaults to 60 seconds). -- **command_timeout** (*Optional*): Defines number of seconds for command timeout (defaults to 15 seconds). -- **json_attributes** (*Optional*): Defines a list of keys to extract values from a JSON dictionary result and then set as sensor attributes. +{% configuration %} +command: + description: The action to take to get the value. + required: true + type: string +name: + description: Name of the command sensor. + required: false + type: string +unit_of_measurement: + description: Defines the unit of measurement of the sensor, if any. + required: false + type: string +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." + required: false + type: string +scan_interval: + description: Defines number of seconds for polling interval. + required: false + type: integer + default: 60 +command_timeout: + description: Defines number of seconds for command timeout + required: false + type: integer + default: 15 +json_attributes: + description: Defines a list of keys to extract values from a JSON dictionary result and then set as sensor attributes. + required: false + type: string, list +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/sensor.dht.markdown b/source/_components/sensor.dht.markdown index 65a16633bda9..7766643d8b8b 100644 --- a/source/_components/sensor.dht.markdown +++ b/source/_components/sensor.dht.markdown @@ -31,14 +31,40 @@ sensor: - humidity ``` -Configuration variables: - -- **sensor** (*Required*): The sensor type, supported devices are DHT11, DHT22, and AM2302. -- **pin** (*Required*): The pin the sensor is connected to. -- **name** (*Optional*): The name of the sensor. -- **monitored_conditions** array (*Required*): Conditions to monitor. Available conditions are only *temperature* and *humidity*. -- **temperature_offset** (*Optional*): Add or subtract a value from the temperature. -- **humidity_offset** (*Optional*): Add or subtract a value from the humidity. +{% configuration %} +sensor: + description: The sensor type, supported devices are DHT11, DHT22, and AM2302. + required: true + type: string +pin: + description: The pin the sensor is connected to. + required: true + type: integer +name: + description: The name of the sensor. + required: false + default: DHT Sensor + type: string +monitored_conditions: + description: Conditions to monitor. Available conditions are only *temperature* and *humidity*. + required: true + type: list + keys: + temperature: + description: Temperature at the sensor's location. + humidity: + description: Humidity level at the sensor's location. +temperature_offset: + description: Add or subtract a value from the temperature. + required: false + default: 0 + type: [integer, float] +humidity_offset: + description: Add or subtract a value from the humidity. + required: false + default: 0 + type: [integer, float] +{% endconfiguration %} The name of the pin to which the sensor is connected has different names on different platforms. 'P8_11' for Beaglebone, '23' for Raspberry Pi. diff --git a/source/_components/sensor.dwd_weather_warnings.markdown b/source/_components/sensor.dwd_weather_warnings.markdown index 2965c0092608..84ed3ca5b525 100644 --- a/source/_components/sensor.dwd_weather_warnings.markdown +++ b/source/_components/sensor.dwd_weather_warnings.markdown @@ -37,7 +37,15 @@ The warning level is between 0 (no danger) and 4 (extreme weather conditions): - Warnungen vor markantem Wetter (Stufe 2) - Wetterwarnungen (Stufe 1) -Configuration variables: - -- **region_name** (*Optional*): The region name string as identified from the DWD website. If not given, defaults to Hansestadt Hamburg. -- **name** (*Optional*): The name you would like to give to the warnapp sensor. +{% configuration %} +region_name: + required: false + description: The region name string as identified from the DWD website. + default: Hansestadt Hamburg + type: string +name: + required: false + description: The name you would like to give to the warnapp sensor. + type: string + default: DWD-Weather-Warnings +{% endconfiguration %} diff --git a/source/_components/sensor.geizhals.markdown b/source/_components/sensor.geizhals.markdown index 636751da35bc..575c974b4de5 100644 --- a/source/_components/sensor.geizhals.markdown +++ b/source/_components/sensor.geizhals.markdown @@ -29,7 +29,7 @@ Configuration variables: - **name** (*Required*): The internal name of the product in Home Assistant. - **product_id** (*Required*): ID of the product. Get the ID from the Geizhals website of your chosen product by opening the *Price History* in a new browser tab (right-click on the price history > open in new tab). -The URL of this site reveals the ID, e.g. `https://geizhals.de/?phist=1696985` with a `product_id` of `1696985`. +The URL of this site reveals the ID, e.g., `https://geizhals.de/?phist=1696985` with a `product_id` of `1696985`. - **description** (*Optional*): The name of the product in the front end. - **locale** (*Optional*): Localisation which should be used for the request. Set this to `AT`, `EU`, `DE`, `UK` or `PL`. Defaults to `DE`. diff --git a/source/_components/sensor.geo_rss_events.markdown b/source/_components/sensor.geo_rss_events.markdown index 9d73fe5f7b93..bd1d773b0d75 100644 --- a/source/_components/sensor.geo_rss_events.markdown +++ b/source/_components/sensor.geo_rss_events.markdown @@ -21,7 +21,7 @@ This sensor is particularly useful if events occur unexpectedly in the vicinity

-The reference point for comparing the distance is defined by `latitude` and `longitude` in the basic configuration. +The reference point for comparing the distance is by default defined by `latitude` and `longitude` in the basic configuration. Only entries of the feed are considered that define a location as `point` or `polygon` in *georss.org* format or as *WGS84 latitude/longitude*. @@ -54,6 +54,16 @@ name: required: false type: string default: Event Service +latitude: + description: Latitude of the coordinates around which events are considered. + required: false + type: string + default: Latitude defined in your `configuration.yaml` +longitude: + description: Longitude of the coordinates around which events are considered. + required: false + type: string + default: Longitude defined in your `configuration.yaml` radius: description: The distance in kilometers around the Home Assistant's coordinates in which events are considered. required: false diff --git a/source/_components/sensor.iperf3.markdown b/source/_components/sensor.iperf3.markdown index 068a9b879ada..44c5e7f36965 100644 --- a/source/_components/sensor.iperf3.markdown +++ b/source/_components/sensor.iperf3.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Iperf3 Sensor" -description: "How to use Iperf3 within Home Assistant to measure your network bandwith." +description: "How to use Iperf3 within Home Assistant to measure your network bandwidth." date: 2018-05-01 02:00 sidebar: true comments: false diff --git a/source/_components/sensor.jewish_calendar.markdown b/source/_components/sensor.jewish_calendar.markdown index 53002877895a..49eccc7da363 100644 --- a/source/_components/sensor.jewish_calendar.markdown +++ b/source/_components/sensor.jewish_calendar.markdown @@ -89,7 +89,7 @@ sensors: sensor: - platform: jewish_calendar language: english - diaspora: True + diaspora: true sensors: - date - weekly_portion diff --git a/source/_components/sensor.knx.markdown b/source/_components/sensor.knx.markdown index 3819a6dfdfd4..d558d1c3a15f 100644 --- a/source/_components/sensor.knx.markdown +++ b/source/_components/sensor.knx.markdown @@ -13,7 +13,7 @@ ha_release: 0.29 ha_iot_class: "Local Push" --- -The `knx` sensor platform allows you to monitor [KNX](http://www.knx.org) sensors. +The `knx` sensor platform allows you to monitor [KNX](http://www.knx.org) sensors. The `knx` component must be configured correctly, see [KNX Component](/components/knx). @@ -30,10 +30,21 @@ sensor: ``` +{% configuration %} +address: + description: KNX group address of the sensor. + required: true + type: string +name: + description: A name for this device used within Home Assistant. + required: false + type: string +type: + description: A type from the following table can be defined. The DPT of the group address should match the expected KNX DPT to be parsed correctly. + required: false + type: string +{% endconfiguration %} -- **address** (*Required*): KNX group address of the sensor. -- **name** (*Optional*): A name for this device used within Home Assistant. -- **type** (*Optional*): A type from the following table can be defined. The DPT of the group address should match the expected KNX DPT to be parsed correctly. | type | unit | expected KNX DPT | |--------------------|------|------------------| diff --git a/source/_components/sensor.miflora.markdown b/source/_components/sensor.miflora.markdown index 0e82f9a6e328..db6452c2c5e8 100644 --- a/source/_components/sensor.miflora.markdown +++ b/source/_components/sensor.miflora.markdown @@ -46,7 +46,7 @@ $ bluetoothctl [NEW] C4:D3:8C:12:4C:57 Flower mate ``` -If you can't use `hcitool` or `bluetoothctl` but have access to an Android phone you can try `BLE Scanner` or similar scanner applications from the Play Store to easily find your sensor MAC address. +If you can't use `hcitool` or `bluetoothctl` but have access to an Android phone you can try `BLE Scanner` or similar scanner applications from the Play Store to easily find your sensor MAC address. If you are using Windows 10, try the `Microsoft Bluetooth LE Explorer` app from the Windows Store. # Configure To use your Mi Flora plant sensor in your installation, add the following to your `configuration.yaml` file: @@ -60,17 +60,45 @@ sensor: - moisture ``` -- **mac** (*Required*): The MAC address of your sensor. -- **monitored_conditions** array (*Optional*): The parameters that should be monitored (defaults to monitoring all parameters). - - **moisture**: Moisture in the soil. - - **light**: Brightness at the sensor's location. - - **temperature**: Temperature at the sensor's location. - - **conductivity**: Conductivity in the soil. - - **battery**: Battery details. -- **name** (*Optional*): The name displayed in the frontend. -- **force_update** (*Optional*): Sends update events even if the value hasn't changed. -- **median** (*Optional*): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine. -- **adapter** (*Optional*): Define the Bluetooth adapter to use (defaults to hci0). Run `hciconfig` to get a list of available adapters. +{% configuration %} +mac: + description: The MAC address of your sensor. + required: true + type: string +monitored_conditions: + description: The parameters that should be monitored. + required: false + default: [moisture, light, temperature, conductivity, battery] + type: list + keys: + moisture: + description: Moisture in the soil. + light: + description: Brightness at the sensor's location. + temperature: + description: Temperature at the sensor's location. + conductivity: + description: Conductivity in the soil. + battery: + description: Battery details. +name: + description: The name displayed in the frontend. + required: false + type: string +force_update: + description: Sends update events even if the value hasn't changed. + required: false + type: boolean +median: + description: "Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine." + required: false + type: integer +adapter: + description: "Define the Bluetooth adapter to use. Run `hciconfig` to get a list of available adapters." + required: false + default: hci0 + type: string +{% endconfiguration %}

By default the sensor is only polled once every 20 minutes (`scan_interval` is 1200 seconds by default). On a Home Assistant restart sensor will report initial value. If you set `median: 3`, it will take _at least_ 40 minutes before the sensor will report an average value. Keep in mind though that reducing polling intervals will have a negative effect on the battery life. diff --git a/source/_components/sensor.mitemp_bt.markdown b/source/_components/sensor.mitemp_bt.markdown index b20d72a4bf5d..bf54f9768244 100644 --- a/source/_components/sensor.mitemp_bt.markdown +++ b/source/_components/sensor.mitemp_bt.markdown @@ -60,18 +60,56 @@ sensor: - temperature ``` -- **mac** (*Required*): The MAC address of your sensor. -- **monitored_conditions** array (*Optional*): The parameters that should be monitored (defaults to monitoring all parameters). - - **temperature**: Temperature in C at the sensor's location. - - **humidity**: Humidity level in % at the sensor's location. - - **battery**: Battery details (in %). -- **name** (*Optional*): The name displayed in the frontend. -- **force_update** (*Optional*): Sends update events even if the value hasn't changed. -- **median** (*Optional*): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine. -- **timeout** (*Optional*): Define the timeout value in seconds when polling (defaults to 10 if not defined) -- **retries** (*Optional*): Define the number of retries when polling (defaults to 2 if not defined) -- **cache_value** (*Optional*): Define cache expiration value in seconds (defaults to 300 if not defined) -- **adapter** (*Optional*): Define the Bluetooth adapter to use (defaults to hci0). Run `hciconfig` to get a list of available adapters. +{% configuration %} +mac: + description: The MAC address of your sensor. + required: true + type: string +monitored_conditions: + description: The parameters that should be monitored. + required: false + default: [temperature, humidity, battery] + type: list + keys: + temperature: + description: Temperature in C at the sensor's location. + humidity: + description: Humidity level in % at the sensor's location. + battery: + description: Battery details (in %). +name: + description: The name displayed in the frontend. + required: false + type: string +force_update: + description: Sends update events even if the value hasn't changed. + required: false + type: boolean +median: + description: "Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine." + required: false + type: integer +timeout: + description: Define the timeout value in seconds when polling. + required: false + default: 10 + type: integer +retries: + description: Define the number of retries when polling. + required: false + default: 2 + type: integer +cache_value: + description: Define cache expiration value in seconds. + required: false + default: 300 + type: integer +adapter: + description: "Define the Bluetooth adapter to use. Run `hciconfig` to get a list of available adapters." + required: false + default: hci0 + type: string +{% endconfiguration %} Note that by default the sensor is only polled once every 5 minutes. This means with the `median: 3` setting will take as least 15 minutes before the sensor will report a value after a Home Assistant restart. Even though the hardware is able to provide new values every second, room temperatures don't change that quickly. Reducing polling intervals will have a negative effect on the battery life. @@ -91,4 +129,3 @@ sensor: - humidity - battery ``` - diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown index d9681e8f6782..3345162f9db4 100644 --- a/source/_components/sensor.modbus.markdown +++ b/source/_components/sensor.modbus.markdown @@ -45,21 +45,66 @@ sensor: precision: 2 ``` -Configuration variables: - -- **registers** array (*Required*): The array contains a list of relevant registers to read from. - - **name** (*Required*): Name of the sensor. - - **slave** (*Required*): The number of the slave (Optional for tcp and upd Modbus). - - **register** (*Required*): Register number. - - **register_type** (*Optional*): Modbus register type (holding, input), default holding. - - **unit_of_measurement** (*Optional*): Unit to attach to value. - - **count** (*Optional*): Number of registers to read. - - **reverse_order** (*Optional*): Reverse the order of registers when count >1, default False. - - **scale** (*Optional*): Scale factor (output = scale * value + offset), default 1. - - **offset** (*Optional*): Final offset (output = scale * value + offset), default 0. - - **precision** (*Optional*): Number of valid decimals, default 0. - - **data_type** (*Optional*): Response representation (int, uint, float, custom). If float selected, value will be converted to IEEE 754 floating point format. Default int. - - **structure** (*Optional*): If data_type is custom specify here a double quoted python struct format string to unpack the value. See python documentation for details. Ex: ">i". +{% configuration %} +registers: + description: The array contains a list of relevant registers to read from. + required: true + type: map + keys: + name: + description: Name of the sensor. + required: true + type: string + slave: + description: The number of the slave (Optional for tcp and upd Modbus). + required: true + type: integer + register: + description: Register number. + required: true + type: integer + register_type: + description: Modbus register type (holding, input), default holding. + required: false + type: string + unit_of_measurement: + description: Unit to attach to value. + required: false + type: integer + count: + description: Number of registers to read. + required: integer + type: integer + reverse_order: + description: Reverse the order of registers when count >1. + required: false + default: False + type: boolean + scale: + description: Scale factor (output = scale * value + offset). + required: false + default: 1 + type: float + offset: + description: Final offset (output = scale * value + offset). + required: false + default: 0 + type: float + precision: + description: Number of valid decimals. + required: false + default: 0 + type: integer + data_type: + description: Response representation (int, uint, float, custom). If float selected, value will be converted to IEEE 754 floating point format. + required: false + default: int + type: string + structure: + description: "If data_type is custom specify here a double quoted python struct format string to unpack the value. See python documentation for details. Ex: >i." + required: false + type: string +{% endconfiguration %} It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index 8b8a0fc07b61..0b2182a83f68 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -91,6 +91,35 @@ device_class: required: false type: device_class default: None +device: + description: 'Information about the device this sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string {% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/sensor.octoprint.markdown b/source/_components/sensor.octoprint.markdown index c9f3aed618a7..c29983928555 100644 --- a/source/_components/sensor.octoprint.markdown +++ b/source/_components/sensor.octoprint.markdown @@ -17,34 +17,5 @@ ha_iot_class: "Local Polling" The `octoprint` sensor platform let you monitor various states of your 3D printer and its print jobs.

-You must have the [OctoPrint component](/components/octoprint/) configured to use this sensor. -

- -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: octoprint - name: OctoPrint - monitored_conditions: - - Current State - - Temperatures - - Job Percentage - - Time Elapsed - - Time Remaining -``` - -Configuration variables: - -- **name** (*Optional*): The name of the sensor. Default is 'OctoPrint'. -- **monitored_conditions** array (*Required*): States to monitor. - - **Current State**: Text of current state. - - **Temperatures**: Temperatures of all available tools, eg. `print`, `head`, `print bed`, etc. These will be displayed as `tool0`, `tool1`, or `toolN` please refer to your OctoPrint frontend to associate the tool number with an actual device. - - **Job Percentage**: Percentage of the job. - - **Time Elapsed**: Time elapsed on current print job, in seconds. - - **Time Remaining**: Time remaining on current print job, in seconds. - -

-If you are tracking temperature it is recommended to set `bed` and/or `number_of_tools` in your octoprint configuration. This will allow the octoprint sensors to load if the printer is offline during Home Assistant startup. +You must have the [OctoPrint component](/components/octoprint/) configured to use this sensor. After configuring that component, sensors automatically appear.

diff --git a/source/_components/sensor.rmvtransport.markdown b/source/_components/sensor.rmvtransport.markdown index 6c4cea8129bd..0ecb8212fd6a 100644 --- a/source/_components/sensor.rmvtransport.markdown +++ b/source/_components/sensor.rmvtransport.markdown @@ -28,39 +28,52 @@ sensor: ``` {% configuration %} -name: - description: Name to use in the frontend. +timeout: + description: Specify the timeout for the API calls. required: false - default: The default is the station name. - type: string -stationId: - description: ID of the stop or station, e.g. 3000010. Visit [the RMV OpenData web site](https://opendata.rmv.de) to find a list of valid IDs. - required: true - type: string -destinations: - description: "One or multiple final stop names, e.g., 'Frankfurt (Main) Hauptbahnhof' or ['Frankfurt (Main) Hauptbahnhof','Frankfurt (Main) Stadion']. This can be used to only consider a particular direction of travel." - required: false - type: [string] -lines: - description: "One or more line numbers, e.g., `'S8'` or `['S8', 'RB33', '41']`" - required: false - default: The default is the station name. - type: [string, int] -products: - description: "One or more modes of transport `['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE']`." - required: false - default: Defaults to all. - type: [string] -time_offset: - description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. - required: false - default: The defaults is 0. + default: 10 type: integer -max_journeys: - description: Specify the maximal number of journeys. - required: false - default: The default is 5. - type: string +next_departure: + description: One or multiple departure sensors. + required: true + type: list + keys: + name: + description: Name to use in the frontend. + required: false + default: The default is the station name. + type: string + station: + description: "ID of the stop or station, e.g. `3000010`. Visit [the RMV OpenData web site](https://opendata.rmv.de) to find a list of valid IDs." + required: true + type: string + destinations: + description: "One or multiple final stop names, e.g., 'Frankfurt (Main) Hauptbahnhof' or ['Frankfurt (Main) Hauptbahnhof','Frankfurt (Main) Stadion']. This can be used to only consider a particular direction of travel." + required: false + type: [string] + direction: + description: "Name of a stop or station, e.g., 'Frankfurt (Main) Hauptbahnhof'. This can be used to only consider a particular direction of travel." + required: false + type: [string] + lines: + description: "One or more line numbers, e.g., `'S8'` or `['S8', 'RB33', '41']`" + required: false + type: [string, int] + products: + description: "One or more modes of transport `['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE']`." + required: false + default: ['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE'] + type: [string] + time_offset: + description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. + required: false + default: 0 + type: integer + max_journeys: + description: Specify the maximal number of journeys. + required: false + default: 5 + type: integer {% endconfiguration %} ## {% linkable_title Examples %} @@ -73,6 +86,8 @@ The example below shows a full configuration with three sensors that showcase th # Example configuration.yaml entry sensor: - platform: rmvtransport + scan_interval: 120 + timeout: 10 next_departure: - station: 3000010 time_offset: 5 diff --git a/source/_components/sensor.starlingbank.markdown b/source/_components/sensor.starlingbank.markdown index e997e0da2a35..5accaf731d54 100644 --- a/source/_components/sensor.starlingbank.markdown +++ b/source/_components/sensor.starlingbank.markdown @@ -24,7 +24,7 @@ You can find more information about Starling Bank at [their website](https://www ## {% linkable_title Access Token %} -Once you have your own Starling bank account you will need to sign up for a Staring developer account [here](https://developer.starlingbank.com/signup). You won't need to do any development but you will need to get a "Personal Access Token" that will allow the integration to access your account balance. +Once you have your own Starling bank account you will need to sign up for a Starling developer account [here](https://developer.starlingbank.com/signup). You won't need to do any development but you will need to get a "Personal Access Token" that will allow the integration to access your account balance.

You control what access is granted using this token. This integration only needs very basic access (see below). @@ -33,7 +33,7 @@ Once you have your own Starling bank account you will need to sign up for a Star Once you've signed up: 1. Head to the [Personal Access Section](https://developer.starlingbank.com/personal/token) of your developer account. 2. Click "Create Token". -3. Give your token a name e.g. "Home Assistant". +3. Give your token a name e.g., "Home Assistant". 4. Tick the permissions "account:read" and "balance:read". The others you can leave un-ticked. 5. Click "Create" and make a note of the newly created token, you will need this for your Home Assistant configuration. diff --git a/source/_components/sensor.swiss_public_transport.markdown b/source/_components/sensor.swiss_public_transport.markdown index c1063e4d4a5d..b702c2dc50a6 100644 --- a/source/_components/sensor.swiss_public_transport.markdown +++ b/source/_components/sensor.swiss_public_transport.markdown @@ -30,10 +30,20 @@ sensor: to: STATION_ID ``` -Configuration variables: - -- **from** (*Required*): The ID of the station of the start station. -- **to** (*Required*): The ID of the station of the end station. -- **name** (*Optional*): The name of the sensor. Defaults to 'Next Departure'. +{% configuration %} +from: + description: The ID of the station of the start station. + required: true + type: string +to: + description: The ID of the station of the end station. + required: true + type: string +name: + description: The name of the sensor. + required: false + type: string + default: Next Departure +{% endconfiguration %} The public timetables are coming from [Swiss public transport](http://transport.opendata.ch). diff --git a/source/_components/sensor.ted5000.markdown b/source/_components/sensor.ted5000.markdown index 1dd451255c78..1e498eb1ca00 100644 --- a/source/_components/sensor.ted5000.markdown +++ b/source/_components/sensor.ted5000.markdown @@ -24,11 +24,23 @@ sensor: host: 192.168.1.100 ``` -Configuration variables: -- **host** (*Required*): The IP address of your ted gateway. -- **port** (*Optional*): The port of your ted gateway. Defaults to 80. -- **name** (*Optional*): Name of the ted gateway. Defaults to ted. +{% configuration %} +host: + description: The IP address of your ted gateway. + required: true + type: string +port: + description: The port of your ted gateway. + required: false + type: integer + default: 80 +name: + description: Name of the ted gateway. + required: false + type: string + default: ted +{% endconfiguration %} For each plugged MTU, using an index starting at 1, the platform creates 2 sensors: diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index c2942d023a05..eb5a34a6acbb 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -58,6 +58,7 @@ sensor: description: "Defines the units of measurement of the sensor, if any. This will also influence the graphical presentation in the history visualisation as continuous value. Sensors with missing `unit_of_measurement` are showing as discrete values." required: false type: string + default: None value_template: description: Defines a template to get the state of the sensor. required: true @@ -71,7 +72,7 @@ sensor: required: false type: template device_class: - description: The type/class of the sensor to set the icon in the frontend. + description: Sets the class of the device, changing the device state and icon that is displayed on the UI (see below). It does not set the `unit_of_measurement`. required: false type: device_class default: None diff --git a/source/_components/sensor.trafikverket_weatherstation.markdown b/source/_components/sensor.trafikverket_weatherstation.markdown index d66357695115..2b55ff6d2a62 100644 --- a/source/_components/sensor.trafikverket_weatherstation.markdown +++ b/source/_components/sensor.trafikverket_weatherstation.markdown @@ -55,7 +55,7 @@ station: required: true type: string monitored_conditions: - description: Specify what measurement data to retreive from the weather station. + description: Specify what measurement data to retrieve from the weather station. required: true type: map keys: diff --git a/source/_components/sensor.transport_nsw.markdown b/source/_components/sensor.transport_nsw.markdown new file mode 100644 index 000000000000..9ddf794d0695 --- /dev/null +++ b/source/_components/sensor.transport_nsw.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Transport NSW" +description: "Instructions on how to integrate timetable data for Transport NSW (Australia) within Home Assistant." +date: 2018-10-05 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: transport_nsw.png +ha_category: Transport +ha_iot_class: "Cloud Polling" +ha_release: 0.81 +--- + + +The `transport_nsw` sensor will give you the time until the next departure from a Transport NSW stop (bus, train or ferry). + +Get your free API key from [Transport NSW](https://opendata.transport.nsw.gov.au/). + +In order to find the stop id, just go to Google maps and click on the bus/train/ferry stop. It will give you there the stop ID. + +You can define a bus line, but if you don’t do it, the sensor will pick up the next stop event from any line servicing this stop. + +Then add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: transport_nsw + stop_id: '200024' + api_key: 'YOUR API KEY' +``` + +{% configuration %} +api_key: + description: Your API key for Open Data Transport NSW + required: true + type: string +stop_id: + description: The ID of the stop to get the information for + required: true + type: string +route: + description: Only show a single bus route at the stop. This is the same as the bus number, e.g., `83` + required: false + type: string +name: + description: A friendly name for this sensor. + required: false + type: string +{% endconfiguration %} + +The public information is coming from [Transport NSW](https://opendata.transport.nsw.gov.au/). diff --git a/source/_components/sensor.waqi.markdown b/source/_components/sensor.waqi.markdown index 163ce64ee68e..f428d28db64b 100644 --- a/source/_components/sensor.waqi.markdown +++ b/source/_components/sensor.waqi.markdown @@ -26,15 +26,22 @@ sensor: token: AQICN_API_TOKEN locations: - beijing - stations: - - Beijing US Embassy, Beijing ``` -Configuration variables: - -- **locations** (*Required*): A list of location names to look for air quality data. In case a specific location has multiple registered stations all of them will be added to Home Assistant. -- **token** (*Required*): The token for the AQICN public API. -- **stations** (*Optional*): A list of station names to look for air quality data. Station should be within locations specified above. +{% configuration %} +token: + description: The token for the AQICN public API. + required: true + type: string +locations: + description: A list of location names to look for air quality data. In case a specific location has multiple registered stations all of them will be added to Home Assistant. + required: true + type: list +stations: + description: A list of station names to look for air quality data. Station should be within locations specified above. + required: false + type: list +{% endconfiguration %} The value reported is an overall AQ index for the location. The values of the index can be interpreted as following: diff --git a/source/_components/sensor.worldclock.markdown b/source/_components/sensor.worldclock.markdown index 620e29355189..1ca0964f86b9 100644 --- a/source/_components/sensor.worldclock.markdown +++ b/source/_components/sensor.worldclock.markdown @@ -26,10 +26,17 @@ sensor: time_zone: America/New_York ``` -Configuration variables: - -- **time_zone** (*Required*): The resource or endpoint that contains the value. -- **name** (*Optional*): The name of the sensor, eg. the city. Defaults to 'Worldclock Sensor'. +{% configuration %} +time_zone: + description: The resource or endpoint that contains the value. + required: true + type: string +name: + description: The name of the sensor, eg. the city. + required: false + type: string + default: Worldclock Sensor +{% endconfiguration %} For valid time zones check the **TZ** column in the [Wikipedia overview](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Or get the full list from the [pytz](https://pypi.python.org/pypi/pytz) module. diff --git a/source/_components/sensor.worxlandroid.markdown b/source/_components/sensor.worxlandroid.markdown index 5497ae700572..d4ec6b401b81 100644 --- a/source/_components/sensor.worxlandroid.markdown +++ b/source/_components/sensor.worxlandroid.markdown @@ -25,8 +25,18 @@ sensor: pin: 1234 ``` -Configuration variables: - -- **host** (*Required*): The ip address or host name of the mower. -- **pin** (*Required*): The pin code for the mower. -- **allow_unreachable** (*Optional*): This will allow the mower to be outside of wifi range without raising an error (default: True). +{% configuration %} +host: + description: The ip address or host name of the mower. + required: true + type: string +pin: + description: The pin code for the mower. + required: true + type: integer +allow_unreachable: + description: This will allow the mower to be outside of wifi range without raising an error. + required: false + type: boolean + default: true +{% endconfiguration %} diff --git a/source/_components/sensor.wunderground.markdown b/source/_components/sensor.wunderground.markdown index 0ce56092b598..b5a2d5bec988 100644 --- a/source/_components/sensor.wunderground.markdown +++ b/source/_components/sensor.wunderground.markdown @@ -13,7 +13,7 @@ ha_release: 0.27 ha_iot_class: "Cloud Polling" --- -The `wunderground` platform uses [Weather Underground](http://www.wunderground.com) as a source for current weather information. +The `wunderground` platform uses [Weather Underground](http://www.wunderground.com) as a source for current weather information.

Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). They no longer offer free API keys, and all keys must be paid for. At this time existing free keys will continue to work, but will be disabled Dec 31, 2018. As of Sept 6, 2018 Weather Underground states they are declaring the [End of Service for the Weather Underground API](https://apicommunity.wunderground.com/weatherapi/topics/end-of-service-for-the-weather-underground-api). They say they will develop new plans for non-commercial users. No timeline for this has been announced. @@ -33,72 +33,154 @@ sensor: - dewpoint_c ``` -Configuration variables: - -- **api_key** (*Required*): The API key for Weather Underground. See above for details. -- **pws_id** (*Optional*): You can enter a Personal Weather Station ID. The current list of Wunderground PWS stations is available [here](https://www.wunderground.com/weatherstation/ListStations.asp). If you do not enter a PWS ID, the current location information (latitude and longitude) from your `configuration.yaml` will be used to display weather conditions. -- **lang** (*Optional*): Specify the language that the API returns. The current list of all Wunderground language codes is available [here](https://www.wunderground.com/weather/api/d/docs?d=language-support). If not specified, it defaults to English (EN). -- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specified). Defaults to coordinates defined in your `configuration.yaml`. -- **longitude** (*Optional*): Longitude coordinate to monitor weather of (required if **latitude** is specified). Defaults to coordinates defined in your `configuration.yaml`. -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. - - **alerts**: Current severe weather advisories - - **dewpoint_c**: Temperature in Celsius below which water droplets begin to condense and dew can form - - **dewpoint_f**: Temperature in Fahrenheit below which water droplets begin to condense and dew can form - - **dewpoint_string**: Text summary of dew point - - **feelslike_c**: Feels like (or apparent) temperature in Celsius - - **feelslike_f**: Feels like (or apparent) temperature in Fahrenheit - - **feelslike_string**: Text summary of how the current temperature feels like - - **heat_index_c**: Heat index (combined effects of the temperature and humidity of the air) in Celsius - - **heat_index_f**: Heat index (combined effects of the temperature and humidity of the air) in Fahrenheit - - **heat_index_string**: Text summary of current heat index - - **elevation**: Elevation in feet - - **location**: City and State - - **observation_time**: Text summary of observation time - - **precip_today_in**: Total precipitation in inches - - **precip_today_metric**: Total precipitation in metric units - - **precip_today_string**: Text summary of precipitation today - - **precip_1d_mm** [[1d]](#1d): Forecasted precipitation intensity in millimeters - - **precip_1d_in** [[1d]](#1d): Forecasted precipitation intensity in inches - - **precip_1d** [[1d]](#1d): Forecasted precipitation probability in % - - **pressure_in**: Atmospheric air pressure in inches - - **pressure_mb**: Atmospheric air pressure in millibars - - **pressure_trend**: Atmospheric air pressure trend signal (+/-) - - **relative_humidity**: Relative humidity - - **station_id**: Your personal weather station (PWS) ID - - **solarradiation**: Current levels of solar radiation - - **temperature_string**: Temperature text combining Fahrenheit and Celsius - - **temp_c**: Current temperature in Celsius - - **temp_f**: Current temperature in Fahrenheit - - **temp_high_record_c**: Maximum temperature measured in Celsius - - **temp_high_record_f**: Maximum temperature measured in Fahrenheit - - **temp_low_record_c**: Minimal temperature measured in Celsius - - **temp_low_record_f**: Minimal temperature measured in Fahrenheit - - **temp_high_avg_c**: Average high for today in Celsius - - **temp_high_avg_f**: Average high for today in Fahrenheit - - **temp_low_avg_c**: Average low for today in Celsius - - **temp_low_avg_f**: Average low for today in Fahrenheit - - **temp_high_1d_c** [[1d]](#1d): Forecasted high temperature in Celsius - - **temp_high_1d_f** [[1d]](#1d): Forecasted high temperature in Fahrenheit - - **temp_low_1d_c** [[1d]](#1d): Forecasted low temperature in Celsius - - **temp_low_1d_f** [[1d]](#1d): Forecasted low temperature in Fahrenheit - - **UV**: Current levels of UV radiation. See [here](https://www.wunderground.com/resources/health/uvindex.asp) for explanation. - - **visibility_km**: Average visibility in km - - **visibility_mi**: Average visibility in miles - - **weather**: A human-readable text summary with picture from Wunderground. - - **weather_1d** [[12h]](#12h): A human-readable weather forecast using imperial units. - - **weather_1d_metric** [[12h]](#12h): A human-readable weather forecast using metric units. - - **weather_1h** [[1h]](#1h): Weather conditions in 1 hour. (e.g., "Thunderstorm" etc.) - - **wind_degrees**: Wind degrees - - **wind_dir**: Wind direction - - **wind_gust_kph**: Wind gusts speed in kph - - **wind_gust_mph**: Wind gusts speed in mph - - **wind_gust_1d_kph** [[1d]](#1d): Max. forecasted Wind in kph - - **wind_gust_1d_mph** [[1d]](#1d): Max. forecasted Wind in mph - - **wind_kph**: Current wind speed in kph - - **wind_mph**: Current wind speed in mph - - **wind_1d_kph** [[1d]](#1d): Forecasted wind speed in kph - - **wind_1d_mph** [[1d]](#1d): Forecasted wind speed in mph - - **wind_string**: Text summary of current wind conditions +{% configuration %} +api_key: + description: The API key for Weather Underground. See above for details. + required: true + type: string +pws_id: + description: "You can enter a Personal Weather Station ID. The current list of Wunderground PWS stations is available [here](https://www.wunderground.com/weatherstation/ListStations.asp). If you do not enter a PWS ID, the current location information (latitude and longitude) from your `configuration.yaml` will be used to display weather conditions." + required: false + type: string +lang: + description: Specify the language that the API returns. The current list of all Wunderground language codes is available [here](https://www.wunderground.com/weather/api/d/docs?d=language-support). If not specified, it defaults to English (EN). + required: false + type: string + default: EN +latitude: + description: Latitude coordinate to monitor weather of (required if **longitude** is specified). + required: false + type: string + default: Coordinates defined in your `configuration.yaml` +longitude: + description: Longitude coordinate to monitor weather of (required if **latitude** is specified). + required: false + type: string + default: Coordinates defined in your `configuration.yaml` +monitored_conditions: + description: Conditions to display in the frontend. The following conditions can be monitored. + required: true + type: list + default: symbol + keys: + alerts: + description: Current severe weather advisories + dewpoint_c: + description: Temperature in Celsius below which water droplets begin to condense and dew can form + dewpoint_f: + description: Temperature in Fahrenheit below which water droplets begin to condense and dew can form + dewpoint_string: + description: Text summary of dew point + feelslike_c: + description: Feels like (or apparent) temperature in Celsius + feelslike_f: + description: Feels like (or apparent) temperature in Fahrenheit + feelslike_string: + description: Text summary of how the current temperature feels like + heat_index_c: + description: Heat index (combined effects of the temperature and humidity of the air) in Celsius + heat_index_f: + description: Heat index (combined effects of the temperature and humidity of the air) in Fahrenheit + heat_index_string: + description: Text summary of current heat index + elevation: + description: Elevation in feet + location: + description: City and State + observation_time: + description: Text summary of observation time + precip_today_in: + description: Total precipitation in inches + precip_today_metric: + description: Total precipitation in metric units + precip_today_string: + description: Text summary of precipitation today + precip_1d_mm: + description: "[[1d]](#1d): Forecasted precipitation intensity in millimeters" + precip_1d_in: + description: "[[1d]](#1d): Forecasted precipitation intensity in inches" + precip_1d: + description: "[[1d]](#1d): Forecasted precipitation probability in %" + pressure_in: + description: Atmospheric air pressure in inches + pressure_mb: + description: Atmospheric air pressure in millibars + pressure_trend: + description: "Atmospheric air pressure trend signal `(+/-)`" + relative_humidity: + description: Relative humidity + station_id: + description: Your personal weather station (PWS) ID + solarradiation: + description: Current levels of solar radiation + temperature_string: + description: Temperature text combining Fahrenheit and Celsius + temp_c: + description: Current temperature in Celsius + temp_f: + description: Current temperature in Fahrenheit + temp_high_record_c: + description: Maximum temperature measured in Celsius + temp_high_record_f: + description: Maximum temperature measured in Fahrenheit + temp_low_record_c: + description: Minimal temperature measured in Celsius + temp_low_record_f: + description: Minimal temperature measured in Fahrenheit + temp_high_avg_c: + description: Average high for today in Celsius + temp_high_avg_f: + description: Average high for today in Fahrenheit + temp_low_avg_c: + description: Average low for today in Celsius + temp_low_avg_f: + description: Average low for today in Fahrenheit + temp_high_1d_c: + description: "[[1d]](#1d): Forecasted high temperature in Celsius" + temp_high_1d_f: + description: "[[1d]](#1d): Forecasted high temperature in Fahrenheit" + temp_low_1d_c: + description: "[[1d]](#1d): Forecasted low temperature in Celsius" + temp_low_1d_f: + description: "[[1d]](#1d): Forecasted low temperature in Fahrenheit" + UV: + description: Current levels of UV radiation. See [here](https://www.wunderground.com/resources/health/uvindex.asp) for explanation. + visibility_km: + description: Average visibility in km + visibility_mi: + description: Average visibility in miles + weather: + description: A human-readable text summary with picture from Wunderground. + weather_1d: + description: "[[12h]](#12h): A human-readable weather forecast using imperial units." + weather_1d_metric: + description: "[[12h]](#12h): A human-readable weather forecast using metric units." + weather_1h: + description: "[[1h]](#1h): Weather conditions in 1 hour. (e.g., \"Thunderstorm\" etc.)" + wind_degrees: + description: Wind degrees + wind_dir: + description: Wind direction + wind_gust_kph: + description: Wind gusts speed in kph + wind_gust_mph: + description: Wind gusts speed in mph + wind_gust_1d_kph: + description: "[[1d]](#1d): Max. forecasted Wind in kph" + wind_gust_1d_mph: + description: "[[1d]](#1d): Max. forecasted Wind in mph" + wind_kph: + description: Current wind speed in kph + wind_mph: + description: Current wind speed in mph + wind_1d_kph: + description: "[[1d]](#1d): Forecasted wind speed in kph" + wind_1d_mph: + description: "[[1d]](#1d): Forecasted wind speed in mph" + wind_string: + description: Text summary of current wind conditions +{% endconfiguration %} + All the conditions listed above will be updated every 5 minutes. @@ -195,6 +277,8 @@ Note: While the platform is called “wunderground” the sensors will show up i Note that the Weather Underground sensor is added to the entity_registry, so second and subsequent Personal Weather Station ID (pws_id) will have their monitored conditions suffixed with an index number e.g. +```yaml - sensor.pws_weather_1d_metric_2 +``` Additional details about the API are available [here](https://www.wunderground.com/weather/api/d/docs). diff --git a/source/_components/sensor.yweather.markdown b/source/_components/sensor.yweather.markdown index fdd5a38b808d..befc4a37d5e3 100644 --- a/source/_components/sensor.yweather.markdown +++ b/source/_components/sensor.yweather.markdown @@ -20,7 +20,7 @@ The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/ Use of the Yahoo Weather API should not exceed reasonable request volume. Access is limited to 2000 signed calls per day.

-The `woeid` (Where On Earth ID) for your location, as shown in the example below. You can find your WOEID by copying the numeric digits at the end of the URL for your location at [Yahoo Weather](https://www.yahoo.com/news/weather/). If you don't add a WOEID it generate it from Home Assistant's latitude and longitude. +The `woeid` (Where On Earth ID) for your location, as shown in the example below. You can find your WOEID by copying the numeric digits at the end of the URL for your location at [Yahoo Weather](https://www.yahoo.com/news/weather/). If you don't add a WOEID it is generated from Home Assistant's latitude and longitude. To add Yahoo Weather to your installation, add the following to your `configuration.yaml` file: @@ -40,21 +40,46 @@ sensor: - temperature ``` -Configuration variables: - -- **woeid** (*Optional*): See above. -- **forecast** (*Optional*): Day of forecast. The default is the current day to display conditions. -- **name** (*Optional*): The name of the sensor. To easily recognize each sensor when adding more than one Yahoo weather sensor, it is recommended to use the name option. Defaults to `Yweather`. -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. - - **weather**: A human-readable text summary with picture from yahoo. - - **weather_current**: A human-readable text summary with picture from yahoo from current condition. - - **temperature**: The current temperature. - - **temp_min**: The minimal temperature of this day. - - **temp_max**: The maximum temperature of this day. - - **wind_speed**: The wind speed. - - **humidity**: The relative humidity. - - **pressure**: The sea-level air pressure in millibars. - - **visibility**: The average visibility. +{% configuration %} +woeid: + required: false + description: See above. + type: string + default: "Defaults to a WOEID generated from coordinates defined in your `configuration.yaml` file." +forecast: + required: false + description: Day of forecast. The default is the current day to display conditions. + type: integer + default: 0 +name: + required: false + description: "The name of the sensor. To easily recognize each sensor when adding more than one Yahoo weather sensor, it is recommended to use the name option." + type: string + default: "`Yweather`" +monitored_conditions: + required: true + description: Conditions to display in the frontend. + type: list + keys: + weather: + description: A human-readable text summary with picture from yahoo. + weather_current: + description: A human-readable text summary with picture from yahoo from current condition. + temperature: + description: The current temperature. + temp_min: + description: The minimal temperature of this day. + temp_max: + description: The maximum temperature of this day. + wind_speed: + description: The wind speed. + humidity: + description: The relative humidity. + pressure: + description: The sea-level air pressure in millibars. + visibility: + description: The average visibility. +{% endconfiguration %} Example of forecast using multiple days. In example, first sensor shows tomorrow's forecast, second sensor shows the next day and so on: @@ -85,4 +110,3 @@ sensor: ``` Details about the API are available in the [Yahoo! Developer Network](https://developer.yahoo.com/weather/). - diff --git a/source/_components/sensor.zamg.markdown b/source/_components/sensor.zamg.markdown index 014752a66ec5..f1d25e0626b9 100644 --- a/source/_components/sensor.zamg.markdown +++ b/source/_components/sensor.zamg.markdown @@ -25,24 +25,55 @@ sensor: - platform: zamg ``` -Configuration variables: - -- **station_id** (*Optional*): The ID number for a supported ZAMG station. -- **name** (*Optional*): Additional name for the sensors. Defaults to platform name. -- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specified). Defaults to coordinates defined in your `configuration.yaml` file. -- **longitude** (*Optional*): Longitude coordinate to monitor weather of (required if **latitude** is specified). Defaults to coordinates defined in your `configuration.yaml` file. -- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. - - **pressure**: Pressure at station level - - **pressure_sealevel**: Pressure at sea Level - - **humidity**: Humidity - - **wind_speed**: Wind speed - - **wind_bearing**: Wind bearing - - **wind_max_speed**: Top wind speed - - **wind_max_bearing**: Top wind bearing - - **sun_last_hour**: Sun last hour percentage - - **temperature**: Temperature - - **precipitation**: Precipitation - - **dewpoint**: Dew point +{% configuration %} +station_id: + required: false + description: The ID number for a supported ZAMG station. + type: string +name: + required: false + description: Additional name for the sensors. Defaults to platform name. + default: zamg + type: string +latitude: + required: false + description: "Latitude coordinate to monitor weather of (required if **longitude** is specified)." + default: "Defaults to coordinates defined in your `configuration.yaml` file." + type: float +longitude: + required: false + description: "Longitude coordinate to monitor weather of (required if **latitude** is specified)." + default: "Defaults to coordinates defined in your `configuration.yaml` file." + type: float +monitored_conditions: + required: false + description: Conditions to display in the frontend. + type: list + default: temperature + keys: + pressure: + description: Pressure at station level + pressure_sealevel: + description: Pressure at sea Level + humidity: + description: Humidity + wind_speed: + description: Wind speed + wind_bearing: + description: Wind bearing + wind_max_speed: + description: Top wind speed + wind_max_bearing: + description: Top wind bearing + sun_last_hour: + description: Sun last hour percentage + temperature: + description: Temperature + precipitation: + description: Precipitation + dewpoint: + description: Dew point +{% endconfiguration %} A full configuration example: diff --git a/source/_components/sensor.zestimate.markdown b/source/_components/sensor.zestimate.markdown index ca9547e40400..1d24b3f0dfd3 100644 --- a/source/_components/sensor.zestimate.markdown +++ b/source/_components/sensor.zestimate.markdown @@ -19,7 +19,7 @@ The `zestimate` sensor allows one to track the Zestimate value of properties usi You will need to sign up for the Zillow API at the following link [Zillow API](https://www.zillow.com/howto/api/APIOverview.htm). You will also need the Zillow property ID for each property you'd like to track. This information is available from the URL of a property you are interested in. -For example, the White House zpid is 84074482 and can be found in it's Zillow URL: [https://www.zillow.com/homedetails/1600-Pennsylvania-Ave-NW-Washington-DC-20006/84074482_zpid/](https://www.zillow.com/homedetails/1600-Pennsylvania-Ave-NW-Washington-DC-20006/84074482_zpid/) +For example, the White House zpid is 84074482 and can be found in its Zillow URL: [https://www.zillow.com/homedetails/1600-Pennsylvania-Ave-NW-Washington-DC-20006/84074482_zpid/](https://www.zillow.com/homedetails/1600-Pennsylvania-Ave-NW-Washington-DC-20006/84074482_zpid/) To enable this sensor, add the following lines to your `configuration.yaml`. diff --git a/source/_components/sensor.zoneminder.markdown b/source/_components/sensor.zoneminder.markdown index e60e27420582..fba8fe49a86c 100644 --- a/source/_components/sensor.zoneminder.markdown +++ b/source/_components/sensor.zoneminder.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Local Polling" --- -The `zoneminder` sensor platform lets you monitor the current state of your [ZoneMinder](https://www.zoneminder.com) install including the number of events and the current state of the cameras. +The `zoneminder` sensor platform lets you monitor the current state of your [ZoneMinder](https://www.zoneminder.com) install including the number of events, the current state of the cameras and ZoneMinder's current run state.

You must have the [ZoneMinder component](/components/zoneminder/) configured to use this sensor. diff --git a/source/_components/smappee.markdown b/source/_components/smappee.markdown index c91c9d0f59c5..846fd2e33ef8 100644 --- a/source/_components/smappee.markdown +++ b/source/_components/smappee.markdown @@ -49,11 +49,29 @@ smappee: 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. +{% configuration %} +host: + description: Your Local Smappee unit IP. + required: false + type: string +host_password: + description: Your Local Smappee password. + required: false + type: string +client_id: + description: Your Smappee API client_id. + required: false + type: string +client_secret: + description: Your Smappee API client_secret. + required: false + type: string +username: + description: Your My Smappee username. + required: false + type: string +password: + description: Your My Smappee password. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown index b4e752ebc282..9a03d1c9d368 100644 --- a/source/_components/snips.markdown +++ b/source/_components/snips.markdown @@ -141,7 +141,7 @@ Alternatively, MQTT can be configured to bridge messages between servers if usin In Home Assistant, we trigger actions based on intents produced by Snips using the [`intent_script`](/components/intent_script) component. For instance, the following block handles a `ActivateLightColor` intent to change light colors: -Note: If your Snips action is prefixed with a username (e.g. `john:playmusic` or `john__playmusic`), the Snips component in Home Assistant [will try and strip off the username](https://github.com/home-assistant/home-assistant/blob/c664c20165ebeb248b98716cf61e865f274a2dac/homeassistant/components/snips.py#L126-L129). Bear this in mind if you get the error `Received unknown intent` even when what you see on the MQTT bus looks correct. Internally the Snips component is trying to match the non-username version of the intent (i.e., just `playmusic`). +Note: If your Snips action is prefixed with a username (e.g., `john:playmusic` or `john__playmusic`), the Snips component in Home Assistant [will try and strip off the username](https://github.com/home-assistant/home-assistant/blob/c664c20165ebeb248b98716cf61e865f274a2dac/homeassistant/components/snips.py#L126-L129). Bear this in mind if you get the error `Received unknown intent` even when what you see on the MQTT bus looks correct. Internally the Snips component is trying to match the non-username version of the intent (i.e., just `playmusic`). {% raw %} ```yaml diff --git a/source/_components/spc.markdown b/source/_components/spc.markdown index 0e8819fb854e..1e5d707c860b 100644 --- a/source/_components/spc.markdown +++ b/source/_components/spc.markdown @@ -25,10 +25,15 @@ spc: ws_url: WS_URL ``` -Configuration variables: - -- **api_url** (*Required*): URL of the SPC Web Gateway command REST API, e.g., `http://:8088`. -- **ws_url** (*Required*): URL of the SPC Web Gateway websocket, e.g., `ws://:8088`. +{% configuration %} +api_url: + description: URL of the SPC Web Gateway command REST API, e.g., `http://:8088`. + required: true + type: string +ws_url: + description: URL of the SPC Web Gateway websocket, e.g., `ws://:8088`. + required: true + type: string +{% endconfiguration %} Supported sensors will be automatically discovered and added, however they will be hidden by default. - diff --git a/source/_components/switch.acer_projector.markdown b/source/_components/switch.acer_projector.markdown index 7599cd6d96e9..1e5bfb299c08 100644 --- a/source/_components/switch.acer_projector.markdown +++ b/source/_components/switch.acer_projector.markdown @@ -27,10 +27,21 @@ switch: filename: /dev/ttyUSB0 ``` -Configuration variables: - -- **filename** (*Required*): The pipe where the projector is connected to. -- **name** (*Optional*): The name to use when displaying this switch. -- **timeout** (*Optional*): Timeout for the connection in seconds. -- **write_timeout** (*Optional*): Write timeout in seconds. - +{% configuration %} +filename: + description: The pipe where the projector is connected to. + required: true + type: string +name: + description: The name to use when displaying this switch. + required: false + type: string +timeout: + description: Timeout for the connection in seconds. + required: false + type: integer +write_timeout: + description: Write timeout in seconds. + required: false + type: integer +{% endconfiguration %} diff --git a/source/_components/switch.bbb_gpio.markdown b/source/_components/switch.bbb_gpio.markdown index fc41a25db14e..6efd8f881591 100644 --- a/source/_components/switch.bbb_gpio.markdown +++ b/source/_components/switch.bbb_gpio.markdown @@ -17,7 +17,7 @@ The `bbb_gpio` switch platform allows you to control the GPIOs of your [BeagleBo ## {% linkable_title Configuration %} -To use yourBeagleBone Black's GPIO in your installation, add the following to your `configuration.yaml` file: +To use your BeagleBone Black's GPIO in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -30,13 +30,31 @@ switch: name: LED Green ``` -Configuration variables: - -- **pins** array (*Required*): Array of used ports. - - **pin_name** (*Required*): Port numbers and corresponding names. - - **name** (*Optional*): Friendly name to use for the frontend. - - **initial** (*Optional*): Initial state of the pin. Defaults to `False`. - - **invert_logic** (*Optional*): If true, inverts the output logic to ACTIVE LOW. Default is `false` (ACTIVE HIGH). +{% configuration %} +pins: + description: List of used pins. + required: true + type: map + keys: + pin_name: + description: Port numbers and corresponding names. + required: true + type: map + keys: + name: + description: Friendly name to use for the frontend. + required: false + type: string + initial: + description: Initial state of the pin. + required: false + default: false + type: boolean + invert_logic: + description: If `true`, inverts the input logic to ACTIVE LOW + required: false + default: false + type: boolean +{% endconfiguration %} For more details about the GPIO layout, visit the [article](http://elinux.org/Beagleboard:BeagleBoneBlack) about the BeagleBone Black. - diff --git a/source/_components/switch.dlink.markdown b/source/_components/switch.dlink.markdown index 50da6cf4a7b0..18eb457fef48 100644 --- a/source/_components/switch.dlink.markdown +++ b/source/_components/switch.dlink.markdown @@ -32,11 +32,29 @@ switch: password: YOUR_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address of your D-Link plug, eg. http://192.168.1.32 -- **name** (*Optional*): The name to use when displaying this switch. -- **username** (*Required*): The username for your plug. Defaults to `admin`. -- **password** (*Required*): The password for your plug. Default password is the `PIN` included on the configuration card. -- **use_legacy_protocol** (*Optional*): Enable limited support for legacy firmware protocols (Tested with v1.24). - +{% configuration %} +host: + description: "The IP address of your D-Link plug, e.g., http://192.168.1.32" + required: true + type: string +name: + description: The name to use when displaying this switch. + required: false + default: D-link Smart Plug W215 + type: string +username: + description: The username for your plug. + required: true + default: admin + type: string +password: + description: The password for your plug. + required: true + default: The default password is the `PIN` included on the configuration card. + type: string +use_legacy_protocol: + description: Enable limited support for legacy firmware protocols (Tested with v1.24). + required: false + default: false + type: boolean +{% endconfiguration %} diff --git a/source/_components/switch.elkm1.markdown b/source/_components/switch.elkm1.markdown new file mode 100644 index 000000000000..8ef52a09af6e --- /dev/null +++ b/source/_components/switch.elkm1.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Elk-M1 Switch" +description: "Instructions on how to integrate Elk-M1 outputs (relays)." +date: 2018-10-07 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: elkproducts.png +ha_release: 0.81 +ha_category: Switch +ha_iot_class: "Local Push" +--- + +The `elkm1` platform allows you to control your [Elk-M1](https://www.elkproducts.com/m1_controls.html). + +Elk-M1 outputs are represented as `switch` entities. + +

+Full configuration details can be found on the main [Elk-M1 component](/components/elkm1/) page. +

diff --git a/source/_components/switch.hikvisioncam.markdown b/source/_components/switch.hikvisioncam.markdown index 64fc873989be..820a83260721 100644 --- a/source/_components/switch.hikvisioncam.markdown +++ b/source/_components/switch.hikvisioncam.markdown @@ -28,10 +28,29 @@ switch: host: 192.168.1.32 ``` -Configuration variables: - -- **host** (*Required*): The IP address of your Hikvision camera, eg. `192.168.1.32`. -- **port** (*Optional*): The port to connect to your Hikvision camera. Defaults to `80`. -- **name** (*Optional*): This parameter allows you to override the name of your camera. -- **username** (*Optional*): The username for accessing your Hikvision camera. Defaults to `admin`. -- **password** (*Optional*): The password to access your Hikvision camera. Defaults to `12345`. +{% configuration %} +host: + description: The IP address of your Hikvision camera, e.g., `192.168.1.32`. + required: true + type: string +port: + description: The port to connect to your Hikvision camera. + required: false + default: 80 + type: integer +name: + description: This parameter allows you to override the name of your camera. + required: false + default: Hikvision Camera Motion Detection + type: string +username: + description: The username for accessing your Hikvision camera. + required: false + default: admin + type: string +password: + description: The password to access your Hikvision camera. + required: false + default: 12345 + type: string +{% endconfiguration %} diff --git a/source/_components/switch.kankun.markdown b/source/_components/switch.kankun.markdown index 919b798f9d17..264a6b98a45a 100644 --- a/source/_components/switch.kankun.markdown +++ b/source/_components/switch.kankun.markdown @@ -30,14 +30,41 @@ switch: host: hostname_or_ipaddr ``` -Configuration variables: - -- **switches** (*Required*): The array that contains all Kankun switches. - - **identifier** (*Required*): Name of the Kankun switch as slug. Multiple entries are possible. - - **host** (*Required*): Hostname or IP address of the switch on the local network. - - **name** (*Optional*): Friendly name of the switch. - - **port** (*Optional*): HTTP connection port, defaults to 80. - - **path** (*Optional*): Path of CGI script, defaults to `/cgi-bin/json.cgi`. - - **username** (*Optional*): Username for basic authentication. - - **password** (*Optional*): Password for basic authentication. - +{% configuration %} +switches: + description: The array that contains all Kankun switches. + required: true + type: map + keys: + identifier: + description: Name of the Kankun switch as slug. Multiple entries are possible. + required: true + type: map + keys: + host: + description: Hostname or IP address of the switch on the local network. + required: true + type: string + name: + description: Friendly name of the switch. + required: false + type: string + port: + description: HTTP connection port. + required: false + default: 80 + type: integer + patch: + description: Path of CGI script. + required: false + default: "/cgi-bin/json.cgi" + type: string + username: + description: Username for basic authentication. + required: false + type: string + password: + description: Password for basic authentication. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/switch.mochad.markdown b/source/_components/switch.mochad.markdown index a1d7569ec175..6d9c2bba8782 100644 --- a/source/_components/switch.mochad.markdown +++ b/source/_components/switch.mochad.markdown @@ -27,11 +27,19 @@ switch: - address: a5 ``` -Configuration variables: - -- **address** (*Required*): The X10 address of the switch. -- **name** (*Optional*): The name of the switch. Default is: x10_switch_dev_*address*. -- **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl. - - - +{% configuration %} +address: + description: The X10 address of the switch. + required: true + type: string +name: + description: The name of the switch. + required: false + default: x10_switch_dev_*address* + type: string +comm_type: + description: pl (powerline) or rf (radio frequency). + required: false + default: pl + type: string +{% endconfiguration %} diff --git a/source/_components/switch.modbus.markdown b/source/_components/switch.modbus.markdown index 3bf176c125de..60ce92daadde 100644 --- a/source/_components/switch.modbus.markdown +++ b/source/_components/switch.modbus.markdown @@ -40,20 +40,72 @@ switch: command_off: 0 ``` -Configuration variables: - -- **coils** (*Optional*): A list of relevant coils to read from/write to. - - **slave** (*Required*): The number of the slave (can be omitted for tcp and udp Modbus). - - **name** (*Required*): Name of the switch. - - **coil** (*Required*): Coil number. -- **registers** (*Optional*): A list of relevant registers to read from/write to. - - **slave** (*Required*): The number of the slave (can be omitted for tcp and udp Modbus). - - **name** (*Required*): Name of the switch. - - **register** (*Required*): Register number. - - **command_on** (*Required*): Value to write to turn on the switch. - - **command_off** (*Required*): Value to write to turn off the switch. - - **verify_state** (*Optional*): Define if is possible to readback the status of the switch. (default: True) - - **verify_register** (*Optional*): Register to readback. (default: same as register) - - **register_type** (*Optional*): Modbus register type: holding or input. (default: holding) - - **state_on** (*Optional*): Register value when switch is on. (default: same as command_on) - - **state_off** (*Optional*): Register value when switch is off. (default: same as command_off) +{% configuration %} +coils: + description: A list of relevant coils to read from/write to. + required: false + type: map + keys: + slave: + description: The number of the slave (can be omitted for tcp and udp Modbus). + required: true + type: integer + name: + description: Name of the switch. + required: true + type: string + coil: + description: Coil number. + required: true + type: integer +register: + description: A list of relevant registers to read from/write to. + required: false + type: map + keys: + slave: + description: The number of the slave (can be omitted for tcp and udp Modbus). + required: true + type: integer + name: + description: Name of the switch. + required: true + type: string + register: + description: Register number. + required: true + type: integer + command_on: + description: Value to write to turn on the switch. + required: true + type: integer + command_off: + description: Value to write to turn off the switch. + required: true + type: integer + verify_state: + description: Define if is possible to readback the status of the switch. + required: false + default: True + type: boolean + verify_register: + description: Register to readback. + required: false + default: same as register + type: string + register_type: + description: Modbus register types are holding or input. + required: false + default: holding + type: string + state_on: + description: Register value when switch is on. + required: false + default: same as command_on + type: integer + state_off: + description: Register value when switch is off. + required: false + default: same as command_off + type: integer +{% endconfiguration %} diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown index 68ec3dfc3a0d..884210ebe0f0 100644 --- a/source/_components/switch.mqtt.markdown +++ b/source/_components/switch.mqtt.markdown @@ -103,6 +103,35 @@ value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." required: false type: string +device: + description: 'Information about the device this switch is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string {% endconfiguration %}

diff --git a/source/_components/tado.markdown b/source/_components/tado.markdown index 386db0de0d1b..cfb7294289c2 100644 --- a/source/_components/tado.markdown +++ b/source/_components/tado.markdown @@ -24,10 +24,16 @@ tado: password: YOUR_PASSWORD ``` -Configuration variables: - -- **username** (*Required*): Username for my.tado.com. -- **password** (*Required*): Password for my.tado.com. +{% configuration %} +username: + description: Username for my.tado.com. + required: true + type: string +password: + description: Password for my.tado.com. + required: true + type: string +{% endconfiguration %} The tado thermostats are internet connected thermostats. There exists an unofficial API at [my.tado.com](https://my.tado.com/webapp/#/account/sign-in), which is used by their website and now by this component. diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown index 584761f2db89..1b441341db40 100644 --- a/source/_components/tellduslive.markdown +++ b/source/_components/tellduslive.markdown @@ -28,9 +28,16 @@ To manually integrate your Telldus Live with Home Assistant, e.g., if your devic tellduslive: ``` -Configuration variables: - -- **host** (*Optional*): Host address to Tellstick Net or Tellstick ZNet for Local API, only useful when automatic discovery is not enabled. -- **update_interval** (*Optional*): Interval (in seconds) for polling the Telldus Live server (or the local server). Defaults to 60 seconds. +{% configuration %} +host: + description: Host address to Tellstick Net or Tellstick ZNet for Local API, only useful when automatic discovery is not enabled. + required: false + type: string +update_interval: + description: Interval (in seconds) for polling the Telldus Live server (or the local server). + required: false + default: 60 + type: integer +{% endconfiguration %} The component will offer configuration through the Home Assistant user interface where it will let you associate it with your Telldus Live account. diff --git a/source/_components/tesla.markdown b/source/_components/tesla.markdown index f912af94f821..c004585e3692 100644 --- a/source/_components/tesla.markdown +++ b/source/_components/tesla.markdown @@ -33,8 +33,18 @@ tesla: password: YOUR_PASSWORD ``` -Configuration variables: - -- **username** (*Required*): The email address associated with your Tesla account. -- **password** (*Required*): The password for your given Tesla account. -- **scan_interval** (*Optional*): API polling interval. Minimal value can't be less then 300. (Defaults 300) +{% configuration %} +username: + description: The email address associated with your Tesla account. + required: true + type: string +password: + description: The password associated with your Tesla account. + required: true + type: string +scan_interval: + description: API polling interval. Minimal value can't be less then 300. + required: false + default: 300 + type: integer +{% endconfiguration %} diff --git a/source/_components/thingspeak.markdown b/source/_components/thingspeak.markdown index 2336a597473e..b18969ca64e1 100644 --- a/source/_components/thingspeak.markdown +++ b/source/_components/thingspeak.markdown @@ -27,9 +27,17 @@ thingspeak: whitelist: sensor.yr_temperature ``` -Configuration variables: - -- **api_key** (*Required*): Your ThingSpeak Channel Write API key. -- **id** (*Required*): The ID of your desired ThingSpeak channel. -- **whitelist** (*Required*): The name of the entity whose states should be sent to the channel. - +{% configuration %} +api_key: + description: Your ThingSpeak Channel Write API key. + required: true + type: string +id: + description: The ID of your desired ThingSpeak channel. + required: true + type: integer +whitelist: + description: The name of the entity whose states should be sent to the channel. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/toon.markdown b/source/_components/toon.markdown index e516db9ce87c..d5201873af06 100644 --- a/source/_components/toon.markdown +++ b/source/_components/toon.markdown @@ -26,10 +26,26 @@ toon: password: YOUR_PASSWORD ``` -Configuration variables: - -- **username** (*Required*): Username for Mijn Eneco. -- **password** (*Required*): Password for Mijn Eneco. +{% configuration %} +username: + description: Username for Mijn Eneco. + required: true + type: string +password: + description: Password for Mijn Eneco. + required: true + type: string +gas: + description: With this option you can choose whether you want to measure gas consumption. + required: false + default: true + type: boolean +solar: + description: With this option you can choose whether you want to measure electricity production. + required: false + default: false + type: boolean +{% endconfiguration %} Toon is a smart thermostat delivered by the Eneco power company in The Netherlands. It can measure energy consumption (power and gas), but also the amount of energy generated in case solar panels are connected to it. Toon also acts as a z-wave hub for supported devices like the wall plug and the smoke detector. This component uses the [toonlib library](https://github.com/costastf/toonlib) by Costas Tyfoxylos that connects to the unofficial API on [https://toonopafstand.eneco.nl](https://toonopafstand.eneco.nl). diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown index 8c16a9a17e28..ce35f0402035 100644 --- a/source/_components/tradfri.markdown +++ b/source/_components/tradfri.markdown @@ -38,10 +38,10 @@ host: required: true type: string allow_tradfri_groups: - description: "Set this to `false` to stop Home Assistant from importing the groups defined on the Trådfri bridge." + description: "Set this to `true` to allow Home Assistant to import the groups defined on the Trådfri bridge." required: false type: boolean - default: true + default: false {% endconfiguration %} diff --git a/source/_components/vacuum.neato.markdown b/source/_components/vacuum.neato.markdown index bbdd37730b1a..49381f5952ba 100644 --- a/source/_components/vacuum.neato.markdown +++ b/source/_components/vacuum.neato.markdown @@ -18,7 +18,7 @@ The `neato` vacuum platform allows you to control your [Neato Botvac Connected]( The status will contain attributes on the robots last clean session.

-If you notice the robot stops responding to commands check the status attribute to see if the robot is offline. If you see "Robot Offline" check the Neato app and make sure your robot is connected and working. If it is not then follow the steps in the app to reset your robot and give it the same name as before then restart Home Assistant. +If you notice the robot stops responding to commands check the state to see if the robot is "unavailable". If you see "unavailable" first try to restart the vacuum and wait about 5 minutes to see if it is no longer "unavailable". If you are still having issues check the Neato app and make sure your robot is connected and working. If it is not then follow the steps in the app to reset your robot and give it the same name as before then restart Home Assistant.

To add `neato` vacuum to your installation, please follow instructions in [Neato component](/components/neato/). diff --git a/source/_components/vacuum.roomba.markdown b/source/_components/vacuum.roomba.markdown index 0a81a732fcb2..2186f1666aae 100644 --- a/source/_components/vacuum.roomba.markdown +++ b/source/_components/vacuum.roomba.markdown @@ -29,14 +29,35 @@ vacuum: password: PASSWORD ``` -Configuration variables: - -- **host** (*Required*): Hostname or IP address of the Roomba. -- **username** (*Required*): The username (BLID) for your device. -- **password** (*Required*): The password for your device. -- **name** (*Optional*): The name of the vacuum. -- **certificate** (*Optional*): Path to your certificate store. Defaults to `/etc/ssl/certs/ca-certificates.crt`. -- **continuous** (*Optional*): Whether to operate in continuous mode. Defaults to `True`. +{% configuration %} +host: + description: Hostname or IP address of the Roomba. + required: true + type: string +username: + description: The username (BLID) for your device. + required: true + type: string +password: + description: The password for your device. + required: true + type: string +name: + description: The name of the vacuum. + required: false + default: Roomba + type: string +certificate: + description: Path to your certificate store. + required: false + default: /etc/ssl/certs/ca-certificates.crt + type: string +continuous: + description: Whether to operate in continuous mode. + required: false + default: true + type: boolean +{% endconfiguration %}

The Roomba's MQTT server only allows a single connection. Enabling continuous mode will force the App to connect via the cloud to your Roomba. [More info here](https://github.com/NickWaterton/Roomba980-Python#firmware-2xx-notes) diff --git a/source/_components/velux.markdown b/source/_components/velux.markdown index f73ddfab26bb..171b0f5c422e 100644 --- a/source/_components/velux.markdown +++ b/source/_components/velux.markdown @@ -13,7 +13,7 @@ ha_release: 0.49 ha_iot_class: "Local Polling" --- -[Velux](http://www.velux.com) integration for Home Assistant allows you to connect to a Velux KLF 200 interface, to control [io-homecontrol](http://www.io-homecontrol.com) devices like windows and blinds. The module allows you to start scenes configured within KLF 200. +[Velux](http://www.velux.com) integration for Home Assistant allows you to connect to a Velux KLF 200 interface, to control [io-homecontrol](http://www.io-homecontrol.com) devices like windows and blinds. The module allows you to start scenes configured within KLF 200. A `velux` section must be present in the `configuration.yaml` file and contain the following options as required: @@ -24,7 +24,13 @@ velux: password: "velux123" ``` -Configuration variables: - -- **host** (*Required*): The IP address or hostname of the KLF 200 to use. -- **password** (*Required*): The password of the KLF 200 interface. +{% configuration %} +host: + description: The IP address or hostname of the KLF 200 to use. + required: true + type: string +password: + description: The password of the KLF 200 interface. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/verisure.markdown b/source/_components/verisure.markdown index 799c43e6c321..49dd80958e14 100644 --- a/source/_components/verisure.markdown +++ b/source/_components/verisure.markdown @@ -33,17 +33,57 @@ verisure: password: PASSWORD ``` -Configuration variables: - -- **username** (*Required*): The username to Verisure mypages. -- **password** (*Required*): The password to Verisure mypages. -- **alarm** (*Optional*): Set to 1 to show alarm, 0 to disable. Default 1. -- **hygrometers** (*Optional*): Set to 1 to show hygrometers, 0 to disable. Default 1. -- **smartplugs** (*Optional*): Set to 1 to show smartplugs, 0 to disable. Default 1. -- **locks** (*Optional*): Set to 1 to show locks, 0 to disable. Default 1. -- **thermometers** (*Optional*): Set to 1 to show thermometers, 0 to disable. Default 1. -- **mouse** (*Optional*): Set to 1 to show mouse detectors, 0 to disable. Default 1. -- **door_window** (*Optional*): Set to 1 to show door and window sensors, 0 to disable. Default 1. -- **code_digits** (*Optional*): Number of digits in PIN code. Default 4. -- **giid** (*Optional*): The GIID of your installation (If you have more then one alarm system). To find the GIID for your systems run 'python verisure.py EMAIL PASSWORD installations' -- **scan_interval** (*Optional*): Scan interval in ```hh:mm:ss``` format. Default ```00:01:00``` +{% configuration %} +username: + description: The username to Verisure mypages. + required: true + type: string +password: + description: The password to Verisure mypages. + required: true + type: string +alarm: + description: Set to true to show alarm, false to disable. + required: false + default: true + type: boolean +hygrometers: + description: Set to true to show hygrometers, false to disable. + required: false + default: true + type: boolean +smartplugs: + description: Set to true to show smartplugs, false to disable. + required: false + default: true + type: boolean +locks: + description: Set to true to show locks, false to disable. + required: false + default: true + type: boolean +thermometers: + description: Set to true to show thermometers, false to disable. + required: false + default: true + type: boolean +mouse: + description: Set to true to show mouse detectors, false to disable. + required: false + default: true + type: boolean +door_window: + description: Set to true to show mouse detectors, false to disable. + required: false + default: true + type: boolean +code_digits: + description: Number of digits in PIN code. + required: false + default: 4 + type: integer +giid: + description: The GIID of your installation (If you have more then one alarm system). To find the GIID for your systems run 'python verisure.py EMAIL PASSWORD installations'. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/volvooncall.markdown b/source/_components/volvooncall.markdown index 8160d19882fc..d4028a46e4b1 100644 --- a/source/_components/volvooncall.markdown +++ b/source/_components/volvooncall.markdown @@ -30,7 +30,7 @@ volvooncall: Users registered with Volvo in North America or China will need to specify a region: ```yaml -# North America +# North America volvooncall: username: YOUR_USERNAME password: YOUR_PASSWORD @@ -62,13 +62,34 @@ volvooncall: - heater ``` -Configuration variables: - -- **username** (*Required*): The username associated with your Volvo On Call account. -- **password** (*Required*): The password for your given Volvo On Call account. -- **region** (*Optional*): The region where the Volvo is registered. Needs to be set for users in North America or China. -- **service_url** (*Optional*): The service URL to use for Volvo On Call. Normally not necessary to specify. -- **name** (*Optional*): Make it possible to provide a name for the vehicles. -- **resources** (*Optional*): A list of resources to display (defaults to all available). -- **scandinavian_miles** (*Optional*): If set to yes, Scandinavian miles ("mil") are used for distances and fuel range (defaults to no). - +{% configuration %} +username: + description: The username associated with your Volvo On Call account. + required: true + type: string +password: + description: The password for your given Volvo On Call account. + required: true + type: string +region: + description: The region where the Volvo is registered. Needs to be set for users in North America or China. + required: false + type: string +service_url: + description: The service URL to use for Volvo On Call. Normally not necessary to specify. + required: false + type: string +name: + description: Make it possible to provide a name for the vehicles. + required: false + type: string +resources: + description: A list of resources to display (defaults to all available). + required: false + type: list +scandinavian_miles: + description: If set to true, Scandinavian miles ("mil") are used for distances and fuel range. + required: false + defaults: false + type: boolean +{% endconfiguration %} diff --git a/source/_components/weather.markdown b/source/_components/weather.markdown index 25fde662082c..e558c1a29bc4 100644 --- a/source/_components/weather.markdown +++ b/source/_components/weather.markdown @@ -17,6 +17,7 @@ Home Assistant currently supports free web services and such which require a reg The `weather` platform only knows the below listed conditions. The reason for this is that for these conditions is an icon from [Material Design Icons](https://materialdesignicons.com/) available and mapped in the [frontend](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/cards/ha-weather-card.js#L170). +- 'clear-night' - 'cloudy' - 'fog' - 'hail' diff --git a/source/_components/weather.openweathermap.markdown b/source/_components/weather.openweathermap.markdown index bf704c2984b0..f0d9d1f93bbc 100644 --- a/source/_components/weather.openweathermap.markdown +++ b/source/_components/weather.openweathermap.markdown @@ -28,14 +28,33 @@ weather: api_key: YOUR_API_KEY ``` -Configuration variables: - -- **api_key** (*Required*): Your API key for http://openweathermap.org/. -- **name** (*Optional*): Name to use in the frontend. -- **mode** (*Optional*): Can specify `hourly` or `daily`. Select `hourly` for a three-hour forecast or `daily` for daily forecast. Defaults to `hourly`. -- **latitude** (*Optional*): Latitude of the location to display the weather. Defaults to the latitude in your `configuration.yaml` file. -- **longitude** (*Optional*): Longitude of the location to display the weather. Defaults to the longitude in your `configuration.yaml` file. +{% configuration %} +api_key: + required: true + description: Your API key for [OpenWeatherMap](http://openweathermap.org/). + type: string +name: + required: false + description: Name to use in the frontend. + default: OpenWeatherMap + type: string +mode: + required: false + description: "Can specify `hourly` or `daily`. Select `hourly` for a three-hour forecast or `daily` for daily forecast." + default: "`hourly`" + type: string +latitude: + required: false + description: Latitude of the location to display the weather. + default: "The latitude in your `configuration.yaml` file." + type: float +longitude: + required: false + description: Longitude of the location to display the weather. + default: "The longitude in your `configuration.yaml` file." + type: float +{% endconfiguration %}

-This platform is an alternative to the [`openweathermap`](/components/sensor.openweathermap/) sensor. +This platform is an alternative to the [`openweathermap`](/components/sensor.openweathermap/) sensor.

diff --git a/source/_components/weather.yweather.markdown b/source/_components/weather.yweather.markdown index 27bbda8214dc..055f9daa0ec5 100644 --- a/source/_components/weather.yweather.markdown +++ b/source/_components/weather.yweather.markdown @@ -31,15 +31,20 @@ weather: - platform: yweather ``` -Configuration variables: - -- **woeid** (*Optional*): See above. -- **name** (*Optional*): The name of the sensor. To easily recognize each sensor when adding more than one Yahoo weather sensor, it is recommended to use the name option. Defaults to `Yweather`. - +{% configuration %} +woeid: + description: Your Where On Earth ID, see above for all the info. + required: false + type: integer +name: + description: The name of the sensor. To easily recognize each sensor when adding more than one Yahoo weather sensor, it is recommended to use the name option. + required: false + default: yweather + type: string +{% endconfiguration %}

-This platform is an alternative to the [`yweather`](/components/sensor.yweather/) sensor. +This platform is an alternative to the [`yweather`](/components/sensor.yweather/) sensor.

Details about the API are available in the [Yahoo! Developer Network](https://developer.yahoo.com/weather/). - diff --git a/source/_components/weather.zamg.markdown b/source/_components/weather.zamg.markdown index b3112d97ea8d..dd62ceec3dc7 100644 --- a/source/_components/weather.zamg.markdown +++ b/source/_components/weather.zamg.markdown @@ -27,12 +27,26 @@ weather: - platform: zamg ``` -Configuration variables: - -- **station_id** (*Optional*): The ID number for a supported ZAMG station. -- **name** (*Optional*): A name for the weather platform. -- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specified). Defaults to coordinates defined in your `configuration.yaml` file. -- **longitude** (*Optional*): Longitude coordinate to monitor weather of (required if **latitude** is specified). Defaults to coordinates defined in your `configuration.yaml` file. +{% configuration %} +station_id: + required: false + description: The ID number for a supported ZAMG station. + type: string +name: + required: false + description: A name for the weather platform. + type: string +latitude: + required: false + description: "Latitude coordinate to monitor weather of (required if **longitude** is specified)." + default: "Defaults to coordinates defined in your `configuration.yaml` file." + type: float +longitude: + required: false + description: "Longitude coordinate to monitor weather of (required if **latitude** is specified)." + default: "Defaults to coordinates defined in your `configuration.yaml` file." + type: float +{% endconfiguration %}

This platform is an alternative to the [`zamg`](/components/sensor.zamg/) sensor. The weather platform is easier to configure but less customizable. diff --git a/source/_components/webhook.markdown b/source/_components/webhook.markdown new file mode 100644 index 000000000000..5540a153410c --- /dev/null +++ b/source/_components/webhook.markdown @@ -0,0 +1,5 @@ +--- +date: 2018-10-05 00:01:00 +--- + + diff --git a/source/_components/wink.markdown b/source/_components/wink.markdown index 0d97c91d465a..c849971fc26f 100644 --- a/source/_components/wink.markdown +++ b/source/_components/wink.markdown @@ -141,7 +141,7 @@ The Wink hub, by default, can only be accessed via the cloud. This means it requ - GoControl siren and strobe - Dome siren/chime/strobe -- Quirky Nimbus (Legacy device) These can no longer be officialy added to your Wink account +- Quirky Nimbus (Legacy device) These can no longer be officially added to your Wink account ### {% linkable_title Service `set_siren_auto_shutoff` %} @@ -290,7 +290,7 @@ script: ### {% linkable_title Service `set_nimbus_dial_state` %} -You can use the service wink/set_nimbus_dial_state to update an individual dial's value/position and it's labels +You can use the service wink/set_nimbus_dial_state to update an individual dial's value/position and its labels | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | diff --git a/source/_components/zone.markdown b/source/_components/zone.markdown index fd6280eccfcc..1e5125b71c17 100644 --- a/source/_components/zone.markdown +++ b/source/_components/zone.markdown @@ -37,14 +37,34 @@ zone: icon: mdi:account-multiple ``` -Configuration variables: - -- **name** (*Optional*): Friendly name of the zone. -- **latitude** (*Required*): Latitude of the center point of the zone. -- **longitude** (*Required*): Longitude of the center point of the zone. -- **radius** (*Optional*): Optional radius in meters. Defaults to 100 meters. -- **icon** (*Optional*): Optional icon to show instead of name. -- **passive** (*Optional*): Optional boolean to only use the zone for automation and hide it from the UI and not use the zone for device tracker name. Defaults to false. +{% configuration %} +name: + description: The friendly name of the zone. + required: false + type: string +latitude: + description: The latitude of the center point of the zone. + required: true + type: float +longitude: + description: The longitude of the center point of the zone. + required: true + type: float +radius: + description: The radius of the zone in meters. + required: false + default: 100 + type: integer +icon: + description: The icon to show instead of name. + required: false + type: string +passive: + description: To only use the zone for automation and hide it from the frontend and not use the zone for device tracker name. + required: false + default: false + type: boolean +{% endconfiguration %} To find the latitude/longitude of a certain place you can use [Google Maps](https://www.google.com/maps/) or [Bing Maps](https://www.bing.com/maps). Just right click and copy the coordinates from there (Bing) or click on the "What is here?" (Google) diff --git a/source/_components/zoneminder.markdown b/source/_components/zoneminder.markdown index ac8297eaee86..b2bf8cc89cd0 100644 --- a/source/_components/zoneminder.markdown +++ b/source/_components/zoneminder.markdown @@ -26,8 +26,8 @@ Configuration variables: - **host** (*Required*): Your ZoneMinder server's host (and optional port), not including the scheme. - **path** (*Optional*): Path to your ZoneMinder install. Defaults to `/zm/`. - **path_zms** (*Optional*): Path to the CGI script for streaming. This should match `PATH_ZMS` in ZM's "Paths" settings. Defaults to `/zm/cgi-bin/nph-zms`. -- **ssl** (*Optional*): Set to `True` if your ZoneMinder installation is using SSL. Default to `False`. -- **verify_ssl** (*Optional*): Verify the certification of the endpoint. Default to `True`. +- **ssl** (*Optional*): Set to `true` if your ZoneMinder installation is using SSL. Default to `false`. +- **verify_ssl** (*Optional*): Verify the certification of the endpoint. Default to `true`. - **username** (*Optional*): Your ZoneMinder username. - **password** (*Optional*): Your ZoneMinder password. Required if `OPT_USE_AUTH` is enabled in ZM. @@ -39,8 +39,24 @@ zoneminder: host: ZM_HOST path: ZM_PATH path_zms: ZM_PATH_ZMS - ssl: True - verify_ssl: True + ssl: true + verify_ssl: true username: YOUR_USERNAME password: YOUR_PASSWORD ``` + +### {% linkable_title Service %} + +Once loaded, the `zoneminder` platform will expose a service (`set_run_state`) that can be used to change the current run state of ZoneMinder. + +| Service data attribute | Optional | Description | +|:-----------------------|:---------|:----------------------------------| +| `name` | no | Name of the new run state to set. | + +For example, if your ZoneMinder instance was configured with a run state called "Home", you could write an [automation](/getting-started/automation/) that changes ZoneMinder to the "Home" run state by including the following [action](/getting-started/automation-action/): + ```yaml +action: + service: zoneminder.set_run_state + data: + name: Home +``` diff --git a/source/_cookbook/configuration_yaml_by_bah2830.markdown b/source/_cookbook/configuration_yaml_by_bah2830.markdown deleted file mode 100644 index 1831f4a17f98..000000000000 --- a/source/_cookbook/configuration_yaml_by_bah2830.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by bah2830" -description: "" -date: 2016-07-14 20:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/bah2830/Home-Assistant-Configs ---- diff --git a/source/_cookbook/configuration_yaml_by_danichispa.markdown b/source/_cookbook/configuration_yaml_by_danichispa.markdown deleted file mode 100644 index df100486363f..000000000000 --- a/source/_cookbook/configuration_yaml_by_danichispa.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Danichispa" -description: "" -date: 2016-02-20 02:19 -0800 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/danichispa/hass ---- - diff --git a/source/_cookbook/configuration_yaml_by_greenturtwig.markdown b/source/_cookbook/configuration_yaml_by_greenturtwig.markdown deleted file mode 100644 index a5bc7c5b1849..000000000000 --- a/source/_cookbook/configuration_yaml_by_greenturtwig.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by GreenTurtwig" -description: "" -date: 2016-02-13 13:51 +0700 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/GreenTurtwig/personal-home-automation/blob/master/configuration.yaml ---- - diff --git a/source/_cookbook/configuration_yaml_by_happyleavesaoc.markdown b/source/_cookbook/configuration_yaml_by_happyleavesaoc.markdown deleted file mode 100644 index 33fc4f050406..000000000000 --- a/source/_cookbook/configuration_yaml_by_happyleavesaoc.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by happyleavesaoc" -description: "" -date: 2016-02-07 11:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/happyleavesaoc/my-home-automation/tree/master/homeassistant ---- - diff --git a/source/_cookbook/configuration_yaml_by_instagraeme.markdown b/source/_cookbook/configuration_yaml_by_instagraeme.markdown deleted file mode 100644 index d6ddee0fa44e..000000000000 --- a/source/_cookbook/configuration_yaml_by_instagraeme.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by InstaGraeme" -description: "" -date: 2016-09-08 21:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/Instagraeme/Home-Assistant-Configuration ---- diff --git a/source/_cookbook/configuration_yaml_by_jjmontesl.markdown b/source/_cookbook/configuration_yaml_by_jjmontesl.markdown deleted file mode 100644 index 742d618f912e..000000000000 --- a/source/_cookbook/configuration_yaml_by_jjmontesl.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by jjmontesl" -description: "" -date: 2017-02-22 23:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/jjmontesl/home-assistant-config ---- diff --git a/source/_cookbook/configuration_yaml_by_joshuagarrison27.markdown b/source/_cookbook/configuration_yaml_by_joshuagarrison27.markdown new file mode 100644 index 000000000000..baad95ee1804 --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_joshuagarrison27.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by Joshua Garrison" +description: "" +date: 2018-10-10 17:05 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/JoshuaGarrison27/Home-Assistant-Configuration +--- diff --git a/source/_cookbook/configuration_yaml_by_lancehaynie.markdown b/source/_cookbook/configuration_yaml_by_lancehaynie.markdown index 892714d14009..d4c6d0e05986 100644 --- a/source/_cookbook/configuration_yaml_by_lancehaynie.markdown +++ b/source/_cookbook/configuration_yaml_by_lancehaynie.markdown @@ -8,5 +8,5 @@ comments: false sharing: true footer: true ha_category: Example configuration.yaml -ha_external_link: https://github.com/Haynie-Research-and-Development/jarvis +ha_external_link: https://git.haynienetworks.com/projects/HRDPUBLIC/repos/jarvis/browse --- diff --git a/source/_cookbook/configuration_yaml_by_mertenats.markdown b/source/_cookbook/configuration_yaml_by_mertenats.markdown deleted file mode 100644 index 47b1bbb38eba..000000000000 --- a/source/_cookbook/configuration_yaml_by_mertenats.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by mertenats" -description: "" -date: 2016-10-08 19:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/mertenats/open-home-automation/tree/master/openhome ---- diff --git a/source/_cookbook/configuration_yaml_by_oakbrad.markdown b/source/_cookbook/configuration_yaml_by_oakbrad.markdown deleted file mode 100644 index c49913944189..000000000000 --- a/source/_cookbook/configuration_yaml_by_oakbrad.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by oakbrad" -description: "" -date: 2016-03-14 11:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/oakbrad/brad-homeassistant-config ---- - diff --git a/source/_cookbook/configuration_yaml_by_scottocs11.markdown b/source/_cookbook/configuration_yaml_by_scottocs11.markdown deleted file mode 100644 index a9b4637975e5..000000000000 --- a/source/_cookbook/configuration_yaml_by_scottocs11.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Scottoc11" -description: "" -date: 2017-02-23 16:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/scottocs11/Home-Assistant-Config ---- \ No newline at end of file diff --git a/source/_cookbook/configuration_yaml_by_teagan42.markdown b/source/_cookbook/configuration_yaml_by_teagan42.markdown deleted file mode 100644 index 1440f63f1c39..000000000000 --- a/source/_cookbook/configuration_yaml_by_teagan42.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Teagan42" -description: "" -date: 2016-08-24 23:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/Teagan42/HomeAssistantConfig ---- diff --git a/source/_cookbook/configuration_yaml_from_bassclarinetl2.markdown b/source/_cookbook/configuration_yaml_from_bassclarinetl2.markdown deleted file mode 100644 index 0f418577c35e..000000000000 --- a/source/_cookbook/configuration_yaml_from_bassclarinetl2.markdown +++ /dev/null @@ -1,460 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by bassclarinetl2" -description: "" -date: 2016-03-24 17:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml ---- - -```yaml -homeassistant: - # Name of the location where Home Assistant is running - name: example.com - # Location required to calculate the time the sun rises and sets - latitude: 37 - longitude: -121 - # 'metric' for Metric, 'imperial' for Imperial - unit_system: imperial - # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones - time_zone: America/Los_Angeles - customize: - switch.aeon_labs_smart_energy_switch_switch_2: - friendly_name: Mac Switch-Meter - switch.leviton_unknown_type1a02_id0334_switch_3: - friendly_name: W Nightstand - entity_picture: /local/zwvapl.jpg - switch.hub_switch: - friendly_name: Wink Hub Switch - entity_picture: /local/wemoswitch.jpg - switch.leviton_unknown_type1a02_id0334_switch_4: - friendly_name: Christmas Tree - entity_picture: /local/zwvapl.jpg - switch.leviton_unknown_type1a02_id0334_switch_5: - friendly_name: Roof Lights - entity_picture: /local/zwvapl.jpg - - light.w_bedroom_ceiling_: - friendly_name: Will's Bedroom Ceiling Lights (Wink) - entity_picture: /local/casetta.jpg - light.living_room_wall_: - friendly_name: Living Room Couch Lights (Wink) - entity_picture: /local/casetta.jpg - - media_player.my_shield_android_tv: - friendly_name: Dalek (Cast) - entity_picture: /local/shieldtv.jpg - media_player.chromecast: - friendly_name: Jeff chromecast - entity_picture: /local/chromecast.jpg - media_player.kodi: - friendly_name: Tardis-Win7 (Kodi) - entity_picture: /local/kodi.png - media_player.kodi_2: - friendly_name: Dalek (Kodi) - media_player.roku_2_xd__12a18n045363: - friendly_name: Parents Roku - entity_picture: /local/roku2xd.jpg - - sensor.aeon_labs_smart_energy_switch_power_2: - friendly_name: Mac Usage (W) - sensor.aeon_labs_smart_energy_switch_previous_reading_2: - friendly_name: Mac Usage Previous (W) - hidden: true - sensor.aeon_labs_smart_energy_switch_energy_2: - friendly_name: Mac Usage (kWh) - hidden: true - -##################### -## GROUPS -##################### -group: - w_bedroom: - - switch.leviton_unknown_type1a02_id0334_switch_3 - - light.w_bedroom_ceiling_ - christmas: - - switch.leviton_unknown_type1a02_id0334_switch_4 - - switch.leviton_unknown_type1a02_id0334_switch_5 - almanac: - - sensor.date - - sensor.time - - sensor.time_utc - - sun.sun - tracker: - - device_tracker.will_wnexus -# OpenWeatherMap: -# - sensor.weather_temperature -# - sensor.weather_humidity -# - sensor.weather_pressure -# - sensor.weather_rain -# - sensor.weather_wind_speed -# - sensor.weather_cloud_coverage -# - sensor.weather_forecast - Meteobridge: - - sensor.outdoor_temp_meteobridge - - sensor.outdoor_humidity_meteobridge - - sensor.outdoor_dewpoint_meteobridge - - sensor.precip_rate_meteobridge - - sensor.wind_direction_meteobridge - - sensor.wind_gust_meteohub - - sensor.wind_chill_meteobridge - - sensor.wind_speed_meteobridge - - sensor.indoor_dewpoint_meteobridge - - sensor.indoor_humidity_meteobridge - - sensor.indoor_temp_meteobridge - - sensor.precip_change_meteobridge - - sensor.precip_total_meteobridge - - sensor.sea_level_pressure_meteobridge - - sensor.barometric_pressure_meteobridge - -#################### -## ZONES -#################### -zone: - name: Home - latitude: 37 - longitude: -121 - radius: 200 - icon: mdi:home - -zone 2: - name: Barracuda_(SJ) - latitude: 37 - longitude: -121 - radius: 100 - -zone 3: - name: SFC - latitude: 37 - longitude: -122 - radius: 95 - -#################### -## NOTIFICATIONS -#################### - - -#################### -## AUTOMATION -#################### -automation: -#- alias: 'W_at_work' -# trigger: -# - platform: zone -# entity_id: device_tracker.will_wnexus -# zone: zone.barracuda_sj -# event: enter -# - platform: time -# at: '07:15' -# before: '09:00' -# action: -# service: ifttt.trigger -# data: {"event":"hassnotification_dadsms", "value1": "Will's at Work"} -- alias: "Update_Update" - trigger: - platform: state - entity_id: updater.updater - action: - service: ifttt.trigger - data: {"event":"hassnotification_willsms","value1":"HASS has an update"} -- alias: 'Christmas Roof ON' - trigger: - platform: sun - event: sunset - offset: '-01:00:00' - action: - service: homeassistant.turn_on - entity_id: switch.leviton_unknown_type1a02_id0334_switch_5 -- alias: 'Christmas Roof OFF' - trigger: - platform: time - hours: 1 - minutes: 0 - seconds: 0 - action: - service: homeassistant.turn_off - entity_id: switch.leviton_unknown_type1a02_id0334_switch_5 -- alias: 'Christmas Tree ON' - trigger: - platform: time - hours: 8 - minutes: 0 - seconds: 0 - action: - service: homeassistant.turn_on - entity_id: switch.leviton_unknown_type1a02_id0334_switch_4 -- alias: 'Christmas Tree (OFF)' - trigger: - platform: time - hours: 23 - minutes: 0 - seconds: 0 - action: - service: homeassistant.turn_off - entity_id: switch.leviton_unknown_type1a02_id0334_switch_4 -#- alias: test notify -# trigger: -# platform: time -# minutes: '/5' #every 5 min -# action: -# service: notify.pushEtta -# data: -# message: 5 Min Test - - -################################# -### COMPONENTS ### -################################# -#discovery: -sun: -#updater: -history: -#conversation: -frontend: -logbook: - -http: - api_password: [password goes here] - server_port: 8123 - ssl_certificate: /etc/letsencrypt/live/example.com/fullchain.pem - ssl_key: /etc/letsencrypt/live/example.com/privkey.pem - -ifttt: - key: [redacted] - -media_player 1: - platform: plex -#media_player 2: -# platform: squeezebox -# host: 192.168.2.80 -# port: 9000 -media_player 3: - platform: cast -media_player 4: - platform: kodi - url: http://192.168.2.129:8080/jsonrpc - user: kodi - password: kodi -media_player 5: - platform: plex -media_player 6: - platform: kodi - url: http://192.168.2.165/jsonrpc -media_player 7: - platform: samsungtv - host: 192.168.2.90 - name: Parents TV - -wink: - access_token: [redacted] - refresh_token: [redacted] - -zwave: - usb_path: /dev/ttyUSB0 - config_path: /usr/local/share/python-openzwave/config - polling_interval: 10000 - -#zigbee: -# device: /dev/ttyUSB1 -# baud: 115200 - -mqtt: - broker: 127.0.0.1 - port: 8883 - username: [redacted] - password: [redacted] - -device_tracker 1: - platform: owntracks - - track_new_devices: yes - interval_seconds: 40 - consider_home: 120 - -device_tracker 2: - platform: nmap_tracker - hosts: 192.168.2.0/24 - home_interval: 3 - -#sensor: -# platform: openweathermap -# api_key: [redacted] -# forecast: 1 -# monitored_conditions: -# - temperature -# - wind_speed -# - humidity -# - pressure -# - clouds -# - rain - -sensor 2: - platform: time_date - display_options: - - 'time' - - 'date' - - 'time_utc' - -### BEGIN METEO SENSORS ### -sensor 3: - platform: tcp - name: Outdoor Temp (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[2]}}{% endraw %}" - unit: C - -sensor 4: - platform: tcp - name: Outdoor Humidity (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[3]}}{% endraw %}" - unit: Percent - -sensor 5: - platform: tcp - name: Outdoor Dewpoint (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[4] }}{% endraw %}" - unit: C - -sensor 6: - platform: tcp - name: Wind Direction (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[7]}}{% endraw %}" - unit: Degrees - -sensor 7: - platform: tcp - name: Wind Gust (Meteohub) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[8]}}{% endraw %}" - unit: m/s - -sensor 8: - platform: tcp - name: Wind Speed (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[9]}}{% endraw %}" - unit: m/s - -sensor 9: - platform: tcp - name: Wind Chill (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[10]}}{% endraw %}" - unit: C - -sensor 10: - platform: tcp - name: Precip Rate (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[13]}}{% endraw %}" - unit: mm/hr - -sensor 11: - platform: tcp - name: Precip Total (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[14]}}{% endraw %}" - unit: mm - -sensor 12: - platform: tcp - name: Precip Change (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[15]}}{% endraw %}" - unit: mm - -sensor 13: - platform: tcp - name: Indoor Temp (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[18]}}{% endraw %}" - unit: C - -sensor 14: - platform: tcp - name: Indoor Humidity (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[19]}}{% endraw %}" - unit: percent - -sensor 15: - platform: tcp - name: Indoor Dewpoint (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[20]}}{% endraw %}" - unit: C - -sensor 16: - platform: tcp - name: Barometric Pressure (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[21]}}{% endraw %}" - unit: mb - -sensor 17: - platform: tcp - name: Sea Level Pressure (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[22]}}{% endraw %}" - unit: mb - -sensor 18: - platform: steam_online - api_key: [Redact] - accounts: - - 76561198012067051 - -switch: - platform: wemo -``` diff --git a/source/_cookbook/fail2ban.markdown b/source/_cookbook/fail2ban.markdown index d5c5275a1c75..a9f7e045612f 100644 --- a/source/_cookbook/fail2ban.markdown +++ b/source/_cookbook/fail2ban.markdown @@ -163,7 +163,7 @@ eg: $ sudo fail2ban-client set ha unbanip xxx.xxx.xxx.xxx ``` -Fail2ban should now be configured and running, if an IP address is banned you will recieve an email with WHOIS details about the IP address that attempted to connect, if not you will need configure Postfix or another MTA (Mail Transport Agent). +Fail2ban should now be configured and running, if an IP address is banned you will receive an email with WHOIS details about the IP address that attempted to connect, if not you will need configure Postfix or another MTA (Mail Transport Agent). If you want to read more about `fail2ban`, some links are below: diff --git a/source/_cookbook/google_maps_card.markdown b/source/_cookbook/google_maps_card.markdown index 9055e4c67267..56b3e14f6396 100644 --- a/source/_cookbook/google_maps_card.markdown +++ b/source/_cookbook/google_maps_card.markdown @@ -10,7 +10,7 @@ footer: true ha_category: User Interface --- -Using the [generic camera platform] you can present any image on the internet as a camera. Starting release 0.27 these urls can also be based on a template. This example uses this functionality to point a generic camera at the Google Maps static image API and pass in the location of a device. +Using the [generic camera platform] you can present any image on the internet as a camera. Starting release 0.27 these URLs can also be based on a template. This example uses this functionality to point a generic camera at the Google Maps static image API and pass in the location of a device. As of June 2018, Google has changed the API limits for static maps. You now need to have a Google Maps API key. Instructions for registering a key can be found [here](https://github.com/googlemaps/google-maps-services-python#api-keys). Replace `YOUR_API_KEY` with the key you registered. diff --git a/source/_cookbook/owntracks_two_mqtt_broker.markdown b/source/_cookbook/owntracks_two_mqtt_broker.markdown index c4be879045f4..bfdee80c666b 100644 --- a/source/_cookbook/owntracks_two_mqtt_broker.markdown +++ b/source/_cookbook/owntracks_two_mqtt_broker.markdown @@ -25,7 +25,7 @@ Two Docker instances for MQTT All Docker configuration files are on my NAS so the Docker containers can be destroyed without affecting my actual configuration files. -#### Docker setup for the mosquitto internal instance. No authentication for use with the MQTT bridge. +#### Docker setup for the Mosquitto internal instance. No authentication for use with the MQTT bridge. ```bash $ docker run -ti -p 1883:1883 \ @@ -56,7 +56,7 @@ persistence_file mosquitto.db try_private true address 10.0.0.20:1884 start_type automatic -sername test +username test password test notifications true topic owntracks/# in diff --git a/source/_cookbook/perform_actions_based_on_input_select.markdown b/source/_cookbook/perform_actions_based_on_input_select.markdown index 235ef58351fa..87d8e8ae02ae 100644 --- a/source/_cookbook/perform_actions_based_on_input_select.markdown +++ b/source/_cookbook/perform_actions_based_on_input_select.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Perform actions based on input select" -description: "Example playing media to chromecast based on input select element" +description: "Example playing media to Chromecast based on input select element" date: 2016-03-07 12:05 sidebar: true comments: false diff --git a/source/_docs/asterisk_mbox.markdown b/source/_docs/asterisk_mbox.markdown index 45bc4071a801..488b254584a9 100644 --- a/source/_docs/asterisk_mbox.markdown +++ b/source/_docs/asterisk_mbox.markdown @@ -14,7 +14,7 @@ Asterisk Voicemail integration allows Home Assistant to view, listen to and dele There are two components to the integration: - A server that runs on the Asterisk PBX host and communicates over an open port. -- A client which can request inormation from the server. +- A client which can request information from the server. Both parts are necessary for Asterisk voicemail integration. @@ -64,7 +64,7 @@ Before beginning make sure that you have the following: - **port** (*Optional*): The port to listen on for client requests. Defaults to 12345. - **password** (*Required*): A password shared between client and server. Use only alpha-numeric characters and spaces - **mbox\_path** (*Required*): The path to the storage location of mailbox files. This is typically `/var/spool/asterisk/voicemail/default//` - - **cache\_file** (*Required*): A fully-qualified path to a file thht can be written by the server containing transcriptions of voicemails. Example: `/var/spool/asterisk/transcription.cache` + - **cache\_file** (*Required*): A fully-qualified path to a file that can be written by the server containing transcriptions of voicemails. Example: `/var/spool/asterisk/transcription.cache` - **google\_key** (*Required*): Your 40 characters Google API key. - **cdr** (*Optional*): Where to find CDR data. Supports various SQL databases as well as a file log. Configuring the CDR will enable the `asterisk_cdr` platfom. diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index 37abf070cd6e..3f09b878487a 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -16,11 +16,11 @@ This is an advanced feature. If misconfigured, you will not be able to access Ho Besides the authentication providers, it's also possible to configure multi-factor authentication modules. These authentication modules will require the user to solve a second challenge besides just logging in. The idea is that you ask the user for something they know, their username/password, and something they have, like a time-based authentication token from their phone. -The multi-factor authentication module can be used mixed-matched with authentication providers. After the normal authentication provider validation, the login flow will ask the user for additional challenge(s) if there are multi-factor authentication modules enabled for this user. If more than one mutli-factor authentication module is enabled, the user can select one of them during the login. +The multi-factor authentication module can be used mixed-matched with authentication providers. After the normal authentication provider validation, the login flow will ask the user for additional challenge(s) if there are multi-factor authentication modules enabled for this user. If more than one multi-factor authentication module is enabled, the user can select one of them during the login. The multi-factor authentication module has to be enabled for the user before it can be used in the login process. The user can go to the profile page enable it by himself. -## {% linkable_title Configuring mutli-factor authentication modules %} +## {% linkable_title Configuring multi-factor authentication modules %}

By configuring your own instead of using the default configuration, you take full responsibility for the authentication of the system. @@ -34,13 +34,13 @@ homeassistant: - type: totp ``` -## {% linkable_title Available mutli-factor authentication modules %} +## {% linkable_title Available multi-factor authentication modules %} Below is a list of the currently available auth providers. -### {% linkable_title Time-based One-Time Password mutli-factor authentication module %} +### {% linkable_title Time-based One-Time Password multi-factor authentication module %} -[Time-based One-Time Password](https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm) is widely adopted in modern authencation system, it combines a secret key with the current timestamp using a cryptographic hash function to generate a one-time password. Whoever possessed the secret key will get same one-time password in certain time period. By verifying that password, Home Assistant knows the user have the right secrt key. +[Time-based One-Time Password](https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm) is widely adopted in modern authentication system, it combines a secret key with the current timestamp using a cryptographic hash function to generate a one-time password. Whoever possessed the secret key will get same one-time password in certain time period. By verifying that password, Home Assistant knows the user have the right secret key. When trying to set up TOTP module, a QR code will show up. The user can scan it by an authenticator app, or set it up manually using the code showed in the UI. After setup, the user needs to input a six digit number generated in the authenticator app to verify the setup is good. If the verification keeps failing, you need to check whether the clock on Home Assistant is accurate. @@ -60,16 +60,16 @@ homeassistant: - type: totp ``` -### {% linkable_title Notify mutli-factor authentication module %} +### {% linkable_title Notify multi-factor authentication module %} Notify MFA module using [notify component](https://www.home-assistant.io/components/notify/) to delivery a [HMAC-based One-Time Password](https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm) to user configured target. -User need first set up the MFA module by select one of the aviliable notify service. A 6 digit one-time password will be sent by this notify service, user need to input it to verify the setup. +User need first set up the MFA module by select one of the available notify service. A 6 digit one-time password will be sent by this notify service, user need to input it to verify the setup. -During the login process, an 6 digit one-time password will be sent again, user need to input it to verify his/her identity. If the validation failed, a new one-time password will be sent again. +During the login process, a 6 digit one-time password will be sent again, user need to input it to verify his/her identity. If the validation failed, a new one-time password will be sent again.

-Notify MFA module would not verify the one-time password deliveried success, so that if user cannot received the message due any reason, he/she may not be login again. Edit or remove `[your_config_dir]/.storage/auth_module.notify` can disable nofiy MFA module to resolve the issue. +Notify MFA module would not verify the one-time password delivery success, so that if user cannot received the message due any reason, he/she may not be login again. Edit or remove `[your_config_dir]/.storage/auth_module.notify` can disable notify MFA module to resolve the issue.

Example of configuration diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 734799268b6c..4bbf7e6d8596 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /getting-started/automation-trigger/ --- -Triggers are what starts the processing of an automation rule. It is possible to specify multiple triggers for the same rule. Once a trigger starts, Home Assistant will validate the conditions, if any, and call the action. +Triggers are what starts the processing of an automation rule. It is possible to specify multiple triggers for the same rule - when _any_ of the triggers becomes true then the automation will start. Once a trigger starts, Home Assistant will validate the conditions, if any, and call the action. ### {% linkable_title Event trigger %} diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 8de3aa169e0a..cb059e9ebd9f 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -67,15 +67,17 @@ assumed_state: type: boolean default: True device_class: - description: Sets the class of the device, changing the device state and icon that is displayed on the UI (see below). + description: Sets the class of the device, changing the device state and icon that is displayed on the UI (see below). It does not set the `unit_of_measurement`. required: false - type: boolean -initial_state: - description: Sets the initial state for automations, `on` or `off`. + type: device_class + default: None +unit_of_measurement: + description: Defines the units of measurement, if any. This will also influence the graphical presentation in the history visualisation as continuous value. Sensors with missing `unit_of_measurement` are showing as discrete values. required: false type: string -unit_of_measurement: - description: Defines the units of measurement, if any. + default: None +initial_state: + description: Sets the initial state for automations, `on` or `off`. required: false type: string {% endconfiguration %} diff --git a/source/_docs/configuration/devices.markdown b/source/_docs/configuration/devices.markdown index 43706169c3a2..6aedad89483e 100644 --- a/source/_docs/configuration/devices.markdown +++ b/source/_docs/configuration/devices.markdown @@ -33,9 +33,12 @@ sensor: name: "MQTT Sensor 2" - platform: rest resource: http://IP_ADDRESS/ENDPOINT + name: "Weather" switch: - platform: vera + - platform: tplink + host: IP_ADDRESS ``` ## {% linkable_title Style 2: List each device separately %} @@ -43,18 +46,27 @@ switch: You need to append numbers or strings to differentiate the entries, as in the example below. The appended number or string must be unique. ```yaml -media_player livingroom: - platform: mpd - server: IP_ADDRESS - -media_player kitchen: - platform: plex - -camera 1: - platform: generic - -camera 2: - platform: mjpeg +sensor bedroom: + platform: mqtt + state_topic: "home/bedroom/temperature" + name: "MQTT Sensor 1" + +sensor kitchen: + platform: mqtt + state_topic: "home/kitchen/temperature" + name: "MQTT Sensor 2" + +sensor weather: + platform: rest + resource: http://IP_ADDRESS/ENDPOINT + name: "Weather" + +switch 1: + platform: vera + +switch 2: + platform: tplink + host: IP_ADDRESS ``` ## {% linkable_title Grouping devices %} @@ -74,4 +86,3 @@ group: ``` For more details please check the [Group](/components/group/) page. - diff --git a/source/_docs/configuration/events.markdown b/source/_docs/configuration/events.markdown index ff0bcd35140e..86494fc7b28f 100644 --- a/source/_docs/configuration/events.markdown +++ b/source/_docs/configuration/events.markdown @@ -15,7 +15,7 @@ The core of Home Assistant is the event bus. The event bus allows any component Home Assistant contains a few built-in events that are used to coordinate between various components. ### {% linkable_title Event `homeassistant_start` %} -Event `homeassistant_start` is fired when all components from the configuration have been intitialized. This is the event that will start the timer firing off `time_changed` events. +Event `homeassistant_start` is fired when all components from the configuration have been initialized. This is the event that will start the timer firing off `time_changed` events.

Starting 0.42, it is no longer possible to listen for event `homeassistant_start`. Use the 'homeassistant' [platform](/docs/automation/trigger) instead. diff --git a/source/_docs/configuration/group_visibility.markdown b/source/_docs/configuration/group_visibility.markdown index c5458e4bf2b0..cab429ce404f 100644 --- a/source/_docs/configuration/group_visibility.markdown +++ b/source/_docs/configuration/group_visibility.markdown @@ -95,7 +95,7 @@ if __name__ == '__main__': print(get_current_occasion(OCCASIONS)) ``` -This script will output "work_morning" from 06:00-07:10 during weekdays (monday-friday), "weekday" during all other time from monday-friday and "weekend" on saturdays and sundays. Adjust according to your needs. To create the sensor, just add it like this: +This script will output "work_morning" from 06:00-07:10 during weekdays (Monday-Friday), "weekday" during all other time from Monday-Friday and "weekend" on Saturdays and Sundays. Adjust according to your needs. To create the sensor, just add it like this: ```yaml sensor: diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index 9bcd0e2822c8..5cb76f6b4f2b 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -89,3 +89,12 @@ homeassistant: This uses the concept splitting the configuration and will include all files in a directory with the keys representing the filenames. See the documentation about [splitting the configuration](/docs/configuration/splitting_configuration/) for more information about `!include_dir_named` and other include statements that might be helpful. + +### {% linkable_title Customizing entities with packages %} + +It is possible to [customize entities](docs/configuration/customizing-devices/) within packages. Just create your customization entries under: + +```yaml +homeassistant: + customize: +``` diff --git a/source/_docs/configuration/securing.markdown b/source/_docs/configuration/securing.markdown index 664acbe217b7..85117013ff53 100644 --- a/source/_docs/configuration/securing.markdown +++ b/source/_docs/configuration/securing.markdown @@ -12,24 +12,47 @@ redirect_from: /getting-started/securing/ One major advantage of Home Assistant is that it's not dependent on cloud services. Even if you're only using Home Assistant on a local network, you should take steps to secure your instance. -### {% linkable_title Checklist %} +## {% linkable_title Checklist %} -- [Choose a strong password](/docs/authentication/). -- Secure your host. Sources could be [Red Hat Enterprise Linux 7 Security Guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Security_Guide/Red_Hat_Enterprise_Linux-7-Security_Guide-en-US.pdf), [CIS Red Hat Enterprise Linux 7 Benchmark](https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v1.0.0.pdf), or the [Securing Debian Manual](https://www.debian.org/doc/manuals/securing-debian-howto/index.en.html). -- Restrict network access to your devices. Set `PermitRootLogin no` in your sshd config (usually `/etc/ssh/sshd_config`) and to use SSH keys for authentication instead of passwords. -- Don't run Home Assistant as root – consider the Principle of Least Privilege. -- Keep your [secrets](/topics/secrets/) safe. +Here's the summary of what you *must* do to secure your Home Assistant system: -If you want to allow remote access, consider these additional points: +☐ Configure [secrets](/topics/secrets/) (but do remember to back them up) +☐ Regularly keep the system up to date -- Protect your communication with [TLS/SSL](/docs/ecosystem/certificates/lets_encrypt/). -- Enable IP Filtering and configure a low [Login Attempts Threshold](/components/http/) -- Protect your communication with [Tor](/cookbook/tor_configuration/). -- Protect your communication with a [self-signed certificate](/cookbook/tls_self_signed_certificate/). -- Use a [proxy](/cookbook/apache_configuration/). -- Set up a VPN -- Use a [SSH tunnel](/blog/2017/11/02/secure-shell-tunnel/) to connect to your frontend. +If you only want to use components supported by [Home Assistant cloud](/cloud/) then you don't need to enable remote access. This is obviously the most secure option, but does mean that you're relying on a cloud service for that functionality. + +☐ For remote access to the UI, use a [VPN](http://www.pivpn.io/), [Tor](/docs/ecosystem/tor/), or an [SSH tunnel](/blog/2017/11/02/secure-shell-tunnel/) +☐ For remote access for components, use a [TLS/SSL](/docs/ecosystem/certificates/lets_encrypt/) certificate + +### {% linkable_title You should %} + +As well as the above we advise that you consider the following to improve security: + +- For systems that use SSH set `PermitRootLogin no` in your sshd config (usually `/etc/ssh/sshd_config`) and to use SSH keys for authentication instead of passwords. This is particularly important if you enable remote access to your SSH services. +- Lock down the host following good practice guidance, for example: + * [Securing Debian Manual](https://www.debian.org/doc/manuals/securing-debian-howto/index.en.html) (this also applies to Raspbian) + * [Red Hat Enterprise Linux 7 Security Guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Security_Guide/Red_Hat_Enterprise_Linux-7-Security_Guide-en-US.pdf), [CIS Red Hat Enterprise Linux 7 Benchmark](https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v1.0.0.pdf)

- If you've forwarded any ports to your Home Assistant system from the Internet then it *will* be found by others. Whether through services like Shodan, or direct port scanning, all systems on the Internet are routinely probed for accessible services. If you fail to set a password then it is simply a matter of time before somebody finds your system - potentially as little as a few hours. + If you've forwarded *any* ports to your Home Assistant system from the Internet, then it *will* be found by others. Whether through services like Shodan, or direct port scanning, all systems on the Internet are routinely probed for accessible services. If you fail to set a password then it is simply a matter of time before somebody finds your system and starts abusing it - potentially as little as a few hours.

+ +### {% linkable_title Remote access for just the UI %} + +If you only want remote access for access to the web UI then we advise that you follow the **All installs** section, then set up one of: + +- A VPN such as [PiVPN](http://www.pivpn.io/) or [ZeroTier](https://www.zerotier.com/), which will give you access to your whole home network +- [Tor](/docs/ecosystem/tor/), which also avoids the need for port forwarding +- An [SSH tunnel](/blog/2017/11/02/secure-shell-tunnel/) to connect to your frontend + +### {% linkable_title Remote access for components %} + +For remote access for a component, for example, a device tracker, you have to enable access to the API by: + +1. Following the steps in **All installs**, then +2. Forwarding a port and protect your communication with one of: + * A [TLS/SSL](/docs/ecosystem/certificates/lets_encrypt/) certificate (you can use one from Let's Encrypt, or any commercial SSL certificate vendor) + * A [self-signed certificate](/cookbook/tls_self_signed_certificate/) - be warned though, some services will refuse to work with self-signed certificates +3. Optionally use a proxy like [NGINX](/docs/ecosystem/nginx/), [Apache](/cookbook/apache_configuration/), or another. These allow you to provide finer-grained access. You could use this to limit access to specific parts of the API (for example, only `/api/owntracks/`) +4. Enable IP Filtering and configure a low [Login Attempts Threshold](/components/http/) +5. If you use a proxy then install [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to [monitor your proxy logs](https://www.home-assistant.io/cookbook/fail2ban/) (or Home Assistant logs) for failed authentication diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index ec0d021ea530..47e530379288 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -89,7 +89,7 @@ switch: !include switches.yaml device_tracker: !include device_tracker.yaml ``` -Note that there can only be one `!include:` for each component so chaining them isn't going to work. If that sounds like greek, don't worry about it. +Note that there can only be one `!include:` for each component so chaining them isn't going to work. If that sounds like Greek, don't worry about it. Alright, so we've got the single components and the include statements in the base file, what goes in those extra files? diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index 68503dab96ae..c4546d40ebba 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -26,7 +26,7 @@ notify: - A **component** provides the core logic for some functionality (like `notify` provides sending notifications). - A **platform** makes the connection to a specific software or hardware platform (like `pushbullet` works with the service from pushbullet.com). -The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. This is somewhat similar to a Hashtable or more specifically a dictionary in Python. These can be nested as well. +The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. This is somewhat similar to a Hash table or more specifically a dictionary in Python. These can be nested as well. Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown index be4a60c0245b..4464e6997171 100755 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ b/source/_docs/ecosystem/appdaemon/api.markdown @@ -502,7 +502,7 @@ If duration is supplied as a parameter, the callback will not fire unless the st ``` -(Scheduler callbacks are documented in detail laer in this document) +(Scheduler callbacks are documented in detail later in this document) ##### {% linkable_title \*\*kwargs %} @@ -937,14 +937,14 @@ The handle returned when the scheduler call was made. time, interval, kwargs = self.info_timer(handle) ``` -### {% linkable_title Scheduler Ransomization %} +### {% linkable_title Scheduler Randomization %} All of the scheduler calls above support 2 additional optional arguments, `random_start` and `random_end`. Using these arguments it is possible to randomize the firing of callbacks to the degree desired by setting the appropriate number of seconds with the parameters. - `random_start` - start of range of the random time - `random_end` - end of range of the random time -`random_start` must always be numerically lower than `random_end`, they can be negative to denote a random offset before and event, or positive to denote a random offset after an event. The event would be an absolute or relative time or sunrise/sunset depending on which scheduler call you use and these values affect the base time by the spcified amount. If not specified, they will default to `0`. +`random_start` must always be numerically lower than `random_end`, they can be negative to denote a random offset before and event, or positive to denote a random offset after an event. The event would be an absolute or relative time or sunrise/sunset depending on which scheduler call you use and these values affect the base time by the specified amount. If not specified, they will default to `0`. For example: @@ -1164,7 +1164,7 @@ self.call_service("notify/notify", title = "Hello", message = "Hello World") ``` ### {% linkable_title turn_on() %} -This is a convenience function for the `homassistant.turn_on` function. It is able to turn on pretty much anything in Home Assistant that can be turned on or run: +This is a convenience function for the `homeassistant.turn_on` function. It is able to turn on pretty much anything in Home Assistant that can be turned on or run: - Lights - Switches @@ -1197,13 +1197,13 @@ A comma separated list of key value pairs to allow specification of parameters o ```python self.turn_on("switch.patio_lights") -self.turn_on("scene.bedrrom_on") +self.turn_on("scene.bedroom_on") self.turn_on("light.office_1", color_name = "green") ``` ### {% linkable_title turn_off() %} -This is a convenience function for the `homassistant.turn_off` function. Like `homeassistant.turn_on`, it is able to turn off pretty much anything in Home Assistant that can be turned off. +This is a convenience function for the `homeassistant.turn_off` function. Like `homeassistant.turn_on`, it is able to turn off pretty much anything in Home Assistant that can be turned off. #### {% linkable_title Synopsis %} @@ -1230,7 +1230,7 @@ self.turn_off("light.office_1") ### {% linkable_title toggle() %} -This is a convenience function for the `homassistant.toggle` function. It is able to flip the state of pretty much anything in Home Assistant that can be turned on or off. +This is a convenience function for the `homeassistant.toggle` function. It is able to flip the state of pretty much anything in Home Assistant that can be turned on or off. #### {% linkable_title Synopsis %} @@ -1850,7 +1850,7 @@ if self.now_is_between("sunset - 00:45:00", "sunrise + 00:45:00"): ### {% linkable_title friendly_name() %} -`frindly_name()` will return the Friendly Name of an entity if it has one. +`friendly_name()` will return the Friendly Name of an entity if it has one. #### {% linkable_title Synopsis %} @@ -2096,7 +2096,7 @@ $ appdaemon -e "2016-06-06 10:10:00" ... ``` -The `-e` flag is most useful when used in conjuntion with the -s flag and optionally the `-t` flag. For example, to run from just before sunset, for an hour, as fast as possible: +The `-e` flag is most useful when used in conjunction with the -s flag and optionally the `-t` flag. For example, to run from just before sunset, for an hour, as fast as possible: ```bash $ appdaemon -s "2016-06-06 19:16:00" -s "2016-06-06 20:16:00" -t 0 diff --git a/source/_docs/ecosystem/appdaemon/running.markdown b/source/_docs/ecosystem/appdaemon/running.markdown index d4006526d6f6..feda9c4ee8af 100755 --- a/source/_docs/ecosystem/appdaemon/running.markdown +++ b/source/_docs/ecosystem/appdaemon/running.markdown @@ -26,7 +26,7 @@ In the example above you would use: $ docker run -d -v /Users/foo/ha-config:/conf --name appdaemon appdaemon:latest ``` -Where you place the `conf` and `conf/apps` directory is up to you - it can be in downloaded repostory, or anywhere else on the host, as long as you use the correct mapping in the `docker run` command. +Where you place the `conf` and `conf/apps` directory is up to you - it can be in downloaded repository, or anywhere else on the host, as long as you use the correct mapping in the `docker run` command. You can inspect the logs as follows: diff --git a/source/_docs/ecosystem/appdaemon/tutorial.markdown b/source/_docs/ecosystem/appdaemon/tutorial.markdown index 28f325dfa082..14c01f397cb2 100755 --- a/source/_docs/ecosystem/appdaemon/tutorial.markdown +++ b/source/_docs/ecosystem/appdaemon/tutorial.markdown @@ -12,7 +12,7 @@ redirect_from: /ecosystem/appdaemon/tutorial/ ## {% linkable_title Another Take on Automation %} -If you haven't yet read Paulus' excellent Blog entry on [Perfect Home Automation](/blog/2016/01/19/perfect-home-automation/) I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the "Automation" in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation in bring this all together in the vast and chaotic ecosystem that is the "Internet of Things". +If you haven't yet read Paulus' excellent Blog entry on [Perfect Home Automation](/blog/2016/01/19/perfect-home-automation/) I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a light switch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the "Automation" in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation in bring this all together in the vast and chaotic ecosystem that is the "Internet of Things". So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks: @@ -82,7 +82,7 @@ This is also fairly easy to achieve with Home Assistant automations, but we are ### Motion Light -Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changesd where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callack function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: +Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changesd where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callback function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: ```python import appdaemon.appapi as appapi @@ -132,9 +132,9 @@ class MotionLights(appapi.AppDaemon): Of course if I wanted to make this App or its predecessor reusable I would have provide parameters for the sensor, the light to activate on motion, the warning light and even the number of flashes and delay between flashes. -In addition, Apps can write to `AppDaemon`'s logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple. +In addition, Apps can write to `AppDaemon`'s logfiles, and there is a system of constraints that allows you to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple. -I have spent the last few weeks moving all of my (fairly complex) automations over to `APPDaemon` and so far it is working very reliably. +I have spent the last few weeks moving all of my (fairly complex) automations over to `AppDaemon` and so far it is working very reliably. Some people will maybe look at all of this and say "what use is this, I can already do all of this", and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations. diff --git a/source/_docs/ecosystem/appdaemon/updating.markdown b/source/_docs/ecosystem/appdaemon/updating.markdown index 132b4dc5d2ef..af29d8b578ce 100644 --- a/source/_docs/ecosystem/appdaemon/updating.markdown +++ b/source/_docs/ecosystem/appdaemon/updating.markdown @@ -16,4 +16,4 @@ To update AppDaemon after I have released new code, just run the following comma $ sudo pip3 install --upgrade appdaemon ``` -If you are using docker, rerun the steps to grab the latestdocker image. +If you are using docker, rerun the steps to grab the latest docker image. diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index d43a111f89ba..cf526c7b5028 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -35,7 +35,7 @@ Some best practices to consider before putting your configuration on GitHub: ### {% linkable_title Step 1: Installing and Initializing Git %} -In order to put your configuration on GitHub, you must install the Git package on your Home Assistant server (instructions below will work on Raspberry Pi, Ubunutu or any Debian-based system) *Note: this isn't required in Hass.io, it's included as default so proceed to step 2*: +In order to put your configuration on GitHub, you must install the Git package on your Home Assistant server (instructions below will work on Raspberry Pi, Ubuntu or any Debian-based system) *Note: this isn't required in Hass.io, it's included as default so proceed to step 2*: ```bash $ sudo apt-get update @@ -140,7 +140,7 @@ Every time you run this script, you will be prompted for a comment to describe t [Travis CI](https://travis-ci.org) is a continuous integration testing system that runs every time the code in your repository is updated and allows you to validate that your code works on a fresh install. - [Authorize Travis CI](https://travis-ci.org/auth) to have access to your GitHub repositories. -- Create the build script that travis will run to test your repository. +- Create the build script that Travis will run to test your repository. - Create a dummy `secrets.yaml` for Travis. Example .travis.yml diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index 0b62214a9237..bcbecfacccec 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -27,7 +27,7 @@ This guide was added by mf_social on 16/03/2017 and was valid at the time of wri * You have a basic understanding of the phrases I have used so far. * You are not currently running anything on port 80 on your network (you'd know if you were). * If you are not using Home Assistant on a Debian/Raspian/Hassbian system you will be able to convert any of the terminology I use in to the correct syntax for your system. - * You understand that this is a 'guide' covering the general application of these things to the general masses and there are things outside of the scope of it, and it does not cover every eventuality (although I have made some notes where people may stumble). Also, I have used some turns of phrase to make it easier to understand for the novice reader which people of advanced knowledge may say is innacurate. My goal here is to get you through this guide with a satisfactory outcome and have a decent understanding of what you are doing and why, not to teach you advanced internet communication protocols. + * You understand that this is a 'guide' covering the general application of these things to the general masses and there are things outside of the scope of it, and it does not cover every eventuality (although I have made some notes where people may stumble). Also, I have used some turns of phrase to make it easier to understand for the novice reader which people of advanced knowledge may say is inaccurate. My goal here is to get you through this guide with a satisfactory outcome and have a decent understanding of what you are doing and why, not to teach you advanced internet communication protocols. * Each step presumes you have fully completed the previous step successfully, so if you did an earlier step following a different guide, please ensure that you have not missed anything out that may affect the step you have jumped to, and ensure that you adapt any commands to take in to account different file placements from other guides. Steps we will take: @@ -113,7 +113,7 @@ static routers=192.168.0.1 <---- Your router's IP address static domain_name_servers=192.168.0.1 <---- Your router's IP address ``` -It is important to note that the first three bytes of your static IP address and your router's IP address should be the same, eg: +It is important to note that the first three bytes of your static IP address and your router's IP address should be the same, e.g.: ```text Router: 192.168.0.1 @@ -179,9 +179,9 @@ http://203.0.113.12:8123 Can you see your Home Assistant instance? If not, your router may not support 'loopback' - try the next step anyway and if that works, and this one still doesn't, just remember that you cannot use loopback, so will have to use internal addresses when you're on your home network. More on this later on if it's relevant to you. -Just to verify this isn't some kind of witchcraft that is actually using your internal network, pick up your phone, disconnect it from your wifi so that you are on your mobile data and not connected to the home network, put the same URL in the browser on your phone. +Just to verify this isn't some kind of witchcraft that is actually using your internal network, pick up your phone, disconnect it from your WiFi so that you are on your mobile data and not connected to the home network, put the same URL in the browser on your phone. -Can you see it now, from a device that is definitely not connected to your local network? Excellent! You now have a remotely accesible Home Assistant instance. +Can you see it now, from a device that is definitely not connected to your local network? Excellent! You now have a remotely accessible Home Assistant instance. But what if your external IP changes? Plus, remembering all those numbers is pretty hard, isn't it? Read on to get yourself set up with a word-based URL at DuckDNS that will track any changes to your IP address so you don't have to stress anymore. @@ -222,7 +222,7 @@ What now happens behind the scenes is this: Did it work? Super! -You now have a remotely accesible Home Assistant instance that has a text-based URL and will not drop out if your service provider changes your IP. But, it is only as secure as the password you set, which can be snooped during your session by a malicious hacker with relative ease. So we need to set up some encryption with TLS/SSL, read on to find out how. +You now have a remotely accessible Home Assistant instance that has a text-based URL and will not drop out if your service provider changes your IP. But, it is only as secure as the password you set, which can be snooped during your session by a malicious hacker with relative ease. So we need to set up some encryption with TLS/SSL, read on to find out how. ### {% linkable_title 4 - Obtain a TLS/SSL certificate from Let's Encrypt %} diff --git a/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown b/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown index 91198ddd4f76..d6cec084712a 100644 --- a/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown @@ -12,7 +12,7 @@ redirect_from: /cookbook/tls_domain_certificate/ If your Home Assistant instance is only accessible from your local network you can still protect the communication between your browsers and the frontend with SSL/TLS. You can use [Self-sign certificate](/cookbook/tls_self_signed_certificate/) but your browser will present a warning and some https-only features might not work. -### {% linkable_title Prerequirement for this guide %} +### {% linkable_title Requirement for this guide %} * Your Home Assistant instance is not exposed to the internet. If it is - use [this guide]({{site_root}}/blog/2015/12/13/setup-encryption-using-lets-encrypt/) * You control a public domain name. The domain doesn't have to point to a site. A domain controlled by a *trusted* friend will do. (A friend you trust not to MITM you) @@ -45,7 +45,7 @@ Once this is deployed, Press Enter to Continue ``` -* Deploy the value to TXT field using your domain registar. +* Deploy the value to TXT field using your domain registrar. * Go to a site that queries domain record. For example [this one](https://mxtoolbox.com/TXTLookup.aspx) and look if it sees your brand new TXT field (Don't forget to enter the full domain: `_acme-challenge.mydomain.com`) * Press Enter at certbot prompt. diff --git a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown index 2aab9deb6d98..c4f7c536741b 100644 --- a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown @@ -20,7 +20,7 @@ Change to your Home Assistant [configuration directory](/getting-started/configu The certificate **must** be `.pem` extension. -If you are going to use this certificate with the iOS app, you need to ensure you complete **all** fields during the cetificate creation process, then: +If you are going to use this certificate with the iOS app, you need to ensure you complete **all** fields during the certificate creation process, then: * Send **only** the `certificate.pem` file to the iOS device, using airdrop or other transfer method. * Open the `.pem` file on the iOS device, follow the prompts to trust and install it. @@ -38,7 +38,6 @@ Update the `http:` entry in your `configuration.yaml` file and let it point to y ```yaml http: - api_password: YOUR_SECRET_PASSWORD ssl_certificate: /home/your_user/.homeassistant/certificate.pem ssl_key: /home/your_user/.homeassistant/privkey.pem ``` diff --git a/source/_docs/ecosystem/scenegen.markdown b/source/_docs/ecosystem/scenegen.markdown index 37d2534b086a..0463a834242f 100644 --- a/source/_docs/ecosystem/scenegen.markdown +++ b/source/_docs/ecosystem/scenegen.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /ecosystem/scenegen/ --- -Scenegen is a scene generation tool for [Home Assistant](/) home automation software. It creates scenes by example, by reading the current states of devices and outputting a corresponding scene. Scenegen is written in python using Home Assistant's RESTFul API so can be run from anywhere. It currently supports lights and switches only. +Scenegen is a scene generation tool for [Home Assistant](/) home automation software. It creates scenes by example, by reading the current states of devices and outputting a corresponding scene. Scenegen is written in python using Home Assistant's RESTful API so can be run from anywhere. It currently supports lights and switches only. ## {% linkable_title Installation %} @@ -86,7 +86,7 @@ entities: brightness: 28 ``` -This output can be cut and pasted into your configuration.yaml file as required (ensuring correct indentatation of course). +This output can be cut and pasted into your configuration.yaml file as required (ensuring correct indentation of course). Scenegen supports all documented effects for lights including transitions and flash effects, however generally it is easier to run scenegen to get the basic setup and add any effects manually later. diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown index 0003e531ec28..520f77135c4f 100644 --- a/source/_docs/frontend/browsers.markdown +++ b/source/_docs/frontend/browsers.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /getting-started/browsers/ --- -Home Assistant requires a web browser to show the frontend and supports all major modern browsers. We don't test the web interface against all available browsers but this page tracks different browsers on various operating systems and should help you to pick a browser which works. The "Release" column contains the release number which were tested. This doen't mean that older or newer releases not work. +Home Assistant requires a web browser to show the frontend and supports all major modern browsers. We don't test the web interface against all available browsers but this page tracks different browsers on various operating systems and should help you to pick a browser which works. The "Release" column contains the release number which were tested. This doesn't mean that older or newer releases not work. If a browser is listed as working but you are still having problems, it is possible that some add-on or extension may be the problem. Some add-ons or extension are known to cause issue with the frontend, but it's not possible to test them all. If you are having issues with the frontend displaying correctly, you should disable all your add-ons or extensions and enable them one at a time. diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index e5e8cb6026a6..0d1af7257e1a 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -20,6 +20,8 @@ Home Assistant provides multiple ways to be installed. A requirement is that you Please remember to [secure your installation](/docs/configuration/securing/) once you've finished with the installation process.

+## {% linkable_title Recommended options %} +
@@ -27,29 +29,36 @@ Home Assistant provides multiple ways to be installed. A requirement is that you
Hass.io
(Beginner friendly)
- +
- +
-
On top of an existing Python 3.5+ installation
+
Hassbian (for the Raspberry Pi)
- +
- +
-
Hassbian
+
Docker
+
+ +## {% linkable_title Alternative installs %} + +The following installs are only recommended for experienced users of those platforms. + +
-
Raspbian
+
Raspbian (but applies to any Debian based Linux)
- +
- +
-
ArchLinux
+
On top of an existing Python 3.5.3+ installation
@@ -57,6 +66,12 @@ Home Assistant provides multiple ways to be installed. A requirement is that you
armbian
+ +
+ +
+
ArchLinux
+
@@ -87,12 +102,6 @@ Home Assistant provides multiple ways to be installed. A requirement is that you
Synology
- -
- -
-
Docker
-
@@ -107,17 +116,18 @@ Home Assistant provides multiple ways to be installed. A requirement is that you
+## {% linkable_title After installation %} + Once Home Assistant is installed, execute the following code in a console/terminal to check if the setup was successful: ```bash $ hass ``` -The first start may take a minute or two because the needed packages will be downloaded and installed. The web interface will be served on [http://localhost:8123](http://localhost:8123). +The first start may take up to 20 minutes because the needed packages will be downloaded and installed. The web interface will be served on [http://localhost:8123](http://localhost:8123). For more details about `hass`, please refer to the [tools section](/docs/tools/hass/). If you're running a Linux-based platform, we suggest you follow the [VirtualEnv instructions](/docs/installation/virtualenv/) to avoid using `root`. You may need to install additional libraries depending on the platforms/components you want to use. - diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown index 05cf090ec008..7b248911b78a 100644 --- a/source/_docs/installation/docker.markdown +++ b/source/_docs/installation/docker.markdown @@ -53,7 +53,7 @@ As Synology within DSM now supports Docker (with a neat UI), you can simply inst The steps would be: * Install "Docker" package on your Synology NAS * Launch Docker-app and move to "Registry"-section -* Find "homeassistant/home-assistant" within registry and click on "Download". Choose the "latest" tag, this will make verison updates easier later on. +* Find "homeassistant/home-assistant" within registry and click on "Download". Choose the "latest" tag, this will make version updates easier later on. * Wait for some time until your NAS has pulled the image * Move to the "Image"-section of the Docker-app * Click on "Launch" @@ -185,7 +185,7 @@ $ docker-compose restart ### {% linkable_title Exposing Devices %} -In order to use Z-Wave, ZigBbee or other components that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your docker command: +In order to use Z-Wave, ZigBee or other components that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your docker command: ```bash $ docker run -d --name="home-assistant" -v /path/to/your/config:/config \ diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index 6679275764cf..654f3e084db9 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -46,7 +46,7 @@ Make `/etc/rc.local` executable so it runs on startup # chmod 755 /etc/rc.local ``` -Finally restart the jail from the Freenas GUI. +Finally restart the jail from the FreeNAS GUI.

USB Z-wave sticks may give `dmesg` warnings similar to "data interface 1, has no CM over data, has no break". This doesn't impact the function of the Z-wave stick in Hass. Just make sure the proper `/dev/cu*` is used in the Home Assistant `configuration.yaml` file. diff --git a/source/_docs/installation/hassbian/installation.markdown b/source/_docs/installation/hassbian/installation.markdown index bfc7d4e4d726..41af2edf384b 100644 --- a/source/_docs/installation/hassbian/installation.markdown +++ b/source/_docs/installation/hassbian/installation.markdown @@ -40,7 +40,7 @@ The following extras are included on the image: ### {% linkable_title Wireless Network %} -After flashing the image to your SD Card open the partition `boot` and create a new file `wpa_supplicant.conf`. Edit the file and enter your network credentials. For more information visit [Setting up Wifi for Raspbian][wifi-setup]. During start the file will automatically be copied in the right folder and the network connection will be established. The file could look like this: +After flashing the image to your SD Card open the partition `boot` and create a new file `wpa_supplicant.conf`. Edit the file and enter your network credentials. For more information visit [Setting up WiFi for Raspbian][wifi-setup]. During start the file will automatically be copied in the right folder and the network connection will be established. The file could look like this: ```conf country=SE @@ -55,7 +55,7 @@ network={ You may need to adjust the country code depending upon where you are. A list of codes can be found [here](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements). -If you are running in trouble with your Wifi connection (for [further details](https://www.raspberrypi.org/forums/viewtopic.php?t=207882)), check the output of the following command: +If you are running in trouble with your WiFi connection (for [further details](https://www.raspberrypi.org/forums/viewtopic.php?t=207882)), check the output of the following command: ```bash $ sudo rfkill list diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index 336ced4598e7..59f22869f169 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -12,7 +12,7 @@ redirect_from: /getting-started/installation-virtualenv/ If you already have Python 3.5.3 or later installed, you can easily give Home Assistant a spin. -It's recommended when installing Python packages that you use a [virtual environment](https://docs.python.org/3.5/library/venv.html#module-venv). This will make sure that your Python installation and Home Assistant installation won't impact one another. The following steps will work on most unix like systems. +It's recommended when installing Python packages that you use a [virtual environment](https://docs.python.org/3.5/library/venv.html#module-venv). This will make sure that your Python installation and Home Assistant installation won't impact one another. The following steps will work on most UNIX like systems. _(If you're on a Debian based system, you will need to install Python virtual environment support using `apt-get install python3-pip python3-venv`.)_ diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 9da45c0aa2b1..3bd4a98369ac 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -59,7 +59,7 @@ mqtt: ### {% linkable_title Run your own %} -Along with the embedded broker this is the most private option, but it requires a bit more work. There are multiple free and open-source brokers to pick from: eg. [Mosquitto](http://mosquitto.org/), [EMQ](http://emqtt.io/), or [Mosca](http://www.mosca.io/). +Along with the embedded broker this is the most private option, but it requires a bit more work. There are multiple free and open-source brokers to pick from: e.g., [Mosquitto](http://mosquitto.org/), [EMQ](http://emqtt.io/), or [Mosca](http://www.mosca.io/). ```yaml # Example configuration.yaml entry @@ -98,7 +98,7 @@ protocol: type: string certificate: required: false - description: Path to the certificate file, eg. `/home/user/.homeassistant/server.crt`. + description: Path to the certificate file, e.g., `/home/user/.homeassistant/server.crt`. type: string tls_insecure: required: false diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index af0f99c2c1e7..53e1fc9383d3 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -55,6 +55,118 @@ An empty payload will cause a previously discovered device to be deleted. The `` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `/+//+/set`. +A base topic `~` may be defined in the payload to conserve memory when the same topic base is used multiple times. +In the value of configuration variables ending with `_topic`, `~` will be replaced with the base topic, if the `~` occurs at the beginning or end of the value. + +Configuration variable names in the discovery payload may be abbreviated to conserve memory when sending a discovery message from memory constrained devices. + +Supported abbreviations: +``` + 'aux_cmd_t': 'aux_command_topic', + 'aux_stat_tpl': 'aux_state_template', + 'aux_stat_t': 'aux_state_topic', + 'avty_t': 'availability_topic', + 'away_mode_cmd_t': 'away_mode_command_topic', + 'away_mode_stat_tpl': 'away_mode_state_template', + 'away_mode_stat_t': 'away_mode_state_topic', + 'bri_cmd_t': 'brightness_command_topic', + 'bri_scl': 'brightness_scale', + 'bri_stat_t': 'brightness_state_topic', + 'bri_val_tpl': 'brightness_value_template', + 'clr_temp_cmd_t': 'color_temp_command_topic', + 'clr_temp_stat_t': 'color_temp_state_topic', + 'clr_temp_val_tpl': 'color_temp_value_template', + 'cmd_t': 'command_topic', + 'curr_temp_t': 'current_temperature_topic', + 'dev_cla': 'device_class', + 'fx_cmd_t': 'effect_command_topic', + 'fx_list': 'effect_list', + 'fx_stat_t': 'effect_state_topic', + 'fx_val_tpl': 'effect_value_template', + 'exp_aft': 'expire_after', + 'fan_mode_cmd_t': 'fan_mode_command_topic', + 'fan_mode_stat_tpl': 'fan_mode_state_template', + 'fan_mode_stat_t': 'fan_mode_state_topic', + 'frc_upd': 'force_update', + 'hold_cmd_t': 'hold_command_topic', + 'hold_stat_tpl': 'hold_state_template', + 'hold_stat_t': 'hold_state_topic', + 'ic': 'icon', + 'init': 'initial', + 'json_attr': 'json_attributes', + 'max_temp': 'max_temp', + 'min_temp': 'min_temp', + 'mode_cmd_t': 'mode_command_topic', + 'mode_stat_tpl': 'mode_state_template', + 'mode_stat_t': 'mode_state_topic', + 'name': 'name', + 'on_cmd_type': 'on_command_type', + 'opt': 'optimistic', + 'osc_cmd_t': 'oscillation_command_topic', + 'osc_stat_t': 'oscillation_state_topic', + 'osc_val_tpl': 'oscillation_value_template', + 'pl_arm_away': 'payload_arm_away', + 'pl_arm_home': 'payload_arm_home', + 'pl_avail': 'payload_available', + 'pl_cls': 'payload_close', + 'pl_disarm': 'payload_disarm', + 'pl_hi_spd': 'payload_high_speed', + 'pl_lock': 'payload_lock', + 'pl_lo_spd': 'payload_low_speed', + 'pl_med_spd': 'payload_medium_speed', + 'pl_not_avail': 'payload_not_available', + 'pl_off': 'payload_off', + 'pl_on': 'payload_on', + 'pl_open': 'payload_open', + 'pl_osc_off': 'payload_oscillation_off', + 'pl_osc_on': 'payload_oscillation_on', + 'pl_stop': 'payload_stop', + 'pl_unlk': 'payload_unlock', + 'pow_cmd_t': 'power_command_topic', + 'ret': 'retain', + 'rgb_cmd_tpl': 'rgb_command_template', + 'rgb_cmd_t': 'rgb_command_topic', + 'rgb_stat_t': 'rgb_state_topic', + 'rgb_val_tpl': 'rgb_value_template', + 'send_if_off': 'send_if_off', + 'set_pos_tpl': 'set_position_template', + 'set_pos_t': 'set_position_topic', + 'spd_cmd_t': 'speed_command_topic', + 'spd_stat_t': 'speed_state_topic', + 'spd_val_tpl': 'speed_value_template', + 'spds': 'speeds', + 'stat_clsd': 'state_closed', + 'stat_off': 'state_off', + 'stat_on': 'state_on', + 'stat_open': 'state_open', + 'stat_t': 'state_topic', + 'stat_val_tpl': 'state_value_template', + 'swing_mode_cmd_t': 'swing_mode_command_topic', + 'swing_mode_stat_tpl': 'swing_mode_state_template', + 'swing_mode_stat_t': 'swing_mode_state_topic', + 'temp_cmd_t': 'temperature_command_topic', + 'temp_stat_tpl': 'temperature_state_template', + 'temp_stat_t': 'temperature_state_topic', + 'tilt_clsd_val': 'tilt_closed_value', + 'tilt_cmd_t': 'tilt_command_topic', + 'tilt_inv_stat': 'tilt_invert_state', + 'tilt_max': 'tilt_max', + 'tilt_min': 'tilt_min', + 'tilt_opnd_val': 'tilt_opened_value', + 'tilt_status_opt': 'tilt_status_optimistic', + 'tilt_status_t': 'tilt_status_topic', + 't': 'topic', + 'uniq_id': 'unique_id', + 'unit_of_meas': 'unit_of_measurement', + 'val_tpl': 'value_template', + 'whit_val_cmd_t': 'white_value_command_topic', + 'whit_val_stat_t': 'white_value_state_topic', + 'whit_val_tpl': 'white_value_template', + 'xy_cmd_t': 'xy_command_topic', + 'xy_stat_t': 'xy_state_topic', + 'xy_val_tpl': 'xy_value_template', +``` + ### {% linkable_title Support by third-party tools %} The following firmware for ESP8266, ESP32 and Sonoff unit has built-in support for MQTT discovery: @@ -113,4 +225,9 @@ Setting up a sensor with multiple measurement values requires multiple consecuti - Configuration payload no2: `{"device_class": "sensor", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` - Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` +Setting up a switch using topic prefix and abbreviated configuration variable names to reduce payload length. +- Configuration topic: `homeassistant/switch/irrigation/config` +- Command topic: `homeassistant/switch/irrigation/set` +- State topic: `homeassistant/switch/irrigation/state` +- Payload: `{"~": "homeassistant/switch/irrigation", "name": "garden", "cmd_t": "~/set", , "stat_t": "~/state"}` diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown index fdb5a411a20b..e40a86276e6a 100644 --- a/source/_docs/z-wave/adding.markdown +++ b/source/_docs/z-wave/adding.markdown @@ -24,7 +24,7 @@ Don't use this for [secure devices](/docs/z-wave/adding/#adding-secure-devices), Don't use the OpenZWave control panel (OZWCP), **or the physical button on a controller**, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won't have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports.

-When you add a device, it may initially appear without a specific entity ID (eg `zwave.__`) and without other identifying information. Running a *Heal* should help speed this process up, and you'll need to run a *Heal* anyway so that all the devices in your Z-Wave network learn about the new device. You *might* need to restart Home Assistant (not reboot the system) to have the entity ID fully visible. +When you add a device, it may initially appear without a specific entity ID (e.g., `zwave.__`) and without other identifying information. Running a *Heal* should help speed this process up, and you'll need to run a *Heal* anyway so that all the devices in your Z-Wave network learn about the new device. You *might* need to restart Home Assistant (not reboot the system) to have the entity ID fully visible. ## {% linkable_title Network Key %} diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 2556722cb8d3..018857fb5bc5 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -70,7 +70,7 @@ Here is where you [include and exclude](/docs/z-wave/adding/) Z-Wave devices fro * **retries** How many retries have been made to send messages to this node * **sentCnt** How many messages have been sent to the node * **sentFailed** How many messages that were sent weren't acknowledged -* **sentTS** The date and time the last message was sent to the ndoe +* **sentTS** The date and time the last message was sent to the node * **wake_up_interval** *Battery powered devices only* - the wakeup interval of the device, in seconds

@@ -82,7 +82,7 @@ Battery powered devices need to be awake before you can use the Z-Wave control p This is a dropdown where you can select all the entities of this node. Once selected you can then use: * **Refresh Entity** to refresh just that entity's values -* **Entity Attributes** to display the attributes of that entity (eg its friendly name, the ID of the node, etc) +* **Entity Attributes** to display the attributes of that entity (e.g., its friendly name, the ID of the node, etc) Here you can mark a device as requiring polling so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/devices/#polling), since excessive polling can break your Z-Wave network. @@ -130,7 +130,7 @@ Set the new selection by pressing the **Set Protection** button. ## {% linkable_title Node user codes %} -If your node has user codes, you can set and delete them. The format is raw hex Ascii code. Below the input you will see your actual code. For normal nodes this is as follows: +If your node has user codes, you can set and delete them. The format is raw hex ASCII code. Below the input you will see your actual code. For normal nodes this is as follows: ```yaml \x30 = 0 \x31 = 1 @@ -144,7 +144,7 @@ If your node has user codes, you can set and delete them. The format is raw hex \x39 = 9 ``` Some non compliant device like tag readers, have implemented to use raw hex code. -Please refer to a hex ascii table to set your code. Example: http://www.asciitable.com/ +Please refer to a hex ASCII table to set your code. Example: http://www.asciitable.com/ Here is a small Python program than will take numbers on the command line and print the correct sequence for compliant devices: diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index 128b122649bc..8548c92f9c11 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -11,21 +11,17 @@ footer: true ## {% linkable_title Supported Z-Wave USB Sticks & Hardware Modules %} -You need to have a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) installed. - -| Device | Works on Linux | Works on Windows | Works on OSX | -|-------------------------|----------------|------------------|--------------| -| Aeotec Z-Stick | ✓ | | | -| Aeotec Z-Stick Series 2 | ✓ | | | -| Aeotec Z-Stick Series 5 | ✓ | ✓ | ✓ | -| Pine64 Z-Wave Module | ✓ | | | -| Razberry GPIO Module | ✓ | | | -| Seluxit ViaSens 100 | | | | -| Sigma Designs UZB Stick | | | | -| Tricklestar | | | | -| Vision USB Stick | | | | -| ZWave.me Razberry Board | ✓ | | | -| ZWave.me UZB1 | ✓ | | | +You need to have a compatible Z-Wave stick or module installed. This needs to be a *static controller*, which most Z-Wave sticks and modules will be. If yours is a *bridge* device then it won't work with [OpenZWave](http://openzwave.com/), which is what provides Home Assistant's Z-Wave capabilities. The following devices have been confirmed to work: + +* Aeotec Z-Stick Series 5 +* Everspring USB stick - Gen 5 +* Sigma Designs UZB stick +* Vision USB stick - Gen5 +* Zooz Z-Wave Plus S2 stick ZST10 +* ZWave.me Razberry Board +* ZWave.me UZB1 stick + +We recommend that you purchase a [Z-Wave Plus](https://z-wavealliance.org/z-wave_plus_certification/) controller, to take advantage of the improvements this provides. As OpenZWave doesn't support S2 or Smart Start, there's no need to buy one just for support of these features.

If you're using Hass.io or running HASS in a Docker container, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through. diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index de2ab1b2a16c..bb8c9c805bd8 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -73,7 +73,7 @@ crw-rw---- 1 root dialout 204, 64 Sep 2 14:38 /dev/ttyAMA0 at this point simply add your user (homeassistant) to the dialout group: ```bash -$ sudo usermod -a -G dialout homeassistant +$ sudo usermod -a -G dialout homeassistant ``` Finally, reboot again to make those changes active. It's has been tested on hassbian and has been reported that this is also required on the Pi2. diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index a734e976e513..833275cdbb78 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -104,12 +104,17 @@ device_config / device_config_domain / device_config_glob: type: integer default: 2 invert_openclose_buttons: - description: Inverts function of the open and close buttons for the cover domain. This will not invert the positon and state reporting. + description: Inverts function of the open and close buttons for the cover domain. This will not invert the position and state reporting. required: false type: boolean default: False {% endconfiguration %} +

+As of Home Assistant 0.81, the Z-Wave `usb_path` and `network_key` options are configured through the Integrations page in Home Assistant. Specifying a `zwave:` section in configuration.yaml is no longer required unless you need to customize other settings, such as `device_config`, `polling_interval`, etc. +

+ + ### {% linkable_title Finding the controller path on Linux %}

diff --git a/source/_docs/z-wave/services.markdown b/source/_docs/z-wave/services.markdown index 17cc8270ef07..905d85f7fd00 100644 --- a/source/_docs/z-wave/services.markdown +++ b/source/_docs/z-wave/services.markdown @@ -17,7 +17,7 @@ The `zwave` component exposes multiple services to help maintain the network. Al | add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows you to add a new device with secure communications to the Z-Wave network. | | cancel_command | Cancels a running Z-Wave command. If you have started an add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. | | change_association | Add or remove an association in the Z-Wave network | -| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. | +| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can re-figure out optimal routing. | | heal_node | Tells the controller to "heal" a specific node on the network. Requires `node_id` field. You can also force return route update with `return_routes` field. | print_config_parameter | Prints Z-Wave node's config parameter value to the (console) log. | | print_node | Print all states of Z-Wave node. | diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index a025b721e385..5e91cb65d80b 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -74,7 +74,7 @@ name: type: string icon: required: true - description: "Icon to display (e.g. `mdi:home`)" + description: "Icon to display (e.g., `mdi:home`)" type: string action_name: required: true @@ -103,7 +103,7 @@ name: type: string icon: required: true - description: "Icon to display (e.g. `mdi:home`)" + description: "Icon to display (e.g., `mdi:home`)" type: string url: required: true diff --git a/source/_lovelace/gauge.markdown b/source/_lovelace/gauge.markdown new file mode 100644 index 000000000000..32528d7371fd --- /dev/null +++ b/source/_lovelace/gauge.markdown @@ -0,0 +1,100 @@ +--- +layout: page +title: "Gauge Card" +sidebar_label: Gauge +description: "The Gauge card allows you to display sensor information visually" +date: 2018-10-11 10:28 +00:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Gauge card is a basic card that allows visually seeing sensor data. + +

+Screenshot of the gauge card +Screenshot of the gauge card. +

+ +```yaml +- type: gauge + entity: sensor.cpu_usuage +``` + +{% configuration %} +type: + required: true + description: gauge + type: string +entity: + required: true + description: "Entity id to show" + type: string +title: + required: false + description: Title of Gauge Data + type: string +unit_of_measurement: + required: false + description: Unit of Measurement given to data + type: string + default: "Unit Of Measurement given by entity" +min: + required: false + description: Minimum value for graph + type: integer + default: 0 +max: + required: false + description: Maximum value for graph + type: integer + default: 100 +severity: + required: false + description: Allows setting of colors for different numbers + type: map + keys: + green: + required: true + description: Value from which to start green color + type: integer + yellow: + required: true + description: Value from which to start yellow color + type: integer + red: + required: true + description: Value from which to start red color + type: integer +{% endconfiguration %} + +## {% linkable_title Examples %} + +Title and Unit of Measurement Example: + +```yaml +- type: gauge + title: CPU Usuage + unit_of_measurement: '%' + entity: sensor.cpu_usuage +``` + +

+Screenshot of the gauge card with custom title and unit of measurement +Screenshot of the gauge card with custom title and unit of measurement. +

+ +Define the severity map: + +```yaml +- type: gauge + title: With Severity + title: CPU Usuage + unit_of_measurement: '%' + entity: sensor.cpu_usuage + severity: + green: 0 + yellow: 45 + red: 85 +``` diff --git a/source/_lovelace/glance.markdown b/source/_lovelace/glance.markdown index 50263b5a2bf2..9dda1cd3eac6 100644 --- a/source/_lovelace/glance.markdown +++ b/source/_lovelace/glance.markdown @@ -75,7 +75,7 @@ tap_action: default: more-info service: required: false - description: "For `call-service`, e.g. `media_player.media_play_pause`" + description: "For `call-service`, e.g., `media_player.media_play_pause`" type: string service_data: required: false diff --git a/source/_lovelace/guage.markdown b/source/_lovelace/guage.markdown new file mode 100644 index 000000000000..32528d7371fd --- /dev/null +++ b/source/_lovelace/guage.markdown @@ -0,0 +1,100 @@ +--- +layout: page +title: "Gauge Card" +sidebar_label: Gauge +description: "The Gauge card allows you to display sensor information visually" +date: 2018-10-11 10:28 +00:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Gauge card is a basic card that allows visually seeing sensor data. + +

+Screenshot of the gauge card +Screenshot of the gauge card. +

+ +```yaml +- type: gauge + entity: sensor.cpu_usuage +``` + +{% configuration %} +type: + required: true + description: gauge + type: string +entity: + required: true + description: "Entity id to show" + type: string +title: + required: false + description: Title of Gauge Data + type: string +unit_of_measurement: + required: false + description: Unit of Measurement given to data + type: string + default: "Unit Of Measurement given by entity" +min: + required: false + description: Minimum value for graph + type: integer + default: 0 +max: + required: false + description: Maximum value for graph + type: integer + default: 100 +severity: + required: false + description: Allows setting of colors for different numbers + type: map + keys: + green: + required: true + description: Value from which to start green color + type: integer + yellow: + required: true + description: Value from which to start yellow color + type: integer + red: + required: true + description: Value from which to start red color + type: integer +{% endconfiguration %} + +## {% linkable_title Examples %} + +Title and Unit of Measurement Example: + +```yaml +- type: gauge + title: CPU Usuage + unit_of_measurement: '%' + entity: sensor.cpu_usuage +``` + +

+Screenshot of the gauge card with custom title and unit of measurement +Screenshot of the gauge card with custom title and unit of measurement. +

+ +Define the severity map: + +```yaml +- type: gauge + title: With Severity + title: CPU Usuage + unit_of_measurement: '%' + entity: sensor.cpu_usuage + severity: + green: 0 + yellow: 45 + red: 85 +``` diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown index e9da937b1427..8dd83c9c0057 100644 --- a/source/_lovelace/picture-elements.markdown +++ b/source/_lovelace/picture-elements.markdown @@ -76,11 +76,11 @@ tap_action: default: more-info navigation_path: required: false - description: Url path to navigate to (e.g. `/lovelace/1`) + description: Url path to navigate to (e.g., `/lovelace/1`) type: string service: required: false - description: "Service to call (e.g. `light.turn_on`)" + description: "Service to call (e.g., `light.turn_on`)" type: string service_data: required: false @@ -119,11 +119,11 @@ tap_action: default: more-info navigation_path: required: false - description: Url path to navigate to (e.g. `/lovelace/1`) + description: Url path to navigate to (e.g., `/lovelace/1`) type: string service: required: false - description: "Service to call (e.g. `light.turn_on`)" + description: "Service to call (e.g., `light.turn_on`)" type: string service_data: required: false @@ -171,7 +171,7 @@ type: type: string icon: required: true - description: Icon to display (e.g. `mdi:home`) + description: Icon to display (e.g., `mdi:home`) type: string title: required: false @@ -188,11 +188,11 @@ tap_action: default: more-info navigation_path: required: false - description: Url path to navigate to (e.g. `/lovelace/1`) + description: Url path to navigate to (e.g., `/lovelace/1`) type: string service: required: false - description: "Service to call (e.g. `light.turn_on`)" + description: "Service to call (e.g., `light.turn_on`)" type: string service_data: required: false @@ -223,11 +223,11 @@ tap_action: default: more-info navigation_path: required: false - description: Url path to navigate to (e.g. `/lovelace/1`) + description: Url path to navigate to (e.g., `/lovelace/1`) type: string service: required: false - description: "Service to call (e.g. `light.turn_on`)" + description: "Service to call (e.g., `light.turn_on`)" type: string service_data: required: false @@ -265,7 +265,7 @@ style: {% configuration %} type: required: true - description: 'Card name with `custom:` prefix (e.g. `custom:my-custom-card`)' + description: 'Card name with `custom:` prefix (e.g., `custom:my-custom-card`)' type: string style: required: true diff --git a/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown b/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown index 37178a2d6698..131273eb98c8 100644 --- a/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown +++ b/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown @@ -90,7 +90,7 @@ device_tracker: password: YOUR_ADMIN_PASSWORD ``` -__DHT temperature and humidty sensors__ +__DHT temperature and humidity sensors__ [@MakeMeASandwich](https://github.com/makemeasandwich) has contributed support for DHT temperature and humidity sensors. It allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device. ```yaml diff --git a/source/_posts/2018-10-12-release-80.markdown b/source/_posts/2018-10-12-release-80.markdown new file mode 100644 index 000000000000..36537324d3e3 --- /dev/null +++ b/source/_posts/2018-10-12-release-80.markdown @@ -0,0 +1,668 @@ +--- +layout: post +title: "0.80: Lovelace updates, webhooks, TRÅDFRI switches" +description: "Hacktoberfest is in full swing and we got a whole boat of new features." +date: 2018-10-12 00:01:00 +date_formatted: "October 12, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-10-release-80/lovelace-glance-sensor.png +--- + +October 12, 2018. 12 days into Hacktoberfest and it's been busier than ever on the repositories. On the main repo, 43 open, 104 closed. How the documentation team is still alive, I don't know: 26 open, 234 closed. If you've opened a contribution that is pending a response, that's probably because we're busy elsewhere or are taking some well deserved rest. + +Alright, new release, we got some cool stuff! Let's start with our [Lovelace UI](/lovelace). We have integrated into Lovelace UI some of the custom cards that our amazing community have built, making them easily accessible to all users. The cards are [Gauge][ll-gauge] and [Sensor][ll-sensor]: + +[ll-gauge]: /lovelace/gauge/ +[ll-sensor]: /lovelace/sensor/ + +Screenshot of new Gauge and Sensor cards + +Next up is a new way to get data into Home Assistant: webhooks. With the introduction of auth and with the introduction of long-lived access tokens, we realized that it's still annoying to have to give full HA access to an app just to get a piece of information in Home Assistant. So with webhooks we can generate unique URLs that are inprobable to guess, and data delivered to the webhook will only go to the designated automation or component. This feature is available for component developers to integrate, or for users via the new automation [webhook trigger](/docs/automation/trigger/#webhook-trigger). + +

+Screenshot of configuring IFTTT +Configuring IFTTT via th integrations panel. +

+ +On the devices side, we got basic support for the new IKEA TRÅDFRI switches, Honeywell evohome controllers (EU-based) and if you want to control your pool, you can now do that with the new AquaLogic integration. + +## {% linkable_title New Platforms %} + +- GitLab-CI sensor integration addition. ([@DanielWinks] - [#16561]) ([sensor.gitlab_ci docs]) (new-platform) +- Add support for Opple light ([@jedmeng] - [#16765]) ([light.opple docs]) (new-platform) +- Add (EU-based) Honeywell evohome CH/DHW controller ([@zxdavb] - [#16427]) ([evohome docs]) ([climate.evohome docs]) ([climate.honeywell docs]) (new-platform) +- Add webhook + IFTTT example ([@balloob] - [#16817]) ([ifttt docs]) ([webhook docs]) (new-platform) +- Add basic support for Tradfri switches ([@ggravlingen] - [#17007]) ([tradfri docs]) ([switch.tradfri docs]) (new-platform) +- Add AquaLogic component ([@swilson] - [#16763]) ([aqualogic docs]) ([sensor.aqualogic docs]) ([switch.aqualogic docs]) (new-platform) +- Overhaul of Blink platform ([@fronzbot] - [#16942]) ([blink docs]) ([alarm_control_panel.blink docs]) ([binary_sensor.blink docs]) ([camera.blink docs]) ([sensor.blink docs]) (breaking change) (new-platform) +- Tibber component and notify ([@Danielhiversen] - [#17062]) ([notify docs]) ([tibber docs]) ([sensor.tibber docs]) (breaking change) (new-platform) +- Add new component fritzbox binary_sensor ([@hthiery] - [#17057]) ([fritzbox docs]) ([binary_sensor.fritzbox docs]) (new-platform) +- Add a webhook automation trigger ([@balloob] - [#17246]) ([automation.webhook docs]) (beta fix) (new-platform) + +## {% linkable_title New Features %} + +- Add faucet, shower, sprinkler, valve to HomeKit ([@cdce8p] - [#17145]) ([homekit docs]) (new-feature) + +## {% 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. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Add additional Netatmo public data sensors ([@GP8x] - [#16671]) ([netatmo docs]) ([sensor.netatmo_public docs]) (breaking change) +- Developers only: we have removed all service helpers (like turn_on method in light coponent), as they werent used. ([@cdce8p] - [#16832], [#16879], [#16863], [#16892], [#16920], [#17038], [#17055], [#16917]) +- Google Assistant: configuration has been simplified and relies on HA native OAuth2 flow ([@awarecan] - [#16848]) ([google_assistant docs]) (breaking change) +- Rachio component has been modernized. The Rachio component no longer requires you to specify switch and binary_sensor platforms. These platforms will be initialized automatically by the Rachio component. ([@OverloadUT] - [#16911]) ([rachio docs]) ([binary_sensor.rachio docs]) ([switch.rachio docs]) (breaking change)

For the end user, this means: + - Remove switch and binary_sensor entries with platform: rachio + - If you configured manual_run_mins on the switch platform, move that parameter to the rachio: component configuration. + +- Overhaul of Blink platform ([@fronzbot] - [#16942]) ([blink docs]) ([alarm_control_panel.blink docs]) ([binary_sensor.blink docs]) ([camera.blink docs]) ([sensor.blink docs]) (breaking change) (new-platform) + + - No more notification sensor, since the Blink API no longer supports it + - motion can now be detected either with the blink sensor + `binary_sensor.blink_nameofcamera_motion_detected` or through a camera's attributes with the `motion_detected` key. + - `blink.snap_picture` service has been renamed to `blink.trigger_camera` + - Camera names now prefaced with `blink`, ie. `camera.blink_nameofcamera` + +- Tibber has moved from sensor configuration to component configuration ([@Danielhiversen] - [#17062]) ([notify docs]) ([tibber docs]) ([sensor.tibber docs]) (breaking change) (new-platform) +- A manually configured Hue component will no longer run a discovery. Set up via config entry if you want to rely on discovery. ([@balloob] - [#17070]) ([hue docs]) (breaking change) + +## {% linkable_title Beta Fixes %} + +- Fix incorrect yaml in hangouts ([@balloob] - [#17169]) (beta fix) +- Fix data used for logbook ([@balloob] - [#17172]) ([logbook docs]) (beta fix) +- Fix device_tracker service call & cleanup ([@cdce8p] - [#17173]) ([alert docs]) ([device_sun_light_trigger docs]) ([device_tracker docs]) ([notify docs]) ([switch.flux docs]) (beta fix) +- Bugfix switch flux - light service call ([@cdce8p] - [#17187]) ([switch.flux docs]) (beta fix) +- Upgrade aiolifx_effects to 0.2.1 ([@amelchio] - [#17188]) ([light.lifx docs]) (beta fix) +- Verisure standard config for scan interval ([@persandstrom] - [#17192]) ([verisure docs]) (beta fix) +- Init sub-components using global var. ([@mbrrg] - [#17220]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (beta fix) +- Prevent accidental device reg override ([@balloob] - [#17136]) (beta fix) +- MyQ cover return unknown state if not available ([@schmittx] - [#17207]) ([cover.myq docs]) (beta fix) +- Fix potential MQTT discovery race condition ([@OttoWinter] - [#17208]) ([mqtt docs]) (beta fix) +- Fix SPC ([@balloob] - [#17236]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (beta fix) +- Guard for bad device info ([@balloob] - [#17238]) (beta fix) +- updated georss-client library to 0.3 ([@exxamalte] - [#17239]) ([sensor.geo_rss_events docs]) (beta fix) +- Add a webhook automation trigger ([@balloob] - [#17246]) ([automation.webhook docs]) (beta fix) (new-platform) +- block external IP ([@balloob] - [#17248]) ([emulated_hue docs]) (beta fix) +- Fix ambient light state of the Philips Eyecare Lamp (Closes: #16269) ([@syssi] - [#17259]) ([light.xiaomi_miio docs]) (beta fix) +- Add defaults, fixing #17229 ([@StevenLooman] - [#17261]) ([upnp docs]) (beta fix) +- Remove warning on script delay ([@amelchio] - [#17264]) (beta fix) +- Hassio auth ([@pvizeli] - [#17274]) ([hassio docs]) (beta fix) (new-platform) +- Fix hassio discovery ([@pvizeli] - [#17275]) ([hassio docs]) (beta fix) +- fixed 'on_startup() takes 0 positional arguments but 1 was given' ([@PaulAnnekov] - [#17295]) ([sensor.miflora docs]) (beta fix) +- Logbook: filter by entity and period ([@Anonym-tsk] - [#17095]) ([logbook docs]) (beta fix) +- Fix samsung bug ([@arsaboo] - [#17285]) ([media_player.samsungtv docs]) (beta fix) +- Allow tradfri groups for new imported entries ([@MartinHjelmare] - [#17310]) ([tradfri docs]) (beta fix) +- Fix auth for hass.io ([@pvizeli] - [#17318]) ([hassio docs]) (beta fix) +- Hass.io auth/sso part2 ([@pvizeli] - [#17324]) ([hassio docs]) (beta fix) (new-platform) + +## {% linkable_title All changes %} + +- Add mode (daily/hourly) to darksky ([@randellhodges] - [#16719]) ([weather docs]) ([weather.darksky docs]) ([weather.openweathermap docs]) +- Extract lovelace to it's own component ([@balloob] - [#16816]) ([frontend docs]) ([lovelace docs]) +- Remove discovered MQTT alarm_control_panel device when discovery topic is cleared ([@emontnemery] - [#16825]) ([alarm_control_panel.mqtt docs]) +- Remove discovered MQTT light device when discovery topic is cleared ([@emontnemery] - [#16824]) ([light.mqtt docs]) +- Add unique_id to homematic_cloud ([@sander76] - [#16828]) ([homematicip_cloud docs]) +- Don't create entity registry in tests ([@balloob] - [#16838]) +- Add additional Netatmo public data sensors ([@GP8x] - [#16671]) ([netatmo docs]) ([sensor.netatmo_public docs]) (breaking change) +- GitLab-CI sensor integration addition. ([@DanielWinks] - [#16561]) ([sensor.gitlab_ci docs]) (new-platform) +- Config entry update data ([@balloob] - [#16843]) +- Fix MQTT leaving files behind ([@balloob] - [#16840]) +- change unknown to None in Netatmo public ([@Danielhiversen] - [#16845]) ([sensor.netatmo_public docs]) +- Remove discovered MQTT binary_sensor device when discovery topic is cleared ([@emontnemery] - [#16826]) ([binary_sensor.mqtt docs]) +- On removal, only unload config entry if loaded ([@balloob] - [#16844]) +- Add image support to hangouts notifications ([@quazzie] - [#16560]) ([hangouts docs]) +- Remove discovered MQTT climate device when discovery topic is cleared ([@emontnemery] - [#16856]) ([climate.mqtt docs]) +- Fix files left behind ([@balloob] - [#16855]) +- Move MQTT discovery removal tests to platform test files ([@emontnemery] - [#16861]) +- Remove discovered MQTT sensor device when discovery topic is cleared ([@emontnemery] - [#16860]) ([sensor.mqtt docs]) +- Remove discovered MQTT lock device when discovery topic is cleared ([@emontnemery] - [#16859]) ([lock.mqtt docs]) +- Remove discovered MQTT fan device when discovery topic is cleared ([@emontnemery] - [#16858]) ([fan.mqtt docs]) +- Remove discovered MQTT cover device when discovery topic is cleared ([@emontnemery] - [#16857]) ([cover.mqtt docs]) +- Add executor job ([@balloob] - [#16853]) ([lovelace docs]) +- Fail if dirty ([@balloob] - [#16839]) +- Add support for Opple light ([@jedmeng] - [#16765]) ([light.opple docs]) (new-platform) +- Update cover tests ([@cdce8p] - [#16832]) ([cover docs]) (breaking change) +- Add missing __init__ test files ([@cdce8p] - [#16871]) +- Tibber realtime consumption, Tibber pulse ([@Danielhiversen] - [#16870]) ([sensor.tibber docs]) +- Upgrade to bimmer_connected 0.5.3 ([@gerard33] - [#16877]) ([bmw_connected_drive docs]) ([binary_sensor.bmw_connected_drive docs]) +- aiohttp.ClientSession gets proxy information from HTTP_PROXY/HTTPS_PROXY ([@siom79] - [#16874]) +- Remove service helper (3) ([@cdce8p] - [#16879]) ([duckdns docs]) ([google_assistant docs]) ([group docs]) ([homematic docs]) ([image_processing docs]) ([input_boolean docs]) ([input_number docs]) ([input_select docs]) ([input_text docs]) (breaking change) +- Fix fan_init test ([@cdce8p] - [#16865]) +- Use HA native OAuth2 flow for google assistant components ([@awarecan] - [#16848]) ([google_assistant docs]) (breaking change) +- Remove service helper (2) ([@cdce8p] - [#16863]) ([alarm_control_panel docs]) ([automation docs]) ([camera docs]) ([climate docs]) ([counter docs]) ([fan docs]) (breaking change) +- Revert incorrect check ([@balloob] - [#16883]) ([media_player.soundtouch docs]) +- Added support for private storage. ([@nickovs] - [#16878]) +- Fix example for long-lived access token WS API ([@awarecan] - [#16882]) ([auth docs]) +- Add bitwise operations as template helpers ([@blakeblackshear] - [#16833]) +- Telegram_bot polling support proxy_url and proxy_params (Fix #15746) ([@Anonym-tsk] - [#16740]) ([telegram_bot docs]) +- Update language strings ([@cgtobi] - [#16884]) ([auth docs]) +- Don't pass use_env=True ([@balloob] - [#16896]) +- Revert file mode write_json ([@balloob] - [#16897]) +- Remove service helper (4) ([@cdce8p] - [#16892]) ([lock docs]) ([media_player docs]) ([notify docs]) ([remote docs]) ([scene docs]) ([timer docs]) ([vacuum docs]) (breaking change) +- Remove unused legacy test helper methods ([@cdce8p] - [#16893]) +- Remove unused import ([@amelchio] - [#16909]) +- Upgrade aiolifx_effects to 0.2.0 ([@amelchio] - [#16900]) ([light.lifx docs]) +- Upgrade pysonos to 0.0.3 ([@amelchio] - [#16901]) ([sonos docs]) ([media_player.sonos docs]) +- Ignore Xiaomi hub callbacks during setup ([@amelchio] - [#16910]) ([xiaomi_aqara docs]) +- Update new values coming in for dev registry ([@balloob] - [#16852]) +- MQTT Light - Do not throw if property is missing from templated MQTT message ([@emontnemery] - [#16720]) ([light.mqtt docs]) +- Add new services for set/refresh Z-Wave device values ([@blakeblackshear] - [#16638]) ([zwave docs]) +- Add (EU-based) Honeywell evohome CH/DHW controller ([@zxdavb] - [#16427]) ([evohome docs]) ([climate.evohome docs]) ([climate.honeywell docs]) (new-platform) +- Make MQTT platforms config entries ([@OttoWinter] - [#16904]) ([mqtt docs]) ([sensor.mqtt docs]) +- Fix auth redirect ([@balloob] - [#16914]) ([frontend docs]) +- Fix MQTT Config Entry Discovery ([@OttoWinter] - [#16919]) ([mqtt docs]) +- Remove service helper (5) ([@cdce8p] - [#16917]) ([config docs]) ([device_sun_light_trigger docs]) ([light docs]) ([script docs]) ([switch docs]) ([switch.flux docs]) (breaking change) +- Remove service helper (6) ([@cdce8p] - [#16920]) ([automation docs]) ([config docs]) ([device_tracker docs]) ([group docs]) (breaking change) +- Rachio component modernization ([@OverloadUT] - [#16911]) ([rachio docs]) ([binary_sensor.rachio docs]) ([switch.rachio docs]) (breaking change) +- Remove discovered mqtt_json light entity when discovery is cleared ([@OttoWinter] - [#16906]) ([light.mqtt_json docs]) +- Fix race between script delay and turn_off ([@amelchio] - [#16923]) +- Move more MQTT platforms to config entries ([@OttoWinter] - [#16918]) ([mqtt docs]) ([alarm_control_panel.mqtt docs]) ([binary_sensor.mqtt docs]) ([camera.mqtt docs]) ([climate.mqtt docs]) ([cover.mqtt docs]) ([light.mqtt docs]) ([switch.mqtt docs]) +- Add zwave.network_complete_some_dead event ([@janvanhelvoort] - [#16894]) ([zwave docs]) +- Convert fan component to config entry ([@OttoWinter] - [#16951]) ([fan docs]) +- Add unique_id to MQTT cover ([@OttoWinter] - [#16950]) ([cover.mqtt docs]) +- Add unique_id to MQTT fan ([@OttoWinter] - [#16949]) ([fan.mqtt docs]) +- Add pressure sensor device class ([@OttoWinter] - [#16965]) ([sensor docs]) ([sensor.xiaomi_aqara docs]) +- Upgrade pytest to 3.8.1 ([@scop] - [#16980]) +- Add webhook + IFTTT example ([@balloob] - [#16817]) ([ifttt docs]) ([webhook docs]) (new-platform) +- Google Maps supports battery level and charging. ([@htotoo] - [#16969]) ([device_tracker docs]) +- Add basic support for Tradfri switches ([@ggravlingen] - [#17007]) ([tradfri docs]) ([switch.tradfri docs]) (new-platform) +- Homematic cloud device update fix ([@sander76] - [#17001]) ([homematicip_cloud docs]) +- Async syntax 1, alarm_control_panel & automation & binary_sensor ([@cdce8p] - [#17015]) +- Async syntax 2, camera & climate & config ([@cdce8p] - [#17016]) +- Update Z-Wave service descriptions to point to proper log file ([@cgarwood] - [#17024]) +- Async syntax 8/8 ([@cdce8p] - [#17022]) +- Async syntax 7, switch & tts & vacuum ([@cdce8p] - [#17021]) +- Async syntax 6, sensor ([@cdce8p] - [#17020]) +- Async syntax 5, light & lock & remote & scene & telegram & helpers ([@cdce8p] - [#17019]) +- Async syntax 4/8 ([@cdce8p] - [#17018]) +- Async syntax 3/8 ([@cdce8p] - [#17017]) +- Fix MQTT discovery ([@OttoWinter] - [#17004]) ([mqtt docs]) +- Upgrade huawei-lte-api to 1.0.16 ([@scop] - [#16972]) ([huawei_lte docs]) +- Upgrade locationsharinglib to 3.0.3 ([@fabaff] - [#17010]) ([device_tracker docs]) +- Break up websocket component ([@balloob] - [#17003]) ([camera docs]) ([config docs]) ([media_player docs]) ([websocket_api docs]) +- :hammer: update errors ([@timmo001] - [#17029]) ([switch.rest docs]) +- Add new device attributes to fritzbox climate ([@hthiery] - [#17027]) ([fritzbox docs]) ([climate.fritzbox docs]) +- Bump Enphase_Envoy dependency for older models ([@DavidDeSloovere] - [#17032]) ([sensor.enphase_envoy docs]) +- Add Hass.io discovery to MQTT ([@balloob] - [#16962]) ([mqtt docs]) +- Update coverage to exclude not tested file ([@cdce8p] - [#17039]) +- Send headers with REST switch GET request ([@andersonshatch] - [#17036]) ([switch.rest docs]) +- Async syntax ([@cdce8p] - [#17033]) ([alert docs]) ([binary_sensor.ffmpeg_motion docs]) ([binary_sensor.ffmpeg_noise docs]) ([sensor.mqtt_room docs]) +- Break up websocket 2 ([@balloob] - [#17028]) +- Logbook context ([@balloob] - [#16937]) ([logbook docs]) +- Remove error logging when Sonos shuffle_set is not available ([@amelchio] - [#16921]) ([media_player.sonos docs]) +- Fix long update 'load_power' and 'in_use' for Xiaomi Zegbee Plug ([@Anonym-tsk] - [#16915]) ([switch.xiaomi_aqara docs]) +- Mind the unit system (fixes #16819) ([@fabaff] - [#16823]) ([weather.openweathermap docs]) +- Suppress urllib3 header parsing error ([@cgarwood] - [#17042]) ([camera.mjpeg docs]) +- Support code 7 ([@SNoof85] - [#17047]) ([vacuum.xiaomi_miio docs]) +- Update pyhomematic to 0.1.50 ([@danielperna84] - [#17048]) ([homematic docs]) +- Remove alert service helper ([@cdce8p] - [#17038]) ([alert docs]) (breaking change) +- Add AquaLogic component ([@swilson] - [#16763]) ([aqualogic docs]) ([sensor.aqualogic docs]) ([switch.aqualogic docs]) (new-platform) +- Update pynetgear to 0.4.2 (fix #14752) ([@MatMaul] - [#17064]) ([device_tracker docs]) +- Added working support for private storage ([@nickovs] - [#16903]) +- GeoRSS events sensor refactored ([@exxamalte] - [#16939]) ([sensor.geo_rss_events docs]) +- Remove service helper (8) ([@cdce8p] - [#17055]) ([config docs]) ([ffmpeg docs]) ([keyboard docs]) ([logger docs]) ([microsoft_face docs]) (breaking change) +- MJPEG Camera Log Filter Fixes ([@cgarwood] - [#17050]) ([camera.mjpeg docs]) +- OpenUV: Fixed issue with missing protection window data ([@bachya] - [#17051]) ([openuv docs]) ([binary_sensor.openuv docs]) +- async_create_task ([@cdce8p] - [#17059]) +- De-syncing binary_sensor.ping ([@thomasloven] - [#17056]) ([binary_sensor.ping docs]) +- Add logging to light updates ([@balloob] - [#17069]) ([light.hue docs]) +- Catch possible errors from tradfri ([@balloob] - [#17068]) ([tradfri docs]) +- Allow no movement in vamera.onvif_ptz service ([@thomasloven] - [#17065]) ([camera.onvif docs]) +- Upgrade youtube_dl to 2018.09.26 ([@fabaff] - [#17079]) ([media_extractor docs]) +- Overhaul of Blink platform ([@fronzbot] - [#16942]) ([blink docs]) ([alarm_control_panel.blink docs]) ([binary_sensor.blink docs]) ([camera.blink docs]) ([sensor.blink docs]) (breaking change) (new-platform) +- Bump pyenvisalink ([@Cinntax] - [#17086]) ([envisalink docs]) +- Async response all the things ([@balloob] - [#17073]) ([config docs]) ([websocket_api docs]) +- Add optional headers configuration for scrape ([@dippysan] - [#17085]) ([sensor.scrape docs]) +- Add support for Hass.io discovery feature for Add-ons ([@pvizeli] - [#17035]) ([hassio docs]) +- Keep the repeat mode when setting Sonos shuffle mode ([@amelchio] - [#17083]) ([media_player.sonos docs]) +- Smaller steps for Sonos volume up/down ([@amelchio] - [#17080]) ([media_player.sonos docs]) +- Add weather condition code to OpenWeatherMap sensor ([@dbilay] - [#17093]) ([sensor.openweathermap docs]) +- Adding myself as blink codeowner ([@fronzbot] - [#17096]) +- Change Tile icon to view-grid ([@no2chem] - [#17098]) ([device_tracker docs]) +- Fix jewish calendar sensor with language set to english ([@tsvi] - [#17104]) ([sensor.jewish_calendar docs]) +- Fix counter restore. ([@mvn23] - [#17101]) ([counter docs]) +- Support multiple accounts in Tile, use device identifiers ([@no2chem] - [#17108]) ([device_tracker.tile docs]) +- Bumps simplisafe-python to 3.1.2 ([@bachya] - [#16931]) ([alarm_control_panel.simplisafe docs]) +- Upgrade pytest to 3.8.2 ([@scop] - [#17125]) +- Fix sonos async use ([@MartinHjelmare] - [#17099]) ([media_player.sonos docs]) +- Homekit controller reconnect ([@armills] - [#17060]) ([homekit_controller docs]) +- Tibber component and notify ([@Danielhiversen] - [#17062]) ([notify docs]) ([tibber docs]) ([sensor.tibber docs]) (breaking change) (new-platform) +- Add time created to persistent notifications. ([@jeradM] - [#17121]) ([persistent_notification docs]) +- Make it easier for auth to consume newer formats ([@balloob] - [#17127]) +- Add new component fritzbox binary_sensor ([@hthiery] - [#17057]) ([fritzbox docs]) ([binary_sensor.fritzbox docs]) (new-platform) +- Update xiaomi lib ([@Danielhiversen] - [#17129]) ([xiaomi_aqara docs]) +- Add update service to Google Travel Sensor ([@arsaboo] - [#17092]) ([sensor.google_travel_time docs]) +- Fix upnp component l10n error ([@awarecan] - [#17132]) ([upnp docs]) +- Take timezone into consideration when calulating Zmanim. Partial fix for #16946 ([@tsvi] - [#17131]) ([sensor.jewish_calendar docs]) +- Allow config entry setup to raise not ready ([@balloob] - [#17135]) +- Webhook component - pass headers to webhook handler ([@kirichkov] - [#17091]) ([webhook docs]) +- Add timeout and fix oscillations on Samsung TV component ([@anapaulagomes] - [#17102]) ([media_player.samsungtv docs]) +- Remove discovery ([@balloob] - [#17070]) ([hue docs]) (breaking change) +- Bugfix invalid entity_config parameter HomeKit ([@cdce8p] - [#17143]) ([homekit docs]) +- verisure configurable polling ([@persandstrom] - [#17144]) ([verisure docs]) +- YesssSMS handling more errors, upgrade to version 0.2.3 ([@flowolf] - [#17052]) ([notify docs]) +- Added OpenUV CODEOWNERS info ([@bachya] - [#17149]) ([openuv docs]) +- Fix a typo ([@gerard33] - [#17147]) ([switch.volvooncall docs]) +- Cleanly stop tradfri on shutdown ([@lwis] - [#17114]) ([auth docs]) ([tradfri docs]) +- Fix zoneminder zms_url construction ([@rohankapoorcom] - [#17150]) ([zoneminder docs]) +- Added warning to HomeKit component ([@Julius2342] - [#16807]) ([homekit docs]) +- Add faucet, shower, sprinkler, valve to HomeKit ([@cdce8p] - [#17145]) ([homekit docs]) (new-feature) +- Fix miflora connection errors during platform setup ([@PaulAnnekov] - [#16798]) ([sensor.miflora docs]) +- Discover Danfoss/devolo RS Room Sensor thermostat ([@prophit987] - [#17153]) ([zwave docs]) +- @danielhiversen as codeowner for Tibber ([@prophit987] - [#17154]) +- Fix incorrect yaml in hangouts ([@balloob] - [#17169]) (beta fix) +- Fix data used for logbook ([@balloob] - [#17172]) ([logbook docs]) (beta fix) +- Fix device_tracker service call & cleanup ([@cdce8p] - [#17173]) ([alert docs]) ([device_sun_light_trigger docs]) ([device_tracker docs]) ([notify docs]) ([switch.flux docs]) (beta fix) +- Bugfix switch flux - light service call ([@cdce8p] - [#17187]) ([switch.flux docs]) (beta fix) +- Upgrade aiolifx_effects to 0.2.1 ([@amelchio] - [#17188]) ([light.lifx docs]) (beta fix) +- Verisure standard config for scan interval ([@persandstrom] - [#17192]) ([verisure docs]) (beta fix) +- Init sub-components using global var. ([@mbrrg] - [#17220]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (beta fix) +- Prevent accidental device reg override ([@balloob] - [#17136]) (beta fix) +- MyQ cover return unknown state if not available ([@schmittx] - [#17207]) ([cover.myq docs]) (beta fix) +- Fix potential MQTT discovery race condition ([@OttoWinter] - [#17208]) ([mqtt docs]) (beta fix) +- Fix SPC ([@balloob] - [#17236]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (beta fix) +- Guard for bad device info ([@balloob] - [#17238]) (beta fix) +- updated georss-client library to 0.3 ([@exxamalte] - [#17239]) ([sensor.geo_rss_events docs]) (beta fix) +- Add a webhook automation trigger ([@balloob] - [#17246]) ([automation.webhook docs]) (beta fix) (new-platform) +- block external IP ([@balloob] - [#17248]) ([emulated_hue docs]) (beta fix) +- Fix ambient light state of the Philips Eyecare Lamp (Closes: #16269) ([@syssi] - [#17259]) ([light.xiaomi_miio docs]) (beta fix) +- Add defaults, fixing #17229 ([@StevenLooman] - [#17261]) ([upnp docs]) (beta fix) +- Remove warning on script delay ([@amelchio] - [#17264]) (beta fix) +- Hassio auth ([@pvizeli] - [#17274]) ([hassio docs]) (beta fix) (new-platform) +- Fix hassio discovery ([@pvizeli] - [#17275]) ([hassio docs]) (beta fix) +- fixed 'on_startup() takes 0 positional arguments but 1 was given' ([@PaulAnnekov] - [#17295]) ([sensor.miflora docs]) (beta fix) +- Logbook: filter by entity and period ([@Anonym-tsk] - [#17095]) ([logbook docs]) (beta fix) +- Fix samsung bug ([@arsaboo] - [#17285]) ([media_player.samsungtv docs]) (beta fix) +- Allow tradfri groups for new imported entries ([@MartinHjelmare] - [#17310]) ([tradfri docs]) (beta fix) +- Fix auth for hass.io ([@pvizeli] - [#17318]) ([hassio docs]) (beta fix) +- Hass.io auth/sso part2 ([@pvizeli] - [#17324]) ([hassio docs]) (beta fix) (new-platform) + +[#16427]: https://github.com/home-assistant/home-assistant/pull/16427 +[#16560]: https://github.com/home-assistant/home-assistant/pull/16560 +[#16561]: https://github.com/home-assistant/home-assistant/pull/16561 +[#16638]: https://github.com/home-assistant/home-assistant/pull/16638 +[#16671]: https://github.com/home-assistant/home-assistant/pull/16671 +[#16719]: https://github.com/home-assistant/home-assistant/pull/16719 +[#16720]: https://github.com/home-assistant/home-assistant/pull/16720 +[#16740]: https://github.com/home-assistant/home-assistant/pull/16740 +[#16763]: https://github.com/home-assistant/home-assistant/pull/16763 +[#16765]: https://github.com/home-assistant/home-assistant/pull/16765 +[#16798]: https://github.com/home-assistant/home-assistant/pull/16798 +[#16807]: https://github.com/home-assistant/home-assistant/pull/16807 +[#16816]: https://github.com/home-assistant/home-assistant/pull/16816 +[#16817]: https://github.com/home-assistant/home-assistant/pull/16817 +[#16823]: https://github.com/home-assistant/home-assistant/pull/16823 +[#16824]: https://github.com/home-assistant/home-assistant/pull/16824 +[#16825]: https://github.com/home-assistant/home-assistant/pull/16825 +[#16826]: https://github.com/home-assistant/home-assistant/pull/16826 +[#16828]: https://github.com/home-assistant/home-assistant/pull/16828 +[#16832]: https://github.com/home-assistant/home-assistant/pull/16832 +[#16833]: https://github.com/home-assistant/home-assistant/pull/16833 +[#16838]: https://github.com/home-assistant/home-assistant/pull/16838 +[#16839]: https://github.com/home-assistant/home-assistant/pull/16839 +[#16840]: https://github.com/home-assistant/home-assistant/pull/16840 +[#16843]: https://github.com/home-assistant/home-assistant/pull/16843 +[#16844]: https://github.com/home-assistant/home-assistant/pull/16844 +[#16845]: https://github.com/home-assistant/home-assistant/pull/16845 +[#16848]: https://github.com/home-assistant/home-assistant/pull/16848 +[#16852]: https://github.com/home-assistant/home-assistant/pull/16852 +[#16853]: https://github.com/home-assistant/home-assistant/pull/16853 +[#16855]: https://github.com/home-assistant/home-assistant/pull/16855 +[#16856]: https://github.com/home-assistant/home-assistant/pull/16856 +[#16857]: https://github.com/home-assistant/home-assistant/pull/16857 +[#16858]: https://github.com/home-assistant/home-assistant/pull/16858 +[#16859]: https://github.com/home-assistant/home-assistant/pull/16859 +[#16860]: https://github.com/home-assistant/home-assistant/pull/16860 +[#16861]: https://github.com/home-assistant/home-assistant/pull/16861 +[#16863]: https://github.com/home-assistant/home-assistant/pull/16863 +[#16865]: https://github.com/home-assistant/home-assistant/pull/16865 +[#16870]: https://github.com/home-assistant/home-assistant/pull/16870 +[#16871]: https://github.com/home-assistant/home-assistant/pull/16871 +[#16874]: https://github.com/home-assistant/home-assistant/pull/16874 +[#16877]: https://github.com/home-assistant/home-assistant/pull/16877 +[#16878]: https://github.com/home-assistant/home-assistant/pull/16878 +[#16879]: https://github.com/home-assistant/home-assistant/pull/16879 +[#16882]: https://github.com/home-assistant/home-assistant/pull/16882 +[#16883]: https://github.com/home-assistant/home-assistant/pull/16883 +[#16884]: https://github.com/home-assistant/home-assistant/pull/16884 +[#16892]: https://github.com/home-assistant/home-assistant/pull/16892 +[#16893]: https://github.com/home-assistant/home-assistant/pull/16893 +[#16894]: https://github.com/home-assistant/home-assistant/pull/16894 +[#16896]: https://github.com/home-assistant/home-assistant/pull/16896 +[#16897]: https://github.com/home-assistant/home-assistant/pull/16897 +[#16900]: https://github.com/home-assistant/home-assistant/pull/16900 +[#16901]: https://github.com/home-assistant/home-assistant/pull/16901 +[#16903]: https://github.com/home-assistant/home-assistant/pull/16903 +[#16904]: https://github.com/home-assistant/home-assistant/pull/16904 +[#16906]: https://github.com/home-assistant/home-assistant/pull/16906 +[#16909]: https://github.com/home-assistant/home-assistant/pull/16909 +[#16910]: https://github.com/home-assistant/home-assistant/pull/16910 +[#16911]: https://github.com/home-assistant/home-assistant/pull/16911 +[#16914]: https://github.com/home-assistant/home-assistant/pull/16914 +[#16915]: https://github.com/home-assistant/home-assistant/pull/16915 +[#16917]: https://github.com/home-assistant/home-assistant/pull/16917 +[#16918]: https://github.com/home-assistant/home-assistant/pull/16918 +[#16919]: https://github.com/home-assistant/home-assistant/pull/16919 +[#16920]: https://github.com/home-assistant/home-assistant/pull/16920 +[#16921]: https://github.com/home-assistant/home-assistant/pull/16921 +[#16923]: https://github.com/home-assistant/home-assistant/pull/16923 +[#16931]: https://github.com/home-assistant/home-assistant/pull/16931 +[#16937]: https://github.com/home-assistant/home-assistant/pull/16937 +[#16939]: https://github.com/home-assistant/home-assistant/pull/16939 +[#16942]: https://github.com/home-assistant/home-assistant/pull/16942 +[#16949]: https://github.com/home-assistant/home-assistant/pull/16949 +[#16950]: https://github.com/home-assistant/home-assistant/pull/16950 +[#16951]: https://github.com/home-assistant/home-assistant/pull/16951 +[#16962]: https://github.com/home-assistant/home-assistant/pull/16962 +[#16965]: https://github.com/home-assistant/home-assistant/pull/16965 +[#16969]: https://github.com/home-assistant/home-assistant/pull/16969 +[#16972]: https://github.com/home-assistant/home-assistant/pull/16972 +[#16980]: https://github.com/home-assistant/home-assistant/pull/16980 +[#17001]: https://github.com/home-assistant/home-assistant/pull/17001 +[#17003]: https://github.com/home-assistant/home-assistant/pull/17003 +[#17004]: https://github.com/home-assistant/home-assistant/pull/17004 +[#17007]: https://github.com/home-assistant/home-assistant/pull/17007 +[#17010]: https://github.com/home-assistant/home-assistant/pull/17010 +[#17015]: https://github.com/home-assistant/home-assistant/pull/17015 +[#17016]: https://github.com/home-assistant/home-assistant/pull/17016 +[#17017]: https://github.com/home-assistant/home-assistant/pull/17017 +[#17018]: https://github.com/home-assistant/home-assistant/pull/17018 +[#17019]: https://github.com/home-assistant/home-assistant/pull/17019 +[#17020]: https://github.com/home-assistant/home-assistant/pull/17020 +[#17021]: https://github.com/home-assistant/home-assistant/pull/17021 +[#17022]: https://github.com/home-assistant/home-assistant/pull/17022 +[#17024]: https://github.com/home-assistant/home-assistant/pull/17024 +[#17027]: https://github.com/home-assistant/home-assistant/pull/17027 +[#17028]: https://github.com/home-assistant/home-assistant/pull/17028 +[#17029]: https://github.com/home-assistant/home-assistant/pull/17029 +[#17032]: https://github.com/home-assistant/home-assistant/pull/17032 +[#17033]: https://github.com/home-assistant/home-assistant/pull/17033 +[#17035]: https://github.com/home-assistant/home-assistant/pull/17035 +[#17036]: https://github.com/home-assistant/home-assistant/pull/17036 +[#17038]: https://github.com/home-assistant/home-assistant/pull/17038 +[#17039]: https://github.com/home-assistant/home-assistant/pull/17039 +[#17042]: https://github.com/home-assistant/home-assistant/pull/17042 +[#17047]: https://github.com/home-assistant/home-assistant/pull/17047 +[#17048]: https://github.com/home-assistant/home-assistant/pull/17048 +[#17050]: https://github.com/home-assistant/home-assistant/pull/17050 +[#17051]: https://github.com/home-assistant/home-assistant/pull/17051 +[#17052]: https://github.com/home-assistant/home-assistant/pull/17052 +[#17055]: https://github.com/home-assistant/home-assistant/pull/17055 +[#17056]: https://github.com/home-assistant/home-assistant/pull/17056 +[#17057]: https://github.com/home-assistant/home-assistant/pull/17057 +[#17059]: https://github.com/home-assistant/home-assistant/pull/17059 +[#17060]: https://github.com/home-assistant/home-assistant/pull/17060 +[#17062]: https://github.com/home-assistant/home-assistant/pull/17062 +[#17064]: https://github.com/home-assistant/home-assistant/pull/17064 +[#17065]: https://github.com/home-assistant/home-assistant/pull/17065 +[#17068]: https://github.com/home-assistant/home-assistant/pull/17068 +[#17069]: https://github.com/home-assistant/home-assistant/pull/17069 +[#17070]: https://github.com/home-assistant/home-assistant/pull/17070 +[#17073]: https://github.com/home-assistant/home-assistant/pull/17073 +[#17079]: https://github.com/home-assistant/home-assistant/pull/17079 +[#17080]: https://github.com/home-assistant/home-assistant/pull/17080 +[#17083]: https://github.com/home-assistant/home-assistant/pull/17083 +[#17085]: https://github.com/home-assistant/home-assistant/pull/17085 +[#17086]: https://github.com/home-assistant/home-assistant/pull/17086 +[#17091]: https://github.com/home-assistant/home-assistant/pull/17091 +[#17092]: https://github.com/home-assistant/home-assistant/pull/17092 +[#17093]: https://github.com/home-assistant/home-assistant/pull/17093 +[#17095]: https://github.com/home-assistant/home-assistant/pull/17095 +[#17096]: https://github.com/home-assistant/home-assistant/pull/17096 +[#17098]: https://github.com/home-assistant/home-assistant/pull/17098 +[#17099]: https://github.com/home-assistant/home-assistant/pull/17099 +[#17101]: https://github.com/home-assistant/home-assistant/pull/17101 +[#17102]: https://github.com/home-assistant/home-assistant/pull/17102 +[#17104]: https://github.com/home-assistant/home-assistant/pull/17104 +[#17108]: https://github.com/home-assistant/home-assistant/pull/17108 +[#17114]: https://github.com/home-assistant/home-assistant/pull/17114 +[#17121]: https://github.com/home-assistant/home-assistant/pull/17121 +[#17125]: https://github.com/home-assistant/home-assistant/pull/17125 +[#17127]: https://github.com/home-assistant/home-assistant/pull/17127 +[#17129]: https://github.com/home-assistant/home-assistant/pull/17129 +[#17131]: https://github.com/home-assistant/home-assistant/pull/17131 +[#17132]: https://github.com/home-assistant/home-assistant/pull/17132 +[#17135]: https://github.com/home-assistant/home-assistant/pull/17135 +[#17136]: https://github.com/home-assistant/home-assistant/pull/17136 +[#17143]: https://github.com/home-assistant/home-assistant/pull/17143 +[#17144]: https://github.com/home-assistant/home-assistant/pull/17144 +[#17145]: https://github.com/home-assistant/home-assistant/pull/17145 +[#17147]: https://github.com/home-assistant/home-assistant/pull/17147 +[#17149]: https://github.com/home-assistant/home-assistant/pull/17149 +[#17150]: https://github.com/home-assistant/home-assistant/pull/17150 +[#17153]: https://github.com/home-assistant/home-assistant/pull/17153 +[#17154]: https://github.com/home-assistant/home-assistant/pull/17154 +[#17169]: https://github.com/home-assistant/home-assistant/pull/17169 +[#17172]: https://github.com/home-assistant/home-assistant/pull/17172 +[#17173]: https://github.com/home-assistant/home-assistant/pull/17173 +[#17187]: https://github.com/home-assistant/home-assistant/pull/17187 +[#17188]: https://github.com/home-assistant/home-assistant/pull/17188 +[#17192]: https://github.com/home-assistant/home-assistant/pull/17192 +[#17207]: https://github.com/home-assistant/home-assistant/pull/17207 +[#17208]: https://github.com/home-assistant/home-assistant/pull/17208 +[#17220]: https://github.com/home-assistant/home-assistant/pull/17220 +[#17236]: https://github.com/home-assistant/home-assistant/pull/17236 +[#17238]: https://github.com/home-assistant/home-assistant/pull/17238 +[#17239]: https://github.com/home-assistant/home-assistant/pull/17239 +[#17246]: https://github.com/home-assistant/home-assistant/pull/17246 +[#17248]: https://github.com/home-assistant/home-assistant/pull/17248 +[#17259]: https://github.com/home-assistant/home-assistant/pull/17259 +[#17261]: https://github.com/home-assistant/home-assistant/pull/17261 +[#17264]: https://github.com/home-assistant/home-assistant/pull/17264 +[#17274]: https://github.com/home-assistant/home-assistant/pull/17274 +[#17275]: https://github.com/home-assistant/home-assistant/pull/17275 +[#17285]: https://github.com/home-assistant/home-assistant/pull/17285 +[#17295]: https://github.com/home-assistant/home-assistant/pull/17295 +[#17310]: https://github.com/home-assistant/home-assistant/pull/17310 +[#17318]: https://github.com/home-assistant/home-assistant/pull/17318 +[#17324]: https://github.com/home-assistant/home-assistant/pull/17324 +[@Anonym-tsk]: https://github.com/Anonym-tsk +[@Cinntax]: https://github.com/Cinntax +[@DanielWinks]: https://github.com/DanielWinks +[@Danielhiversen]: https://github.com/Danielhiversen +[@DavidDeSloovere]: https://github.com/DavidDeSloovere +[@GP8x]: https://github.com/GP8x +[@Julius2342]: https://github.com/Julius2342 +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MatMaul]: https://github.com/MatMaul +[@OttoWinter]: https://github.com/OttoWinter +[@OverloadUT]: https://github.com/OverloadUT +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@SNoof85]: https://github.com/SNoof85 +[@StevenLooman]: https://github.com/StevenLooman +[@amelchio]: https://github.com/amelchio +[@anapaulagomes]: https://github.com/anapaulagomes +[@andersonshatch]: https://github.com/andersonshatch +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@blakeblackshear]: https://github.com/blakeblackshear +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@danielperna84]: https://github.com/danielperna84 +[@dbilay]: https://github.com/dbilay +[@dippysan]: https://github.com/dippysan +[@emontnemery]: https://github.com/emontnemery +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@flowolf]: https://github.com/flowolf +[@fronzbot]: https://github.com/fronzbot +[@gerard33]: https://github.com/gerard33 +[@ggravlingen]: https://github.com/ggravlingen +[@hthiery]: https://github.com/hthiery +[@htotoo]: https://github.com/htotoo +[@janvanhelvoort]: https://github.com/janvanhelvoort +[@jedmeng]: https://github.com/jedmeng +[@jeradM]: https://github.com/jeradM +[@kirichkov]: https://github.com/kirichkov +[@lwis]: https://github.com/lwis +[@mbrrg]: https://github.com/mbrrg +[@mvn23]: https://github.com/mvn23 +[@nickovs]: https://github.com/nickovs +[@no2chem]: https://github.com/no2chem +[@persandstrom]: https://github.com/persandstrom +[@prophit987]: https://github.com/prophit987 +[@pvizeli]: https://github.com/pvizeli +[@quazzie]: https://github.com/quazzie +[@randellhodges]: https://github.com/randellhodges +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@sander76]: https://github.com/sander76 +[@schmittx]: https://github.com/schmittx +[@scop]: https://github.com/scop +[@siom79]: https://github.com/siom79 +[@swilson]: https://github.com/swilson +[@syssi]: https://github.com/syssi +[@thomasloven]: https://github.com/thomasloven +[@timmo001]: https://github.com/timmo001 +[@tsvi]: https://github.com/tsvi +[@zxdavb]: https://github.com/zxdavb +[alarm_control_panel docs]: /components/alarm_control_panel/ +[alarm_control_panel.blink docs]: /components/alarm_control_panel.blink/ +[alarm_control_panel.mqtt docs]: /components/alarm_control_panel.mqtt/ +[alarm_control_panel.simplisafe docs]: /components/alarm_control_panel.simplisafe/ +[alarm_control_panel.spc docs]: /components/alarm_control_panel.spc/ +[alert docs]: /components/alert/ +[aqualogic docs]: /components/aqualogic/ +[auth docs]: /components/auth/ +[automation docs]: /components/automation/ +[automation.webhook docs]: /docs/automation/trigger/#webhook-trigger +[binary_sensor.blink docs]: /components/binary_sensor.blink/ +[binary_sensor.bmw_connected_drive docs]: /components/binary_sensor.bmw_connected_drive/ +[binary_sensor.ffmpeg_motion docs]: /components/binary_sensor.ffmpeg_motion/ +[binary_sensor.ffmpeg_noise docs]: /components/binary_sensor.ffmpeg_noise/ +[binary_sensor.fritzbox docs]: /components/binary_sensor.fritzbox/ +[binary_sensor.mqtt docs]: /components/binary_sensor.mqtt/ +[binary_sensor.openuv docs]: /components/binary_sensor.openuv/ +[binary_sensor.ping docs]: /components/binary_sensor.ping/ +[binary_sensor.rachio docs]: /components/binary_sensor.rachio/ +[binary_sensor.spc docs]: /components/binary_sensor.spc/ +[blink docs]: /components/blink/ +[bmw_connected_drive docs]: /components/bmw_connected_drive/ +[camera docs]: /components/camera/ +[camera.blink docs]: /components/camera.blink/ +[camera.mjpeg docs]: /components/camera.mjpeg/ +[camera.mqtt docs]: /components/camera.mqtt/ +[camera.onvif docs]: /components/camera.onvif/ +[climate docs]: /components/climate/ +[climate.evohome docs]: /components/climate.evohome/ +[climate.fritzbox docs]: /components/climate.fritzbox/ +[climate.honeywell docs]: /components/climate.honeywell/ +[climate.mqtt docs]: /components/climate.mqtt/ +[config docs]: /components/config/ +[counter docs]: /components/counter/ +[cover docs]: /components/cover/ +[cover.mqtt docs]: /components/cover.mqtt/ +[cover.myq docs]: /components/cover.myq/ +[device_sun_light_trigger docs]: /components/device_sun_light_trigger/ +[device_tracker docs]: /components/device_tracker/ +[device_tracker.tile docs]: /components/device_tracker.tile/ +[duckdns docs]: /components/duckdns/ +[emulated_hue docs]: /components/emulated_hue/ +[envisalink docs]: /components/envisalink/ +[evohome docs]: /components/evohome/ +[fan docs]: /components/fan/ +[fan.mqtt docs]: /components/fan.mqtt/ +[ffmpeg docs]: /components/ffmpeg/ +[fritzbox docs]: /components/fritzbox/ +[frontend docs]: /components/frontend/ +[google_assistant docs]: /components/google_assistant/ +[group docs]: /components/group/ +[hangouts docs]: /components/hangouts/ +[hassio docs]: /components/hassio/ +[homekit docs]: /components/homekit/ +[homekit_controller docs]: /components/homekit_controller/ +[homematic docs]: /components/homematic/ +[homematicip_cloud docs]: /components/homematicip_cloud/ +[huawei_lte docs]: /components/huawei_lte/ +[hue docs]: /components/hue/ +[ifttt docs]: /components/ifttt/ +[image_processing docs]: /components/image_processing/ +[input_boolean docs]: /components/input_boolean/ +[input_number docs]: /components/input_number/ +[input_select docs]: /components/input_select/ +[input_text docs]: /components/input_text/ +[keyboard docs]: /components/keyboard/ +[light docs]: /components/light/ +[light.hue docs]: /components/light.hue/ +[light.lifx docs]: /components/light.lifx/ +[light.mqtt docs]: /components/light.mqtt/ +[light.mqtt_json docs]: /components/light.mqtt_json/ +[light.opple docs]: /components/light.opple/ +[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ +[lock docs]: /components/lock/ +[lock.mqtt docs]: /components/lock.mqtt/ +[logbook docs]: /components/logbook/ +[logger docs]: /components/logger/ +[lovelace docs]: /components/lovelace/ +[media_extractor docs]: /components/media_extractor/ +[media_player docs]: /components/media_player/ +[media_player.samsungtv docs]: /components/media_player.samsungtv/ +[media_player.sonos docs]: /components/media_player.sonos/ +[media_player.soundtouch docs]: /components/media_player.soundtouch/ +[microsoft_face docs]: /components/microsoft_face/ +[mqtt docs]: /components/mqtt/ +[netatmo docs]: /components/netatmo/ +[notify docs]: /components/notify/ +[onboarding docs]: /components/onboarding/ +[openuv docs]: /components/openuv/ +[persistent_notification docs]: /components/persistent_notification/ +[rachio docs]: /components/rachio/ +[remote docs]: /components/remote/ +[scene docs]: /components/scene/ +[script docs]: /components/script/ +[sensor docs]: /components/sensor/ +[sensor.aqualogic docs]: /components/sensor.aqualogic/ +[sensor.blink docs]: /components/sensor.blink/ +[sensor.enphase_envoy docs]: /components/sensor.enphase_envoy/ +[sensor.geo_rss_events docs]: /components/sensor.geo_rss_events/ +[sensor.gitlab_ci docs]: /components/sensor.gitlab_ci/ +[sensor.google_travel_time docs]: /components/sensor.google_travel_time/ +[sensor.jewish_calendar docs]: /components/sensor.jewish_calendar/ +[sensor.miflora docs]: /components/sensor.miflora/ +[sensor.mqtt docs]: /components/sensor.mqtt/ +[sensor.mqtt_room docs]: /components/sensor.mqtt_room/ +[sensor.netatmo_public docs]: /components/sensor.netatmo_public/ +[sensor.openweathermap docs]: /components/sensor.openweathermap/ +[sensor.scrape docs]: /components/sensor.scrape/ +[sensor.tibber docs]: /components/sensor.tibber/ +[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/ +[sonos docs]: /components/sonos/ +[spc docs]: /components/spc/ +[switch docs]: /components/switch/ +[switch.aqualogic docs]: /components/switch.aqualogic/ +[switch.flux docs]: /components/switch.flux/ +[switch.mqtt docs]: /components/switch.mqtt/ +[switch.rachio docs]: /components/switch.rachio/ +[switch.rest docs]: /components/switch.rest/ +[switch.tradfri docs]: /components/switch.tradfri/ +[switch.volvooncall docs]: /components/switch.volvooncall/ +[switch.xiaomi_aqara docs]: /components/switch.xiaomi_aqara/ +[telegram_bot docs]: /components/telegram_bot/ +[tibber docs]: /components/tibber/ +[timer docs]: /components/timer/ +[tradfri docs]: /components/tradfri/ +[upnp docs]: /components/upnp/ +[vacuum docs]: /components/vacuum/ +[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ +[verisure docs]: /components/verisure/ +[weather docs]: /components/weather/ +[weather.darksky docs]: /components/weather.darksky/ +[weather.openweathermap docs]: /components/weather.openweathermap/ +[webhook docs]: /components/webhook/ +[websocket_api docs]: /components/websocket_api/ +[xiaomi_aqara docs]: /components/xiaomi_aqara/ +[zoneminder docs]: /components/zoneminder/ +[zwave docs]: /components/zwave/ diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 9850f162ac0c..b92842ad5a6a 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -11,10 +11,10 @@ footer: true The goal of this getting started guide is to install [Hass.io](/hassio/) on a Raspberry Pi. Hass.io is our own all in one solution that turns your Raspberry Pi or another device into the ultimate home automation hub. -Follow this guide if you want to get started with Home Assistant easily, or if you have no or little Linux experience. For advanced users or if you have no Raspberry Pi at hand, check our [alternative installation methods](/docs/installation/). The [FAQ](/faq/#home-assistant-vs-hassio) explains more about the differences. +Follow this guide if you want to get started with Home Assistant easily, or if you have no or little Linux experience. -

- Please remember to [secure your installation](/docs/configuration/securing/) once you've finished with the installation process. +

+For advanced users or if you have no Raspberry Pi at hand, check our [alternative installation methods](/docs/installation/). The [FAQ](/faq/#home-assistant-vs-hassio) explains more about the differences.

### {% linkable_title Suggested hardware%} @@ -44,13 +44,19 @@ We will need a few things to get started with installing Home Assistant. For bes 1. Insert the SD card into your Raspberry Pi 3. If you are going to use an Ethernet cable, connect that too. 1. Connect your Raspberry Pi to the power supply, so it turns on. 1. The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant, which will take about 20 minutes. -1. Home Assistant will be available at [http://hassio.local:8123][local]. Shortly after the download has started, a simple preparation status page will be available at this URL. Point your browser there. The page refreshes automatically, and Home Assistant will be shown when the download is complete. +1. Home Assistant will be available at [http://hassio.local:8123][local]. Shortly after the download has started, a simple preparation status page will be available at this URL. Point your browser there. The page refreshes automatically, and Home Assistant will be shown when the download is complete (this typically takes around 20 minutes). +1. Please remember to [secure your installation][secure] once you've finished with the installation process. [local]: http://hassio.local:8123 [the examples]: https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md +[secure]: /docs/configuration/securing/ + +

+If your router doesn't support mDNS, then you'll have to use the IP address of your Pi instead of `hassio.local`. For example, `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router. +

-When you're done, remember to set up regular backups of your configuration. These backups will protect you from hardware failure and mistakes. On Hass.io you have snapshots, but you can back up to [GitHub](/docs/ecosystem/backup/backup_github/), [DropBox](/docs/ecosystem/backup/backup_dropbox/) and many other ways. All that matters is that you set them up and test them regularly. +When you're done, remember to set up regular backups of your configuration. These backups will protect you from hardware failure and mistakes. On Hass.io you have snapshots (which you should copy off to another system), but you can back up to [GitHub](/docs/ecosystem/backup/backup_github/), [DropBox](/docs/ecosystem/backup/backup_dropbox/) and many other ways. All that matters is that you set them up and test them regularly.

### [Next step: Configuring Home Assistant »](/getting-started/configuration/) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index a337fc900f39..c06fac4ef3d0 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -9,38 +9,53 @@ sharing: true footer: true --- -Hass.io images are available for: - -- Download the appropriate image for your device: - - [Raspberry Pi Zero][pi1] - - [Raspberry Pi Zero W][pi0-w] - - [Raspberry Pi 1 Model B][pi1] - - [Raspberry Pi 2 Model B][pi2] - - [Raspberry Pi 3 Model B and B+ 32bit][pi3-32] (recommended) - - [Raspberry Pi 3 Model B and B+ 64bit][pi3-64] - - [Tinkerboard (Beta)][tinker] - - [Odroid-C2 (Beta)][odroid-c2] -- As [Virtual Appliance]: - - [VMDK][vmdk] +The following will take you through the steps required to install Hass.io. -

-Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable since some were only designed to provide just enough power to the device it was designed for by the manufacturer. **Do not** try to power the Pi from the USB port on a TV, computer, or similar. -

+1. Download the appropriate install option: + + - As an image for your device: + + - [Raspberry Pi Zero][pi1] + - [Raspberry Pi Zero W][pi0-w] + - [Raspberry Pi 1 Model B][pi1] + - [Raspberry Pi 2 Model B][pi2] + - [Raspberry Pi 3 Model B and B+ 32bit][pi3-32] + - [Raspberry Pi 3 Model B and B+ 64bit][pi3-64] (beta) + - [Tinkerboard (Beta)][tinker] + - [Odroid-C2 (Beta)][odroid-c2] + + - As a virtual appliance: + + - [OVA][Virtual Appliance] + - [VMDK][vmdk] + +2. Install Hass.io: + + - Flash the downloaded image to an SD card using [Etcher][etcher]. We recommend at least a 32 GB SD card to avoid running out of space. + - Load the appliance image into your virtual machine software. + +3. Optional - set up the WiFi or static IP: On a USB stick, create the `network/my-network` file and follow the [HassOS howto][hassos-network]. -- Flash the downloaded image to an SD card using [Etcher][etcher]. We recommend at least a 32 GB SD card to avoid running out of space. +4. For image based installs insert the SD card (and optional USB stick) into the device. -- Optional - Setup the WiFi or static IP: On a USB stick, create the `network/my-network` file and follow the [HassOS howto][hassos-network]. -- Insert the SD card (and optional USB stick) into the Raspberry Pi and turn it on. On first boot, it downloads the latest version of Home Assistant which takes ~20 minutes (slower/faster depending on the platform). +5. Turn on your device or virtual appliance. On first boot, it downloads the latest version of Home Assistant which takes around 20 minutes (slower/faster depending on the platform and your Internet connection). - + -- You will be able to reach your installation at [http://hassio.local:8123][local]. -- Enable either the [Samba add-on][samba] or the [SSH add-on][ssh] to manage your configuration in `/config/` (From the UI choose **Hass.io** which is located in the sidebar). +6. You will be able to reach your installation at [http://hassio.local:8123][local] (if your router supports mDNS, otherwise see below). + +7. Enable either the [Samba add-on][samba] or the [SSH add-on][ssh] to manage your configuration in `/config/` (From the UI choose **Hass.io** which is located in the sidebar).

If your router doesn't support mDNS, then you'll have to use the IP address of your Pi instead of `hassio.local`. For example, `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router.

+

+If you are using a Raspberry Pi please remember to ensure you're using an [appropriate power supply][pi-power] with your Pi. Mobile chargers may not be suitable since some were only designed to provide just enough power to the device it was designed for by the manufacturer. **Do not** try to power the Pi from the USB port on a TV, computer, or similar. +

+ +Now you can [configure][configure] your install. + ### {% linkable_title Migrating from a non-Hass.io install %} If you copy over your existing Home Assistant configuration, make sure to enable the Hass.io panel by adding either `discovery:` or `hassio:` to your configuration. @@ -72,7 +87,7 @@ $ curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/ When you use this installation method, the core SSH add-on may not function correctly. If that happens, use the community SSH add-on. Some of the documentation might not work for your installation either.

-A detailed guide about running Hass.io as a virtual machine is available in the [blog](/blog/2017/11/29/hassio-virtual-machine/). +A detailed guide about running Hass.io as a virtual machine is available in the [blog][hassio-vm]. [etcher]: https://etcher.io/ [Virtual Appliance]: https://github.com/home-assistant/hassos/blob/dev/Documentation/boards/ova.md @@ -89,3 +104,6 @@ A detailed guide about running Hass.io as a virtual machine is available in the [local]: http://hassio.local:8123 [samba]: /addons/samba/ [ssh]: /addons/ssh/ +[pi-power]: https://www.raspberrypi.org/help/faqs/#powerReqs +[hassio-vm]: /blog/2017/11/29/hassio-virtual-machine/ +[configure]: /getting-started/configuration/ diff --git a/source/help/reporting_issues.markdown b/source/help/reporting_issues.markdown index d2290788c55f..2bc89b048caa 100644 --- a/source/help/reporting_issues.markdown +++ b/source/help/reporting_issues.markdown @@ -31,7 +31,7 @@ If possible, provide the latest release of which you know that the component or ### {% linkable_title Operating environment (Hass.io/Docker/Windows/etc.) %} -There are many different ways to run Home Assistant. In this section please mention which you are using, e.g. manual installation, [Hass.io](/hassio/), Hasbian or as container (Docker). It can help if you mention which operating system you are using because not all are supported on the same level. +There are many different ways to run Home Assistant. In this section please mention which you are using, e.g., manual installation, [Hass.io](/hassio/), Hasbian or as container (Docker). It can help if you mention which operating system you are using because not all are supported on the same level. ### {% linkable_title Component/platform %} diff --git a/source/images/blog/2018-10-release-80/config-ifttt.png b/source/images/blog/2018-10-release-80/config-ifttt.png new file mode 100644 index 000000000000..198091207f89 Binary files /dev/null and b/source/images/blog/2018-10-release-80/config-ifttt.png differ diff --git a/source/images/blog/2018-10-release-80/lovelace-glance-sensor.png b/source/images/blog/2018-10-release-80/lovelace-glance-sensor.png new file mode 100644 index 000000000000..c172071b5b42 Binary files /dev/null and b/source/images/blog/2018-10-release-80/lovelace-glance-sensor.png differ diff --git a/source/images/lovelace/lovelace_gauge_card.gif b/source/images/lovelace/lovelace_gauge_card.gif new file mode 100644 index 000000000000..723d4785ff34 Binary files /dev/null and b/source/images/lovelace/lovelace_gauge_card.gif differ diff --git a/source/images/supported_brands/fios.svg b/source/images/supported_brands/fios.svg new file mode 100644 index 000000000000..c2bc459e43b0 --- /dev/null +++ b/source/images/supported_brands/fios.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/source/images/supported_brands/transport_nsw.png b/source/images/supported_brands/transport_nsw.png new file mode 100644 index 000000000000..186ea62def07 Binary files /dev/null and b/source/images/supported_brands/transport_nsw.png differ diff --git a/source/ios/beta.markdown b/source/ios/beta.markdown index da0a5e1f3d74..100994d7f51b 100644 --- a/source/ios/beta.markdown +++ b/source/ios/beta.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Join Home Assistant iOS beta" -description: "Invititation to join the Home Assistant iOS beta." +description: "Invitation to join the Home Assistant iOS beta." release_date: 2016-10-24 15:00:00 -0700 sidebar: true comments: false diff --git a/source/javascripts/libs/swfobject-dynamic.js b/source/javascripts/libs/swfobject-dynamic.js index b021614524fa..a94423494226 100644 --- a/source/javascripts/libs/swfobject-dynamic.js +++ b/source/javascripts/libs/swfobject-dynamic.js @@ -202,7 +202,7 @@ var swfobject = function() { function hasPlayerVersion(rv) { var pv = ua.pv, v = rv.split("."); v[0] = parseInt(v[0], 10); - v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0" + v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g., "9" instead of "9.0.0" v[2] = parseInt(v[2], 10) || 0; return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; } diff --git a/source/lovelace/index.markdown b/source/lovelace/index.markdown index 848cfeef1883..5bb15411593e 100644 --- a/source/lovelace/index.markdown +++ b/source/lovelace/index.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +redirect_from: /components/lovelace/ ---

@@ -116,7 +117,7 @@ views: Now restart Home Assistant, navigate to `/lovelace`. When you make changes to `ui-lovelace.yaml`, you don't have to restart Home Assistant or refresh the page. Just hit the refresh button at the top of the UI. ## {% linkable_title Setting Lovelace as the Default UI %} -Once you are ready to start using Lovelace UI as your main user interface, click on info, the "i" icon under 'Developer Tools" in the Home Assistant side-bar. Next, locate >>Set Lovelace as default page on this device<< under the Home Assistant version information and click it. +Once you are ready to start using Lovelace UI as your main user interface, click on info, the "i" icon under 'Developer Tools" in the Home Assistant side-bar. Next, locate >>Set Lovelace as default page on this device<< under the Home Assistant version information and click it. Note that this is a per-device setting and will need to be changed on each device you access the UI from. @@ -136,7 +137,7 @@ This is probably because your version of Firefox doesn't have custom components ### {% linkable_title Custom cards don't load on my iOS device? %} -Home Assistant comes with two versions of the frontend. A compatability mode for older devices and a modern mode. The custom cards need to target one mode and usually choose the modern mode. Before Home Assistant 0.76, we had an issue in the automation and script editor that prevented modern iOS and Mac devices running Safari from using the modern mode. +Home Assistant comes with two versions of the frontend. A compatibility mode for older devices and a modern mode. The custom cards need to target one mode and usually choose the modern mode. Before Home Assistant 0.76, we had an issue in the automation and script editor that prevented modern iOS and Mac devices running Safari from using the modern mode. If you can, resolve this issue by upgrading to Home Assistant 0.76 or later. If you are on an older version and don't mind that the automation and script editor don't work on iOS devices, you can force the new version via the configuration: diff --git a/source/lovelace/views.markdown b/source/lovelace/views.markdown index e25c77b39a4d..725f43894f17 100644 --- a/source/lovelace/views.markdown +++ b/source/lovelace/views.markdown @@ -82,7 +82,7 @@ Picture card config: ## {% linkable_title Icons %} -If you define an icon the title will be used as a tooltip. +If you define an icon the title will be used as a tool-tip. ### {% linkable_title Example %}