diff --git a/_config.yml b/_config.yml index c7491ba2734..487a4a7cbfd 100644 --- a/_config.yml +++ b/_config.yml @@ -141,14 +141,14 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 81 -current_patch_version: 6 -date_released: 2018-11-04 +current_minor_version: 82 +current_patch_version: 0 +date_released: 2018-11-09 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0816---november-4" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 6a629336211..9bb978212fe 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -71,10 +71,12 @@ Configuration example that uses the USB microphone and the built-in headset audi {% configuration %} mic: description: This is the hardware address of your microphone. Look at the add-on output. + required: true type: float speaker: description: This is the hardware address of your speakers. Look at the add-on output. - type: float + required: true + type: string {% endconfiguration %} ### {% linkable_title Home Assistant configuration %} diff --git a/source/_components/alert.markdown b/source/_components/alert.markdown index 033cd918873..5c97d5cf4a1 100644 --- a/source/_components/alert.markdown +++ b/source/_components/alert.markdown @@ -51,15 +51,9 @@ alert: {% configuration %} name: - description: The friendly name of the alert. This can include a [template][template]. + description: The friendly name of the alert. required: true type: string -done_message: - description: > - A message sent after an alert transitions from `on` to `off`. Is only sent - if an alert notification was sent for transitioning from `off` to `on`. This can include a [template][template]. - required: false - type: string entity_id: description: The ID of the entity to watch. required: true @@ -87,6 +81,19 @@ skip_first: required: false type: boolean default: false +message: + description: > + A message to be sent after an alert transitions from `of` to `on` + with [template][template] support. + required: false + type: template +done_message: + description: > + A message sent after an alert transitions from `on` to `off` with + [template][template] support. Is only sent if an alert notification + was sent for transitioning from `off` to `on`. + required: false + type: template notifiers: description: "List of `notification` components to use for alerts." required: true @@ -192,4 +199,29 @@ following notification. For example, if the garage door opens at 2:00, a notification will be sent at 2:15, 2:45, 3:45, 4:45, etc., continuing every 60 minutes. +### {% linkable_title Message Templates %} + +It may be desirable to have the alert notifications include information +about the state of the entity. +The following will show for a plant how to include the problem `attribute` +of the entity. + +```yaml +# Example configuration.yaml entry + office_plant: + name: Plant in office needs help + entity_id: plant.plant_office + state: 'problem' + repeat: 30 + can_acknowledge: True + skip_first: True + message: "Plant {{ states.plant.plant_office }} needs help ({{ state_attr('plant.plant_office', 'problem') }})" + done_message: Plant in office is fine + notifiers: + - ryans_phone + - kristens_phone +``` + +The resulting message could be `Plant Officeplant needs help (moisture low)`. + [template]: /docs/configuration/templating/ diff --git a/source/_components/binary_sensor.pilight.markdown b/source/_components/binary_sensor.pilight.markdown index b8ac54c1e97..7a5655570b9 100644 --- a/source/_components/binary_sensor.pilight.markdown +++ b/source/_components/binary_sensor.pilight.markdown @@ -49,11 +49,11 @@ name: payload_on: description: "Variable `on` value. The component will recognize this as logical '1'." required: false - type: string + type: [string, float, integer] payload_off: description: "Variable `off` value. The component will recognize this as logical '0'." required: false - type: string + type: [string, float, integer] disarm_after_trigger: description: Configure sensor as trigger type. required: false diff --git a/source/_components/camera.doorbird.markdown b/source/_components/camera.doorbird.markdown index 4c0734e2695..86e7c3c5f01 100644 --- a/source/_components/camera.doorbird.markdown +++ b/source/_components/camera.doorbird.markdown @@ -13,7 +13,7 @@ ha_release: "0.54" ha_iot_class: "Local Polling" --- -The `doorbird` implementation allows you to view the live video and previous images from your [DoorBird](http://www.doorbird.com/) device in Home Assistant. +The `doorbird` implementation allows you to view the live video, the last doorbell ring image, and the last motion sensor image from your [DoorBird](http://www.doorbird.com/) device in Home Assistant.

You must have the [DoorBird component](/components/doorbird/) configured to use this camera. diff --git a/source/_components/climate.mill.markdown b/source/_components/climate.mill.markdown index aa13ac75be1..6f92a0a3443 100644 --- a/source/_components/climate.mill.markdown +++ b/source/_components/climate.mill.markdown @@ -15,16 +15,15 @@ ha_iot_class: "Cloud Polling" Integrates Mill heater into Home Assistant. -The component requires that the heater is set as an [independent device](https://millheat.zendesk.com/hc/en-us/articles/115001123491-What-is-an-Independent-device-) in the Mill app. - +## {% linkable_title Configuration %} To enable this platform, add the following lines to your `configuration.yaml` file: ```yaml climate: - platform: mill - username: email@gmail.com - password: pswd + username: YOUR_EMAIL_ADDRESS + password: YOUR_PASSWORD ``` {% configuration %} @@ -37,3 +36,17 @@ password: required: true type: string {% endconfiguration %} + +## {% linkable_title Component services %} + +This platform supports a service to set the temperature for the room connected to heater in the Mill app: + +`climate.mill_set_room_temperature` + + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `room_name` | no | String with room name. +| `away_temp` | yes | Integer with temperature +| `comfort_temp` | yes | Integer with temperature +| `sleep_temp` | yes | Integer with temperature diff --git a/source/_components/climate.velbus.markdown b/source/_components/climate.velbus.markdown new file mode 100644 index 00000000000..45ca48a54b1 --- /dev/null +++ b/source/_components/climate.velbus.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Velbus Climate" +description: "Instructions how to integrate Velbus thermostat into Home Assistant." +date: 2018-08-22 06:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Climate +ha_iot_class: "Local Push" +ha_release: 0.82 +published: false +--- + +The `velbus` climate devices allow you to control [Velbus](http://www.velbus.eu) connected thermostats. + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/deconz.markdown b/source/_components/deconz.markdown index a579fef358f..8123a8a2e05 100644 --- a/source/_components/deconz.markdown +++ b/source/_components/deconz.markdown @@ -59,12 +59,14 @@ Set attribute of device in deCONZ using [Rest API](http://dresden-elektronik.git | `entity` | No | String representing a specific Home Assistant entity of a device in deCONZ. | | `data` | No | Data is a JSON object with what data you want to alter. | -Field and entity are exclusive, i.e you can only use one in a request. +Either `entity` or `field` must be provided. If both are present, `field` will be interpreted as a subpath under the device path corresponding to the specified `entity`: { "field": "/lights/1", "data": {"name": "light2"} } { "entity": "light.light1", "data": {"name": "light2"} } +{ "entity": "light.light1", "field: "/state", "data": {"on": true} } + { "field": "/config", "data": {"permitjoin": 60} } #### {% linkable_title Service `deconz.refresh_devices` %} diff --git a/source/_components/device_tracker.bt_smarthub.markdown b/source/_components/device_tracker.bt_smarthub.markdown new file mode 100644 index 00000000000..1f6f4f77f21 --- /dev/null +++ b/source/_components/device_tracker.bt_smarthub.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "BT Smart Hub" +description: "Instructions on how to integrate BT Smart Hub router into Home Assistant." +date: 2018-10-05 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bt.png +ha_category: Presence Detection +ha_release: "0.82" +ha_iot_class: "Local Polling" +--- + +This platform offers presence detection by looking at connected devices to a [BT Smart Hub](https://en.wikipedia.org/wiki/BT_Smart_Hub) based router. +This router is sometimes referred to as the BT Home Hub 6. + +## {% linkable_title Configuration %} + +To use a BT Smart Hub router in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: bt_smarthub +``` + +{% configuration %} +host: + description: The IP address of your router + default: 192.168.1.254 + required: false + type: string +{% endconfiguration %} + +See the [device tracker component page](/components/device_tracker/) for instructions on how to configure the people to be tracked. diff --git a/source/_components/dialogflow.markdown b/source/_components/dialogflow.markdown index bf2cc4b4e61..beb5f795656 100644 --- a/source/_components/dialogflow.markdown +++ b/source/_components/dialogflow.markdown @@ -20,7 +20,7 @@ Before 0.56 this component was named `apiai`. The `dialogflow` component is designed to be used with the [webhook](https://dialogflow.com/docs/fulfillment#webhook) integration of [Dialogflow](https://dialogflow.com/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. -Dialogflow requires a public endpoint (HTTPS recommended), so your Home Assistant should be exposed to the Internet. Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). +To be able to receive messages from DialogFlow, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](https://www.home-assistant.io/components/http/#base_url)). Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). Dialogflow could be [integrated](https://dialogflow.com/docs/integrations/) with many popular messaging, virtual assistant and IoT platforms. @@ -40,6 +40,8 @@ Using Dialogflow will be easy to create conversations like: To use this integration, you should define a conversation (intent) in Dialogflow, configure Home Assistant with the speech to return and, optionally, the action to execute. +To get the webhook url, go to the integrations page in the configuration screen and find Dialogflow. Click on configure. Follow the instructions on the screen. + ### {% linkable_title Configuring your Dialogflow account %} - [Login](https://console.dialogflow.com/) with your Google account @@ -47,7 +49,7 @@ To use this integration, you should define a conversation (intent) in Dialogflow - Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196?hl=en)) and time zone - Click "Save" - Go to "Fulfillment" (in the left menu) -- Enable Webhook and set your Home Assistant URL with the Dialogflow endpoint, e.g., `https://myhome.duckdns.org/api/dialogflow?api_password=HA_PASSWORD` +- Enable Webhook and set your Dialogflow webhook url as the endpoint, e.g., `https://myhome.duckdns.org/api/webhook/800b4cb4d27d078a8871656a90854a292651b20635685f8ea23ddb7a09e8b417` - Click "Save" - Create a new intent - Below "User says" write one phrase that you, the user, will tell Dialogflow, e.g., `What is the temperature at home?` diff --git a/source/_components/doorbird.markdown b/source/_components/doorbird.markdown index 839a77a2e91..50ca47bd6bb 100644 --- a/source/_components/doorbird.markdown +++ b/source/_components/doorbird.markdown @@ -10,7 +10,7 @@ footer: true logo: doorbird.png ha_category: Doorbell ha_release: "0.54" -ha_iot_class: "Local Polling" +ha_iot_class: "Local Push" --- The `doorbird` implementation allows you to integrate your [DoorBird](http://www.doorbird.com/) device in Home Assistant. @@ -22,6 +22,7 @@ To connect your device, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry doorbird: + token: RANDOM_STRING devices: - host: DOORBIRD_IP_OR_HOSTNAME username: YOUR_USERNAME @@ -38,6 +39,10 @@ doorbird: ``` {% configuration %} +token: + description: Token to be used to authenticate Doorbird calls to Home Assistant. + required: true + type: string devices: description: List of doorbird devices. required: true @@ -83,8 +88,19 @@ The configuration above is also used by the following components: Home Assistant will fire an event any time a `monitored_condition` happens on a doorstation. Event names are created using the format `doorbird_{station}_{event}` (Examples: `doorbird_side_entry_button`, `doorbird_side_entry_motion`). You can verify the assigned event names in the Home Assistant log file. -

-Enabling any monitored condition will delete all registered notification services on the doorstation every time Home Assistant starts. This will not affect notifications delivered by the DoorBird mobile app. +

+Home Assistant will register the monitored conditions with the device as schedule entries that correspond to favorites on startup. If you remove monitored conditions from your configuration, Home Assistant will attempt to remove these items from the device. However, in some cases, such as if the IP address of the machine running Home Assistant changes or if the device is renamed in your configuration, this will not work correctly and some data will be left in device storage. +

+This should not cause any problems, but if you would like to remove it, open a new browser window and navigate to `{Home Assistant URL}/api/doorbird/clear/{DoorBird name}`. Replace `{Home Assistant URL}` with the full path to your running instance, such as `http://localhost:8123`. Replace `{DoorBird name}` with the name specified in your configuration for the device you would like to clear, or how it appears in the Home Assistant UI if you have not specified one, such as `DoorBird 1`. Then use the mobile app to reschedule push notifications. +

+Please note that clearing device registrations will prevent the device from sending pushes to Home Assistant until you restart your instance with the component enabled. It could also affect other third-party applications you may use with your DoorBird device. It will not break the official mobile app in any way, so mobile push notifications will still work. +

+ +#### {% linkable_title Event Data %} +Each event includes live image and live video URLs for the Doorbird device that triggered the event. These URLs can be found on the event data and can be useful in automation actions. For example, you could use `html5_viewer_url` on a notification to be linked directly to the live view of the device that triggered the automation. + +

+The URLs on the event will be based on the configuration used to connect to your Doorbird device. Ability to connect from outside your network will depend on your configuration.

### {% linkable_title Automation Example %} diff --git a/source/_components/fan.wemo.markdown b/source/_components/fan.wemo.markdown new file mode 100644 index 00000000000..1a4dfe2ad69 --- /dev/null +++ b/source/_components/fan.wemo.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Belkin WeMo (Holmes) Smart Humidifier" +description: "Instructions how to integrate Belkin WeMo humidifiers into Home Assistant." +date: 2018-10-29 19:58 +sidebar: true +comments: false +sharing: true +footer: true +logo: belkin_wemo.png +ha_category: Fan +ha_iot_class: "Local Polling" +ha_release: 0.82 +--- + + +The `wemo` platform allows you to control your [Belkin WeMo](http://www.belkin.com/us/p/P-F7C027/) humidifiers from within Home Assistant. This includes support for the [Holmes Smart Humidifier](https://www.holmesproducts.com/wemo-humidifier.html). + +They will be automatically discovered if the discovery component is enabled. + +For more configuration information, see the [WeMo component](/components/wemo/) documentation. + +### {% linkable_title Attributes %} + +There are several attributes which can be used for automations and templates. + +| Attribute | Description | +| --------- | ----------- | +| `current_humidity` | An integer that indicates the current relative humidity percentage of the room, as determined by the device's onboard humidity sensor. +| `target_humidity` | An integer that indicates the desired relative humidity percentage (this is constrained to the humidity settings of the device, which are 45, 50, 55, 60, and 100). +| `fan_mode` | String that indicates the current fan speed setting, as reported by the WeMo humidifier. +| `water level` | String that indicates whether the water level is Good, Low, or Empty. +| `filter_life` | The used life of the filter (as a percentage). +| `filter_expired` | A boolean that indicates whether the filter has expired and needs to be replaced. + +### {% linkable_title Services %} + +There are several services which can be used for automations and control of the humidifier. + +| Service | Description | +| --------- | ----------- | +| `set_speed` | Calling this service sets the fan speed (entity_id and speed are required parameters, and speed must be one of the following: off, low, medium, or high). When selecting low for the speed, this will map to the WeMo humidifier speed of minimum. When selecting high for the speed, this will map to the WeMo humidifier speed of maximum. The WeMo humidifier speeds of low and high are unused due to constraints on which fan speeds Home Assistant supports. +| `wemo_set_humidity` | Calling this service will set the desired relative humidity setting on the device (entity_id is an optional list of entities to set humidity on (omitting this list will set humidity on all WeMo Humidifiers), and target_humidity is a required float value between 0 and 100 (this value will be rounded down and mapped to one of the valid desired humidity settings of 45, 50, 55, 60, or 100 that are supported by the WeMo humidifier)). +| `turn_on` | Calling this service will turn the humidifier on and set the speed to the last used speed (defaults to medium, entity_id is required). +| `turn_off` | Calling this service will turn the humidifier off (entity_id is required). +| `toggle` | Calling this service will toggle the humidifier between on and off states. diff --git a/source/_components/freedns.markdown b/source/_components/freedns.markdown index 226c64dfb3d..0f128208110 100644 --- a/source/_components/freedns.markdown +++ b/source/_components/freedns.markdown @@ -6,6 +6,7 @@ date: 2018-03-27 21:30 sidebar: true comments: false sharing: true +logo: afraid_freedns.png footer: true ha_category: Network ha_release: 0.67 diff --git a/source/_components/geo_location.markdown b/source/_components/geo_location.markdown index c77243971a8..1feb026c9c9 100644 --- a/source/_components/geo_location.markdown +++ b/source/_components/geo_location.markdown @@ -14,3 +14,52 @@ ha_release: "0.78" Geo Location 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. Entities can have associated geo location coordinates (latitude and longitude) so that they are displayed on the map. The distance from the entity's coordinates to Home Assistant's location can be used for filtering. + +## {% linkable_title Geo Location trigger %} + +The [Geo Location trigger](/docs/automation/trigger/#geo-location-trigger) can be used in automations triggered by Geo Location entities appearing in or disappearing from zones. The following value must be used as `source` of the trigger depending on which platform is managing the entities: + +| Platform | Source | +|----------------------------------|-------------------------------| +| GeoJSON Events | `geo_json_events` | +| NSW Rural Fire Service Incidents | `nsw_rural_fire_service_feed` | + +Conditions can be used to further filter entities, for example by inspecting their state attributes. + +## {% linkable_title Geo Location notification example %} + +The following example automation creates a notification on the screen when a fire classified as 'Bush Fire' is reported within a predefined bush fire alert zone: + +{% raw %} +```yaml +geo_location: + - platform: nsw_rural_fire_service_feed + categories: + - 'Emergency Warning' + - 'Watch and Act' + - 'Advice' + +zone: + - name: Bush Fire Alert Zone + latitude: -36.666667 + longitude: 149.833333 + radius: 15000 + passive: true + +automation: + - alias: 'Bush Fire Alert' + trigger: + platform: geo_location + source: nsw_rural_fire_service_feed + zone: zone.bush_fire_alert_zone + event: enter + condition: + condition: template + value_template: "{{ trigger.to_state.attributes.type == 'Bush Fire' }}" + action: + - service: persistent_notification.create + data_template: + message: "{{ trigger.to_state.name }} - {{ trigger.to_state.attributes.status }}" + title: "Bush Fire Alert" +``` +{% endraw %} diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 545d0a497db..413e1dcf478 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -179,6 +179,7 @@ Currently, the following domains are available to be used with Google Assistant, - cover (on/off/set position (via set brightness)) - media_player (on/off/set volume (via set brightness)) - climate (temperature setting) +- vacuum (dock/start/stop/pause) ### {% linkable_title Troubleshooting the request_sync service %} diff --git a/source/_components/greeneye_monitor.markdown b/source/_components/greeneye_monitor.markdown new file mode 100644 index 00000000000..596751358d5 --- /dev/null +++ b/source/_components/greeneye_monitor.markdown @@ -0,0 +1,126 @@ +--- +layout: page +title: "GreenEye Monitor" +description: "Instructions on how to integrate your GreenEye Monitor within Home Assistant." +date: 2018-09-02 11:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: brultech.png +ha_category: Hub +ha_release: 0.82 +ha_iot_class: "Local Push" +--- + +The [GreenEye Monitor (GEM)](http://www.brultech.com/greeneye/) integration for Home Assistant allows you to create sensors for the various data channels of the GEM. Each current transformer (CT) channel, pulse counter, and temperature sensor appears in Home Assistant as a sensor, and can be used in automations. + +Configure your GEM(s) to produce binary-format packets (for example, "Bin32 NET" for a 32-channel GEM with some channels configured for net metering) and send them to an unused port on your Home Assistant machine. (These settings are in the "Packet Send" and "Network" pages of the GEM UI.) Then specify that port and information about your monitor(s) and the data channels you wish to monitor in your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +greeneye_monitor: + port: 8000 + monitors: + - serial_number: YOUR_SERIAL_NUMBER + channels: + - number: 1 + name: total_power + - number: 2 + name: solar_panels_power + net_metering: true + pulse_counters: + - number: 1 + name: sprinklers_water_usage + counted_quantity: "gal" + counted_quantity_per_pulse: 1 + time_unit: "min" + temperature_sensors: + - number: 1 + name: back_porch_temperature +``` + +By default, GEM will send updates every 5 seconds. That's a lot of data, and the databases used by the [`recorder`](/components/recorder) component for history don't do well with that much data, so it is recommended to configure the [`influxdb`](/components/influxdb) component and exclude the GEM sensors from `recorder`. + +{% configuration %} +port: + description: The port on which Home Assistant should listen for packets from your GEM. Must match the port set in the "Network" tab of the GEM setup UI. + required: true + type: string +monitors: + description: The list of monitors that should appear in Home Assistant. Data from other monitors will be ignored. + required: false + type: list + keys: + serial_number: + description: The last five digits (omitting leading zeroes) of your GEM serial number. + required: true + type: integer + channels: + description: The list of channels that should appear in Home Assistant for this monitor. Data from other channels will be ignored. + required: false + type: list + keys: + number: + description: The channel number as it appears in the GEM UI. + required: true + type: integer + name: + description: The name that should be used for this channel's sensor in Home Assistant. + required: true + type: string + net_metering: + description: Set to `true` if the channel is configured for net metering in the GEM, otherwise `false`. + required: false + type: bool + default: false + temperature_sensors: + description: Configuration for temperature sensors + required: false + keys: + temperature_unit: + description: The unit of measure to use for the temperature (F or C) + type: string + required: true + sensors: + description: The list of temperature sensors that should appear in Home Assistant for this monitor. Data from other sensors will be ignored. + required: true + type: list + keys: + number: + description: The sensor number as it appears in the GEM UI. + required: true + type: integer + name: + description: The name that should be used for this sensor in Home Assistant. + required: true + type: string + pulse_counters: + description: The list of pulse counters that should appear in Home Assistant for this monitor. Data from other pulse counters will be ignored. + required: false + type: list + keys: + number: + description: The pulse counter's number as it appears in the GEM UI. + required: true + type: integer + name: + description: The name that should be used for this pulse counter in Home Assistant. + required: true + type: string + counted_quantity: + description: The unit being counted by this pulse counter (e.g., gal, L) + required: true + type: string + counted_quantity_per_pulse: + description: The number of the counted quantity represented by each pulse. + required: false + type: float + default: 1.0 + time_unit: + description: The time unit to use when computing rates (s, min, or h) + required: false + type: string + default: s +{% endconfiguration %} + diff --git a/source/_components/image_processing.tensorflow.markdown b/source/_components/image_processing.tensorflow.markdown new file mode 100644 index 00000000000..81c9324007b --- /dev/null +++ b/source/_components/image_processing.tensorflow.markdown @@ -0,0 +1,163 @@ +--- +layout: page +title: "TensorFlow" +description: "Detect and recognize objects with TensorFlow." +date: 2018-10-24 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tensorflow.png +ha_category: Image Processing +ha_iot_class: "Local Polling" +ha_release: 0.82 +--- + +The `tensorflow` image processing platform allows you to detect and recognize objects in a camera image using [TensorFlow](https://www.tensorflow.org/). The state of the entity is the number of objects detected, and recognized objects are listed in the `summary` attribute along with quantity. The `matches` attribute provides the confidence `score` for recognition and the bounding `box` of the object for each detection category. + +

+ The following packages must be installed on Hassbian after following the setup for the component to work: + `$ sudo apt-get install libatlas-base-dev libopenjp2-7 libtiff5` +

+ +## {% linkable_title Setup %} + +You need to install the `tensorflow` Python packages with: `$ pip3 install tensorflow`. The wheel is not available for all platforms. See [the official install guide](https://www.tensorflow.org/install/) for other options. Hass.io has this package pre-installed. + +This component requires files to be downloaded, compiled on your computer, and added to the Home Assistant configuration directory. These steps can be performed using the sample script at [this gist](https://gist.github.com/hunterjm/6f9332f92b60c3d5e448ad936d7353c3). Alternatively, if you wish to perform the process manually, the process is as follows: + +- Clone [tensorflow/models](https://github.com/tensorflow/models/tree/master/research/object_detection) +- Compile protobuf models located in `research/object_detection/protos` with `protoc` +- Create the following directory structure inside your config directory: + +```bash + |- {config_dir} + | - tensorflow/ + |- object_detection/ + |- __init__.py +``` + +- Copy required object_detection dependancies to the `object_detection` folder inside of the `tensorflow` folder: + + - `research/object_detection/data` + - `research/object_detection/utils` + - `research/object_detection/protos` + +## {% linkable_title Model Selection %} + +Lastly, it is time to pick a model. It is recommended to start with one of the COCO models available in the [Model Detection Zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md). + +The trade-off between the different models is accuracy vs speed. Users with a decent CPU should start with the `faster_rcnn_inception_v2_coco` model. If you are running on an ARM device like a Raspberry Pi, start with the `ssd_mobilenet_v2_coco` model. + +Whichever model you choose, download it and place the `frozen_inference_graph.pb` file in the `tensorflow` folder in your configuration directory. + +## {% linkable_title Configuration %} + +To enable this platform in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +image_processing: + - platform: tensorflow + source: + - entity_id: camera.local_file + model: + graph: /home/homeassistant/.homeassistant/tensorflow/frozen_inference_graph.pb +``` + +{% configuration %} +source: + description: The list of image sources. + required: true + type: map + keys: + entity_id: + description: A camera entity id to get picture from. + required: true + type: string + name: + description: This parameter allows you to override the name of your `image_processing` entity. + required: false + type: string +file_out: + description: A [template](/docs/configuration/templating/#processing-incoming-data) for the component to save processed images including bounding boxes. `camera_entity` is available as the `entity_id` string of the triggered source camera. + required: false + type: list +model: + description: Information about the TensorFlow model. + required: true + type: map + keys: + graph: + description: Full path to `frozen_inference_graph.pb`. + required: true + type: string + labels: + description: Full path to a `*label_map.pbtext`. + required: false + type: string + default: tensorflow/object_detection/data/mscoco_label_map.pbtxt + model_dir: + description: Full path to tensorflow models directory. + required: false + type: string + default: /tensorflow inside config + area: + description: Custom detection area. Only objects fully in this box will be reported. Top of image is 0, bottom is 1. Same left to right. + required: false + type: map + keys: + top: + description: Top line defined as % from top of image. + required: false + type: float + default: 0 + left: + description: Left line defined as % from left of image. + required: false + type: float + default: 0 + bottom: + description: Bottom line defined as % from top of image. + required: false + type: float + default: 1 + right: + description: Right line defined as % from left of image. + required: false + type: float + default: 1 + categories: + description: List of categories to include in object detection. Can be seen in the file provided to `labels`. + type: list + required: false +{% endconfiguration %} + +`categories` can also be defined as dictionary providing an `area` for each category as seen in the advanced configuration below: + +```yaml +# Example advanced configuration.yaml entry +image_processing: + - platform: tensorflow + source: + - entity_id: camera.driveway + - entity_id: camera.backyard + file_out: + - "/tmp/{% raw %}{{ camera_entity.split('.')[1] }}{% endraw %}_latest.jpg" + - "/tmp/{% raw %}{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}{% endraw %}.jpg" + model: + graph: /home/homeassistant/.homeassistant/tensorflow/frozen_inference_graph.pb + categories: + - category: person + area: + # Exclude top 10% of image + top: 0.1 + # Exclude right 15% of image + right: 0.85 + - car + - truck +``` + +## {% linkable_title Optimising resources %} + +[Image processing components](https://www.home-assistant.io/components/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your config `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. diff --git a/source/_components/keyboard_remote.markdown b/source/_components/keyboard_remote.markdown index 1df211a67b2..b486e00aa8d 100644 --- a/source/_components/keyboard_remote.markdown +++ b/source/_components/keyboard_remote.markdown @@ -102,10 +102,13 @@ automation: entity_id: media_player.speaker media_content_id: keyboard_connected.wav media_content_type: music - - alias: Keyboard Disconnected + + - alias: Bluetooth Keyboard Disconnected trigger: platform: event event_type: keyboard_remote_disconnected + event_data: + device_name: "00:58:56:4C:C0:91" action: - service: media_player.play_media data: diff --git a/source/_components/mailgun.markdown b/source/_components/mailgun.markdown index da274fe0a5b..4ee7a4e6fa0 100644 --- a/source/_components/mailgun.markdown +++ b/source/_components/mailgun.markdown @@ -12,7 +12,27 @@ ha_category: Notifications ha_release: 0.38 --- -The component supports push messages and generates events based on inbound data. To generate inbound events, add a Route set to Store and Notify with a URL of the following form: `https:///api/mailgun?api_password=` +To be able to receive events from Mailgun, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](https://www.home-assistant.io/components/http/#base_url)). + +To set it up, go to the integrations page in the configuration screen and find Mailgun. Click on configure. Follow the instructions on the screen to configure Mailgun. + +You will get a URL of the following format: `https:///api/webhook/9940e99a26fae4dcf6fe0a478124b6b58b578ea4c55c9a584beb1c9f5057bb91`. To generate inbound events, add a Route set to Store and Notify with that url. + +Events coming in from Mailgun will be available as events in Home Assistant and are fired as `mailgun_message_received`. The [data specified by Mailgun](https://www.mailgun.com/blog/a-guide-to-using-mailguns-webhooks) will be available as the event data. You can use this event to trigger automations. + +You can then consume that information with the following automation: + +```yaml +automation: + trigger: + platform: event + event_type: mailgun_message_received + event_data: + action: call_service + action: + service: light.turn_on + entity_id: light.office +``` To send messages, use the [Mailgun notify platform][notify]. diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown index 0737d7a9124..d934f92b1f2 100644 --- a/source/_components/media_player.onkyo.markdown +++ b/source/_components/media_player.onkyo.markdown @@ -80,6 +80,20 @@ List of source names: - xm - sirius +### {% linkable_title Service `onkyo_select_hdmi_output` %} + +Changes HDMI output of your receiver + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of a single `entity_id` that will change output. +| `hdmi_output` | no | The desired output code. + +Accepted values are: +'no', 'analog', 'yes', 'out', 'out-sub', 'sub', 'hdbaset', 'both', 'up' +which one to use seems to vary depending on model so you will have to try them out. +( For model TX-NR676E it seems to be 'out' for main, 'out-sub' for sub, and 'sub' for both ) + ### {% linkable_title Example `play_media` script %} The `play_media` function can be used in script to play radio station by preset number. @@ -102,3 +116,19 @@ script: media_content_id: "1" ``` + +### {% linkable_title Example `onkyo_select_hdmi_output` script %} + +```yaml +# Example onkyo_select_hdmi_output script +# +script: + hdmi_sub: + alias: "Hdmi out projector" + sequence: + - service: media_player.onkyo_select_hdmi_output + service_data: + entity_id: media_player.onkyo + hdmi_output: out-sub + +``` \ No newline at end of file diff --git a/source/_components/notify.synology_chat.markdown b/source/_components/notify.synology_chat.markdown index a42f3934eed..88abaf0c7c9 100644 --- a/source/_components/notify.synology_chat.markdown +++ b/source/_components/notify.synology_chat.markdown @@ -38,3 +38,13 @@ resource: {% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). + +A full example of a service call: + +```json +{"message": "This is a test message", + "data":{ + "file_url":"https://example.com/wp-content/uploads/sites/14/2011/01/cat.jpg" + } + } +``` diff --git a/source/_components/opentherm_gw.markdown b/source/_components/opentherm_gw.markdown index 9a6a81173c5..debdfaec6cb 100644 --- a/source/_components/opentherm_gw.markdown +++ b/source/_components/opentherm_gw.markdown @@ -255,6 +255,97 @@ monitored_variables: ## {% linkable_title Supported Variables %} The list above contains all supported variables. Note that not all boilers and thermostats properly support all variables, so the fact that a variable is listed here and published by your system does not necessarily mean that you will get useful data out of it. To see which variables are published in your situation, enable debug logging for the `opentherm_gw` component and look for the status updates. +# {% linkable_title Services %} + +### {% linkable_title Service `opentherm_gw.reset_gateway` %} + +Reset the OpenTherm Gateway. + +This service takes no parameters. + +### {% linkable_title Service `opentherm_gw.set_clock` %} + +Provide the time and day of week to the OpenTherm Gateway. The value provided here will be forwarded to the thermostat on the next date/time request from the thermostat. The OpenTherm Gateway does not have the ability to accurately keep track of time, so it will only retain the information provided here for a maximum of about 61 seconds. + +| Service data attribute | Optional | Default | Description | +| ---------------------- | -------- | ------- | ----------- | +| `date` | yes | Today's date | Date from which the day of week will be extracted. Format: `YYYY-MM-DD`. +| `time` | yes | Current time | Time in 24h format. + +### {% linkable_title Service `opentherm_gw.set_control_setpoint` %} + +

+Improper use of this service may continuously keep your central heating system active, resulting in an overheated house and a significant increase in gas and/or electricity consumption. +

+ +Set the central heating control setpoint override on the OpenTherm Gateway. +In a normal situation, the thermostat will calculate and control the central heating setpoint on the boiler. Setting this to any value other than 0 will enable the override and allow the OpenTherm Gateway to control this setting. While the override is active, the OpenTherm Gateway will also request your boiler to activate the central heating circuit. For your boiler's actual maximum and minimum supported setpoint value, please see the [`slave_ch_max_setp`](#slave_ch_max_setp) and [`slave_ch_min_setp`](#slave_ch_min_setp) variables. Due to the potential consequences of leaving this setting enabled for prolonged periods, the override will be disabled when Home Assistant is shut down or restarted. +**You will only need this if you are writing your own software thermostat.** + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `temperature` | no | The central heating setpoint. Values between `0.0` and `90.0` are accepted, but your boiler may not support the full range. Set to `0` to disable the override. + +

+Please read [this information](http://otgw.tclcode.com/standalone.html) from the designer of the OpenTherm Gateway before considering to write your own software thermostat. +

+ +### {% linkable_title Service `opentherm_gw.set_gpio_mode` %} + +Configure the GPIO behavior on the OpenTherm Gateway. +For an explanation of the possible modes, see [GPIO modes](#gpio-modes) + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `id` | no | The GPIO ID, `A` or `B`. +| `mode` | no | The GPIO mode to be set. + +### {% linkable_title Service `opentherm_gw.set_led_mode` %} + +Configure the function of the LEDs on the OpenTherm Gateway. +For a list of possible modes with explanation, see [LED modes](#led-modes) + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `id` | no | The LED ID, accepted values are `A` through `F`. +| `mode` | no | The LED mode to be set. + +### {% linkable_title Service `opentherm_gw.set_max_modulation` %} + +

+Improper use of this service may impair the performance of your central heating system. +

+ +Set the maximum modulation level override on the OpenTherm Gateway. +In a normal situation, the thermostat will control the maximum modulation level on the boiler. Setting this to any value other than `-1` will enable the override and allow the OpenTherm Gateway to control this setting. Due to the potential consequences of leaving this setting enabled, the override will be disabled when Home Assistant is shut down or restarted. +**You will only need this if you are writing your own software thermostat.** + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `level` | no | The maximum modulation level. Accepted values are `-1` through `100`. Set to `-1` to disable the override. + +

+Please read [this information](http://otgw.tclcode.com/standalone.html) from the designer of the OpenTherm Gateway before considering to write your own software thermostat. +

+ +### {% linkable_title Service `opentherm_gw.set_outside_temperature` %} + +Provide the outside temperature to the thermostat. +If your thermostat is unable to display an outside temperature and does not support OTC (Outside Temperature Correction), this has no effect. Note that not all thermostats are able to display the full supported range. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `temperature` | no | The outside temperature to provide to the thermostat. Accepted values are `-40.0` through `64.0`. Any value above `64.0` will clear a previously configured value (suggestion: `99`). + +### {% linkable_title Service `opentherm_gw.set_setback_temperature` %} + +Configure the setback temperature on the OpenTherm Gateway. +The value you provide here will be used with the GPIO `home` (5) and `away` (6) modes. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `temperature` | no | The setback temperature. Accepted values are `0.0` through `30.0`. + ## {% linkable_title GPIO modes %} Possible modes and their meaning for the GPIO pins are listed here: diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown index 919b6566dfa..55d6398f8df 100644 --- a/source/_components/sensor.darksky.markdown +++ b/source/_components/sensor.darksky.markdown @@ -93,6 +93,7 @@ Configuration variables: - **apparent_temperature**: A numerical value representing the apparent (or "feels like") temperature. - **dew_point**: The dew point. - **wind_speed**: The wind speed. + - **wind_gust**: The wind gust. - **wind_bearing**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. - **cloud_cover**: The percentage of sky occluded by clouds. - **humidity**: The relative humidity. diff --git a/source/_components/sensor.greeneye_monitor.markdown b/source/_components/sensor.greeneye_monitor.markdown new file mode 100644 index 00000000000..ed0de5f7268 --- /dev/null +++ b/source/_components/sensor.greeneye_monitor.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "GreenEye Monitor Sensors" +description: "Instructions on how to integrate the various sensors on your Greeneye Monitor into Home Assistant." +date: 2018-09-02 14:13 +sidebar: true +comments: false +sharing: true +footer: true +logo: brultech.png +ha_category: Sensor +ha_iot_class: "Local Push" +ha_release: 0.82 +--- + +The [GreenEye Monitor (GEM)](http://www.brultech.com/greeneye/) integration for Home Assistant allows you to create sensors for the various data channels of the GEM. + +Add sensors via the configuration for the hub [GreenEye Monitor component](/components/greeneye_monitor/). diff --git a/source/_components/sensor.meteo_france.markdown b/source/_components/sensor.meteo_france.markdown new file mode 100644 index 00000000000..a479a760ddb --- /dev/null +++ b/source/_components/sensor.meteo_france.markdown @@ -0,0 +1,86 @@ +--- +layout: page +title: "Météo-France Sensor" +description: "Show 1hr rain forecast from Météo-France." +date: 2018-10-18 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: meteo-france.png +ha_category: Sensor +featured: true +ha_release: 0.82 +ha_iot_class: "Cloud Polling" +--- + +The `meteo_france` platform uses the [Météo-France](http://www.meteofrance.com/) web service as a source for meteorological data for your location. The location is based on the `postal_code` configured in your `configuration.yaml` file. + +## {% linkable_title Configuration %} + +To add Météo-France to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: meteo_france + postal_code: 76000 + monitored_conditions: + - temperature + - weather + - wind_speed + - uv + - next_rain + - freeze_chance + - rain_chance + - snow_chance + - thunder_chance +``` + +{% configuration %} + postal_code: + description: Postal code of the city. + required: true + type: string + monitored_conditions: + description: The conditions types to monitor. + required: true + type: list + keys: + temperature: + description: The current temperature. + weather: + description: A human-readable text summary of the current conditions. + wind_speed: + description: The wind speed. + uv: + description: The current UV index. + next_rain: + description: Time to the next rain if happening for the next hour. (see note below) + freeze_chance: + description: Probability of temperature below 0°C for the day. + rain_chance: + description: Probability of rain for the day. + snow_chance: + description: Probability of snow for the day. + thunder_chance: + description: Probability of thunderstorm for the day. +{% endconfiguration %} + + +### {% linkable_title About `next_rain` condition sensor %} + +

+ The 1 hour rain forecast is supported for more than 75% of metropolitan France.
+ You can check if your city is covered on the [Météo-France website](http://www.meteofrance.com/previsions-meteo-france/previsions-pluie) +

+ +The `next_rain` sensor value is the time to next rain, from 0 to 55min. +If no rain is forecasted for the next hour, value will be "No rain". + +Attributes also give the forecast for the next hour in 5min intervals. +Possible value for each intervals attributes are : +- 1 No rain +- 2 Light rain +- 3 Moderate rain +- 4 Heavy rain diff --git a/source/_components/sensor.sma.markdown b/source/_components/sensor.sma.markdown index cb130590517..6365675c6e4 100644 --- a/source/_components/sensor.sma.markdown +++ b/source/_components/sensor.sma.markdown @@ -43,6 +43,11 @@ ssl: required: false default: false type: boolean +verify_ssl: + description: Whether Home Assistant should verify the SSL certificate from the inverter. Self-signed certificates may require `false` for this sensor to operate properly. + required: false + default: true + type: boolean password: description: The password of the SMA WebConnect module. required: true diff --git a/source/_components/sensor.version.markdown b/source/_components/sensor.version.markdown index 92437ab87a8..91b0b63dd01 100644 --- a/source/_components/sensor.version.markdown +++ b/source/_components/sensor.version.markdown @@ -14,11 +14,11 @@ ha_release: 0.52 ha_qa_scale: internal --- -The `version` sensor platform is displaying the current version of Home Assistant in the frontend. +The `version` sensor platform that can display the current Home Assistant versions. ## {% linkable_title Configuration %} -To enable this sensor, add the following lines to your `configuration.yaml` file for a GET request: +To enable this sensor, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -31,10 +31,29 @@ name: description: Name to use in the frontend. required: false type: string - default: Current Version + default: Home Assistant Version +beta: + description: Flag to indicate that it will check for beta versions, only supported for the sources `pypi`, `hassio` and `docker`. + required: false + type: boolean + default: false +image: + description: The image you want to check against, this is only supported for `hassio`, see full list under. + required: false + type: string + default: default +source: + description: The source you want to check against, possible values are `local`, `pypi`, `hassio` and `docker`. + required: false + type: string + default: local {% endconfiguration %} -## {% linkable_title Alternatives %} +### {% linkable_title Supported images for Hassio %} + +`default`, `qemux86`, `qemux86-64`, `qemuarm`, `qemuarm-64`, `intel-nuc`, `raspberrypi`, `raspberrypi2`, `raspberrypi3`, `raspberrypi3-64`, `tinker`, `odroid-c2`, `odroid-xu` + +## {% linkable_title Alternatives for showing local version %} This sensor is an alternative to the existing solutions to achieve the same result through various platforms. @@ -56,7 +75,7 @@ sensor: command: "/home/homeassistant/bin/hass --version" ``` -It's also possible to ready a file called `.HA_VERSION` which is located in your +It's also possible to read a file called `.HA_VERSION` which is located in your Home Assistant [configuration](/docs/configuration/) folder. ```yaml @@ -68,7 +87,7 @@ sensor: You might think that a [`rest` sensor](/components/sensor.rest/) could work, too, -but it will not as Home Assistant is not ready when the sensor get initialized. +but it will not as Home Assistant is not ready when the sensor gets initialized. {% raw %} ```yaml diff --git a/source/_components/sensor.yahoo_finance.markdown b/source/_components/sensor.yahoo_finance.markdown deleted file mode 100644 index 2317cdc1c27..00000000000 --- a/source/_components/sensor.yahoo_finance.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Yahoo Finance" -description: "Instructions on how to setup Yahoo Finance within Home Assistant." -date: 2016-09-18 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: yahoo_finance.png -ha_category: Finance -ha_iot_class: "Cloud Polling" -featured: false -ha_release: 0.29 ---- - -

- This sensor doesn't work anymore as [Yahoo!](https://yahoo.uservoice.com/forums/382977-finance/suggestions/32103877-yahoo-stock-quote-api-please-bring-back) decommissioned the service in early November 2017. A replacement is the [`alpha_vantage` sensor](/components/sensor.alpha_vantage/). -

- -The `yahoo_finance` platform uses [Yahoo Finance](https://finance.yahoo.com/) to monitor the stock market. - -## {% linkable_title Configuration %} - -To enable the `yahoo_finance` platform, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: yahoo_finance -``` - -{% configuration %} -name: - description: The name of the sensor. - required: false - type: string - default: Yahoo Stock -symbols: - description: List of stock market symbols for given companies. - required: false - type: string, list - default: YHOO -{% endconfiguration %} - -## {% linkable_title Examples %} - -In this section you find some real-life examples of how to use this sensor. - -### {% linkable_title Red Hat and Google %} - -```yaml -sensor: - - platform: yahoo_finance - symbols: - - RHT - - GOOGL -``` diff --git a/source/_components/shell_command.markdown b/source/_components/shell_command.markdown index bb280f91220..b50d8f00a0c 100644 --- a/source/_components/shell_command.markdown +++ b/source/_components/shell_command.markdown @@ -30,7 +30,7 @@ Configuration variables: - Alias for the command - Command itself. -The commands can be dynamic, using templates to insert values for arguments. When using templates, shell_command runs in a more secure environment which doesn't allow any shell helpers like automatically expanding the home dir `~` or using pipe symbols to run multiple commands. +The commands can be dynamic, using templates to insert values for arguments. When using templates, shell_command runs in a more secure environment which doesn't allow any shell helpers like automatically expanding the home dir `~` or using pipe symbols to run multiple commands. Similarly, only content after the first space can be generated by a template. This means the command name itself cannot be generated by a template, but it must be literally provided. Any service data passed into the service call to activate the shell command will be available as a variable within the template. diff --git a/source/_components/switch.doorbird.markdown b/source/_components/switch.doorbird.markdown index fcd862aa901..f2da16e9629 100644 --- a/source/_components/switch.doorbird.markdown +++ b/source/_components/switch.doorbird.markdown @@ -13,7 +13,7 @@ ha_release: "0.54" ha_iot_class: "Local Push" --- -The `doorbird` switch platform allows you to power relays in your [DoorBird](http://www.doorbird.com/) video doorbell device. +The `doorbird` switch platform allows you to power connected relays and trigger the IR array in your [DoorBird](http://www.doorbird.com/) video doorbell device.

You must have the [DoorBird component](/components/doorbird/) configured to use this switch. @@ -25,19 +25,4 @@ To enable this switch, add the following lines to your `configuration.yaml` file # Example configuration.yaml entry switch: - platform: doorbird - switches: - - light_on - - open_door ``` - -{% configuration %} -switches: - description: A list of switches to include. Possible entries are `light_on` for control of the IR array and `open_door` for control of an electronic door strike or alarm. - required: false - type: list - keys: - light_on: - description: Enable the IR light for 3 minutes. - open_door: - description: Activate DoorBird door relay -{% endconfiguration %} diff --git a/source/_components/twilio.markdown b/source/_components/twilio.markdown index c46464b1699..fa01f2b6c85 100644 --- a/source/_components/twilio.markdown +++ b/source/_components/twilio.markdown @@ -41,3 +41,26 @@ auth_token: ### {% linkable_title Usage %} After configuring the base Twilio component, add and configure either or both of the [twilio SMS](/components/notify.twilio_sms/) and [twilio Phone](/components/notify.twilio_call) components to utilize the notification functionality. + +To be able to receive events from Twilio, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](https://www.home-assistant.io/components/http/#base_url)). + +To set it up, go to the integrations page in the configuration screen and find Twilio. Click on configure. Follow the instructions on the screen to configure Twilio. + +You will get a URL of the following format: `https:///api/webhook/9940e99a26fae4dcf6fe0a478124b6b58b578ea4c55c9a584beb1c9f5057bb91`. To generate inbound events, you have to configure your webhooks with [Twilio](https://www.twilio.com/docs/glossary/what-is-a-webhook) + +Events coming in from Twilio will be available as events in Home Assistant and are fired as `twilio_data_received`. The data specified by Twilio will be available as the event data. You can use this event to trigger automations. + +You can then consume that information with the following automation: + +```yaml +automation: + trigger: + platform: event + event_type: twilio_data_received + event_data: + action: call_service + action: + service: light.turn_on + entity_id: light.office +``` + diff --git a/source/_components/vacuum.mqtt.markdown b/source/_components/vacuum.mqtt.markdown index 04fb17d504e..6ada6edfc03 100644 --- a/source/_components/vacuum.mqtt.markdown +++ b/source/_components/vacuum.mqtt.markdown @@ -44,6 +44,8 @@ vacuum: cleaning_template: "{{ value_json.cleaning }}" docked_topic: "vacuum/state" docked_template: "{{ value_json.docked }}" + error_topic: "vacuum/state" + error_template: "{{ value_json.error }}" fan_speed_topic: "vacuum/state" fan_speed_template: "{{ value_json.fan_speed }}" set_fan_speed_topic: "vacuum/set_fan_speed" @@ -147,6 +149,14 @@ docked_template: description: "Defines a [template](/topics/templating/) to define the docked state of the vacuum." required: false type: string +error_topic: + description: The MQTT topic subscribed to receive error messages from the vacuum. + required: false + type: string +error_template: + description: "Defines a [template](/topics/templating/) to define potential error messages emitted by the vacuum." + required: false + type: string fan_speed_topic: description: The MQTT topic subscribed to receive fan speed values from the vacuum. required: false @@ -227,7 +237,8 @@ MQTT payload: "docked": true, "cleaning": false, "charging": true, - "fan_speed": "off" + "fan_speed": "off", + "error": "Error message" } ``` diff --git a/source/_components/wemo.markdown b/source/_components/wemo.markdown index 62cd2b5e2f6..fb16345b383 100644 --- a/source/_components/wemo.markdown +++ b/source/_components/wemo.markdown @@ -2,7 +2,7 @@ layout: page title: "Belkin WeMo" description: "Instructions on how to integrate Belkin WeMo devices into Home Assistant." -date: 2016-02-20 00:41 +date: 2018-11-01 01:53 sidebar: true comments: false sharing: true @@ -17,41 +17,50 @@ The `wemo` component is the main component to integrate various [Belkin WeMo](ht ## {% linkable_title Configuration %} -Supported devices will be automatically discovered if the discovery component is enabled. Loading the `wemo` component will scan the local network for WeMo devices, even if you are not using the discovery component - -```yaml -# Example configuration.yaml entry -wemo: -``` - {% configuration %} static: description: One or more static IP adresses for WeMo to use required: false type: list - default: 1 + discovery: + description: Setting this value to false will prevent the automatic discovery of WeMo devices by the wemo platform and the discovery platform (static devices will still be discovered) + required: false + type: boolean + default: true {% endconfiguration %} -Alternately, WeMo devices that are not discoverable can be statically configured. If you have WeMo devices on subnets other than where Home Assistant is running, or devices in a remote location reachable over a VPN, you will need to configure them manually. This is also useful if you wish to disable discovery for some WeMo's, even if they are local. Example static configuration: +Supported devices will be automatically discovered if the optional `discovery` configuration item is omitted or set to true or if the `discovery` component is enabled. If the `discovery` configuration item is set to false, then automatic discovery of WeMo devices is disabled both for the `wemo` component and for the `discovery` component. Loading the `wemo` component with the `discovery` configuration item omitted or set to true will scan the local network for WeMo devices, even if you are not using the `discovery` component. ```yaml +# Example configuration.yaml entry with automatic discovery enabled (by omitting the discovery configuration item) wemo: + +# Example configuration.yaml entry with automatic discovery enabled (by explicitly setting the discovery configuration item) +wemo: + discovery: true +``` + +Alternately, WeMo devices that are not discoverable can be statically configured. If you have WeMo devices on subnets other than where Home Assistant is running, or devices in a remote location reachable over a VPN, you will need to configure them manually. Statically configured devices may be used with or without automatic discovery enabled. Example static configuration: + +```yaml +# Example configuration.yaml entry with automatic discovery disabled, and 2 statically configured devices +wemo: + discovery: false static: - 192.168.1.23 - 192.168.52.172 ``` -Any WeMo devices that are not statically configured but reachable via discovery will still be added automatically. +Note that if you use static device entries, you may want to set up your router (or whatever runs your DHCP server) to force your WeMo devices to use a static IP address. Check the DHCP section of your router configuration for this ability. -Note that if you use this, you may want to set up your router (or whatever runs your DHCP server) to force your WeMo devices to use a static IP address. Check the DHCP section of your router configuration for this ability. - -If the device doesn't seem to work and all you see is the state "unavailable" on your dashboard, check that your firewall doesn't block incoming request on port 8989 since this is the address to which the WeMo devices send their update. +If the device doesn't seem to work and all you see is the state "unavailable" on your dashboard, check that your firewall doesn't block incoming requests on port 8989, since this is the port to which the WeMo devices send their updates. ## {% linkable_title Emulated devices %} -Various software that emulates WeMo devices often uses alternative ports. Static configuration should include the port value: +Various software that emulate WeMo devices often use alternative ports. Static configuration should include the port value: ```yaml +# Example configuration.yaml entry with static device entries that include non-standard port numbers wemo: static: - 192.168.1.23:52001 diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 4bbf7e6d859..1cf9b52f7a0 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -218,6 +218,21 @@ automation: event: enter # or "leave" ``` +### {% linkable_title Geo Location trigger %} + +Geo Location triggers can trigger when an entity is appearing in or disappearing from a zone. Entities that are created by a [Geo Location](/components/geo_location/) platform support reporting GPS coordinates. +Because entities are generated and removed by these platforms automatically, the entity id normally cannot be predicted. Instead, this trigger requires the definition of a `source` which is directly linked to one of the Geo Location platforms. + +```yaml +automation: + trigger: + platform: geo_location + source: nsw_rural_fire_service_feed + zone: zone.bushfire_alert_zone + # Event is either enter or leave + event: enter # or "leave" +``` + ### {% linkable_title Multiple triggers %} When your want your automation rule to have multiple triggers, just prefix the first line of each trigger with a dash (-) and indent the next lines accordingly. Whenever one of the triggers fires, your rule is executed. diff --git a/source/_docs/ecosystem/notebooks/installation.markdown b/source/_docs/ecosystem/notebooks/installation.markdown index 96997dd0650..4d3fc06b608 100644 --- a/source/_docs/ecosystem/notebooks/installation.markdown +++ b/source/_docs/ecosystem/notebooks/installation.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /ecosystem/notebooks/installation/ --- -To run Jupyter Notebooks locally, an installation of [Jupyter](http://jupyter.org/) is needed. Consider to run Jupyter in a [virtualenv](/getting-started/installation-virtualenv/). +To run Jupyter Notebooks locally, an installation of [Jupyter](http://jupyter.org/) is needed. Consider running Jupyter in a [virtualenv](/getting-started/installation-virtualenv/) in order to properly manage dependencies. ```bash $ pip3 install jupyter matplotlib diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index 07badffcbb2..ef9ead7d25f 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -124,18 +124,20 @@ type: required: true description: weblink type: string -name: - required: true - description: Link label. - type: string -icon: - required: true - description: "Icon to display (e.g., `mdi:home`)" - type: string url: required: true description: "Website URL (or internal URL e.g. `/hassio/dashboard` or `/panel_custom_name`)" type: string +name: + required: false + description: Link label + type: string + default: url path +icon: + required: false + description: "Icon to display (e.g., `mdi:home`)" + type: string + default: "`mdi:link`" {% endconfiguration %} ## {% linkable_title Example %} diff --git a/source/_lovelace/light.markdown b/source/_lovelace/light.markdown new file mode 100644 index 00000000000..75b2f59fe44 --- /dev/null +++ b/source/_lovelace/light.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "Light Card" +sidebar_label: Light +description: "The Light card allows you to change the brightness of the light." +date: 2018-10-29 10:28 +00:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +The Light card allows you to change the brightness of the light. + +

+Screenshot of the Light card +Screenshot of the Light card. +

+ +```yaml +- type: light + entity: light.bedroom +- type: light + entity: light.office +``` + +{% configuration %} +type: + required: true + description: light + type: string +entity: + required: true + description: Home Assistant Light Domain entity ID. + type: string +name: + required: false + description: Overwrites friendly name. + type: string + default: Name of Entity +{% endconfiguration %} + +## {% linkable_title Examples %} + +Overwriting names example: + +```yaml +- type: light + entity: light.bedroom + name: Kids Bedroom +- type: light + entity: light.office + name: My Office +``` + +

+Screenshot of the Light card +Screenshot of the Light card names. +

diff --git a/source/_posts/2018-11-08-release-82.markdown b/source/_posts/2018-11-08-release-82.markdown new file mode 100644 index 00000000000..7d49a470d33 --- /dev/null +++ b/source/_posts/2018-11-08-release-82.markdown @@ -0,0 +1,657 @@ +--- +layout: post +title: "0.82: TensorFlow, Lovelace UI edit, Z-Wave Barrier Class" +description: "We are glad to inform you that yet another epic release has landed." +date: 2018-11-09 00:01:00 +date_formatted: "November 9, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-11-release-82/lovelace-edit.png +--- + +It's time for another great release. As this includes the tail-end of HacktoberFest, it's packed again with stuff. Hope you like stuff. + +I want to do a shout out to all the people who help with the documentation. Since the beginning of HacktoberFest, we've seen [953 PRs](https://github.com/home-assistant/home-assistant.io/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+closed%3A%3E2018-10-01) get merged, 953! Especially thanks to [@klaasnicolaas] who has converted 240 pages to the new configuration format. DAAAAANG. + +We also got some cool new features. The first one being that you can now use TensorFlow, a machine learning framework, to detect objects on your cameras thanks to the hard work by [@hunterjm]. Check out [the docs][image_processing.tensorflow docs] for more info. + +Next up is that [@rohankapoorcom] has been working hard on converting more integrations to the Webhook format. This allows for easy setting up via the UI and generates difficult to guess urls. This release includes Mailgun, Twilio and DialogFlow. + +The frontend team has been [BUSY](https://github.com/home-assistant/home-assistant-polymer/pull/1974). We're prepping Lovelace for general release and slowly all pieces are coming together. This release introduces an experimental, alpha, ultra-raw, (enough warnings already?) UI editor for Lovelace cards. It requires that your card has an ID but then, it just works. Including a live preview of the config you're editing. + +

+ Screenshot of editing a Lovelace card + Screenshot of editing a Lovelace card. +

+ +Also frontend related, in version 0.81 we removed all config splitting functions for ui-lovelace.yaml, we are happy to report that we managed to add back support for `!secret` and `!include`. The rest of the config splitting commands you are used to in `configuration.yaml` will not be available for Lovelace. Mind that you can not edit content in `!include` from the UI, and `!secret` cannot be used in the UI or preview at the moment. + +And we have one more thing… we have soft-forked Open Z-Wave and have added support for the barrier command class! This means that now you will be able to control your garage doors from Z-Wave without compiling Open Z-Wave yourself. We'll continue to monitor what other features we can add to our fork while remaining close to the OZW project. + +## {% linkable_title New Platforms %} + +- Add device tracking for the BT Smart Hub router ([@jxwolstenholme] - [#17158]) ([device_tracker docs]) (new-platform) +- Météo-france sensor : current weather and 1 hour rain forecast ([@victorcerutti] - [#17773]) ([sensor.meteo_france docs]) (new-platform) +- Support for WeMo Humidifier ([@sqldiablo] - [#17996]) ([wemo docs]) ([fan.wemo docs]) (new-platform) +- Add a component for GreenEye Monitor ([@jkeljo] - [#16378]) ([greeneye_monitor docs]) (new-platform) +- TensorFlow image_processing component ([@hunterjm] - [#17795]) ([image_processing.tensorflow docs]) (new-platform) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Migrate Mailgun to use the webhook component ([@rohankapoorcom] - [#17464]) ([ifttt docs]) ([mailgun docs]) ([notify docs]) ([automation.webhook docs]) (breaking change) +- Migrate twilio webhooks to the webhook component ([@rohankapoorcom] - [#17715]) ([twilio docs]) (breaking change) +- Fix Vera climate component to use correct states ([@sqldiablo] - [#17892]) ([climate.vera docs]) (breaking change) +- Migrate dialogflow over to the new webhook component ([@rohankapoorcom] - [#17804]) ([dialogflow docs]) ([http docs]) (breaking change) +- Update to DoorBirdPy v2 (again) ([@Klikini] - [#14933]) ([doorbird docs]) ([switch.doorbird docs]) (breaking change) +- Add binary sensors for sense energy monitor ([@kbickar] - [#17645]) ([sensor.sense docs]) (breaking change) +- Update Pollen.com to use numpy for trend analysis ([@bachya] - [#18107]) ([sensor.pollen docs]) (breaking change) +- Remove config (breaking change) ([@jjlawren] - [#18153]) ([ffmpeg docs]) (breaking change) (beta fix) + +## {% linkable_title Beta Fixes %} + +- SMA: Optional import in schema & backoff fix ([@kellerza] - [#18099]) (beta fix) +- Remove config (breaking change) ([@jjlawren] - [#18153]) ([ffmpeg docs]) (breaking change) (beta fix) +- Handle TensorFlow like OpenCV ([@pvizeli] - [#18185]) ([image_processing.tensorflow docs]) (beta fix) +- Add support for TensorFlow in official docker ([@pvizeli] - [#18191]) (beta fix) +- Cloud conf ([@balloob] - [#18216]) ([cloud docs]) (beta fix) +- Check if os has chown ([@bramkragten] - [#18229]) (beta fix) +- Update pynetgear to 0.5.1 ([@Arkkimaagi] - [#18238]) ([device_tracker docs]) (beta fix) +- Migrate python-openzwave to homeassistant-pyozw ([@pvizeli] - [#18268]) (beta fix) +- SMA Guard against older pysma ([@kellerza] - [#18278]) ([sensor.sma docs]) (beta fix) +- Bump pyotgw to 0.3b1 ([@mvn23] - [#18286]) ([opentherm_gw docs]) (beta fix) +- Fix log error message ([@pvizeli] - [#18305]) ([hassio docs]) (beta fix) +- Bump pyhaversion to 2.0.2 ([@ludeeus] - [#18318]) ([sensor.version docs]) (beta fix) +- Fix xiaomi binary_sensor warning ([@Danielhiversen] - [#18280]) ([binary_sensor.xiaomi_aqara docs]) (beta fix) +- Remove Velbus climate platform ([@balloob] - [#18319]) ([velbus docs]) (beta fix) +- fix last device ignored ([@abmantis] - [#18329]) ([device_tracker docs]) (beta fix) + +## {% linkable_title All changes %} + +- Mill, support more heater types ([@Danielhiversen] - [#17676]) ([climate.mill docs]) +- Add missing hangouts data/image to notify service ([@quazzie] - [#17576]) ([notify docs]) +- Fix Mexican Spanish identifier ([@manuel-jrs] - [#17674]) ([tts docs]) +- Add readthedoc.yml file to specify the version of python to run during documentation building. ([@tmonck] - [#17642]) +- All supported domains should be exposed by default ([@doudz] - [#17579]) ([google_assistant docs]) +- Updated simplisafe-python to 3.1.13 ([@bachya] - [#17696]) ([simplisafe docs]) +- Upgrade Sphinx to 1.8.1 ([@fabaff] - [#17701]) +- Away mode temperature fix for generic thermostat ([@estevez-dev] - [#17641]) ([climate.generic_thermostat docs]) +- Async version for asuswrt ([@kennedyshead] - [#17692]) ([device_tracker docs]) +- Migrate Mailgun to use the webhook component ([@rohankapoorcom] - [#17464]) ([ifttt docs]) ([mailgun docs]) ([notify docs]) ([automation.webhook docs]) (breaking change) +- Only strip from the bluetooth name if it isn't None ([@d0ugal] - [#17719]) ([device_tracker docs]) +- Just use debug instead of error if the binary_sensor does not get data ([@kennedyshead] - [#17720]) ([openuv docs]) +- clean up clicksend ([@Danielhiversen] - [#17723]) ([notify docs]) +- Set available property ([@ehendrix23] - [#17706]) ([august docs]) ([binary_sensor.august docs]) ([lock.august docs]) +- Removes re-init ([@kennedyshead] - [#17724]) ([device_tracker docs]) +- Don't call off_delay_listener if not needed ([@foxel] - [#17712]) ([binary_sensor.mqtt docs]) +- Rename readthedocs file ([@fabaff] - [#17718]) +- Add device tracking for the BT Smart Hub router ([@jxwolstenholme] - [#17158]) ([device_tracker docs]) (new-platform) +- Upgrade pytest to 3.9.2 ([@scop] - [#17736]) +- Upgrade mypy to 0.641 ([@scop] - [#17734]) +- IGD review fixes ([@StevenLooman] - [#17400]) ([upnp docs]) +- Pytest tests ([@balloob] - [#17750]) +- Remove webhook_id from yaml config for mailgun ([@rohankapoorcom] - [#17732]) ([mailgun docs]) +- Update zha __init__.py to reflect new Zigbee name stylization by the Zigbee Alliance ([@Hedda] - [#17751]) ([zha docs]) +- Clean up clicksend_tts ([@Danielhiversen] - [#17749]) ([notify docs]) +- Convert auth websocket commands to use async_response decorator ([@balloob] - [#17755]) ([auth docs]) +- Update name (fixes #17752) ([@fabaff] - [#17756]) ([zigbee docs]) ([binary_sensor.zha docs]) ([binary_sensor.zigbee docs]) ([switch.xiaomi_aqara docs]) ([switch.zigbee docs]) +- Async tests for MQTT lock ([@kennedyshead] - [#17763]) +- Async MQTT sensor room ([@kennedyshead] - [#17765]) +- Add Mexican Spanish language ([@manuel-jrs] - [#17735]) ([tts docs]) +- Add wind gust (fixes #17766) ([@fabaff] - [#17774]) ([sensor.darksky docs]) +- Remove username from log entry ([@fabaff] - [#17777]) ([vacuum.roomba docs]) +- Migrate twilio webhooks to the webhook component ([@rohankapoorcom] - [#17715]) ([twilio docs]) (breaking change) +- Testing async in MQTT_json lights ([@kennedyshead] - [#17768]) +- This makes mqtt_template tests async ([@kennedyshead] - [#17784]) +- Restore manual alarm-control-panel state using async_get_last_state ([@liaanvdm] - [#17521]) ([alarm_control_panel.manual docs]) +- typo ([@janvanhelvoort] - [#17787]) ([zwave docs]) +- Fix device reg considered changed ([@balloob] - [#17764]) +- Allow creating signed urls ([@balloob] - [#17759]) ([auth docs]) ([http docs]) +- Add contact sensors to alexa smart home ([@abmantis] - [#17704]) ([alexa docs]) +- Upgrade flake8 to 3.6.0 ([@scop] - [#17770]) +- Install face_recognition on Docker build ([@lights0123] - [#17502]) +- Delete sensor.yahoo_finance ([@rohankapoorcom] - [#17805]) +- deCONZ: configure service can now use 'field' as a subpath together with 'entity' ([@lbschenkel] - [#17722]) ([deconz docs]) +- Bumped NDMS2 client to 0.0.5 to fix unicode characters support ([@foxel] - [#17803]) ([device_tracker docs]) +- Upgrade numpy to 1.15.3 ([@fabaff] - [#17796]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) +- MQTT Vacuum now passes error messages. ([@jeroenterheerdt] - [#17685]) ([vacuum.mqtt docs]) +- Convert automation tests to async ([@balloob] - [#17794]) +- Lovelace ws: add move command ([@bramkragten] - [#17806]) ([lovelace docs]) +- Convert MQTT Light tests to async ([@balloob] - [#17754]) +- Bumping aioasuswrt version ([@kennedyshead] - [#17814]) ([device_tracker docs]) +- Minor changes ([@fabaff] - [#17812]) ([switch.dlink docs]) +- Add snow to Openweathermap precipitation forecast ([@sgttrs] - [#17551]) ([weather.openweathermap docs]) +- Add delete command ([@bramkragten] - [#17816]) ([lovelace docs]) +- Raise PlatformNotReady for RMVtransport if API not available ([@cgtobi] - [#17635]) ([sensor.rmvtransport docs]) +- Added vacuum dock and pause/unpause traits ([@mariuszluciow] - [#17657]) ([google_assistant docs]) +- Minor changes to the config validation ([@fabaff] - [#17808]) ([sensor.sma docs]) +- Alexa motion sensor ([@abmantis] - [#17798]) ([alexa docs]) +- Mill device state attributes ([@Danielhiversen] - [#17834]) ([climate.mill docs]) +- Fix Alexa unsupported operation_mode off ([@rwagoner] - [#17844]) ([alexa docs]) +- adding myself as yessssms codeowner ([@flowolf] - [#17862]) +- Switch to using Client from twilio.rest rather than the deleted TwilioRestClient ([@rohankapoorcom] - [#17883]) ([twilio docs]) +- Fix Vera climate component to use correct states ([@sqldiablo] - [#17892]) ([climate.vera docs]) (breaking change) +- Add myself to CODEOWNERS for Yeelight Sunflower light platform ([@lindsaymarkward] - [#17896]) +- Fix logi_circle sensor update method naming ([@evanjd] - [#17909]) ([sensor.logi_circle docs]) +- Fix RFLink issue #17875 ([@emontnemery] - [#17889]) ([rflink docs]) +- Corrected fan device type in google assistant to fan ([@mariuszluciow] - [#17792]) ([google_assistant docs]) +- Migrate dialogflow over to the new webhook component ([@rohankapoorcom] - [#17804]) ([dialogflow docs]) ([http docs]) (breaking change) +- Fixes Telegram webhooks ([@luca-angemi] - [#17554]) ([telegram_bot docs]) +- Start type annotating/testing helpers ([@scop] - [#17858]) +- updated version of xknx ([@Julius2342] - [#17912]) ([knx docs]) +- Updated Brunt code owner ([@eavanvalkenburg] - [#17854]) +- Monitor all sensor types by default to rtorrent ([@terorie] - [#17894]) ([sensor.rtorrent docs]) +- Merge conflicting changes ([@kennedyshead] - [#17761]) +- Axis - prepare for config entry ([@Kane610] - [#17566]) ([axis docs]) ([binary_sensor.axis docs]) +- Upgrade pytest to 3.9.3 ([@scop] - [#17921]) +- Extract entity ids from all templates ([@amelchio] - [#17902]) ([binary_sensor.template docs]) +- Make light.yeelight stop doing IO when accessing properties ([@rohankapoorcom] - [#17917]) ([light.yeelight docs]) +- Fixes for upnp-component/#17753 and missing hass-data when only setup from config entry ([@StevenLooman] - [#17868]) ([upnp docs]) ([media_player.dlna_dmr docs]) +- Fix for verify_ssl in the pi_hole sensor. ([@ludeeus] - [#17910]) ([sensor.pi_hole docs]) +- Permissions improv ([@balloob] - [#17811]) +- Fix incorrect chevy discovery ([@balloob] - [#17942]) ([mychevy docs]) +- Fix venv check ([@balloob] - [#17939]) ([updater docs]) +- Disable upnp from being discovered ([@balloob] - [#17937]) +- Added codeowner for bt_smarthub ([@jxwolstenholme] - [#17947]) +- Fixed copy-paste errors ([@mariuszluciow] - [#17948]) +- Fix spelling error in log output ([@bitglue] - [#17963]) +- Fix operation mode for Alexa thermostat ([@balloob] - [#17972]) ([alexa docs]) +- Change source, add attributes, and improve state of DirecTV ([@ehendrix23] - [#17536]) ([media_player.directv docs]) +- Update Alexa tests to async syntax ([@bitglue] - [#17965]) +- Météo-france sensor : current weather and 1 hour rain forecast ([@victorcerutti] - [#17773]) ([sensor.meteo_france docs]) (new-platform) +- Updated ring_doorbell dependency to 0.2.2 ([@evanjd] - [#17945]) ([ring docs]) +- Update Avi-On to work with latest API ([@antsar] - [#17780]) ([light.avion docs]) +- Mill service ([@Danielhiversen] - [#17971]) ([climate.mill docs]) +- Refactor Alexa API, fix thermostats ([@bitglue] - [#17969]) ([alexa docs]) +- Upgrade aiofreepybox ([@stilllman] - [#17989]) ([device_tracker docs]) +- Reverse out change #14234 BOM Weather throttle fix ([@nickw444] - [#17468]) ([sensor.bom docs]) +- RFC: Static templates match no entities, not all ([@amelchio] - [#17991]) +- Switch mailgun webhooks to the new Mailgun webhook api ([@rohankapoorcom] - [#17919]) ([mailgun docs]) +- Change hebrew date at sunset ([@tsvi] - [#17449]) ([sensor.jewish_calendar docs]) +- Import homeassistant domain instead of hardcoding it ([@scop] - [#17985]) ([websocket_api docs]) +- Allow jinja namespace command to work. ([@NeilCrosby] - [#18011]) +- Support for WeMo Humidifier ([@sqldiablo] - [#17996]) ([wemo docs]) ([fan.wemo docs]) (new-platform) +- Fix Bloomsky api call ([@dshokouhi] - [#18016]) ([bloomsky docs]) +- Async version of melissa ([@kennedyshead] - [#17721]) +- Upgrade to asuswrt 1.1.1 to better handle mac addresses with letters in them ([@halkeye] - [#18030]) ([device_tracker docs]) +- Add SMA sensor SSL verification option ([@PhilRW] - [#18033]) ([sensor.sma docs]) +- Use const.SUN_EVENT_* more ([@scop] - [#18039]) ([device_sun_light_trigger docs]) ([sun docs]) ([sensor.jewish_calendar docs]) ([switch.flux docs]) +- Bumping aioasuswrt to 1.1.2 ([@kennedyshead] - [#18042]) ([device_tracker docs]) +- Add services.yaml entry for new WeMo Humidifier platform service ([@sqldiablo] - [#18032]) +- Add opentherm_gw services ([@mvn23] - [#17762]) ([opentherm_gw docs]) +- Extract ruamel.yaml to util with secrets, lovelace ws decorators ([@bramkragten] - [#17958]) ([lovelace docs]) +- Report correct thermostat mode to Alexa ([@bitglue] - [#18053]) ([alexa docs]) +- Update SMA sensor to pysma 0.2.2 ([@kellerza] - [#17988]) ([sensor.sma docs]) +- Mill, support opeation mode ([@Danielhiversen] - [#18059]) ([climate.mill docs]) +- deCONZ - retry if setup fails ([@Kane610] - [#17772]) ([deconz docs]) ([binary_sensor.deconz docs]) ([cover.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs]) ([switch.deconz docs]) +- Add functionality to the version sensor ([@ludeeus] - [#18067]) ([sensor.version docs]) +- remove schedule_update_ha_state from mill ([@Danielhiversen] - [#18080]) ([climate.mill docs]) +- Fix camera mjpeg stream handling ([@awarecan] - [#18076]) ([camera docs]) ([camera.amcrest docs]) ([camera.arlo docs]) ([camera.canary docs]) ([camera.mjpeg docs]) ([camera.onvif docs]) ([camera.ring docs]) ([camera.synology docs]) ([camera.xiaomi docs]) ([camera.yi docs]) +- Change test to parametrized test using pytest ([@tsvi] - [#18047]) +- Add view commands to Lovelace ([@bramkragten] - [#18063]) ([lovelace docs]) +- Add message template support for alert component ([@thoscut] - [#17516]) ([alert docs]) +- Added identifier and name to connect/disconnect events ([@jaredquinn] - [#18078]) ([keyboard_remote docs]) +- Fix in Daikin.py for set swing_mode and speed ([@MatteGary] - [#18013]) ([climate.daikin docs]) +- Allow different types to match in pilight ([@akloeckner] - [#17922]) ([binary_sensor.pilight docs]) +- Add a component for GreenEye Monitor ([@jkeljo] - [#16378]) ([greeneye_monitor docs]) (new-platform) +- HomematicIP_Cloud fix test ([@mxworm] - [#17376]) ([homematicip_cloud docs]) +- Upgrade locationsharinglib to 3.0.7 ([@fabaff] - [#18083]) ([device_tracker docs]) +- Upgrade sqlalchemy to 1.2.13 ([@fabaff] - [#18084]) ([sensor.sql docs]) +- Upgrade youtube_dl to 2018.10.29 ([@fabaff] - [#18085]) ([media_extractor docs]) +- Pass though file_url from extended data attrs ([@cmsimike] - [#17801]) ([notify docs]) +- Upgrade psutil to 5.4.8 ([@fabaff] - [#18086]) ([sensor.systemmonitor docs]) +- sensor/wunderground add device_class ([@simonvanderveldt] - [#18072]) ([sensor.wunderground docs]) +- Upgrade restrictedpython to 4.0b6 ([@fabaff] - [#18087]) ([python_script docs]) +- Upgrade georss_client to 0.4 ([@exxamalte] - [#18088]) ([geo_location docs]) +- Catch KeyError if data is not available (fixes #18082) ([@fabaff] - [#18089]) ([sensor.openweathermap docs]) +- Bump python-miio version ([@syssi] - [#18095]) ([device_tracker docs]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([sensor.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Update Pollen.com sensor platform to include asthma info ([@bachya] - [#18024]) ([sensor.pollen docs]) +- Use a fixture for dialogflow calls in unit tests ([@rohankapoorcom] - [#17999]) +- Don't try to re-add existing Z-Wave entities ([@cgarwood] - [#17995]) ([zwave docs]) +- Always save current position if payload is numeric value ([@pszafer] - [#16148]) ([cover.mqtt docs]) +- Darksky: Fetch summary for daily forecasts ([@leppa] - [#18031]) ([sensor.darksky docs]) +- Update to DoorBirdPy v2 (again) ([@Klikini] - [#14933]) ([doorbird docs]) ([switch.doorbird docs]) (breaking change) +- Ignore min_cycle_duration when manually controlling the thermostat. ([@aronsky] - [#16128]) ([climate.generic_thermostat docs]) +- Add surround programs to zone 2+ ([@Petro31] - [#17445]) ([media_player.yamaha docs]) +- Removed assumptions about provided upnp data ([@WoLpH] - [#17604]) ([upnp docs]) +- Add binary sensors for sense energy monitor ([@kbickar] - [#17645]) ([sensor.sense docs]) (breaking change) +- Use ssdp udn uuid as Samsung TV unique id ([@scop] - [#18022]) ([media_player.samsungtv docs]) +- Allow MS face detection to handle updating entities when no face is detected ([@NeilCrosby] - [#17593]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs]) +- Added service select_video_output and video_out attribute ([@leothlon] - [#18081]) ([media_player.onkyo docs]) +- Darksky: Round all temperatures to 1 decimal place ([@leppa] - [#18119]) ([sensor.darksky docs]) +- Convert nsw rural fire tests to async ([@armills] - [#18112]) +- Adding climate.velbus support ([@Cereal2nd] - [#18100]) ([velbus docs]) +- Changed from pifacecommon 4.1.2 to 4.2.2 to make the piface digital i/o boards work on rpi like 3 ([@vacumet] - [#18101]) ([rpi_pfio docs]) +- Update Pollen.com to use numpy for trend analysis ([@bachya] - [#18107]) ([sensor.pollen docs]) (breaking change) +- Exposes initial attribute on the entity. ([@ludeeus] - [#18123]) ([input_number docs]) +- Async generic thermostat tests ([@armills] - [#18111]) +- Update fan/demo tests to async ([@armills] - [#18109]) +- Don't create a switch for POE device if said device is Cloud key ([@Kane610] - [#18117]) ([switch.unifi docs]) +- TensorFlow image_processing component ([@hunterjm] - [#17795]) ([image_processing.tensorflow docs]) (new-platform) +- Fix DTE Energy Bridge V2 scaling issue. (#18124) ([@mtl010957] - [#18129]) ([sensor.dte_energy_bridge docs]) +- Add optional ttl config to route53 component ([@pascal-de-ladurantaye] - [#18135]) ([route53 docs]) +- Allow disabling WeMo Discovery ([@sqldiablo] - [#18079]) ([wemo docs]) +- Fix typos and update docstrings ([@fabaff] - [#18137]) ([lovelace docs]) +- Fix hassio command timeout ([@alex9446] - [#17567]) ([hassio docs]) +- SMA: Optional import in schema & backoff fix ([@kellerza] - [#18099]) (beta fix) +- Remove config (breaking change) ([@jjlawren] - [#18153]) ([ffmpeg docs]) (breaking change) (beta fix) +- Handle TensorFlow like OpenCV ([@pvizeli] - [#18185]) ([image_processing.tensorflow docs]) (beta fix) +- Add support for TensorFlow in official docker ([@pvizeli] - [#18191]) (beta fix) +- Cloud conf ([@balloob] - [#18216]) ([cloud docs]) (beta fix) +- Check if os has chown ([@bramkragten] - [#18229]) (beta fix) +- Update pynetgear to 0.5.1 ([@Arkkimaagi] - [#18238]) ([device_tracker docs]) (beta fix) +- Migrate python-openzwave to homeassistant-pyozw ([@pvizeli] - [#18268]) (beta fix) +- SMA Guard against older pysma ([@kellerza] - [#18278]) ([sensor.sma docs]) (beta fix) +- Bump pyotgw to 0.3b1 ([@mvn23] - [#18286]) ([opentherm_gw docs]) (beta fix) +- Fix log error message ([@pvizeli] - [#18305]) ([hassio docs]) (beta fix) +- Bump pyhaversion to 2.0.2 ([@ludeeus] - [#18318]) ([sensor.version docs]) (beta fix) +- Fix xiaomi binary_sensor warning ([@Danielhiversen] - [#18280]) ([binary_sensor.xiaomi_aqara docs]) (beta fix) +- Remove Velbus climate platform ([@balloob] - [#18319]) ([velbus docs]) (beta fix) +- fix last device ignored ([@abmantis] - [#18329]) ([device_tracker docs]) (beta fix) + +[#14933]: https://github.com/home-assistant/home-assistant/pull/14933 +[#16128]: https://github.com/home-assistant/home-assistant/pull/16128 +[#16148]: https://github.com/home-assistant/home-assistant/pull/16148 +[#16378]: https://github.com/home-assistant/home-assistant/pull/16378 +[#17158]: https://github.com/home-assistant/home-assistant/pull/17158 +[#17376]: https://github.com/home-assistant/home-assistant/pull/17376 +[#17400]: https://github.com/home-assistant/home-assistant/pull/17400 +[#17445]: https://github.com/home-assistant/home-assistant/pull/17445 +[#17449]: https://github.com/home-assistant/home-assistant/pull/17449 +[#17464]: https://github.com/home-assistant/home-assistant/pull/17464 +[#17468]: https://github.com/home-assistant/home-assistant/pull/17468 +[#17502]: https://github.com/home-assistant/home-assistant/pull/17502 +[#17516]: https://github.com/home-assistant/home-assistant/pull/17516 +[#17521]: https://github.com/home-assistant/home-assistant/pull/17521 +[#17536]: https://github.com/home-assistant/home-assistant/pull/17536 +[#17551]: https://github.com/home-assistant/home-assistant/pull/17551 +[#17554]: https://github.com/home-assistant/home-assistant/pull/17554 +[#17566]: https://github.com/home-assistant/home-assistant/pull/17566 +[#17567]: https://github.com/home-assistant/home-assistant/pull/17567 +[#17576]: https://github.com/home-assistant/home-assistant/pull/17576 +[#17579]: https://github.com/home-assistant/home-assistant/pull/17579 +[#17593]: https://github.com/home-assistant/home-assistant/pull/17593 +[#17604]: https://github.com/home-assistant/home-assistant/pull/17604 +[#17635]: https://github.com/home-assistant/home-assistant/pull/17635 +[#17641]: https://github.com/home-assistant/home-assistant/pull/17641 +[#17642]: https://github.com/home-assistant/home-assistant/pull/17642 +[#17645]: https://github.com/home-assistant/home-assistant/pull/17645 +[#17657]: https://github.com/home-assistant/home-assistant/pull/17657 +[#17674]: https://github.com/home-assistant/home-assistant/pull/17674 +[#17676]: https://github.com/home-assistant/home-assistant/pull/17676 +[#17685]: https://github.com/home-assistant/home-assistant/pull/17685 +[#17692]: https://github.com/home-assistant/home-assistant/pull/17692 +[#17696]: https://github.com/home-assistant/home-assistant/pull/17696 +[#17701]: https://github.com/home-assistant/home-assistant/pull/17701 +[#17704]: https://github.com/home-assistant/home-assistant/pull/17704 +[#17706]: https://github.com/home-assistant/home-assistant/pull/17706 +[#17712]: https://github.com/home-assistant/home-assistant/pull/17712 +[#17715]: https://github.com/home-assistant/home-assistant/pull/17715 +[#17718]: https://github.com/home-assistant/home-assistant/pull/17718 +[#17719]: https://github.com/home-assistant/home-assistant/pull/17719 +[#17720]: https://github.com/home-assistant/home-assistant/pull/17720 +[#17721]: https://github.com/home-assistant/home-assistant/pull/17721 +[#17722]: https://github.com/home-assistant/home-assistant/pull/17722 +[#17723]: https://github.com/home-assistant/home-assistant/pull/17723 +[#17724]: https://github.com/home-assistant/home-assistant/pull/17724 +[#17732]: https://github.com/home-assistant/home-assistant/pull/17732 +[#17734]: https://github.com/home-assistant/home-assistant/pull/17734 +[#17735]: https://github.com/home-assistant/home-assistant/pull/17735 +[#17736]: https://github.com/home-assistant/home-assistant/pull/17736 +[#17749]: https://github.com/home-assistant/home-assistant/pull/17749 +[#17750]: https://github.com/home-assistant/home-assistant/pull/17750 +[#17751]: https://github.com/home-assistant/home-assistant/pull/17751 +[#17754]: https://github.com/home-assistant/home-assistant/pull/17754 +[#17755]: https://github.com/home-assistant/home-assistant/pull/17755 +[#17756]: https://github.com/home-assistant/home-assistant/pull/17756 +[#17759]: https://github.com/home-assistant/home-assistant/pull/17759 +[#17761]: https://github.com/home-assistant/home-assistant/pull/17761 +[#17762]: https://github.com/home-assistant/home-assistant/pull/17762 +[#17763]: https://github.com/home-assistant/home-assistant/pull/17763 +[#17764]: https://github.com/home-assistant/home-assistant/pull/17764 +[#17765]: https://github.com/home-assistant/home-assistant/pull/17765 +[#17768]: https://github.com/home-assistant/home-assistant/pull/17768 +[#17770]: https://github.com/home-assistant/home-assistant/pull/17770 +[#17772]: https://github.com/home-assistant/home-assistant/pull/17772 +[#17773]: https://github.com/home-assistant/home-assistant/pull/17773 +[#17774]: https://github.com/home-assistant/home-assistant/pull/17774 +[#17777]: https://github.com/home-assistant/home-assistant/pull/17777 +[#17780]: https://github.com/home-assistant/home-assistant/pull/17780 +[#17784]: https://github.com/home-assistant/home-assistant/pull/17784 +[#17787]: https://github.com/home-assistant/home-assistant/pull/17787 +[#17792]: https://github.com/home-assistant/home-assistant/pull/17792 +[#17794]: https://github.com/home-assistant/home-assistant/pull/17794 +[#17795]: https://github.com/home-assistant/home-assistant/pull/17795 +[#17796]: https://github.com/home-assistant/home-assistant/pull/17796 +[#17798]: https://github.com/home-assistant/home-assistant/pull/17798 +[#17801]: https://github.com/home-assistant/home-assistant/pull/17801 +[#17803]: https://github.com/home-assistant/home-assistant/pull/17803 +[#17804]: https://github.com/home-assistant/home-assistant/pull/17804 +[#17805]: https://github.com/home-assistant/home-assistant/pull/17805 +[#17806]: https://github.com/home-assistant/home-assistant/pull/17806 +[#17808]: https://github.com/home-assistant/home-assistant/pull/17808 +[#17811]: https://github.com/home-assistant/home-assistant/pull/17811 +[#17812]: https://github.com/home-assistant/home-assistant/pull/17812 +[#17814]: https://github.com/home-assistant/home-assistant/pull/17814 +[#17816]: https://github.com/home-assistant/home-assistant/pull/17816 +[#17834]: https://github.com/home-assistant/home-assistant/pull/17834 +[#17844]: https://github.com/home-assistant/home-assistant/pull/17844 +[#17854]: https://github.com/home-assistant/home-assistant/pull/17854 +[#17858]: https://github.com/home-assistant/home-assistant/pull/17858 +[#17862]: https://github.com/home-assistant/home-assistant/pull/17862 +[#17868]: https://github.com/home-assistant/home-assistant/pull/17868 +[#17883]: https://github.com/home-assistant/home-assistant/pull/17883 +[#17889]: https://github.com/home-assistant/home-assistant/pull/17889 +[#17892]: https://github.com/home-assistant/home-assistant/pull/17892 +[#17894]: https://github.com/home-assistant/home-assistant/pull/17894 +[#17896]: https://github.com/home-assistant/home-assistant/pull/17896 +[#17902]: https://github.com/home-assistant/home-assistant/pull/17902 +[#17909]: https://github.com/home-assistant/home-assistant/pull/17909 +[#17910]: https://github.com/home-assistant/home-assistant/pull/17910 +[#17912]: https://github.com/home-assistant/home-assistant/pull/17912 +[#17917]: https://github.com/home-assistant/home-assistant/pull/17917 +[#17919]: https://github.com/home-assistant/home-assistant/pull/17919 +[#17921]: https://github.com/home-assistant/home-assistant/pull/17921 +[#17922]: https://github.com/home-assistant/home-assistant/pull/17922 +[#17937]: https://github.com/home-assistant/home-assistant/pull/17937 +[#17939]: https://github.com/home-assistant/home-assistant/pull/17939 +[#17942]: https://github.com/home-assistant/home-assistant/pull/17942 +[#17945]: https://github.com/home-assistant/home-assistant/pull/17945 +[#17947]: https://github.com/home-assistant/home-assistant/pull/17947 +[#17948]: https://github.com/home-assistant/home-assistant/pull/17948 +[#17958]: https://github.com/home-assistant/home-assistant/pull/17958 +[#17963]: https://github.com/home-assistant/home-assistant/pull/17963 +[#17965]: https://github.com/home-assistant/home-assistant/pull/17965 +[#17969]: https://github.com/home-assistant/home-assistant/pull/17969 +[#17971]: https://github.com/home-assistant/home-assistant/pull/17971 +[#17972]: https://github.com/home-assistant/home-assistant/pull/17972 +[#17985]: https://github.com/home-assistant/home-assistant/pull/17985 +[#17988]: https://github.com/home-assistant/home-assistant/pull/17988 +[#17989]: https://github.com/home-assistant/home-assistant/pull/17989 +[#17991]: https://github.com/home-assistant/home-assistant/pull/17991 +[#17995]: https://github.com/home-assistant/home-assistant/pull/17995 +[#17996]: https://github.com/home-assistant/home-assistant/pull/17996 +[#17999]: https://github.com/home-assistant/home-assistant/pull/17999 +[#18011]: https://github.com/home-assistant/home-assistant/pull/18011 +[#18013]: https://github.com/home-assistant/home-assistant/pull/18013 +[#18016]: https://github.com/home-assistant/home-assistant/pull/18016 +[#18022]: https://github.com/home-assistant/home-assistant/pull/18022 +[#18024]: https://github.com/home-assistant/home-assistant/pull/18024 +[#18030]: https://github.com/home-assistant/home-assistant/pull/18030 +[#18031]: https://github.com/home-assistant/home-assistant/pull/18031 +[#18032]: https://github.com/home-assistant/home-assistant/pull/18032 +[#18033]: https://github.com/home-assistant/home-assistant/pull/18033 +[#18039]: https://github.com/home-assistant/home-assistant/pull/18039 +[#18042]: https://github.com/home-assistant/home-assistant/pull/18042 +[#18047]: https://github.com/home-assistant/home-assistant/pull/18047 +[#18053]: https://github.com/home-assistant/home-assistant/pull/18053 +[#18059]: https://github.com/home-assistant/home-assistant/pull/18059 +[#18063]: https://github.com/home-assistant/home-assistant/pull/18063 +[#18067]: https://github.com/home-assistant/home-assistant/pull/18067 +[#18072]: https://github.com/home-assistant/home-assistant/pull/18072 +[#18076]: https://github.com/home-assistant/home-assistant/pull/18076 +[#18078]: https://github.com/home-assistant/home-assistant/pull/18078 +[#18079]: https://github.com/home-assistant/home-assistant/pull/18079 +[#18080]: https://github.com/home-assistant/home-assistant/pull/18080 +[#18081]: https://github.com/home-assistant/home-assistant/pull/18081 +[#18083]: https://github.com/home-assistant/home-assistant/pull/18083 +[#18084]: https://github.com/home-assistant/home-assistant/pull/18084 +[#18085]: https://github.com/home-assistant/home-assistant/pull/18085 +[#18086]: https://github.com/home-assistant/home-assistant/pull/18086 +[#18087]: https://github.com/home-assistant/home-assistant/pull/18087 +[#18088]: https://github.com/home-assistant/home-assistant/pull/18088 +[#18089]: https://github.com/home-assistant/home-assistant/pull/18089 +[#18095]: https://github.com/home-assistant/home-assistant/pull/18095 +[#18099]: https://github.com/home-assistant/home-assistant/pull/18099 +[#18100]: https://github.com/home-assistant/home-assistant/pull/18100 +[#18101]: https://github.com/home-assistant/home-assistant/pull/18101 +[#18107]: https://github.com/home-assistant/home-assistant/pull/18107 +[#18109]: https://github.com/home-assistant/home-assistant/pull/18109 +[#18111]: https://github.com/home-assistant/home-assistant/pull/18111 +[#18112]: https://github.com/home-assistant/home-assistant/pull/18112 +[#18117]: https://github.com/home-assistant/home-assistant/pull/18117 +[#18119]: https://github.com/home-assistant/home-assistant/pull/18119 +[#18123]: https://github.com/home-assistant/home-assistant/pull/18123 +[#18129]: https://github.com/home-assistant/home-assistant/pull/18129 +[#18135]: https://github.com/home-assistant/home-assistant/pull/18135 +[#18137]: https://github.com/home-assistant/home-assistant/pull/18137 +[#18153]: https://github.com/home-assistant/home-assistant/pull/18153 +[#18185]: https://github.com/home-assistant/home-assistant/pull/18185 +[#18191]: https://github.com/home-assistant/home-assistant/pull/18191 +[#18216]: https://github.com/home-assistant/home-assistant/pull/18216 +[#18229]: https://github.com/home-assistant/home-assistant/pull/18229 +[#18238]: https://github.com/home-assistant/home-assistant/pull/18238 +[#18268]: https://github.com/home-assistant/home-assistant/pull/18268 +[#18278]: https://github.com/home-assistant/home-assistant/pull/18278 +[#18280]: https://github.com/home-assistant/home-assistant/pull/18280 +[#18286]: https://github.com/home-assistant/home-assistant/pull/18286 +[#18305]: https://github.com/home-assistant/home-assistant/pull/18305 +[#18318]: https://github.com/home-assistant/home-assistant/pull/18318 +[#18319]: https://github.com/home-assistant/home-assistant/pull/18319 +[#18329]: https://github.com/home-assistant/home-assistant/pull/18329 +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@Arkkimaagi]: https://github.com/Arkkimaagi +[@Cereal2nd]: https://github.com/Cereal2nd +[@Danielhiversen]: https://github.com/Danielhiversen +[@Hedda]: https://github.com/Hedda +[@Julius2342]: https://github.com/Julius2342 +[@Kane610]: https://github.com/Kane610 +[@Klikini]: https://github.com/Klikini +[@MatteGary]: https://github.com/MatteGary +[@NeilCrosby]: https://github.com/NeilCrosby +[@Petro31]: https://github.com/Petro31 +[@PhilRW]: https://github.com/PhilRW +[@StevenLooman]: https://github.com/StevenLooman +[@WoLpH]: https://github.com/WoLpH +[@abmantis]: https://github.com/abmantis +[@akloeckner]: https://github.com/akloeckner +[@alex9446]: https://github.com/alex9446 +[@amelchio]: https://github.com/amelchio +[@antsar]: https://github.com/antsar +[@armills]: https://github.com/armills +[@aronsky]: https://github.com/aronsky +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bitglue]: https://github.com/bitglue +[@bramkragten]: https://github.com/bramkragten +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@cmsimike]: https://github.com/cmsimike +[@d0ugal]: https://github.com/d0ugal +[@doudz]: https://github.com/doudz +[@dshokouhi]: https://github.com/dshokouhi +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@ehendrix23]: https://github.com/ehendrix23 +[@emontnemery]: https://github.com/emontnemery +[@estevez-dev]: https://github.com/estevez-dev +[@evanjd]: https://github.com/evanjd +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@flowolf]: https://github.com/flowolf +[@foxel]: https://github.com/foxel +[@halkeye]: https://github.com/halkeye +[@hunterjm]: https://github.com/hunterjm +[@janvanhelvoort]: https://github.com/janvanhelvoort +[@jaredquinn]: https://github.com/jaredquinn +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@jjlawren]: https://github.com/jjlawren +[@jkeljo]: https://github.com/jkeljo +[@jxwolstenholme]: https://github.com/jxwolstenholme +[@kbickar]: https://github.com/kbickar +[@kellerza]: https://github.com/kellerza +[@kennedyshead]: https://github.com/kennedyshead +[@lbschenkel]: https://github.com/lbschenkel +[@leothlon]: https://github.com/leothlon +[@leppa]: https://github.com/leppa +[@liaanvdm]: https://github.com/liaanvdm +[@lights0123]: https://github.com/lights0123 +[@lindsaymarkward]: https://github.com/lindsaymarkward +[@luca-angemi]: https://github.com/luca-angemi +[@ludeeus]: https://github.com/ludeeus +[@manuel-jrs]: https://github.com/manuel-jrs +[@mariuszluciow]: https://github.com/mariuszluciow +[@mtl010957]: https://github.com/mtl010957 +[@mvn23]: https://github.com/mvn23 +[@mxworm]: https://github.com/mxworm +[@nickw444]: https://github.com/nickw444 +[@pascal-de-ladurantaye]: https://github.com/pascal-de-ladurantaye +[@pszafer]: https://github.com/pszafer +[@pvizeli]: https://github.com/pvizeli +[@quazzie]: https://github.com/quazzie +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@rwagoner]: https://github.com/rwagoner +[@scop]: https://github.com/scop +[@sgttrs]: https://github.com/sgttrs +[@simonvanderveldt]: https://github.com/simonvanderveldt +[@sqldiablo]: https://github.com/sqldiablo +[@stilllman]: https://github.com/stilllman +[@syssi]: https://github.com/syssi +[@terorie]: https://github.com/terorie +[@thoscut]: https://github.com/thoscut +[@tmonck]: https://github.com/tmonck +[@tsvi]: https://github.com/tsvi +[@vacumet]: https://github.com/vacumet +[@victorcerutti]: https://github.com/victorcerutti +[alarm_control_panel.manual docs]: /components/alarm_control_panel.manual/ +[alert docs]: /components/alert/ +[alexa docs]: /components/alexa/ +[august docs]: /components/august/ +[auth docs]: /components/auth/ +[automation.webhook docs]: /docs/automation/trigger/#webhook-trigger +[axis docs]: /components/axis/ +[binary_sensor.august docs]: /components/binary_sensor.august/ +[binary_sensor.axis docs]: /components/binary_sensor.axis/ +[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ +[binary_sensor.mqtt docs]: /components/binary_sensor.mqtt/ +[binary_sensor.pilight docs]: /components/binary_sensor.pilight/ +[binary_sensor.template docs]: /components/binary_sensor.template/ +[binary_sensor.trend docs]: /components/binary_sensor.trend/ +[binary_sensor.xiaomi_aqara docs]: /components/binary_sensor.xiaomi_aqara/ +[binary_sensor.zha docs]: /components/binary_sensor.zha/ +[binary_sensor.zigbee docs]: /components/binary_sensor.zigbee/ +[bloomsky docs]: /components/bloomsky/ +[camera docs]: /components/camera/ +[camera.amcrest docs]: /components/camera.amcrest/ +[camera.arlo docs]: /components/camera.arlo/ +[camera.canary docs]: /components/camera.canary/ +[camera.mjpeg docs]: /components/camera.mjpeg/ +[camera.onvif docs]: /components/camera.onvif/ +[camera.ring docs]: /components/camera.ring/ +[camera.synology docs]: /components/camera.synology/ +[camera.xiaomi docs]: /components/camera.xiaomi/ +[camera.yi docs]: /components/camera.yi/ +[climate.daikin docs]: /components/climate.daikin/ +[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ +[climate.mill docs]: /components/climate.mill/ +[climate.velbus docs]: /components/climate.velbus/ +[climate.vera docs]: /components/climate.vera/ +[cloud docs]: /components/cloud/ +[cover.deconz docs]: /components/cover.deconz/ +[cover.mqtt docs]: /components/cover.mqtt/ +[deconz docs]: /components/deconz/ +[device_sun_light_trigger docs]: /components/device_sun_light_trigger/ +[device_tracker docs]: /components/device_tracker/ +[dialogflow docs]: /components/dialogflow/ +[doorbird docs]: /components/doorbird/ +[fan.wemo docs]: /components/fan.wemo/ +[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ +[ffmpeg docs]: /components/ffmpeg/ +[geo_location docs]: /components/geo_location/ +[google_assistant docs]: /components/google_assistant/ +[greeneye_monitor docs]: /components/greeneye_monitor/ +[hassio docs]: /components/hassio/ +[homematicip_cloud docs]: /components/homematicip_cloud/ +[http docs]: /components/http/ +[ifttt docs]: /components/ifttt/ +[image_processing.microsoft_face_detect docs]: /components/image_processing.microsoft_face_detect/ +[image_processing.microsoft_face_identify docs]: /components/image_processing.microsoft_face_identify/ +[image_processing.opencv docs]: /components/image_processing.opencv/ +[image_processing.tensorflow docs]: /components/image_processing.tensorflow/ +[input_number docs]: /components/input_number/ +[keyboard_remote docs]: /components/keyboard_remote/ +[knx docs]: /components/knx/ +[light.avion docs]: /components/light.avion/ +[light.deconz docs]: /components/light.deconz/ +[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ +[light.yeelight docs]: /components/light.yeelight/ +[lock.august docs]: /components/lock.august/ +[lovelace docs]: /components/lovelace/ +[mailgun docs]: /components/mailgun/ +[media_extractor docs]: /components/media_extractor/ +[media_player.directv docs]: /components/media_player.directv/ +[media_player.dlna_dmr docs]: /components/media_player.dlna_dmr/ +[media_player.onkyo docs]: /components/media_player.onkyo/ +[media_player.samsungtv docs]: /components/media_player.samsungtv/ +[media_player.yamaha docs]: /components/media_player.yamaha/ +[mychevy docs]: /components/mychevy/ +[notify docs]: /components/notify/ +[opentherm_gw docs]: /components/opentherm_gw/ +[openuv docs]: /components/openuv/ +[python_script docs]: /components/python_script/ +[remote.xiaomi_miio docs]: /components/remote.xiaomi_miio/ +[rflink docs]: /components/rflink/ +[ring docs]: /components/ring/ +[route53 docs]: /components/route53/ +[rpi_pfio docs]: /components/rpi_pfio/ +[scene.deconz docs]: /components/scene.deconz/ +[sensor.bom docs]: /components/sensor.bom/ +[sensor.darksky docs]: /components/sensor.darksky/ +[sensor.deconz docs]: /components/sensor.deconz/ +[sensor.dte_energy_bridge docs]: /components/sensor.dte_energy_bridge/ +[sensor.greeneye_monitor_current docs]: /components/sensor.greeneye_monitor_current/ +[sensor.greeneye_monitor_pulse docs]: /components/sensor.greeneye_monitor_pulse/ +[sensor.greeneye_monitor_temperature docs]: /components/sensor.greeneye_monitor_temperature/ +[sensor.igd docs]: /components/sensor.igd/ +[sensor.jewish_calendar docs]: /components/sensor.jewish_calendar/ +[sensor.logi_circle docs]: /components/sensor.logi_circle/ +[sensor.meteo_france docs]: /components/sensor.meteo_france/ +[sensor.openweathermap docs]: /components/sensor.openweathermap/ +[sensor.pi_hole docs]: /components/sensor.pi_hole/ +[sensor.pollen docs]: /components/sensor.pollen/ +[sensor.rmvtransport docs]: /components/sensor.rmvtransport/ +[sensor.rtorrent docs]: /components/sensor.rtorrent/ +[sensor.sense docs]: /components/sensor.sense/ +[sensor.sma docs]: /components/sensor.sma/ +[sensor.sql docs]: /components/sensor.sql/ +[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ +[sensor.version docs]: /components/sensor.version/ +[sensor.wunderground docs]: /components/sensor.wunderground/ +[sensor.xiaomi_miio docs]: /components/sensor.xiaomi_miio/ +[sensor.yahoo_finance docs]: /components/sensor.yahoo_finance/ +[simplisafe docs]: /components/simplisafe/ +[sun docs]: /components/sun/ +[switch.deconz docs]: /components/switch.deconz/ +[switch.dlink docs]: /components/switch.dlink/ +[switch.doorbird docs]: /components/switch.doorbird/ +[switch.flux docs]: /components/switch.flux/ +[switch.unifi docs]: /components/switch.unifi/ +[switch.xiaomi_aqara docs]: /components/switch.xiaomi_aqara/ +[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ +[switch.zigbee docs]: /components/switch.zigbee/ +[telegram_bot docs]: /components/telegram_bot/ +[tts docs]: /components/tts/ +[twilio docs]: /components/twilio/ +[updater docs]: /components/updater/ +[upnp docs]: /components/upnp/ +[vacuum.mqtt docs]: /components/vacuum.mqtt/ +[vacuum.roomba docs]: /components/vacuum.roomba/ +[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ +[velbus docs]: /components/velbus/ +[weather.openweathermap docs]: /components/weather.openweathermap/ +[websocket_api docs]: /components/websocket_api/ +[wemo docs]: /components/wemo/ +[zha docs]: /components/zha/ +[zigbee docs]: /components/zigbee/ +[zwave docs]: /components/zwave/ diff --git a/source/images/blog/2018-11-release-82/lovelace-edit.png b/source/images/blog/2018-11-release-82/lovelace-edit.png new file mode 100644 index 00000000000..1f64e8e4d0a Binary files /dev/null and b/source/images/blog/2018-11-release-82/lovelace-edit.png differ diff --git a/source/images/lovelace/lovelace_light_card.png b/source/images/lovelace/lovelace_light_card.png new file mode 100644 index 00000000000..3e840de1ccf Binary files /dev/null and b/source/images/lovelace/lovelace_light_card.png differ diff --git a/source/images/lovelace/lovelace_light_complex_card.png b/source/images/lovelace/lovelace_light_complex_card.png new file mode 100644 index 00000000000..77289dea90d Binary files /dev/null and b/source/images/lovelace/lovelace_light_complex_card.png differ diff --git a/source/images/supported_brands/afraid_freedns.png b/source/images/supported_brands/afraid_freedns.png new file mode 100644 index 00000000000..b878a519b26 Binary files /dev/null and b/source/images/supported_brands/afraid_freedns.png differ diff --git a/source/images/supported_brands/brultech.png b/source/images/supported_brands/brultech.png new file mode 100644 index 00000000000..7b0fe6e0204 Binary files /dev/null and b/source/images/supported_brands/brultech.png differ diff --git a/source/images/supported_brands/meteo-france.png b/source/images/supported_brands/meteo-france.png new file mode 100644 index 00000000000..80b3ad4a663 Binary files /dev/null and b/source/images/supported_brands/meteo-france.png differ diff --git a/source/images/supported_brands/tensorflow.png b/source/images/supported_brands/tensorflow.png new file mode 100644 index 00000000000..e7208340a2c Binary files /dev/null and b/source/images/supported_brands/tensorflow.png differ diff --git a/source/images/supported_brands/yahoo_finance.png b/source/images/supported_brands/yahoo_finance.png deleted file mode 100644 index 3f8500737de..00000000000 Binary files a/source/images/supported_brands/yahoo_finance.png and /dev/null differ