-
-This platform is an alternative to the [`bom`](#sensor) sensor.
-The weather platform is easier to configure but less customizable.
-
-
-
-## Camera
-
-The `bom` camera platform uses the [Australian Bureau of Meteorology (BOM)](http://www.bom.gov.au) [radar web service](http://www.bom.gov.au/australia/radar/) as a source to generate an animated radar image.
-
-To add the BOM camera to your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-camera:
- - platform: bom
- location: YOUR_LOCATION
-```
-
-See below for a list of valid `location` values, and subsitute one for `YOUR_LOCATION`.
-
-{% configuration %}
-location:
- description: Required unless `id` is specified. See below for a list of valid locations.
- required: true
- type: string
-name:
- description: Allows you to override the Home Assistant-generated camera name.
- required: false
- type: string
-id:
- description: Allows you to manually specify a BOM Radar ID (either `location` or `id` must be defined, but not both).
- required: false
- type: integer
-delta:
- description: Time in seconds between BOM radar images available for this radar. Optional if `location` is defined; required if `id` is defined.
- required: false
- type: integer
-frames:
- description: Number of frames in the animated GIF. Optional if `location` is defined; required if `id` is defined.
- required: false
- type: integer
-filename:
- description: Periodically save the animated GIF image to this filesystem path.
- required: false
- type: string
-{% endconfiguration %}
-
-### Valid `location` values
-
-```txt
-Adelaide Albany AliceSprings Bairnsdale Bowen
-Brisbane Broome Cairns Canberra Carnarvon
-Ceduna Dampier Darwin Emerald Esperance
-Geraldton Giles Gladstone Gove Grafton
-Gympie HallsCreek Hobart Kalgoorlie Katherine
-Learmonth Longreach Mackay Marburg Melbourne
-Mildura Moree MorningtonIs MountIsa MtGambier
-Namoi Newcastle Newdegate NorfolkIs NWTasmania
-Perth PortHedland Rainbow SellicksHill SouthDoodlakine
-Sydney Townsville WaggaWagga Warrego Warruwi
-Watheroo Weipa WillisIs Wollongong Woomera
-Wyndham Yarrawonga
-```
-
-### Examples
-
-#### Using `location` and `name`
-
-Example `configuration.yaml` entry to display the `Townsville` radar with a camera named `mytowsvilleradar`:
-
-```yaml
-camera:
- - platform: bom
- name: mytownsvilleradar
- location: Townsville
-```
-
-#### Using `id`, `delta` and `frames`
-
-In the event BOM creates a new radar, or a radar's ID changes, you may define a custom `id` along with corresponding `delta` and `frames` values. You may also specify custom `delta` and `frames` values, along with a valid `location`, to override the default values for an existing radar. You may not define `location` and `id` in the same entity; you must specify one or the other. If `id` is specified, then `delta` and `frames` values _must_ be provided. If `location` is specified, `delta` and `frames` _may_ be provided to override the default values.
-
-To find a live radar ID (e.g., for the `Townsville` radar), visit the [BOM website's radars page](http://www.bom.gov.au/australia/radar/), click the link for the radar you are interested in, and note the URL, for example: `http://www.bom.gov.au/products/IDR733.loop.shtml`. The ID is the number following `IDR` (i.e., `733`) in the URL. You can also see, at the bottom of the radar image, a rotating set of times corresponding to the frames of the BOM's JavaScript-driven animation. The number of minutes (in seconds) between these times corresponds to the camera's `delta` value, and the number of frames corresponds to the `frames` value. At the time of this writing, the `Townsville` radar loop is composed of 4 frames at 10-minute (600 second) intervals. Since these are also the default values, this configuration block
-
-```yaml
-camera:
- - platform: bom
- location: Townsville
-```
-
-is equivalent to this one
-
-```yaml
-camera:
- - platform: bom
- id: '053'
- delta: 600
- frames: 4
- name: 'Carnarvon'
-```
-
-#### Using `filename`
-
-This option can be specified to save the animated radar-imagery GIF to the given filesystem path.
-
-Example `configuration.yaml` entry to display the `Sydney` radar and save the animated GIF to a file named `sydneyradar.gif` to the filesystem path accessible as `/local/sydneyradar.gif` via Home Assistant's web server:
-
-```yaml
-camera:
- - platform: bom
- id: Sydney
- filename: /config/www/images/sydneyradar.gif
-```
-
-The file will be updated every `delta` seconds when the camera regenerates the animation.
-
-## Sensor
-
-The `bom` sensor platform uses the [Australian Bureau of Meteorology (BOM)](http://www.bom.gov.au) as a source for current (half-hourly) meteorological data.
-
-- Each sensor will be given the `device_id` of "bom [optionalname] friendlyname units"
-- A name is optional but if multiple BOM weather stations are used a name will be required.
-- The sensor checks for new data every minute, starting 30 minutes after the timestamp of the most recent data as the data is updated every half-hour.
-
-To add the BOM weather observation to your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: bom
- monitored_conditions:
- - apparent_t
- - cloud
- - cloud_base_m
- - cloud_oktas
- - cloud_type_id
- - cloud_type
- - delta_t
- - gust_kmh
- - gust_kt
- - air_temp
- - dewpt
- - local_date_time
- - local_date_time_full
- - press
- - press_qnh
- - press_msl
- - press_tend
- - rain_trace
- - rel_hum
- - sea_state
- - swell_dir_worded
- - swell_height
- - swell_period
- - vis_km
- - weather
- - wind_dir
- - wind_spd_kmh
- - wind_spd_kt
-```
-
-To get the station ID for any BOM station:
-- Find your station on these maps: [NSW](http://www.bom.gov.au/nsw/observations/map.shtml), [QLD](http://www.bom.gov.au/qld/observations/map.shtml), [VIC](http://www.bom.gov.au/vic/observations/map.shtml), [WA](http://www.bom.gov.au/wa/observations/map.shtml), [SA](http://www.bom.gov.au/sa/observations/map.shtml), [TAS](http://www.bom.gov.au/tas/observations/map.shtml), [ACT](http://www.bom.gov.au/act/observations/canberramap.shtml), [NT](http://www.bom.gov.au/nt/observations/map.shtml).
- - alternatively, from the [BOM website](http://www.bom.gov.au/), navigate to State -> Observations -> Latest Observations -> Choose the station.
-- The URL will look like `http://www.bom.gov.au/products/IDx60901/[station].shtml`
-- For Adelaide, the URL will look like `http://www.bom.gov.au/products/IDS60901/IDS60901.94648.shtml`; the station ID is `IDS60901.94648`.
-
-{% 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: Dew 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 height 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`](#configuration) weather platform.
-The weather platform is easier to configure but less customisable.
-
-
diff --git a/source/_integrations/browser.markdown b/source/_integrations/browser.markdown
index d465b0b749a..bde2690d652 100644
--- a/source/_integrations/browser.markdown
+++ b/source/_integrations/browser.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to setup the browser integration with Home Assi
ha_category:
- Utility
ha_release: pre 0.7
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_domain: browser
---
diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown
index c42fb088fea..6348de7782a 100644
--- a/source/_integrations/calendar.markdown
+++ b/source/_integrations/calendar.markdown
@@ -2,7 +2,7 @@
title: Calendar
description: Instructions on how to integrate calendars within Home Assistant.
ha_release: 0.33
-ha_iot_class: ~
+ha_iot_class:
ha_domain: calendar
---
diff --git a/source/_integrations/camera.markdown b/source/_integrations/camera.markdown
index f6acec3ae43..eb595cde8a9 100644
--- a/source/_integrations/camera.markdown
+++ b/source/_integrations/camera.markdown
@@ -6,7 +6,7 @@ ha_category:
ha_release: 0.7
ha_quality_scale: internal
ha_domain: camera
-ha_iot_class: ~
+ha_iot_class:
---
The camera integration allows you to use IP cameras with Home Assistant.
diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown
index 49c072a9b23..2fe9861df4f 100644
--- a/source/_integrations/cast.markdown
+++ b/source/_integrations/cast.markdown
@@ -89,6 +89,21 @@ Optional:
service: media_player.play_media
```
+### Plex
+
+To cast media directly from a configured Plex server, set the fields [as documented in the Plex integration](/integrations/plex/#service-play_media) and prepend the `media_content_id` with `plex://`:
+
+```yaml
+'cast_plex_to_chromecast':
+ alias: Cast Plex to Chromecast
+ sequence:
+ - service: media_player.play_media
+ data:
+ entity_id: media_player.chromecast
+ media_content_type: movie
+ media_content_id: 'plex://{"library_name": "Movies", "title": "Groundhog Day"}'
+```
+
## Advanced use
### Manual configuration
diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown
index fcd446e2626..338233d60b3 100644
--- a/source/_integrations/climate.markdown
+++ b/source/_integrations/climate.markdown
@@ -6,7 +6,7 @@ ha_category:
ha_release: 0.19
ha_quality_scale: internal
ha_domain: climate
-ha_iot_class: ~
+ha_iot_class:
---
The Climate integration allows you to control and monitor HVAC (heating, ventilating, and air conditioning) devices and thermostats.
diff --git a/source/_integrations/climate.modbus.markdown b/source/_integrations/climate.modbus.markdown
index ab74ffeac3f..1deeeab1c4b 100644
--- a/source/_integrations/climate.modbus.markdown
+++ b/source/_integrations/climate.modbus.markdown
@@ -17,21 +17,25 @@ To use your Modbus thermostat in your installation, add the following to your `c
```yaml
# Example configuration.yaml entry
-climate:
- - platform: modbus
- name: Watlow F4T
- hub: hub1
- slave: 1
- data_type: uint
- data_count: 1
- scale: 0.1
- offset: 0
- precision: 1
- max_temp: 30
- min_temp: 15
- temp_step: 1
- target_temp_register: 2782
- current_temp_register: 27586
+modbus:
+ - name: hub1
+ type: tcp
+ host: IP_ADDRESS
+ port: 502
+
+ climates:
+ - name: Watlow F4T
+ slave: 1
+ data_type: uint
+ data_count: 1
+ scale: 0.1
+ offset: 0
+ precision: 1
+ max_temp: 30
+ min_temp: 15
+ temp_step: 1
+ target_temp_register: 2782
+ current_temp_register: 27586
```
{% configuration %}
@@ -39,11 +43,6 @@ name:
description: Name of the device
required: true
type: string
-hub:
- description: The name of the hub.
- required: false
- default: default
- type: string
slave:
description: The number of the slave (Optional for tcp and upd Modbus, use 1).
required: true
@@ -66,6 +65,11 @@ data_type:
required: false
type: string
default: float
+structure:
+ description: "If `data_type` is custom specified a double-quoted Python struct is expected here, to format the string to unpack the value. See Python documentation for details. Example: `>i`."
+ required: false
+ type: string
+ default: ">f"
data_count:
description: Number of registers to read.
required: false
@@ -106,6 +110,11 @@ temperature_unit:
required: false
type: string
default: C
+scan_interval:
+ description: Defines the update interval of the sensor in seconds.
+ required: false
+ type: integer
+ default: 15
{% endconfiguration %}
diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown
index f8637173d6f..d97301e80a7 100644
--- a/source/_integrations/cloudflare.markdown
+++ b/source/_integrations/cloudflare.markdown
@@ -7,7 +7,9 @@ ha_release: 0.74
ha_iot_class: Cloud Push
ha_codeowners:
- '@ludeeus'
+ - '@ctalkington'
ha_domain: cloudflare
+ha_config_flow: true
---
With the `cloudflare` integration, you can keep your Cloudflare records up to date.
@@ -26,43 +28,25 @@ Due to a limitation in the Cloudflare API, you can not use this integration with
-## Setup
+## Requirements
-You can find your global API key in your Cloudflare account settings.
+
+
+On older versions of Home Assistant, this integration used the account email and Global API Key to authenticate.
+
+As of Home Assistant 0.117, API Tokens are now used to authenticate.
+
+
+
+Setup requires an API Token created with Zone:Zone:Read and Zone:DNS:Edit permissions for all zones in your account.
+
+An easy way to create this is to start with the "Edit zone DNS" template then add Zone:Zone:Read to the permissions.
+
+[Cloudflare API Tokens Guide](https://developers.cloudflare.com/api/tokens/create)
## Configuration
-To use the integration in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-cloudflare:
- email: YOUR_EMAIL_ADDRESS
- api_key: YOUR_GLOBAL_API_KEY
- zone: EXAMPLE.COM
- records:
- - ha
- - www
-```
-
-{% configuration cloudflare %}
-email:
- description: The email address for your Cloudflare account.
- required: true
- type: string
-api_key:
- description: The global API key for your Cloudflare account.
- required: true
- type: string
-zone:
- description: The DNS zone (domain) you want to update.
- required: true
- type: string
-records:
- description: A list of records (subdomains) you want to update.
- required: true
- type: list
-{% endconfiguration %}
+Go to the integrations page in your configuration and click on new integration -> Cloudflare.
## Additional information
@@ -70,10 +54,6 @@ records:
This platform uses the API from [ipify.org](https://www.ipify.org/) to set the public IP address.
-### API Key
-
-Please note that the `api_key` is the [global API key](https://support.cloudflare.com/hc/en-us/articles/200167836-Managing-API-Tokens-and-Keys#12345682) of your Cloudflare account (not the API Token).
-
### Home Assistant Companion App
If you would like to use [iOS App](https://companion.home-assistant.io/) via Cloudflare set **Minimum TLS version as 1.2**, in order to do that, do the following:
@@ -89,20 +69,6 @@ Other settings should not cause any issues.
For SSH usage (according to [this](https://blog.cloudflare.com/cloudflare-now-supporting-more-ports/) source), you need to connect directly to your server (bypassing Cloudflare). To do that, create a `CNAME` DNS record, e.g., `ssh.example.com`, with proxy status as "DNS only" (to do that click on orange icon, it will change color to gray) and then connect to `ssh.example.com` using your server SSH port.
-### Using Cloudflare domain only for Home Assistant
-
-If you want to update just a main domain, place in the records list only your domain, e.g., `example.com`. It will update your `A` DNS record with your IP every hour.
-
-```yaml
-# Example configuration.yaml entry for one domain
-cloudflare:
- email: YOUR_EMAIL_ADDRESS
- api_key: YOUR_GLOBAL_API_KEY
- zone: EXAMPLE.COM
- records:
- - EXAMPLE.COM
-```
-
#### The minimum DNS record settings (if you have set up HTTPS already)
To redirect from your domain to the IP address of your Home Assistant server set this DNS record:
diff --git a/source/_integrations/concord232.markdown b/source/_integrations/concord232.markdown
index eb9096cf930..c82c260fcc1 100644
--- a/source/_integrations/concord232.markdown
+++ b/source/_integrations/concord232.markdown
@@ -7,7 +7,6 @@ ha_category:
- Binary Sensor
ha_iot_class: Local Polling
ha_release: 0.31
-ha_iot_class: Local Polling
ha_domain: concord232
---
diff --git a/source/_integrations/config.markdown b/source/_integrations/config.markdown
index 52e9604fffe..5fb202cbac9 100644
--- a/source/_integrations/config.markdown
+++ b/source/_integrations/config.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to setup the configuration panel for Home Assis
ha_category:
- Front End
ha_release: 0.39
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
diff --git a/source/_integrations/configurator.markdown b/source/_integrations/configurator.markdown
index 4f1bca64b1f..3effd6a2634 100644
--- a/source/_integrations/configurator.markdown
+++ b/source/_integrations/configurator.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to integrate the configurator in your component
ha_category:
- Other
ha_release: 0.7
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
diff --git a/source/_integrations/cover.markdown b/source/_integrations/cover.markdown
index c8300a17fde..9d1d05e2388 100644
--- a/source/_integrations/cover.markdown
+++ b/source/_integrations/cover.markdown
@@ -8,7 +8,7 @@ ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
ha_domain: cover
-ha_iot_class: ~
+ha_iot_class:
---
Home Assistant can give you an interface to control covers such as rollershutters, blinds, and garage doors.
diff --git a/source/_integrations/cover.template.markdown b/source/_integrations/cover.template.markdown
index c7b0c16507b..215db5e5844 100644
--- a/source/_integrations/cover.template.markdown
+++ b/source/_integrations/cover.template.markdown
@@ -126,10 +126,6 @@ with this equivalent that returns `true`/`false` and never gives an unknown
result:
{% raw %}`{{ is_state('cover.source', 'open') }}`{% endraw %}
-### Working without entities
-
-If you use a template that depends on the current time or some other non-deterministic result not sourced from entities, the template won't repeatedly update but will only update when the state of a referenced entity updates. For ways to deal with this issue, see [Working without entities](/integrations/binary_sensor.template/#working-without-entities) in the Template Binary Sensor integration.
-
## Optimistic Mode
In optimistic mode, the cover position state is maintained internally. This mode
diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown
index f2942beb1a3..d3fcfdaea9e 100644
--- a/source/_integrations/deconz.markdown
+++ b/source/_integrations/deconz.markdown
@@ -5,7 +5,9 @@ ha_category:
- Hub
- Binary Sensor
- Cover
+ - Fan
- Light
+ - Lock
- Scene
- Sensor
- Switch
@@ -28,6 +30,7 @@ There is currently support for the following device types within Home Assistant:
- [Climate](#climate)
- [Cover](#cover)
- [Light](#light)
+- [Lock](#lock)
- [Scene](#scene)
- [Sensor](#sensor)
- [Switch](#switch)
@@ -318,6 +321,12 @@ The `entity_id` name will be `cover.device_name`, where `device_name` is defined
- Keen vents
- Xiaomi Aqara Curtain controller
+## Fan
+
+Fans from deCONZ are currently a combination of a light and fan fixture.
+
+Note that devices in the fan platform identify as lights, so there is a manually curated list that defines which "lights" are fans. You, therefore, add a fan device as a light device in deCONZ (Phoscon App).
+
## Light
The `entity_id` names will be `light.device_name`, where `device_name` is defined in deCONZ. Light groups created in deCONZ will be created in Home Assistant as lights named `light.group_name_in_deconz`, allowing the user to control groups of lights with only a single API call to deCONZ.
@@ -344,6 +353,14 @@ The `entity_id` names will be `light.device_name`, where `device_name` is define
- Busch Jaeger Zigbee Light Link univ. relai (6711 U) with Zigbee Light Link control element 6735-84
- Xiaomi Aqara Smart LED Bulb (white) E27 ZNLDP12LM
+## Lock
+
+Locks are devices such as the Danalock Zigbee lock.
+
+Note that devices in the `lock` platform identify as lights, so there is a manually curated list that defines which "lights" are locks. You therefore add a lock device as a light device in deCONZ (Phoscon App).
+
+The `entity_id` name will be `lock.device_name`, where `device_name` is defined in deCONZ.
+
## Scene
The `entity_id` name will be `scene.group_scene_name`, where `group` is which group the scene belongs to and the name of the scene, both group and name are defined in deCONZ.
diff --git a/source/_integrations/device_tracker.markdown b/source/_integrations/device_tracker.markdown
index 4c5fafc0160..9c753058ac6 100644
--- a/source/_integrations/device_tracker.markdown
+++ b/source/_integrations/device_tracker.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to setup device tracking within Home Assistant.
ha_category:
- Presence Detection
ha_release: 0.7
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_domain: device_tracker
---
diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown
index c5f41361b94..015c6cb122c 100644
--- a/source/_integrations/discovery.markdown
+++ b/source/_integrations/discovery.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to setup Home Assistant to discover new devices
ha_category:
- Other
ha_release: 0.7
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_domain: discovery
---
diff --git a/source/_integrations/elkm1.markdown b/source/_integrations/elkm1.markdown
index 43d25ae5434..54a15f0861e 100644
--- a/source/_integrations/elkm1.markdown
+++ b/source/_integrations/elkm1.markdown
@@ -31,6 +31,9 @@ There is currently support for the following device types within Home Assistant:
- **Sensor** - Elk-M1 counters, keypads, panel, settings, and zones are represented as `sensor` entities.
- **Switch** - Elk-M1 outputs are represented as `switch` entities.
+The implementation follows the Elk Products ElkM1 "ASCII Protocol & Interface
+Specification, Revision 1.84" document. This document can be found on the Internet.
+
## ElkM1 Configuration and Version
In order for the ElkM1 integration to work to its fullest with Home Assistant the
@@ -119,7 +122,15 @@ The complete list of trouble statuses are:
To add `ElkM1` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Elk-M1 Control**.
-Alternatively, add the following section to your `configuration.yaml` file:
+Alternatively, configuration through the `configuration.yaml` file
+is supported (example below).
+
+Both methods of configuration support "auto configuration". This works by
+reporting only elements on the ElkM1 that have a "Name" configured.
+So, for example, if counter #11 on the panel was configured with
+the name "Test counter" then this element would show up in Home Assistant. If
+an element is being used but does not have a name configured then
+it will not appear in Home Assistant through the auto-configuration feature.
```yaml
# Example configuration.yaml entry
@@ -401,6 +412,16 @@ elkm1:
enabled: false
```
+## Events
+
+The ElkM1 integration supports the following event: `elkm1.keypad_key_pressed`.
+The event is generated whenever a key is pressed on an ElkM1 keypad.
+The `event_data` contains the following:
+
+- `keypad_id`: The number of the keypad that reported the keypress.
+- `key_name`: The name of the key that was pressed.
+- `key`: The number of the key that was pressed.
+
## Services
Besides the standard Home Assistant services for Climate, Light, Scene, Sensor,
@@ -409,7 +430,14 @@ and Switch the ElkM1 integration offers these additional services:
- `elkm1.alarm_arm_home_instant`
- `elkm1.alarm_arm_night_instant`
- `elkm1.alarm_arm_vacation`
+- `elkm1.alarm_bypass`
+- `elkm1.alarm_clear_bypass`
- `elkm1.alarm_display_message`
+- `elkm1.sensor_counter_refresh`
+- `elkm1.sensor_counter_set`
+- `elkm1.sensor_zone_bypass`
+- `elkm1.sensor_zone_trigger`
+- `elkm1.set_time`
- `elkm1.speak_phrase`
- `elkm1.speak_word`
@@ -423,6 +451,16 @@ respectively.
| `entity_id` | yes | ElkM1 area which to arm.
| `code` | no | Alarm code to arm the system (4 or 6 digits).
+### Services `elkm1.alarm_bypass` and `elkm1.alarm_clear_bypass`
+
+For all zones associated with the specified alarm panel these services respectively
+bypass or clear the bypass the zones.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | ElkM1 area which to bypass or clear bypass.
+| `code` | no | Alarm code to bypass the alarm panel (4 or 6 digits).
+
### Service `elkm1.alarm_display_message`
Display text on an area's keypads.
@@ -436,6 +474,52 @@ Display text on an area's keypads.
| `line1` | yes | Up to 16 characters of text (truncated if too long). Default blank.
| `line2` | yes | Up to 16 characters of text (truncated if too long). Default blank.
+### Service `elkm1.sensor_counter_refresh`
+
+Refresh the value of a counter. Note that under certain conditions the
+panel does not automatically send a new value under certain
+conditions. This service retrieves the current counter value.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | ElkM1 counter to refresh.
+
+### Service `elkm1.sensor_counter_set`
+
+Set counter to value.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | ElkM1 counter to refresh.
+| `value` | no | Value to set the counter to Can be 0-65536.
+
+### Service `elkm1.sensor_zone_bypass`
+
+Bypass a zone. Note that the only mechanism ElkM1 offers to clear the bypass
+is to clear all the bypassed zones in a given alarm panel (area).
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | ElkM1 zone which to bypass.
+| `code` | no | Alarm code to bypass the zone (4 or 6 digits).
+
+### Service `elkm1.sensor_zone_trigger`
+
+Cause a zone on the panel to trigger. This command creates a virtual momentary
+open condition on the zone as if the EOL hardwired loop had been physically opened.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | ElkM1 zone which to trigger.
+
+### Service `elkm1.set_time`
+
+Set the time on the panel. Uses the current time on the instance of Home Assistant.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `prefix` | yes | Prefix to identify panel when multiple panels configured.
+
### Service `elkm1.speak_phrase`
Speak a phrase. The list of phrases is defined in the ElkM1 ASCII Protocol documentation.
diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown
index 6b3842e919e..9dba8d86028 100644
--- a/source/_integrations/esphome.markdown
+++ b/source/_integrations/esphome.markdown
@@ -23,4 +23,4 @@ An ESPHome device can be set up via the **Integrations** menu: **Configuration**
* Complete the dialog box and click `SUBMIT`.
* **Host**: If the device is called `livingroom` in ESPHome, the hostname would be `livingroom.local`
* **Port**: The default port is `6053`
- * If the node has a password set, Home Assistant prompt for it.
+ * If the node has a password set, Home Assistant prompt for it.
diff --git a/source/_integrations/fan.markdown b/source/_integrations/fan.markdown
index 4ab86e1aa1e..d4cd431ba9d 100644
--- a/source/_integrations/fan.markdown
+++ b/source/_integrations/fan.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to setup Fan devices within Home Assistant.
ha_category:
- Fan
ha_release: 0.27
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_domain: fan
---
diff --git a/source/_integrations/fan.template.markdown b/source/_integrations/fan.template.markdown
index aef26db1021..09aa1495c9e 100644
--- a/source/_integrations/fan.template.markdown
+++ b/source/_integrations/fan.template.markdown
@@ -114,7 +114,3 @@ fan:
type: [string, list]
default: ['low', 'medium', 'high']
{% endconfiguration %}
-
-### Working without entities
-
-If you use a template that depends on the current time or some other non-deterministic result not sourced from entities, the template won't repeatedly update but will only update when the state of a referenced entity updates. For ways to deal with this issue, see [Working without entities](/integrations/binary_sensor.template/#working-without-entities) in the Template Binary Sensor integration.
\ No newline at end of file
diff --git a/source/_integrations/frontend.markdown b/source/_integrations/frontend.markdown
index 17c11e774ad..0173fbc9f71 100644
--- a/source/_integrations/frontend.markdown
+++ b/source/_integrations/frontend.markdown
@@ -4,7 +4,7 @@ description: Offers a frontend to Home Assistant.
ha_category:
- Other
ha_release: 0.7
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/frontend'
diff --git a/source/_integrations/geo_location.markdown b/source/_integrations/geo_location.markdown
index cffd62c9c0a..f1181b6b1b3 100644
--- a/source/_integrations/geo_location.markdown
+++ b/source/_integrations/geo_location.markdown
@@ -6,7 +6,7 @@ ha_category:
logo: geo_location.png
ha_release: 0.78
ha_domain: geo_location
-ha_iot_class: ~
+ha_iot_class:
---
Geolocation aware entities are typically related to events in the real world in the vicinity of Home Assistant's location, like for example weather events, bush fires or earthquakes.
diff --git a/source/_integrations/google_translate.markdown b/source/_integrations/google_translate.markdown
index 41dc6705cf2..a225fd433b1 100644
--- a/source/_integrations/google_translate.markdown
+++ b/source/_integrations/google_translate.markdown
@@ -5,8 +5,6 @@ ha_category:
- Text-to-speech
ha_release: 0.35
ha_iot_class: Cloud Push
-ha_codeowners:
- - '@awarecan'
ha_domain: google_translate
---
diff --git a/source/_integrations/gree.markdown b/source/_integrations/gree.markdown
new file mode 100644
index 00000000000..236a212709a
--- /dev/null
+++ b/source/_integrations/gree.markdown
@@ -0,0 +1,24 @@
+---
+title: Gree Climate
+description: Instructions on how to integrate Gree Smart devices within Home Assistant.
+ha_category:
+ - Climate
+ha_release: 0.117
+ha_iot_class: Local Polling
+ha_config_flow: true
+ha_codeowners:
+ - '@cmroche'
+ha_domain: gree
+---
+
+The Gree integration allows you to control a [Gree Smart HVAC](http://global.gree.com/).
+
+## Configuration
+
+Go to the integrations page in your configuration and click on **new integration** -> **Gree**.
+
+Gree Smart compatible devices are detected and added automatically.
+
+## Supported models
+
+Any Gree Smart device working with the Gree+ app should be supported, including non-Gree branded devices, including some sold by Trane.
diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown
index ae2a8744e1b..1394bda1544 100644
--- a/source/_integrations/group.markdown
+++ b/source/_integrations/group.markdown
@@ -97,4 +97,4 @@ It is possible to create a group that the system cannot calculate a group state.
Groups with entities from unsupported domains will always have an unknown state.
These groups can still be in templates with the `expand()` directive, called using the
-`homeassistant.turn_on` and `homeassistant.turn_off` services, etc.
\ No newline at end of file
+`homeassistant.turn_on` and `homeassistant.turn_off` services, etc.
diff --git a/source/_integrations/guardian.markdown b/source/_integrations/guardian.markdown
index 17088784c81..e33f507fc6b 100644
--- a/source/_integrations/guardian.markdown
+++ b/source/_integrations/guardian.markdown
@@ -39,6 +39,14 @@ Disable the device's onboard access point.
Enable the device's onboard access point.
+### `guardian.pair_sensor`
+
+Add a new paired sensor to the valve controller.
+
+| Service Data Attribute | Optional | Description |
+| ---------------------- | -------- | ------------------------------------------------ |
+| `uid` | yes | The unique device ID on the bottom of the sensor.|
+
### `guardian.reboot`
Reboot the device.
@@ -47,6 +55,14 @@ Reboot the device.
Fully (and irrecoverably) reset all valve diagnostics.
+### `guardian.unpair_sensor`
+
+Remove a paired sensor from the valve controller.
+
+| Service Data Attribute | Optional | Description |
+| ---------------------- | -------- | ------------------------------------------------ |
+| `uid` | yes | The unique device ID on the bottom of the sensor.|
+
### `guardian.upgrade_firmware`
Upgrade the device firmware.
@@ -56,3 +72,15 @@ Upgrade the device firmware.
| `url` | yes | The URL of the server hosting the firmware file. |
| `port` | yes | The port on which the firmware file is served. |
| `filename` | yes | The firmware filename. |
+
+*Note:* not all service calls are available on all Guardian valve controller firmwares.
+Please ensure you upgrade your valve controller to the latest firmware before opening
+bugs related to non-working service calls.
+
+## Paired Sensor Notes
+
+When a paired sensor is first added to the valve controller, it may return inaccurate or
+nonsensical values for several of its attributes, such as `battery` and `temperature`. This
+is due to the sensor never having communicated its data to the valve controller and can
+be fixed by moving the sensor around (so that it beeps, indicating that data has been
+sent to the valve controller).
diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown
index c83262290f3..83a5a11b7fb 100644
--- a/source/_integrations/hdmi_cec.markdown
+++ b/source/_integrations/hdmi_cec.markdown
@@ -6,6 +6,8 @@ ha_category:
ha_release: 0.23
ha_iot_class: Local Push
ha_domain: hdmi_cec
+ha_codeowners:
+ - '@newAM'
---
The `hdmi_cec` integration provides services that allow selecting the active device, powering on all devices, setting all devices to standby and creates switch entities for HDMI devices. Devices are defined in the configuration file by associating HDMI port number and a device name. Connected devices that provide further HDMI ports, such as sound-bars and AVRs are also supported. Devices are listed from the perspective of the CEC-enabled Home Assistant device. Any connected device can be listed, regardless of whether it supports CEC. Ideally the HDMI port number on your device will map correctly the CEC physical address. If it does not, use `cec-client` (part of the `libcec` package) to listen to traffic on the CEC bus and discover the correct numbers.
diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown
index 9dd71394246..657a413b0ff 100644
--- a/source/_integrations/history.markdown
+++ b/source/_integrations/history.markdown
@@ -8,7 +8,7 @@ ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
ha_domain: history
-ha_iot_class: ~
+ha_iot_class:
---
The `history` integration will track everything that is going on within Home
diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown
index 7963487d5d1..60db1f97b50 100644
--- a/source/_integrations/homekit.markdown
+++ b/source/_integrations/homekit.markdown
@@ -87,6 +87,11 @@ homekit:
description: The local network IP address. Only necessary if the default from Home Assistant does not work.
required: false
type: string
+ mode:
+ description: HomeKit can expose an entity via a bridge, or a single entity as an accessory which is needed for Television Media Players. ([Accessory mode](#accessory-mode))
+ required: false
+ type: string
+ default: '`bridge`'
safe_mode:
description: Only set this parameter if you encounter issues during pairing. ([Safe Mode](#safe-mode))
required: false
@@ -297,6 +302,16 @@ If you create a HomeKit integration via the UI (i.e., **Configuration** >> **Int
It is recommended to only edit a HomeKit instance in the UI that was created in the UI, and likewise, only edit a HomeKit instance in YAML that was created in YAML.
+### Accessory mode
+
+When exposing a Television media player (a `media_player` with device class `tv`) to HomeKit, `mode` must be set to `accessory`, and the include filter should be setup to only include the `media_player` entity. This can be accomplished in the UI with the following steps.
+
+1. Create a new bridge via the UI (i.e., **Configuration** >> **Integrations**)
+2. Before pairing the bridge, access the options for the bridge.
+3. Change the mode to `accessory`
+4. Select the `media_player` entity with the `tv` device class.
+5. Complete the options flow and pair as normal.
+
## Disable Auto Start
Depending on your setup, it might be necessary to disable `Auto Start` for all accessories to be available for `HomeKit`. Only those entities that are fully set up when the `HomeKit` integration is started, can be added. To start `HomeKit` when `auto_start: false`, you can call the service `homekit.start`.
diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown
index 5c8e151e137..2bd51136f71 100644
--- a/source/_integrations/homematic.markdown
+++ b/source/_integrations/homematic.markdown
@@ -382,6 +382,27 @@ action:
WEEK_PROGRAM_POINTER: 1
```
+Set the week program of a wall thermostat with explicit `rx_mode` (BidCos-RF only):
+
+```yaml
+...
+action:
+ service: homematic.put_paramset
+ data:
+ interface: wireless
+ address: LEQ1234567
+ paramset_key: MASTER
+ rx_mode: WAKEUP
+ paramset:
+ WEEK_PROGRAM_POINTER: 1
+```
+
+BidCos-RF devices have an optional parameter for put_paramset which defines the way the configuration data is sent to the device.
+
+`rx_mode` `BURST`, which is the default value, will wake up every device when submitting the configuration data and hence makes all devices use some battery. It is instant, i.e. the data is sent almost immediately.
+
+`rx_mode` `WAKEUP` will send the configuration data only after a device submitted updated values to CCU, which usually happens every 3 minutes. It will not wake up every device and thus saves devices battery.
+
Manually set lock on KeyMatic devices:
```yaml
diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown
index f542e14a8ae..51ae3cd0172 100644
--- a/source/_integrations/huawei_lte.markdown
+++ b/source/_integrations/huawei_lte.markdown
@@ -23,7 +23,7 @@ There is currently support for the following platforms within Home Assistant:
- Presence detection - device tracker for connected devices
- Notifications - via SMS
-- Sensors - device, network, signal, SMS count, and traffic information
+- Sensors - device, network, signal, SMS count, traffic, and battery information
- Switch - mobile data on/off
- Binary sensor - mobile and Wi-Fi connection status, SMS storage full/not
diff --git a/source/_integrations/humidifier.markdown b/source/_integrations/humidifier.markdown
index 1ee39e3e2a0..2c4b20d0e3e 100644
--- a/source/_integrations/humidifier.markdown
+++ b/source/_integrations/humidifier.markdown
@@ -9,7 +9,7 @@ ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
- '@Shulyaka'
-ha_iot_class: ~
+ha_iot_class:
---
The `humidifier` integration is built for the controlling and monitoring of humidifiers, dehumidifiers, and hygrostat devices.
diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown
index 71e006dff24..795ed972793 100644
--- a/source/_integrations/influxdb.markdown
+++ b/source/_integrations/influxdb.markdown
@@ -102,14 +102,19 @@ precision:
description: Set this to specify the time precision sent to influxdb. Setting a coarser precision allows InfluxDb to compress your data better. If not set, defaults to ns.
required: false
default: ns
+measurement_attr:
+ type: string
+ description: "State object attribute(s) to use as measurement name. Possible values: `unit_of_measurement`, `domain__device_class` or `entity_id`."
+ required: false
+ default: unit_of_measurement
default_measurement:
type: string
- description: Measurement name to use when an entity doesn't have a unit.
+ description: Measurement name to use when the measurement_attr state attribute does not exist, e.g. 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 a unit or default measurement. This will store all data points in a single measurement.
+ description: Measurement name to use instead of measurement_attr or default measurement. This will store all data points in a single measurement.
required: false
exclude:
type: list
diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown
index bd0989073d4..2789873d879 100644
--- a/source/_integrations/input_boolean.markdown
+++ b/source/_integrations/input_boolean.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to integrate the Input Boolean integration into
ha_category:
- Automation
ha_release: 0.11
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown
index 3a4b9c8898d..ae23d9a9c01 100644
--- a/source/_integrations/input_datetime.markdown
+++ b/source/_integrations/input_datetime.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to integrate the Input Datetime integration int
ha_category:
- Automation
ha_release: 0.55
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown
index 34a64c9bd3b..463ad017943 100644
--- a/source/_integrations/input_number.markdown
+++ b/source/_integrations/input_number.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to integrate the Input Number integration into
ha_category:
- Automation
ha_release: 0.55
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown
index 185401ad7e3..fb941c3b400 100644
--- a/source/_integrations/input_select.markdown
+++ b/source/_integrations/input_select.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to integrate the Input Select integration into
ha_category:
- Automation
ha_release: 0.13
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown
index 0a39b287c95..59cf2696b52 100644
--- a/source/_integrations/input_text.markdown
+++ b/source/_integrations/input_text.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to integrate the Input Text integration into Ho
ha_category:
- Automation
ha_release: 0.53
-ha_iot_class: ~
+ha_iot_class:
ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown
index 85b9bad2729..c59d1ecd14e 100644
--- a/source/_integrations/light.markdown
+++ b/source/_integrations/light.markdown
@@ -6,7 +6,7 @@ ha_category:
ha_release: pre 0.7
ha_quality_scale: internal
ha_domain: light
-ha_iot_class: ~
+ha_iot_class:
---
This integration allows you to track and control various light bulbs. Read the integration documentation for your particular light hardware to learn how to enable it.
diff --git a/source/_integrations/light.template.markdown b/source/_integrations/light.template.markdown
index 43499135117..e049f8041cc 100644
--- a/source/_integrations/light.template.markdown
+++ b/source/_integrations/light.template.markdown
@@ -146,10 +146,6 @@ with this equivalent that returns `true`/`false` and never gives an unknown
result:
{% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %}
-### Working without entities
-
-If you use a template that depends on the current time or some other non-deterministic result not sourced from entities, the template won't repeatedly update but will only update when the state of a referenced entity updates. For ways to deal with this issue, see [Working without entities](/integrations/binary_sensor.template/#working-without-entities) in the Template Binary Sensor integration.
-
## Examples
In this section you will find some real-life examples of how to use this light.
diff --git a/source/_integrations/lock.markdown b/source/_integrations/lock.markdown
index e71041f2e0a..e276586955d 100644
--- a/source/_integrations/lock.markdown
+++ b/source/_integrations/lock.markdown
@@ -6,7 +6,7 @@ ha_category:
ha_release: 0.9
ha_quality_scale: internal
ha_domain: lock
-ha_iot_class: ~
+ha_iot_class:
---
Keeps track which locks are in your environment, their state and allows you to control them.
diff --git a/source/_integrations/lock.template.markdown b/source/_integrations/lock.template.markdown
index e245016fa18..6fcaa78f0b0 100644
--- a/source/_integrations/lock.template.markdown
+++ b/source/_integrations/lock.template.markdown
@@ -79,10 +79,6 @@ lock:
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 %}`{{ is_state('switch.source', 'on') }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %}
-### Working without entities
-
-If you use a template that depends on the current time or some other non-deterministic result not sourced from entities, the template won't repeatedly update but will only update when the state of a referenced entity updates. For ways to deal with this issue, see [Working without entities](/integrations/binary_sensor.template/#working-without-entities) in the Template Binary Sensor integration.
-
## Examples
In this section, you find some real-life examples of how to use this lock.
diff --git a/source/_integrations/logbook.markdown b/source/_integrations/logbook.markdown
index 9e2afb2154c..c8eaa7bca18 100644
--- a/source/_integrations/logbook.markdown
+++ b/source/_integrations/logbook.markdown
@@ -5,7 +5,7 @@ ha_category:
- History
ha_release: 0.7
ha_domain: logbook
-ha_iot_class: ~
+ha_iot_class:
---
+The two APIs support different features and devices. The SDM API integration is currently under development and does not yet support everything in the API either.
+
There is currently support for the following device types within Home Assistant:
-- [Binary Sensor](#binary-sensor)
-- [Camera](#camera)
-- [Climate](#climate)
-- [Sensor](#sensor)
+- [Binary Sensor](#binary-sensor-legacy-api-only) (Legacy API Only)
+- [Camera](#camera) (Both APIs)
+- [Climate](#climate-legacy-api-only) (Legacy API Only)
+- [Sensor](#sensor) (Both APIs)
-### Setting up developer account
+## Device Access: Developer Account Setup
+
+You will need to follow the instructions in [Device Access Registration](https://developers.google.com/nest/device-access/registration), which includes the following steps in the
+Quick Start Guide:
+
+- Accept the Terms of Service.
+- Pay a fee (currently US$5).
+- Register in the Device Access Console to get a `project_id`.
+- Authorize your Google Account and create OAuth credentials to get a `client_id` and `client_secret`.
+- Enable pubsub events in the Device Access Console (creates a topic).
+- Create a pull subscription to get a `subscriber_id` ("Subscription ID" in Google Cloud Console).
+It is currently not possible to share/be invited to a home with a G-Suite account. Make sure that you pay the fee with an account that has access to your devices.
+
- New users are not currently able to set up a Works With Nest Developer account due to the change announced by Google. We will reach out to Nest to see if we can become a partner so that users joining Home Assistant after [August 2019](/blog/2019/05/08/nest-data-bye-bye/) can still use Nest. In the future we will add documentation on how to setup a Works With Google account and configure your Nest integration.
+Additionally, Home Assistant must be configured with a URL (e.g., external exposed [`http`](/integrations/http/), Nabu Casa, etc). When setting up the OAuth credentials, make sure the Home Assistant URL is in the list of *Authorized redirect URIs*, so the redirect back to Home Assistant can get an OAuth authorization code.
+Follow all of the instructions in [Device Access: Quick Start Guide](https://developers.google.com/nest/device-access/get-started) carefully as it is easy to make a configuration mistake that is difficult to debug. It is recommended to exercise the entire guide, including the command to test out the API, to make sure that it is working before configuring Home Assistant.
+
+It may be easiest to create a [Pub/Sub subscription](https://console.cloud.google.com/cloudpubsub/subscription/list) from the Google Cloud console. Make sure to use the *topic name* from the device access console and a unique subscription ID. Note the message retention is how long messages will queue while offline, so keep that short (e.g., under an hour) to avoid a potentially large backlog of updates.
+
+## Works With Nest: Developer Account Setup (Legacy)
+
+
+New users cannot set up a "Works With Nest Developer" account and instead should use the Device Access program. The instructions below only apply if you already have an account.
1. Visit [Nest Developers](https://developers.nest.com/), and sign in. Create an account if you don't have one already.
2. Fill in account details:
* The "Company Information" can be anything. We recommend using your name.
3. Submit changes
-4. Click "[Products](https://developers.nest.com/products)" at top of page.
+4. Click "[Products](https://developers.nest.com/products)" at the top of page.
5. Click "[Create New Product](https://developers.nest.com/products/new)"
6. Fill in details:
* Product name must be unique. We recommend [email] - Home Assistant.
* The description, users, URLs can all be anything you want.
* Leave the "Redirect URI" Field blank
-7. For permissions check every box and if it's an option select the read/write option. Note: there are important permissions under the "Other Permissions" category. If you are only adding a thermostat, do not just select the permissions under "Thermostat". You still need to check the boxes under "Other Permissions" in order to give you access to features like away mode, ETA, structure read/write, and postal code.
+7. For permissions, check every box and if it's an option, select the read/write option. Note: there are important permissions under the "Other Permissions" category. If you are only adding a thermostat, do not just select the permissions under "Thermostat". You still need to check the boxes under "Other Permissions" to give you access to features like away mode, ETA, structure read/write, and postal code.
* The description requires a specific format to be accepted.
* Use "[Home Assistant] [Edit] [For Home Automation]" as the description as it is not super important.
8. Click "Create Product"
@@ -51,13 +79,16 @@ There is currently support for the following device types within Home Assistant:
Connecting to the Nest Developer API requires outbound port 9553 on your firewall. The configuration will fail if this is not accessible.
-### Configuration
+## Configuration
```yaml
# Example configuration.yaml entry
nest:
client_id: CLIENT_ID
client_secret: CLIENT_SECRET
+ # Fields required by Device Access (SDM) API. Otherwise, use legacy API.
+ project_id: PROJECT_ID
+ subscriber_id: SUBSCRIBER_ID # ("Subscription ID" in Google Cloud Console)
```
```yaml
@@ -72,20 +103,43 @@ nest:
{% configuration %}
client_id:
- description: Your Nest developer client ID.
+ description: Your Device Access or Nest developer client ID.
required: true
type: string
client_secret:
- description: Your Nest developer client secret.
+ description: Your Device Access or Nest developer client secret.
required: true
type: string
+project_id:
+ description: Your Device Access Project ID. This enables the SDM API.
+ required: false
+ type: string
+subscriber_id:
+ description: Your Pub/sub Subscription ID used to receive events. This is required to use the SDM API.
+ type: string
+ required: false
structure:
- description: The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account.
+ description: The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account. Not currently supported by the SDM API.
required: false
type: list
{% endconfiguration %}
-### Service `set_away_mode`
+## Device Setup (SDM API)
+
+Once your developer account is set up and `nest` has been configured, you need to connect devices with the following steps:
+
+1. From the Home Assistant front-end, navigate to **Configuration** then **Integrations**. Under **Set up a new integration** locate 'Nest'.
+1. You should get redirected to Google to choose an account. This should be the same developer account you configured above.
+1. The *Google Nest permissions* screen will allow you to choose which devices to configure.
+1. You will get redirected back to another account selection page.
+1. Confirm you want to allow persistent access to Home Assistant.
+
+## Services (Legacy API Only)
+
+They Legacy API supports additional services for home/away/eta that are not
+supported by the SDM API.
+
+### Service `set_away_mode` (Legacy API Only)
You can use the service `nest/set_away_mode` to set the structure(s) to "Home" or "Away".
@@ -118,7 +172,7 @@ script:
- Apartment
```
-### Service `set_eta`
+### Service `set_eta` (Legacy API Only)
You can use the service `nest/set_eta` to set or update the estimated time of arrival window. Calling this service will automatically set the structure(s) to "Away". Structures must have an associated Nest thermostat in order to use ETA function.
@@ -156,7 +210,7 @@ script:
- Apartment
```
-### Service `cancel_eta`
+### Service `cancel_eta` (Legacy API Only)
You can use the service `nest/cancel_eta` to cancel an existing estimated time of arrival window. Structures must have an associated Nest thermostat in order to use ETA function.
@@ -189,7 +243,7 @@ script:
- Apartment
```
-### Troubleshooting
+## Troubleshooting (Legacy API Only)
- 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.
@@ -201,17 +255,17 @@ You must have the [Nest component](/integrations/nest/) configured to use the pl
-## Binary Sensor
+### Binary Sensor (Legacy API Only)
The `nest` binary sensor platform lets you monitor various states of your [Nest](https://nest.com) devices.
-You must have the [Nest component](/integrations/nest/) configured to use these sensors. The binary sensors will be setup if the `nest` integration is configured and the required configuration for the `nest binary sensor` is set.
+You must have the [Nest component](/integrations/nest/) configured to use these sensors. The binary sensors will be set up if the `nest` integration is configured and the required configuration for the `nest binary sensor` is set.
-## Configuration
+#### Configuration
To enable binary sensors and customize which sensors are setup, you can extend the [Nest component](/integrations/nest/) configuration in your `configuration.yaml` file with the following settings:
@@ -224,7 +278,7 @@ nest:
- 'target'
```
-By default all binary sensors for your available Nest devices will be monitored. Leave `monitored_conditions` blank to disable all binary sensors for the [Nest component](/integrations/nest/).
+By default, all binary sensors for your available Nest devices will be monitored. Leave `monitored_conditions` blank to disable all binary sensors for the [Nest component](/integrations/nest/).
{% configuration %}
monitored_conditions:
@@ -251,19 +305,19 @@ The following conditions are available by device:
- person\_detected
- sound\_detected
-## Camera
+### Camera (Legacy API Only)
The `nest` platform allows you to watch still frames from a video stream (not live stream) of your [Nest](https://nest.com/camera/meet-nest-cam/) camera in Home Assistant.
-The `nest` camera will automatically be setup when you do.
+The `nest` camera will automatically be set up when you do.
Nest Camera supports the `camera.turn_on` and `camera.turn_off` services since the 0.75 release.
-## Climate
+### Climate (Legacy API Only)
The `nest` climate platform lets you control a thermostat from [Nest](https://nest.com).
@@ -275,17 +329,18 @@ Please note due to limitations with the European Nest Thermostat E, integration
-
-The sensors will be setup if the `nest` integration is configured and the required configuration for the `nest sensor` is set.
-
+The SDM API will monitor all devices automatically once configured. The Legacy API has additional configuration for `nest sensor`.
-## Configuration
+#### Configuration
To enable sensors and customize which sensors are setup, you can extend the [Nest component](/integrations/nest/) configuration in your `configuration.yaml` file with the following settings:
@@ -298,7 +353,7 @@ nest:
- 'target'
```
-By default all sensors for your available Nest devices will be monitored. Leave `monitored_conditions` blank to disable all sensors for the [Nest component](/integrations/nest/).
+By default all, sensors for your available Nest devices will be monitored. Leave `monitored_conditions` blank to disable all sensors for the [Nest component](/integrations/nest/).
{% configuration %}
monitored_conditions:
@@ -325,7 +380,7 @@ The following conditions are available by device:
- `color_status`: `gray`, `green`, `yellow` or `red`. Indicates device status by color in the Nest app UI. It is an aggregate condition for battery+smoke+CO states, and reflects the actual color indicators displayed in the Nest app.
- Nest Camera: none
-## Security State
+### Security State (Legacy Only)
diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown
index d560d849e97..116f73df935 100644
--- a/source/_integrations/notify.markdown
+++ b/source/_integrations/notify.markdown
@@ -8,7 +8,7 @@ ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
ha_domain: notify
-ha_iot_class: ~
+ha_iot_class:
---
The `notify` integration makes it possible to send notifications to a wide variety of platforms. To use it you have to setup at least one notification target (notifier), check the [integrations list](/integrations/#notifications) for one that fits your use case.
diff --git a/source/_integrations/notify.tts.markdown b/source/_integrations/notify.tts.markdown
new file mode 100644
index 00000000000..9a54e5dcdf3
--- /dev/null
+++ b/source/_integrations/notify.tts.markdown
@@ -0,0 +1,51 @@
+---
+title: "Notify using TTS"
+description: "Instructions on how to set up a Notify integration using TTS service and media_player within Home Assistant."
+ha_category:
+ - Notifications
+ha_release: 0.117
+ha_iot_class: Local Push
+ha_quality_scale: internal
+ha_domain: notify
+---
+
+The notify TTS platform lets you use the TTS integration [Service Say](/integrations/tts/#service-say) and a [media_player](/integrations/media_player) to alert you of important events. This integration provides a simple interface to use in your automations and alerts.
+
+In order to use this integration, you must already have a TTS platform installed and configured, and a media_player working with the TTS platform.
+
+To enable this platform in your installation, consider the following example using [google_translate](/integrations/google_translate/) and an example `media_player.living_room`.
+
+In your `configuration.yaml` file type:
+
+```yaml
+tts:
+ - platform: google_translate
+ service_name: google_say
+
+notify:
+ - platform: tts
+ name: in_the_living_room
+ tts_service: tts.google_say
+ media_player: media_player.living_room
+```
+
+Please note that the `tts_service` parameter, must match the `service_name` defined in the TTS integration.
+
+{% configuration %}
+ name:
+ description: The name of the notify service.
+ required: true
+ type: string
+ tts_service:
+ description: "The `service_name` of a TTS platform."
+ required: true
+ type: string
+ media_player:
+ description: "The `entity_id` of a media_player."
+ required: true
+ type: string
+ language:
+ description: "The `language` to be passed to the TTS `Service Say`"
+ required: false
+ type: string
+{% endconfiguration %}
diff --git a/source/_integrations/onboarding.markdown b/source/_integrations/onboarding.markdown
index 233bac7e327..702e396bcb7 100644
--- a/source/_integrations/onboarding.markdown
+++ b/source/_integrations/onboarding.markdown
@@ -8,7 +8,7 @@ ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
ha_domain: onboarding
-ha_iot_class: ~
+ha_iot_class:
---
This integration creates the endpoints for the onboarding that is built into Home Assistant. There are no configuration options for this integration directly.
diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown
index 2c298f33715..70607511920 100644
--- a/source/_integrations/onewire.markdown
+++ b/source/_integrations/onewire.markdown
@@ -7,6 +7,7 @@ ha_release: 0.12
ha_iot_class: Local Polling
ha_codeowners:
- '@garbled1'
+ - '@epenet'
ha_domain: onewire
---
@@ -34,7 +35,7 @@ Notes:
- The TAI-8570 Pressure Sensor is based on a 1-wire composite device by AAG Electronica. It contains, above 1-wire components, also a barometer, hygrometer and illuminance sensors. This onewire platform can read and present values from that device.
-- Each 1-wire component data sheet describes the different properties the component provides. The owfs software adds some extra tools to make it easier for DIY implementers to use the component. By hobbyists, it is quite common to use DS2438 Smart Battery Monitor as a multipurpose measurement node that can place temperature, humidity and luminosity on the 1-wire bus by just adding some standard components to the DS2438. For different component types, there are ready-made algorithms implemented in owfs. Those are exposed by the owfs software and can be read by this platform. The B1-R1-A/pressure is exposed as a barometric pressure sensor. S2-R1-A/illuminance is presented as an illuminance sensor. For a more detailed description of these properties, refer to the [owfs documentation](https://owfs.org/index_php_page_ds2438.html).
+- Each 1-wire component data sheet describes the different properties the component provides. The [owfs software](https://github.com/owfs/owfs) adds some extra tools to make it easier for DIY implementers to use the component. By hobbyists, it is quite common to use DS2438 Smart Battery Monitor as a multipurpose measurement node that can place temperature, humidity and luminosity on the 1-wire bus by just adding some standard components to the DS2438. For different component types, there are ready-made algorithms implemented in owfs. Those are exposed by the owfs software and can be read by this platform. The B1-R1-A/pressure is exposed as a barometric pressure sensor. S2-R1-A/illuminance is presented as an illuminance sensor. For a more detailed description of these properties, refer to the [owfs documentation](https://owfs.org/index_php_page_ds2438.html).
For this component, the more basic quantities temperature, VAD, VDD and IAD is exported as separate sensors.
- Hobbyboards is a company that has been selling DIY boards of different kinds. The company has been away from the market for some time, so no reference to the boards can be made. This platform has an implementation for some of those.
@@ -44,9 +45,9 @@ Notes:
The 1-Wire bus can be connected directly to the IO pins of Raspberry Pi or by using a dedicated interface adapter, for example
[DS9490R](https://datasheets.maximintegrated.com/en/ds/DS9490-DS9490R.pdf) or adapters based on [DS2482-100](https://datasheets.maximintegrated.com/en/ds/DS2482-100.pdf) that can be directly attached to the IO pins on the Raspberry Pi.
-It is also possible for this platform to interface with a remote 1-wire host over a network connection using ofws and owserver.
+It is also possible for this platform to interface with a remote 1-wire host over a network connection using owfs and owserver.
-## Raspberry Pi set up
+### Raspberry Pi set up
In order to setup 1-Wire support on Raspberry Pi, you'll need to edit `/boot/config.txt`. This file can not be edited through ssh. You have to put your SD card to a PC, and edit the file directly.
To edit `/boot/config.txt` on the Home Assistant Operating System, use [this documentation](https://developers.home-assistant.io/docs/operating-system/debugging.html) to enable SSH and edit `/mnt/boot/config.txt` via `vi`.
@@ -81,28 +82,14 @@ You can read about further parameters in this documentation: [Raspberry Pi Tutor
When using the GPIO pins on Raspberry Pi directly as a 1-wire bus, the description above uses two kernel modules. `1w_gpio`, that implements the 1-wire protocol, and `1w_therm`, that understands the DS18B20 (family 28) components inner structure and reports temperature.
There is no support for other device types (families) and hence this onewire platform only supports temperature measurements from family 28 devices.
-## Raspberry Pi checking connected devices via ssh
+### Raspberry Pi checking connected devices via ssh
If you set up ssh, you can check the connected one-wire devices in the following folder: /sys/bus/w1/devices
The device IDs begin with `28-`.
## Interface adapter setup
-### owserver
-
-`owsever` on Linux hosts is part of the [owfs 1-Wire file system](https://owfs.org/). When a 1-wire interface adapter is used, you can access sensors on a remote or local Linux host that is running `owserver`. `owserver` by default runs on port 4304. Use the `host` option to specify the host or IP of the remote server, and the optional `port` option to change the port from the default.
-
-### owfs - (Soon to be deprecated)
-
-It is also possible to use `owfs`, the filesystem portion of the package, to access 1-wire sensors but not advised as it will be deprecated in an upcoming release. See this [pull request](https://github.com/home-assistant/core/pull/42041) for more information.
-
-The [owfs project page on GitHub](https://github.com/owfs/owfs) says:
-
-> Despite the project name, the owfs package itself is **NOT** recommended for any real use, it has well known issues with races etc.
-
-If you still choose to use `owfs`, the `mount_dir` option must be configured to correspond to a directory, where owfs device tree has been mounted. On systems where Home Assistant runs in a Docker container `owfs` cannot escape that environment and hence cannot populate the `mount_dir`. Use the `owserver` method on these systems instead.
-
-
+`owserver` on Linux hosts is part of the [owfs 1-Wire file system](https://owfs.org/). When a 1-wire interface adapter is used, you can access sensors on a remote or local Linux host that is running `owserver`. `owserver` by default runs on port 4304. Use the `host` option to specify the host or IP of the remote server, and the optional `port` option to change the port from the default.
## Configuration
@@ -119,10 +106,6 @@ names:
description: ID and friendly name of your sensors.
required: false
type: string
-mount_dir:
- description: Location of device tree if owfs driver used.
- required: false
- type: string
host:
description: Remote or localhost running owserver.
required: false
diff --git a/source/_integrations/ozw.markdown b/source/_integrations/ozw.markdown
index 3daeffdeb2c..82b48a8f130 100644
--- a/source/_integrations/ozw.markdown
+++ b/source/_integrations/ozw.markdown
@@ -66,6 +66,15 @@ this operation.
| ---------------------- | -------- | -------------------------------------------------- |
| `instance_id` | no | The OZW Instance/Controller to use, defaults to 1. |
+### Service `ozw.cancel_command`
+
+This service will cancel a pending command. Typically used if the add or remove node
+services have been called but no node was added or removed.
+
+| Service Data Attribute | Required | Description |
+| ---------------------- | -------- | -------------------------------------------------- |
+| `instance_id` | no | The OZW Instance/Controller to use, defaults to 1. |
+
### Service `ozw.set_usercode`
This service will set the usercode to X at code slot Y.
@@ -98,7 +107,24 @@ LED colors on switches.
| `instance_id` | no | The OZW Instance/Controller to use, defaults to 1. |
| `node_id` | yes | Node id of the device to set configuration parameter to (integer). |
| `parameter` | yes | Parameter number to set (integer). |
-| `value` | yes | Value to set for parameter. (String or integer value for list, string for bool parameters, integer for others). |
+| `value` | yes | Value to set for parameter. (String or integer value for list, string or boolean for bool parameters, list of dicts for bitset parameters (see example below), integer for others). |
+
+
+#### Example BitSet service call
+
+Here is an example of what to send to the service for a BitSet parameter:
+
+```yaml
+node_id: 4
+parameter: 5
+value:
+ - position: 1
+ value: true
+ - label: Humidity
+ value: false
+ - position: 3
+ value: false
+```
## Events
diff --git a/source/_integrations/panasonic_viera.markdown b/source/_integrations/panasonic_viera.markdown
index 4473c45ce9e..8c2f0fa321b 100644
--- a/source/_integrations/panasonic_viera.markdown
+++ b/source/_integrations/panasonic_viera.markdown
@@ -6,8 +6,6 @@ ha_category:
ha_release: 0.17
ha_iot_class: Local Polling
ha_domain: panasonic_viera
-ha_codeowners:
- - '@joogps'
ha_config_flow: true
---
diff --git a/source/_integrations/panel_custom.markdown b/source/_integrations/panel_custom.markdown
index 3f38959e9c2..928d2a2d40f 100644
--- a/source/_integrations/panel_custom.markdown
+++ b/source/_integrations/panel_custom.markdown
@@ -8,7 +8,7 @@ ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/frontend'
ha_domain: panel_custom
-ha_iot_class: ~
+ha_iot_class:
---
The `panel_custom` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized. See the developer documentation on [instructions how to build your own panels](https://developers.home-assistant.io/docs/frontend/custom-ui/creating-custom-panels/).
diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown
index 8dc94abf12e..86ce2486850 100644
--- a/source/_integrations/plex.markdown
+++ b/source/_integrations/plex.markdown
@@ -70,6 +70,15 @@ Plays a song, album, artist, playlist, TV show/season/episode, movie, or video o
Required fields within the `media_content_id` payloads are marked as such, others are optional.
+
+
+Refer to these links if casting to non-Plex players:
+
+- [Chromecast](/integrations/cast/#plex)
+- [Sonos](/integrations/plex#sonos-playback)
+
+
+
#### Music
| Service data attribute | Description |
diff --git a/source/_integrations/profiler.markdown b/source/_integrations/profiler.markdown
new file mode 100644
index 00000000000..e59fb7a370e
--- /dev/null
+++ b/source/_integrations/profiler.markdown
@@ -0,0 +1,37 @@
+---
+title: Profiler
+description: Profile Home Assistant.
+ha_category:
+ - Utility
+ha_release: 0.117
+ha_quality_scale: internal
+ha_domain: profiler
+ha_codeowners:
+ - '@bdraco'
+ha_config_flow: true
+---
+
+The Profiler integration provides a profile which is a set of statistics that identifies how much time each part of Home Assistant is taking. It can help track down a performance issue or provide insight about a misbehaving integration.
+
+## Configuration
+
+To add `Profiler` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Profiler**.
+
+### Service `profiler.start`
+
+Start the profiler for the specified number of seconds.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `seconds` | yes | The number of seconds to run the profile. Defaults to 60.0
+
+When the profile is complete, Profiler will generate a Python `cprof` and a `callgrind.out` file in your configuration directory. The exact path to these files will appear in a persistent notification so they can be easily located and copied to your desktop.
+
+The `cprof` file can be viewed with:
+
+[SnakeViz](https://jiffyclub.github.io/snakeviz/)
+[Gprof2dot](https://github.com/jrfonseca/gprof2dot)
+
+Additionally, the profiler will generate a `callgrind.out` file that can be viewed with:
+
+[kcachegrind](https://kcachegrind.github.io/) or qcachegrind
diff --git a/source/_integrations/proximity.markdown b/source/_integrations/proximity.markdown
index e362de727b8..e53aff3b0f4 100644
--- a/source/_integrations/proximity.markdown
+++ b/source/_integrations/proximity.markdown
@@ -7,7 +7,7 @@ ha_category:
ha_release: 0.13
ha_quality_scale: internal
ha_domain: proximity
-ha_iot_class: ~
+ha_iot_class:
---
The `proximity` integration allows you to monitor the proximity of devices to a particular [zone](/integrations/zone/) and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data.
diff --git a/source/_integrations/pushsafer.markdown b/source/_integrations/pushsafer.markdown
index 3ba9c0ef65f..21e2d3118a4 100644
--- a/source/_integrations/pushsafer.markdown
+++ b/source/_integrations/pushsafer.markdown
@@ -6,7 +6,6 @@ ha_category:
- Notifications
ha_iot_class: Cloud Push
ha_release: 0.39
-ha_iot_class: Cloud Push
ha_domain: pushsafer
---
diff --git a/source/_integrations/rachio.markdown b/source/_integrations/rachio.markdown
index 5cd8fa5b2e9..2a33df43ea5 100644
--- a/source/_integrations/rachio.markdown
+++ b/source/_integrations/rachio.markdown
@@ -84,14 +84,56 @@ The `rachio` switch platform allows you to toggle zones and schedules connected
Once configured, a switch will be added for every zone that is enabled on every controller in the account provided and a switch to start or stop every schedule on a controller. There will also be a switch to toggle each controller's standby mode, as well as to activate a 24 hour rain delay on the device.
-## Service
+## Services
-Rachio has one service that allows for setting the moisture percentage of a zone or group of zones. As Rachio only uses moisture levels for zones in a Flex Daily schedule, this service is only available when at least one zone is part of a Flex Daily schedule.
+### Service `rachio.start_multiple_zone_schedule`
+Allows a list of zones to be passed with a corresponding list of durations to create a custom schedule directly from Home Assistant.
+
+
+It is not currently possible to have zones from multiple controllers in the same custom schedule.
+
+
+ Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | no | List of zones to run. Will be run in the order listed.
+| `duration` | no | Duration in minutes to run the zones. If a list of durations is provided, each duration will apply to the corresponding zone listed above. Alternatively, one duration can be provided and will be used for all zones.
+
+### Examples
+
+```yaml
+#Example sctipt to start multiple zones with individual duration for each zone.
+script:
+ run_grass_zones:
+ sequence:
+ - service: rachio.start_multiple_zone_schedule
+ data:
+ entity_id:
+ - switch.front_yard_west
+ - switch.front_yard_east
+ - switch.side_yard_west
+ duration: 20, 15, 10
+```
+
+```yaml
+#Example sctipt to start multiple zones with one duration for all zones.
+script:
+ run_grass_zones:
+ sequence:
+ - service: rachio.start_multiple_zone_schedule
+ data:
+ entity_id:
+ - switch.front_yard_west
+ - switch.front_yard_east
+ - switch.side_yard_west
+ duration: 20
+```
### Service `rachio.set_zone_moisture_percent`
Set the zone moisture percentage for a zone or group of zones.
+Rachio allows for setting the moisture percentage of a zone or group of zones. As Rachio only uses moisture levels for zones in a Flex Daily schedule, this service is only available when at least one zone is part of a Flex Daily schedule.
+
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String, list or group of zones to set moisture percentage.
diff --git a/source/_integrations/rainmachine.markdown b/source/_integrations/rainmachine.markdown
index 318391070c4..5cfba473b88 100644
--- a/source/_integrations/rainmachine.markdown
+++ b/source/_integrations/rainmachine.markdown
@@ -22,47 +22,10 @@ There is currently support for the following device types within Home Assistant:
- Sensor
- [Switch](#switch)
-## Base Configuration
+## Configuration
-To connect to your RainMachine device, add the following to your `configuration.yaml` file:
-
-```yaml
-rainmachine:
- controllers:
- - ip_address: 192.168.1.100
- password: YOUR_PASSWORD
-```
-
-{% configuration %}
-ip_address:
- description: The IP address or hostname of your RainMachine unit.
- required: false
- type: string
-password:
- description: Your RainMachine password.
- required: true
- type: string
-port:
- description: The TCP port used by your unit for the REST API.
- required: false
- type: integer
- default: 8080
-ssl:
- description: Whether communication with the local device should occur over HTTPS.
- required: false
- type: boolean
- default: true
-scan_interval:
- description: The frequency (in seconds) between data updates.
- required: false
- type: integer
- default: 60
-zone_run_time:
- description: The default number of seconds that a zone should run when turned on.
- required: false
- type: integer
- default: 600
-{% endconfiguration %}
+This integration can be configured via the Home Assistant UI by navigating to
+**Configuration** -> **Integrations**.
## Services
diff --git a/source/_integrations/remote.markdown b/source/_integrations/remote.markdown
index 64a60050b07..52a5cd04f88 100644
--- a/source/_integrations/remote.markdown
+++ b/source/_integrations/remote.markdown
@@ -3,7 +3,7 @@ title: Remote
description: Instructions on how to setup your remotes with Home Assistant.
ha_release: 0.34
ha_domain: remote
-ha_iot_class: ~
+ha_iot_class:
---
Keeps track which remotes are in your environment, their state and allows you to control them.
diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown
index 01f6b70e83b..284383a7cda 100644
--- a/source/_integrations/rfxtrx.markdown
+++ b/source/_integrations/rfxtrx.markdown
@@ -10,13 +10,15 @@ ha_category:
- Sensor
ha_iot_class: Local Push
ha_release: pre 0.7
+ha_config_flow: true
ha_codeowners:
- '@danielhiversen'
- '@elupus'
+ - '@RobBie1221'
ha_domain: rfxtrx
---
-The `rfxtrx` integration supports RFXtrx devices by [RFXCOM](http://www.rfxcom.com), which communicate in the frequency range of 433.92 MHz.
+The RFXtrx integration supports RFXtrx devices by [RFXCOM](http://www.rfxcom.com), which communicate in the frequency range of 433.92 MHz.
There is currently support for the following device types within Home Assistant:
@@ -26,96 +28,319 @@ There is currently support for the following device types within Home Assistant:
- [Sensor](#sensors)
- [Binary Sensor](#binary-sensors)
-To enable RFXtrx in your installation, something like the following to your `configuration.yaml` file.
+## Configuration
-*Direct serial connection*
+To add RFXtrx integration go to **Configuration** >> **Integrations** and find the integration in the list. Choose between **Serial** or **Network**. For network configure host and port. For serial, a list of detected devices is presented. Choose the RFXCOM device or select **Enter Manually** to fill in the USB path manually.
+
+To receive debug logging from the RFXCOM device, add the following lines to `configuration.yaml`:
```yaml
-# Example configuration.yaml entry for local serial device
-rfxtrx:
- device: /dev/ttyUSB0
+logger:
+ log:
+ RFXtrx: debug
```
-*Network connection*
+## Supported protocols
-```yaml
-# Example configuration.yaml entry for TCP connected device using ser2net
-rfxtrx:
- host: 192.168.0.2
- port: 50000
+Not all protocols as advertised are enabled on the initial setup of your transceiver. Enabling all protocols is not recommended either. Your 433.92 product not showing in the logs? Visit the RFXtrx website to [download RFXmgmr](http://www.rfxcom.com/epages/78165469.sf/en_GB/?ViewObjectPath=%2FShops%2F78165469%2FCategories%2FDownloads) and enable the required protocol.
+
+## ser2net
+
+You can host your device on another computer by setting up ser2net and example configuration for ser2net looks like this and then using host/port in your Home Assistant configuration.
+
+```text
+50000:raw:0:/dev/ttyUSB0:38400 8DATABITS NONE 1STOPBIT
```
-*Network connection with multiple devices*
+## Settings options
-```yaml
-# Example configuration with several devices
-rfxtrx:
- host: 192.168.0.2
- port: 50000
- devices:
- # Siemens/LightwaveRF Shutter
- 0b1100ce3213c7f210010f70:
- # RFY Shutter
- 071a00000a000101:
+To configure options for RFXtrx integration go to **Configuration** >> **Integrations** and press **Options** on the RFXtrx card.
- # Light 1
- 0b11000f10e9e5660b010f70:
- # Light TV
- 0b1100100f29e5660c010f70:
+

- # Binary Sensor
- 0913000022670e013b70:
+### Automatic add
- # Binary Sensor with data bits setup
- 0913000022670e013b70:
- device_class: opening
- data_bits: 4
- command_on: 0xe
- command_off: 0x7
+In the options menu, select *Enable automatic add* to enable automatic addition of detected devices. This is the easiest way to detect binary sensors, sensors or switches from a physical device. Once automatic add is enabled, newly detected devices are automatically added and can be found by clicking devices on the RFXtrx integration card.
- # Switch 1
- 0b1100ce3213c7f210010f70:
- # Switch 2
- 0b11000a02ef2gf210010f50:
- # Switch 3
- 0b1111e003af16aa10000060:
- fire_event: true
+#### Covers
- # Sensor
- 0a52080000301004d240259:
+The RFXtrx integration supports Siemens/LightwaveRF and RFY roller shutters that communicate in the frequency range of 433.92 MHz.
+
+#### Lights
+
+The RFXtrx integration support lights that communicate in the frequency range of 433.92 MHz.
+
+Make sure you trigger a dimming command to get switches detected as lights otherwise, they will show up as switches.
+
+#### Switches
+
+The RFXtrx integration support switches that communicate in the frequency range of 433.92 MHz.
+
+#### Sensors
+
+The RFXtrx integration support sensors that communicate in the frequency range of 433.92 MHz.
+
+Also, several switches and other devices will also expose sensor entities with battery status as well as the signal level.
+
+#### Binary Sensors
+
+The RFXtrx integration support binary sensors that communicate in the frequency range of 433.92 MHz. The RFXtrx binary sensor integration provides support for them. Many cheap sensors available on the web today are based on a particular RF chip called *PT-2262*. Depending on the running firmware on the RFXcom box, some of them may be recognized under the X10 protocol, but most of them are recognized under the *Lighting4* protocol. The RFXtrx binary sensor integration provides some special options for them, while other RFXtrx protocols should work too.
+
+### Add a device by event code
+
+To manually add a device, in the options window, an event code can be added in the field *Enter event code to add*.
+
+See [Generate codes](#generate-codes) how to generate event codes.
+
+#### RFY
+
+The [RFXtrx433e](http://www.rfxcom.com/RFXtrx433E-USB-43392MHz-Transceiver/en) is required for RFY support, however, it does not support receive for the RFY protocol - as such devices cannot be automatically added. Instead, configure the device in the [rfxmngr](http://www.rfxcom.com/downloads.htm) tool. Make a note of the assigned ID and Unit Code and then add a device to the configuration with the following id `071a0000[id][unit_code]`. E.g., if the id was `0a` `00` `01`, and the unit code was `01` then the fully qualified id would be `071a00000a000101`, if you set your id/code to single digit in the rfxmngr, e.g., id: `1` `02` `04` and unit code: `1` you will need to add `0` before, so `102031` becomes `071a000001020301`.
+
+#### Convert switch event to dimming event
+
+To convert a standard switch to a light, use the [Light Switch](/integrations/light.switch/) component.
+
+To convert a switch to a dimmable light, make sure the event contains a dimming command. You can usually convert a command by changing one byte.
+
+

+
+Copy the event code from the state attribute of the switch, which shows up on the bottom of the window when clicking on the switch entity. Examples of byte changes:
+
+*ARC:*
+0b11000248bc0cfe09 **01** 0f70
+0b11000248bc0cfe09 **02** 0f70
+
+*LightwaveRF:*
+0a14000101f20302 **01** 0080
+0a14000101f20302 **10** 0080
+
+*Waveman:*
+710030e4102 **01** 50
+710030e4102 **02** 50
+
+### Configure device options
+
+To configure device options, select a device from the list under *Select device to configure*. After pressing *Submit* a window with device options are presented based on the device type.
+
+
+If a device is missing from the list, close the options window and either make sure the device sents a command or manually re-add the device by event code.
+
+
+#### Signal repetitions
+
+Because the RFXtrx device sends its actions via radio and from most receivers it's impossible to know if the signal was received or not. Therefore you can configure the RFXtrx device to try to send each signal repeatedly.
+
+#### Device events
+
+To enable device events, use the checkbox *Enable device event*. See [Events](#events) for more information about device events.
+
+#### Off Delay
+
+Binary sensors have only two states - "on" and "off". Many door or window opening sensors will send a signal each time the door/window is open or closed. However, depending on their hardware or on their purpose, some sensors are only able to signal their "on" state:
+
+- Most motion sensors send a signal each time they detect motion. They stay "on" for a few seconds and go back to sleep, ready to signal other motion events. Usually, they do not send a signal when they go back to sleep.
+- Some doorbells may also only send "on" signals when their toggle switch is pressed, but no "off" signal when the switch is released.
+
+For those devices, use the *off_delay* parameter. It defines a delay after, which a device will go back to an "Off" state. That "Off" state will be fired internally by Home Assistant, just as if the device fired it by itself. If a motion sensor can only send signals once every 5 seconds, sets the *off_delay* parameter to *seconds: 5*.
+
+#### Options for PT-2262 devices under the Lighting4 protocol
+
+When a data packet is transmitted by a PT-2262 device using the Lighting4 protocol, there is no way to automatically extract the device identifier and the command from the packet. Each device has its own id/command length combination and the field lengths are not included in the data. One device that sends 2 different commands will be seen as 2 devices on Home Assistant. For such cases, the following options are available in order to circumvent the problem:
+
+- **data_bits**
+- **command_on**
+- **command_off**
+
+Let's try to add a new PT-2262 sensor using the "automatic_add" option and have a look at Home Assistant system log.
+
+Have your sensor trigger the "On" state for the first time.
+Some messages will appear:
+
+```text
+INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Added binary sensor 0913000022670e013970 (Device_id: 22670e Class: LightingDevice Sub: 0)
```
-*Use remote to enable scene (using event_data)*
+Here the sensor has the id *22670e*.
+
+Now have your sensor trigger the "Off" state and look for the following message in the Home Assistant log. You should see that your device has been detected as a *new* device when triggering its "Off" state:
+
+```text
+INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Added binary sensor 09130000226707013d70 (Device_id: 226707 Class: LightingDevice Sub: 0)
+```
+
+Here the device id is *226707*, which is almost similar to the *22670e* we had on the "On" event a few seconds ago.
+
+From those two values, you can guess that the actual id of your device is *22670*, and that *e* and *7* are commands for "On" and "Off" states respectively. As one hexadecimal digit uses 4 bits, we can conclude that the device is using 4 data bits.
+
+So, here is the actual configuration section for the binary sensor:
```yaml
-rfxtrx:
- host: 192.168.0.2
- port: 50000
- devices:
- # Light 1
- 0b1100ce3213c7f210010f70:
- # LIght 2
- 0b11000a02ef2gf210010f50:
- # Keychain remote
- 0b1111e003af16aa10000060:
- fire_event: true
+data_bits: 4
+command_on: 0xe
+command_off: 0x7
+```
+
+The *automatic_add* option makes the RFXtrx binary sensor integration calculate
+and display the configuration options for you in the Home Assistant logs:
+
+```text
+INFO (Thread-6) [homeassistant.components.rfxtrx] rfxtrx: found possible device 226707 for 22670e with the following configuration:
+data_bits=4
+command_on=0xe
+command_off=0x7
+INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Found possible matching deviceid 22670e.
+```
+
+This automatic guess should work most of the time, but there is no guarantee on that. You should activate it only when you want to configure your new devices and leave it off otherwise.
+
+#### Replace device
+
+Some battery-powered devices send commands or data with a randomly generated id. When batteries are replaced, the id changes. In order to use the device, it needs to be re-added either through automatic add or manually. This will create a new device. To transfer user-configured names and entity ids of the old device, select the old device in the options menu under *Select device to configure*. In the device options menu, select from the *Select device to replace* menu the new device and press *Submit*. The names and ids of the old device will be transferred to the new device and the old device will be automatically deleted.
+
+### Delete device
+
+To delete device(s) from the configuration, select one or more devices under *Select device to delete*. Press *Submit* to delete the selected devices.
+
+## Events
+
+The RFXtrx integration will signal an event on the reception of messages from and RFXtrx device on the following form. For the signal to be available, the `fire_event` parameter must be set on the device in configuration.
+
+*Signal from a byron doorbell button:*
+
+```yaml
+packet_type: 22
+sub_type: 0
+type_string: "Byron SX"
+id_string: "00:90"
+data: "0716000100900970"
+values:
+ Sound: 9
+ Battery numeric: 0
+ Rssi numeric: 7
+```
+
+*Event data from a Nexa wall socket switch:*
+
+```yaml
+packet_type: 16
+sub_type: 1
+type_string: 'ARC'
+id_string': 'C3'
+data: '0710010143030170'
+values':
+ Command: 'On'
+ Rssi numeric': 7
+```
+
+You can set up automations to react to these events. When you do, don't include more fields than needed. Always include the device identifying fields, `packet_type`, `sub_type` and `id_string`.
+
+So, for example, to trigger an action when somebody presses the doorbell, you would set up an automation with the following trigger:
+
+*Automation trigger:*
+
+```yaml
+- platform: event
+ event_type: rfxtrx_event
+ event_data:
+ packet_type: 22
+ sub_type: 0
+ id_string: "00:90"
+ values:
+ Sound: 9
+```
+
+*A more complete example with scene activation:*
+
+```yaml
+light:
+ platform: demo
+
scene:
- name: Livingroom
+ name: WelcomeScene
entities:
- switch.light1: on
- switch.light2: on
+ light.bed_light: on
+ light.ceiling_lights: off
automation:
- - alias: Use remote to enable scene
+ - alias: Use doorbell button to trigger scene
trigger:
- platform: event
- event_type: button_pressed
- event_data: {"state": "on", "entity_id": "switch.keychain_remote"}
+ - platform: event
+ event_type: rfxtrx_event
+ event_data:
+ packet_type: 22
+ sub_type: 0
+ id_string: "00:90"
+ values:
+ Sound: 9
action:
service: scene.turn_on
- entity_id: scene.livingroom
+ entity_id: scene.welcomescene
```
+## Services
+
+- `rfxtrx.send`: Send a custom event using the RFXtrx device.
+
+#### Service: Send
+
+Simulate a button being pressed:
+
+```yaml
+...
+action:
+ service: rfxtrx.send
+ data:
+ event: 0b1111e003af16aa10000060
+```
+
+
+## Generate codes
+
+If you need to generate codes for switches and lights, you can use a template (useful, for example, COCO switches).
+
+- Go to home-assistant-IP:8123/dev-template
+- Use the following codes to generate an event:
+
+*Switch: ARC*
+
+{% raw %}
+
+```yaml
+0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}010f70
+```
+
+{% endraw %}
+
+*Light: ARC*
+
+{% raw %}
+
+```yaml
+0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}020f70
+```
+
+{% endraw %}
+
+
+*Light: Lightwave RF*
+{% raw %}
+
+```yaml
+0a14000{{ range(100,700) | random | int }}bc0cf{{ range(0,10) | random | int }}100f70
+```
+
+{% endraw %}
+
+
+- Use this code to add a new switch in the options menu.
+- Launch your Home Assistant and go to the website.
+- Enable learning mode on your switch (i.e., push learn button or plug it in a wall socket)
+- Toggle your new switch in the Home Assistant interface
+
+## Configuration import
+
+When RFXtrx integration is configured in `configuration.yaml`, the configuration will be imported once. After import, the configuration can be removed from `configuration.yaml`.
+
{% configuration %}
device:
description: "The path to your device, e.g., `/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0` or `/dev/ttyUSB0`. Required if you are using a locally connected USB device."
@@ -184,346 +409,3 @@ automatic_add:
If a device ID consists of only numbers, please make sure to surround it with quotes.
This is a known limitation in YAML, because the device ID will be interpreted as a number otherwise.
-
-## Supported protocols
-
-Not all protocols as advertised are enabled on the initial setup of your transceiver. Enabling all protocols is not recommended either. Your 433.92 product not showing in the logs? Visit the RFXtrx website to [download RFXmgmr](http://www.rfxcom.com/epages/78165469.sf/en_GB/?ViewObjectPath=%2FShops%2F78165469%2FCategories%2FDownloads) and enable the required protocol.
-
-### ser2net
-
-You can host your device on another computer by setting up ser2net and example configuration for ser2net looks like this and then using host/port in your Home Assistant configuration.
-
-```text
-50000:raw:0:/dev/ttyUSB0:38400 8DATABITS NONE 1STOPBIT
-```
-
-## Setting up your devices
-
-Once you have set up your [RFXtrx hub](/integrations/rfxtrx/), the easiest way
-to find your binary sensors is to enable automatic add in `configuration.yaml`:
-
-```yaml
-rfxtrx:
- automatic_add: true
- host: 192.168.0.2
- port: 50000
-```
-
-Open your Home Assistant frontend and go to the "states" page.
-Then make sure to trigger your sensor. You should see several new entities
-appear in the *Current entities* list, by looking at the entities attribute, you can look at the last received event, which can be added to the configuration.
-
-For example: "0913000022670e013b70". Then you should update your configuration to:
-
-```yaml
-rfxtrx:
- automatic_add: false
- host: 192.168.0.2
- port: 50000
- devices:
- 0913000022670e013b70:
-```
-
-### Covers
-
-The `rfxtrx` platform supports Siemens/LightwaveRF and RFY roller shutters that communicate in the frequency range of 433.92 MHz.
-
-##### RFY
-
-The [RFXtrx433e](http://www.rfxcom.com/RFXtrx433E-USB-43392MHz-Transceiver/en) is required for RFY support, however, it does not support receive for the RFY protocol - as such devices cannot be automatically added. Instead, configure the device in the [rfxmngr](http://www.rfxcom.com/downloads.htm) tool. Make a note of the assigned ID and Unit Code and then add a device to the configuration with the following id `071a0000[id][unit_code]`. E.g., if the id was `0a` `00` `01`, and the unit code was `01` then the fully qualified id would be `071a00000a000101`, if you set your id/code to single digit in the rfxmngr, e.g., id: `1` `02` `04` and unit code: `1` you will need to add `0` before, so `102031` becomes `071a000001020301`.
-
-### Lights
-
-The `rfxtrx` platform support lights that communicate in the frequency range of 433.92 MHz.
-
-Make sure you trigger a dimming command to get switches detected as lights otherwise, they will show up as switches.
-
-#### Convert switch event to dimming event
-
-To convert a standard switch to a light, use the [Light Switch](/integrations/light.switch/) component.
-
-To convert a switch to a dimmable light, make sure the event contain a dimming command. You can usually convert a command by changing one byte.
-
-*ARC:*