diff --git a/_config.yml b/_config.yml index b707c0d52d5..ea4d3c06f1b 100644 --- a/_config.yml +++ b/_config.yml @@ -139,9 +139,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 67 -current_patch_version: 1 -date_released: 2018-04-17 +current_minor_version: 68 +current_patch_version: 0 +date_released: 2018-04-27 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_components/binary_sensor.hive.markdown b/source/_components/binary_sensor.hive.markdown index ef695f46014..ffba6e29d16 100644 --- a/source/_components/binary_sensor.hive.markdown +++ b/source/_components/binary_sensor.hive.markdown @@ -16,7 +16,7 @@ ha_iot_class: "Cloud Polling" The 'hive' binary sensor component integrates your Hive sensors into Home Assistant. -The Hive sensor component supports the following Hive products: +The Hive binary sensor component supports the following Hive products: - **Hive Window or Door Sensor** - **Hive Motion Sensor** diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown index 588b4df27fb..5826f9c1470 100644 --- a/source/_components/binary_sensor.markdown +++ b/source/_components/binary_sensor.markdown @@ -39,3 +39,8 @@ The way these sensors are displayed in the frontend can be modified in the [cust - **window**: `On` means open, `Off` means closed For analog sensors please check the [component overview](/components/#sensor). + +

+ +Example of various device classes icons in `On` and `Off` state. +

diff --git a/source/_components/binary_sensor.qwikswitch.markdown b/source/_components/binary_sensor.qwikswitch.markdown new file mode 100644 index 00000000000..e3fd446a3ba --- /dev/null +++ b/source/_components/binary_sensor.qwikswitch.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "QwikSwitch Binary Sensor" +description: "Instructions on how to integrate Qwikswitch dimmers and relays as sensors into Home Assistant." +date: 2016-05-04 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: qwikswitch.png +ha_category: Sensor +ha_iot_class: "Local Push" +ha_release: "0.68" +--- + +The `qwikswitch` binary_sensor platform allows you to use your [QwikSwitch](http://www.qwikswitch.co.za/) sensors within Home Assistant. + +The platform is configured through the [QwikSwitch component](/components/qwikswitch/). diff --git a/source/_components/bmw_connected_drive.markdown b/source/_components/bmw_connected_drive.markdown index 52d223a9c2e..94f493ff242 100644 --- a/source/_components/bmw_connected_drive.markdown +++ b/source/_components/bmw_connected_drive.markdown @@ -12,7 +12,7 @@ ha_category: Hub ha_release: 0.64 --- -This component lets you retrieve data on your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account and a Connected Drive enabled vehicle for this to work. +This component lets you retrieve data on your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account, and a Connected Drive enabled vehicle for this to work. For compatibility with your BMW vehicle check the [bimmer_connected page](https://github.com/m1n3rva/bimmer_connected) on github. @@ -52,6 +52,38 @@ bmw_connected_drive: type: string {% endconfiguration %} +## {% linkable_title Services %} + +The `bmw_connected_drive` component offers several services. In case you need to provide the vehicle identification number (VIN) as a parameter, you can see the VIN in the attributes of the device tracker for the vehicle. The VIN is a 17 digit alphanumeric string, e.g., `WBANXXXXXX1234567`. + +Using these services will impact the state of your vehicle. So use these services with care! + +### {% linkable_title Locking and unlocking %} + +The vehicle can be locked and unlocked via the lock component that is created automatically for each vehicle. Before invoking these services, make sure it's safe to lock/unlock the vehicle in the current situation. + +### {% linkable_title Air condition %} + +The air condition of the vehicle can be activated with the service `bmw_connected_drive.activate_air_conditioning`. + +What exactly is started here depends on the type of vehicle. It might range from just ventilation over auxiliary heating to real air conditioning. If your vehicle is equipped with auxiliary heating, only trigger this service if the vehicle is parked in a location where it is safe to use it (e.g., not in an underground parking or closed garage). + +The vehicle is identified via the parameter `vin`. + +### {% linkable_title Sound the horn %} + +The service `bmw_connected_drive.sound_horn` sounds the horn of the vehicle. Use this feature responsibly, as it might annoy your neighbors. The vehicle is identified via the parameter `vin`. + +### {% linkable_title Flash the lights %} + +The service `bmw_connected_drive.light_flash' flashes the lights of the vehicle. The vehicle is identified via the parameter `vin`. + +### {% linkable_title Update the state %} + +The service `bmw_connected_drive.update_state`fetches the last state of the vehicles of all your accounts from the BMW server. This does *not* trigger an update from the vehicle; it gets the data from the BMW servers. So this service does *not* interact with your vehicles. + +This service does not require any attributes. + ## {% linkable_title Disclaimer %} This software is not affiliated with or endorsed by BMW Group. diff --git a/source/_components/calendar.google.markdown b/source/_components/calendar.google.markdown index d0463968357..5999dc48ac6 100644 --- a/source/_components/calendar.google.markdown +++ b/source/_components/calendar.google.markdown @@ -95,7 +95,8 @@ Variables: - **track**: (*Required*): Should we create a sensor `True` or ignore it `False`? - **search**: (*Optional*): If set will only trigger for matched events. - **offset**: (*Optional*): A set of characters that precede a number in the event title for designating a pre-trigger state change on the sensor. (Default: `!!`) - +  - **ignore_availablilty**: (*Optional*): Should we respect `free`/`busy` flags? (Defaults to `true`) +   From this we will end up with the binary sensors `calendar.test_unimportant` and `calendar.test_important` which will toggle themselves on/off based on events on the same calendar that match the search value set for each. You'll also have a sensor `calendar.test_everything` that will not filter events out and always show the next event available. But what if you only wanted it to toggle based on all events? Just leave out the *search* parameter. diff --git a/source/_components/calendar.todoist.markdown b/source/_components/calendar.todoist.markdown index d3ad45c8c4f..c416ddb50d7 100644 --- a/source/_components/calendar.todoist.markdown +++ b/source/_components/calendar.todoist.markdown @@ -111,7 +111,7 @@ Home Assistant does its best to determine what task in each project is "most" im Todoist also comes with access to a service, `calendar.todoist_new_task`. This service can be used to create a new Todoist task. You can specify labels and a project, or you can leave them blank, and the task will go to your "Inbox" project. -Here's an example JSON payload: +Here are two example JSON payloads resulting in the same task: ```json { @@ -123,6 +123,17 @@ Here's an example JSON payload: } ``` +```json +{ + "content": "Pick up the mail", + "project": "Errands", + "labels":"Homework,School", + "priority":3, + "due_date_string":"tomorrow at 14:00", + "due_date_lang":"en" +} +``` + - **content** (*Required*): The name of the task you want to create. - **project** (*Optional*): The project to put the task in. @@ -131,6 +142,11 @@ Here's an example JSON payload: - **priority** (*Optional*): The priority of the task, from 1-4. Again, 1 means least important, and 4 means most important. -- **due_date** (*Optional*): When the task should be due, in either YYYY-MM-DD format or YYYY-MM-DD HH:MM format. +- **due_date_string** (*Optional*): When the task should be due, in [natural language](https://support.todoist.com/hc/en-us/articles/205325931-Dates-and-Times). Mutually exclusive with `due_date` + +- **due_date_lang** (*Optional*): When `due_date_string` is set, it is posisble to set the language. + Valid languages are: `en`, `da`, `pl`, `zh`, `ko`, `de`, `pt`, `ja`, `it`, `fr`, `sv`, `ru`, `es`, `nl` + +- **due_date** (*Optional*): When the task should be due, in either YYYY-MM-DD format or YYYY-MM-DD HH:MM format. Mutually exclusive with `due_date_string`. Note that there's (currently) no way to mark tasks as done through Home Assistant; task names do not necessarily have to be unique, so you could find yourself in a situation where you close the wrong task. diff --git a/source/_components/climate.fritzbox.markdown b/source/_components/climate.fritzbox.markdown new file mode 100644 index 00000000000..65975ca77c5 --- /dev/null +++ b/source/_components/climate.fritzbox.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "Fritzbox Thermostat" +description: "Instructions on how to integrate the AVM Fritzbox thermostat." +date: 2017-11-12 17:10 +sidebar: true +comments: false +sharing: true +footer: true +logo: avm.png +ha_category: Climate +ha_release: 0.68 +ha_iot_class: "Local Polling" +--- + +

+To get AVM fritzbox thermostat follow the instructions for the general [Fritzbox](/components/fritzbox/). +

+ +### {% linkable_title Attributes %} + +The are several attributes that can be useful for automations and templates. + +| Attribute | Description | +| --------- | ----------- | +| `device_locked` | The state of the key lock at the device. +| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface. +| `low_battery` | The low battery state indication. diff --git a/source/_components/climate.modbus.markdown b/source/_components/climate.modbus.markdown new file mode 100644 index 00000000000..f489d27a4ba --- /dev/null +++ b/source/_components/climate.modbus.markdown @@ -0,0 +1,70 @@ +--- +layout: page +title: "Modbus" +description: "Instructions how to integrate a Modbus thermostat within Home Assistant." +date: 2018-01-29 9:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: modbus.png +ha_category: Thermostat +ha_release: 0.68 +ha_iot_class: "Local Polling" +--- + + +The `modbus` thermostat allows you to use a sensor value (current temperature) +and target value (target temperature) from [Modbus](http://www.modbus.org/) +registers. + +To use your Modbus thermostat in your installation, add the following to your `configuration.yaml` file: + +```yaml +climate: + - platform: modbus + name: Watlow F4T + slave: 1 + target_temp_register: 2782 + current_temp_register: 27586 + +``` + +{% configuration %} +name: + description: Name of the device + required: true + type: string +slave: + description: The number of the slave (Optional for tcp and upd Modbus, use 1). + required: true + type: int +target_temp_register: + description: Register number for target temperature (Setpoint). + required: true + type: int +current_temp_register: + description: Register number for current temperature (Process value). + required: true + type: int +data_type: + description: Response representation (int, uint, float, custom). If float selected, value will converted to IEEE 754 floating point format. + Default float. + required: false + type: string +count: + description: Number of registers to read. + required: false + type: int +precision: + description: Number of valid decimals, default 0. + required: false + type: int +{% endconfiguration %} + + +### {% linkable_title Services %} + +| Service | Description | +| ------- | ----------- | +| set_temperature | Set Temperature. Requires `value` to be passed in, which is the desired target temperature. `value` should be in the same type as `data_type` | diff --git a/source/_components/cover.wink.markdown b/source/_components/cover.wink.markdown index 8e81d8ac793..8c826341870 100644 --- a/source/_components/cover.wink.markdown +++ b/source/_components/cover.wink.markdown @@ -13,24 +13,20 @@ ha_release: 0.13 ha_iot_class: "Cloud Polling" --- -Wink cover/garage door functionality depends on the product you're using. With GoControl/Linear Home Assistant can open, close, and view state. Chamberlain is currently limited to view only. Meaning Home Assistant will only show the current state of the door and control has been disabled (by Chamberlain). If you have a Chamberlain garage door, and would like to control it via Home Assistant, please contact Chamberlain and request that they re-enabled third-party control. +Wink Cover garage door functionality varies on the product. Home Assistant can open, close, and view state of GoControl/Linear openers. For Chamberlain MyQ-enabled openers, Home Assistant is limited to show current state (open or closed) only using this Wink cover. This restriction was imposed by Chamberlain for third party control. Wink suggests that MyQ customers should contact Chamberlain directly to inquire about expanding permissions. -The following quote is from Wink. - -> As part of our agreement with Chamberlain, third-party access to control Chamberlain garage doors has been restricted. Please contact Chamberlain directly to inquire about permissions. +The [MyQ Cover](/components/cover.myq/) does provide full functionality for opening and closing Chamberlain MyQ-enabled garage doors. If installed along with the Wink Component, a duplicate garage door entity may exist. In that case, the semi-functional Wink garage door entity can be hidden via customize.yaml. The requirement is that you have setup [Wink](/components/wink/). - ### {% linkable_title Supported cover devices %} - Bali window treatments - Lutron shades - Pella motorized blinds and shades - GoControl garage door opener -- Chamberlain (Limited functionality) (No Wink hub required) +- Chamberlain MyQ (Limited functionality) (No Wink hub required)

The above devices are confirmed to work, but others may work as well.

- diff --git a/source/_components/device_tracker.xiaomi_miio.markdown b/source/_components/device_tracker.xiaomi_miio.markdown index dad5feef5df..ae604043937 100644 --- a/source/_components/device_tracker.xiaomi_miio.markdown +++ b/source/_components/device_tracker.xiaomi_miio.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: xiaomi.png -ha_category: Sensor +ha_category: Presence Detection ha_version: 0.67 ha_iot_class: "Local Polling" --- diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index 61ea8046b9d..f369ce67c13 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -23,6 +23,7 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * [DirecTV receivers](/components/media_player.directv/) * [Frontier Silicon internet radios](/components/media_player.frontier_silicon/) * [Google Cast](/components/media_player.cast/) + * [HomeKit](/components/homekit_controller/) * [IKEA Trådfri (Tradfri)](/components/tradfri/) * [Linn / Openhome](/components/media_player.openhome/) * [Logitech Harmony Hub](/components/remote.harmony/) @@ -50,6 +51,8 @@ discovery: ignore: - sonos - samsung_tv + enable: + - homekit ``` Configuration variables: @@ -85,6 +88,12 @@ Valid values for ignore are: * `yamaha`: Yamaha media player * `yeelight`: Yeelight Sunflower bulb +- **enable** (*Optional*): A list of platforms not enabled by default that `discovery` should discover. + +Valid values for enable are: + + * `homekit`: HomeKit accessories +

Home Assistant must be on the same network as the devices for uPnP discovery to work. If running Home Assistant in a [Docker container](/docs/installation/docker/) use switch `--net=host` to put it on the host's network. diff --git a/source/_components/eufy.markdown b/source/_components/eufy.markdown new file mode 100644 index 00000000000..294dd269026 --- /dev/null +++ b/source/_components/eufy.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Eufy" +description: "Instructions on how to integrate Eufy devices into Home Assistant." +date: 2018-04-09 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: eufy.png +ha_category: Hub +ha_release: 0.68 +--- + +The `eufy` component is the main component to integrate various [eufy](http://https://www.eufylife.com/) devices with Home Assistant. + +Supported devices will be discovered after the `eufy` component is configured: + +```yaml +# Example configuration.yaml entry +eufy: + username: testuser@domain + password: p4ssw0rd +``` + +where username and password are the ones configured in the EufyHome app. Alternately, Eufy devices that are not discoverable can be statically configured. + +```yaml +eufy: + devices: + - address: 192.168.1.10 + access_token: 1234567890abcdef + type: T1012 + name: Smart Light + - address: 192.168.1.11 + access_token: abcdef1234567890 + type: T1201 + name: Smart Switch +``` + +access_token can be obtained by running: + +``` +curl -H "Content-Type: application/json" -d '{"client_id":"eufyhome-app", "client_Secret":"GQCpr9dSp3uQpsOMgJ4xQ", "email":"USERNAME", "password":"PASSWORD"}' https://home-api.eufylife.com/v1/user/email/login | jq +``` + +replacing USERNAME and PASSWORD with the Eufy username and password. This will give an access_token. Then run: + +``` +curl -H token:TOKEN -H category:Home https://home-api.eufylife.com/v1/device/list/devices-and-groups | jq +``` + +replacing TOKEN with the access_token from the previous command. This will provide the local_code for each device. + diff --git a/source/_components/fritzbox.markdown b/source/_components/fritzbox.markdown new file mode 100644 index 00000000000..8d601368ebd --- /dev/null +++ b/source/_components/fritzbox.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Fritzbox" +description: "Instructions on how to integrate the AVM Fritzbox Smart Home components." +date: 2018-02-18 17:10 +sidebar: true +comments: false +sharing: true +footer: true +logo: avm.png +ha_category: Hub +ha_release: 0.68 +ha_iot_class: "Local Polling" +--- + +The [AVM](www.avm.de) Fritzbox component for Home Assistant allows you to integrate the switch and climate devices. + +#### {% linkable_title Tested Devices %} + +- [FRITZ!Box 6490 Cable](https://avm.de/produkte/fritzbox/fritzbox-6490-cable/) +- [FRITZ!DECT 200](https://avm.de/produkte/fritzdect/fritzdect-200/) +- [Eurotronic Comet DECT](https://www.eurotronic.org/produkte/comet-dect.html) + + +## {% linkable_title Setup %} + +```yaml +# Example configuration.yaml entry +fritzbox: + devices: + - host: fritz.box + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} + devices: + description: A list of Fritzbox devices. + required: true + type: map + keys: + host: + description: The hostname or IP address of the Fritzbox. + required: true + type: optional + username: + description: The username for Smart Home access. + required: true + type: string + password: + description: The password of the user. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index 68ac4cb4603..d84658d9451 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -15,7 +15,7 @@ logo: apple-homekit.png The `HomeKit` component allows you to forward entities from Home Assistant to Apple `HomeKit`, so they can be controlled from Apple's `Home` app and `Siri`. Please make sure that you have read the [considerations](#considerations) listed below to save you some trouble later.

- It might be necessary to install an additional package: + It might be necessary to install an additional package: `$ sudo apt-get install libavahi-compat-libdnssd-dev`

@@ -154,7 +154,7 @@ automation: ## {% linkable_title Configure Filter %} -By default no entity will be excluded. To limit which entities are being exposed to `HomeKit`, you can use the `filter` parameter. Keep in mind only [supported components](#supported-components) can be added. +By default no entity will be excluded. To limit which entities are being exposed to `HomeKit`, you can use the `filter` parameter. Keep in mind only [supported components](#supported-components) can be added. {% raw %} ```yaml @@ -184,7 +184,7 @@ Filters are applied as follows: - if both include and exclude domains specified, the exclude domains are ignored * Neither include or exclude domain specified - if entity is included, pass (as #2 above) - - if entity include and exclude, the entity exclude is ignored + - if entity include and exclude, the entity exclude is ignored ## {% linkable_title Supported Components %} @@ -194,11 +194,19 @@ The following components are currently supported: | Component | Type Name | Description | | --------- | --------- | ----------- | | alarm_control_panel | SecuritySystem | All security systems. | +| binary_sensor | Sensor | Support for `co2`, `door`, `garage_door`, `gas`, `moisture`, `motion`, `occupancy`, `opening`, `smoke` and `window` device classes. Defaults to the `occupancy` device class for everything else. | | climate | Thermostat | All climate devices. | +| cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` as their `device_class`. | | cover | WindowCovering | All covers that support `set_cover_position`. | -| light | Light | Support for `on / off`, `brightness`, `color_temp` and `rgb_color`. | -| sensor | TemperatureSensor | All sensors that have `Celsius` and `Fahrenheit` as their `unit_of_measurement`. | -| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` | +| cover | WindowCovering | All covers that support `open_cover` and `close_cover` through value mapping. (`open` -> `>=50`; `close` -> `<50`) | +| cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) | +| light | Light | Support for `on / off`, `brightness` and `rgb_color`. | +| lock | DoorLock | Support for `lock / unlock`. | +| sensor | TemperatureSensor | All sensors that have `Celsius` and `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. | +| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` or `humidity` as their `device_class`. | +| sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` | +| sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` | +| sensor | LightSensor | All sensors that have `lm`/`lux` as their `unit_of_measurement` or `light` as their `device_class` | | switch / remote / input_boolean / script | Switch | All represented as switches. | diff --git a/source/_components/homekit_controller.markdown b/source/_components/homekit_controller.markdown new file mode 100644 index 00000000000..319f505ef11 --- /dev/null +++ b/source/_components/homekit_controller.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "HomeKit controller support" +description: "Instructions how to integrate your HomeKit devices within Home Assistant." +date: 2018-03-19 21:04 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple-homekit.png +ha_category: Hub +ha_release: 0.68 +ha_iot_class: "Local Polling" +--- + +[HomeKit](https://developer.apple.com/homekit/) controller integration for Home Assistant allows you to connect HomeKit accessories to Home Assistant. This component should not be confused with the [HomeKit](homekit) component, which allows you to control Home Assistant devices via HomeKit. + +There is currently support for the following device types within Home Assistant: + +- [Light](../light.homekit_controller) +- [Switch](../switch.homekit_controller) + +The component will be automatically configured if the [`discovery:`](components/discovery/) component is enabled and an enable entry added for HomeKit: + +```yaml +discovery: + enable: + - homekit +``` + +For each detected HomeKit accessory, a configuration prompt will appear in the web front end. Use this to provide the HomeKit PIN. diff --git a/source/_components/light.eufy.markdown b/source/_components/light.eufy.markdown new file mode 100644 index 00000000000..d8596c00487 --- /dev/null +++ b/source/_components/light.eufy.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Eufy Lights" +description: "Instructions on how to integrate Eufy LED lights into Home Assistant." +date: 2018-04-09 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: eufy.png +ha_category: Light +ha_iot_class: "Local Polling" +ha_release: 0.68 +--- + +The `eufy` platform allows you to control your [Eufy](http://www.eufylife.com) lights from within Home Assistant. + +They will be automatically discovered if the [Eufy](/components/eufy/) component is enabled. + diff --git a/source/_components/light.homekit_controller.markdown b/source/_components/light.homekit_controller.markdown new file mode 100644 index 00000000000..f3f7243a10f --- /dev/null +++ b/source/_components/light.homekit_controller.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "HomeKit Light" +description: "Instructions how to setup HomeKit lights within Home Assistant." +date: 2017-03-19 21:08 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple-homekit.png +ha_category: Light +ha_iot_class: "Local Polling" +ha_release: 0.68 +--- + +To get your HomeKit lights working with Home Assistant, follow the instructions for the general [HomeKit controller component](/components/homekit_controller/). diff --git a/source/_components/maxcube.markdown b/source/_components/maxcube.markdown index c9645e9fc59..69713a6469f 100644 --- a/source/_components/maxcube.markdown +++ b/source/_components/maxcube.markdown @@ -25,13 +25,37 @@ Supported Devices: - MAX! Window Sensor (tested) - MAX! Wall Thermostat (tested) +### {% linkable_title One Gateway %} + A `maxcube` section must be present in the `configuration.yaml` file and contain the following options as required: ```yaml # Example configuration.yaml entry maxcube: - host: 192.168.0.20 + gateways: + - host: 192.168.0.20 ``` -Configuration variables: -- **host** (*Required*): The IP address of the eQ-3 MAX! Cube to use. -- **port** (*Optional*): The UDP port number. Defaults to `62910`. + +### {% linkable_title Multiple Gateways %} + +```yaml +# Example configuration.yaml entry +maxcube: + gateways: + - host: 192.168.0.20 + port: 62910 + - host: 192.168.0.21 + port: 62910 +``` + +{% configuration %} + host: + description: The IP address of the eQ-3 MAX! Cube to use. + required: true + type: string + port: + description: The UDP port number. + required: false + type: int + default: 62910 +{% endconfiguration %} diff --git a/source/_components/media_player.blackbird.markdown b/source/_components/media_player.blackbird.markdown new file mode 100644 index 00000000000..99873f1cc04 --- /dev/null +++ b/source/_components/media_player.blackbird.markdown @@ -0,0 +1,70 @@ +--- +layout: page +title: "Blackbird 8x8 HDMI Matrix Switch" +description: "Instructions on how to integrate Monoprice Blackbird 4k 8x8 HDBaseT Matrix Switch into Home Assistant." +date: 2018-03-29 16:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: monoprice.svg +ha_category: Media Player +ha_release: 0.68 +ha_iot_class: "Local Polling" +--- + +The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) using a serial connection. + +To add a Blackbird device to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: blackbird + type: serial + port: /dev/ttyUSB0 + zones: + 1: + name: Living Room + sources: + 3: + name: BluRay +``` + +{% configuration %} +type: + description: The type of device connection - serial or socket + required: true + type: string +port: + description: The serial port to which Blackbird matrix switch is connected. Either port or host must be defined. + required: optional + type: string +host: + description: The IP address of the Blackbird matrix switch. Either port or host must be defined. + required: optional + type: string +zones: + description: This is the list of zones available. Valid zones are 1,2,3,4,5,6,7,8. Each zone must have a name assigned to it. + required: true + type: int + keys: + name: + description: The name of the zone. +sources: + description: The list of sources available. Valid source numbers are 1,2,3,4,5,6,7,8. Each source number corresponds to the input number on the Blackbird matrix switch. Similar to zones, each source must have a name assigned to it. + required: true + type: int + keys: + name: + description: The name of the source. +{% endconfiguration%} + +### {% linkable_title Service `BLACKBIRD_SETALLZONES` %} + +Set all zones to the same input source. This service allows you to immediately synchronize all the TVs in your home. Regardless of `entity_id` provided, all zones will be updated. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String that points at an `entity_id` of a zone. +| `source` | no | String of source name to activate. diff --git a/source/_components/media_player.kodi.markdown b/source/_components/media_player.kodi.markdown index a59d19fe348..83689d4c1ae 100644 --- a/source/_components/media_player.kodi.markdown +++ b/source/_components/media_player.kodi.markdown @@ -17,7 +17,9 @@ ha_iot_class: "Local Push" The `kodi` platform allows you to control a [Kodi](http://kodi.tv/) multimedia system from Home Assistant. -To add Kodi to your installation, add the following to your `configuration.yaml` file: +The preferred way to set up the Kodi platform is by enabling the [discovery component](https://www.home-assistant.io/components/discovery/) which requires enabled [web interface](https://kodi.wiki/view/Web_interface) on your Kodi installation. + +In case the discovery does not work, or you need specific configuration variables, you can add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown index ca277f77063..0c6dc4d2d3d 100644 --- a/source/_components/media_player.onkyo.markdown +++ b/source/_components/media_player.onkyo.markdown @@ -28,11 +28,24 @@ media_player: pc: 'HTPC' ``` -Configuration variables: - -- **host** (*Optional*): IP address of the device. Example:`192.168.1.2`. If not specified, the platform will load any discovered receivers. -- **name** (*Required if host is specified*): Name of the device. -- **sources** (*Optional*): A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified. +{% configuration %} +host: + description: IP address of the device. Example:`192.168.1.2`. If not specified, the platform will load any discovered receivers. + required: false + type: string +name: + description: Name of the device. (*Required if host is specified*) + required: false + type: string +sources: + description: A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified. + required: false + type: list +zone2: + description: Enables control for the receiver's second zone. + required: false + type: bool +{% endconfiguration %} List of source names: diff --git a/source/_components/media_player.webostv.markdown b/source/_components/media_player.webostv.markdown index cb4fe0c757d..1d634dcebc0 100644 --- a/source/_components/media_player.webostv.markdown +++ b/source/_components/media_player.webostv.markdown @@ -55,7 +55,7 @@ A full configuration example will look like the sample below: media_player: - platform: webostv host: 192.168.0.10 - name: Living Room TV + name: Living Room TV timeout: 5 filename: webostv.conf turn_on_action: @@ -76,7 +76,7 @@ Avoid using `[ ]` in the `name:` of your device. Home Assistant is able to turn on a LG webOS Smart TV if you specify an action, like HDMI-CEC or WakeOnLan. -Common for webOS 3.0 and higher would be to use WakeOnLan feature. +Common for webOS 3.0 and higher would be to use WakeOnLan feature. To use this feature your TV should be connected to your network via Ethernet rather than Wireless and you should enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](http://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others) (or *Mobile App* in *General* settings for older models). ```yaml @@ -93,12 +93,36 @@ media_player: mac: B4:E6:2A:1E:11:0F ``` -Any other [actions](/docs/automation/action/) to power on the device can be configured. +Any other [actions](/docs/automation/action/) to power on the device can be configured. ### {% linkable_title Sources %} To obtain complete list of available sources currently configured on the TV, once the webOS TV is configured and linked, while its powered on head to the **Developer Tools** > **States**, find your `media_player.` and use the sources listed in `source_list:` remembering to split them per line into your `sources:` configuration. +### {% linkable_title Change channel through play_media service %} + +The `play_media` service can be used in a script to switch to the specified tv channel. +It selects the best matching cannel according to the `media_content_id` parameter: + 1. Channel number *(i.e. '1' or '6')* + 2. Exact channel name *(i.e. 'France 2' or 'CNN')* + 3. Substring in channel name *(i.e. 'BFM' in 'BFM TV')* + +```yaml +# Example action entry in script to switch to channel number 1 +service: media_player.play_media +data: + entity_id: media_player.lg_webos_smart_tv + media_content_id: 1 + media_content_type: "channel" + +# Example action entry in script to switch to channel including 'TF1' in its name +service: media_player.play_media +data: + entity_id: media_player.lg_webos_smart_tv + media_content_id: "TF1" + media_content_type: "channel" +``` + ### {% linkable_title Next/Previous buttons %} The behaviour of the next and previsous buttons is different depending on the active source: diff --git a/source/_components/notify.clicksend.markdown b/source/_components/notify.clicksend.markdown index f334009e9af..a5f9d587fde 100644 --- a/source/_components/notify.clicksend.markdown +++ b/source/_components/notify.clicksend.markdown @@ -28,6 +28,14 @@ notify: username: CLICKSEND_USERNAME api_key: CLICKSEND_API_KEY recipient: PHONE_NO + +# Multiple recipients +notify: + - platform: clicksend + name: ClickSend + username: CLICKSEND_USERNAME + api_key: CLICKSEND_API_KEY + recipient: [PHONE_NO1, PHONE_NO2] ``` {% configuration %} @@ -44,9 +52,9 @@ api_key: required: true type: string recipient: - description: "Your phone number. This is where you want to send your notification SMS messages, e.g., `09171234567`." + description: "A single or multiple phone numbers. This is where you want to send your SMS notification messages, e.g., `09171234567` or `[09171234567, 09177654321]`." required: true - type: string + type: string or list sender: description: The name or number of the sender. required: false diff --git a/source/_components/notify.facebook.markdown b/source/_components/notify.facebook.markdown index beb539c559c..5b4e4979477 100644 --- a/source/_components/notify.facebook.markdown +++ b/source/_components/notify.facebook.markdown @@ -50,7 +50,7 @@ automation: - '+919784516314' ``` -You can also send messages to users that do not have stored their phone number with Facebook, but this requires a bit more work. The Messenger platform uses page specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specific ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID: +You can also send messages to users that do not have stored their phone number on Facebook, but this requires a bit more work. The Messenger platform uses page-specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specific ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID: ```php Full configuration details can be found on the main [Hive component](/components/hive/) page. diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index f84296bd861..5f36c9de1d1 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -80,6 +80,10 @@ json_attributes: description: A list of keys to extract values from a JSON dictionary payload and then set as sensor attributes. reqired: false type: list, string +unique_id: + description: "An id that uniquely identifies this sensor. If 2 sensors have the same unique id, Home Assistant will raise an exception.**" + required: false + type: string {% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/sensor.qwikswitch.markdown b/source/_components/sensor.qwikswitch.markdown index b2574cdb1d7..afc4fc6cb4c 100644 --- a/source/_components/sensor.qwikswitch.markdown +++ b/source/_components/sensor.qwikswitch.markdown @@ -13,6 +13,6 @@ ha_iot_class: "Local Push" ha_release: "0.67" --- -The `qwikswitch` sensor platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays and dimmers as sensors from within Home Assistant. +The `qwikswitch` sensor platform allows you to use your [QwikSwitch](http://www.qwikswitch.co.za/) sensors in Home Assistant. The platform is configured through the [QwikSwitch component](/components/qwikswitch/). diff --git a/source/_components/sensor.sht31.markdown b/source/_components/sensor.sht31.markdown new file mode 100644 index 00000000000..73660bbbdc1 --- /dev/null +++ b/source/_components/sensor.sht31.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: "Sensirion SHT31 Sensor" +description: "Instructions on how to integrate SHT31 sensors within Home Assistant." +date: 2018-03-06 19:15 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: DIY +ha_release: 0.68 +logo: sensirion.png +ha_iot_class: "Local Polling" +--- + +The `sht31` sensor platform allows you to get the current temperature and humidity from a Sensirion SHT31 device. + +To use your SHT31 sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + platform: sht31 + name: Bedroom + i2c_address: 0x44 + monitored_conditions: + - temperature + - humidity +``` + +{% configuration %} + name: + description: The name of the sensor. Temperature and Humidity will be added to the name for the sensor name. + required: false + default: SHT31 + type: string + i2c_address: + description: I2C address of the sensor. + required: false + default: "`0x44`" + type: int + monitored_conditions: + description: Conditions to monitor. + required: false + default: All conditions + type: list + keys: + temperature: + description: The current temperature of the SHT31. + humidity: + description: The current humidity of the SHT31. +{% endconfiguration %} diff --git a/source/_components/sensor.sigfox.markdown b/source/_components/sensor.sigfox.markdown new file mode 100644 index 00000000000..f3f0bbb0ea5 --- /dev/null +++ b/source/_components/sensor.sigfox.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "Sigfox Sensor" +description: "Display messages from Sigfox devices in Home Assistant." +date: 2018-04-07 12:10 +sidebar: true +comments: false +sharing: true +footer: true +logo: sigfox.png +ha_category: Sensor +ha_iot_class: "Local Polling" +ha_release: 0.68 +--- + +[SigFox](https://www.sigfox.com/en) component adding a sensor for each Sigfox device registered with your account. The default name of sensors is `sigfox_{DEVICE_ID}` where `DEVICE_ID` is the devices Sigfox ID. The state of an added Sigfox sensor is the payload of the last message published by that device. Additionally, there are attributes for the latitude and longitude coordinates of the device, as well as the signal-to-noise ratio ( [snr](https://en.wikipedia.org/wiki/Signal-to-noise_ratio)). + +```yaml +# Example configuration.yaml entry +sensor: + - platform: sigfox + api_login: your_api_login + api_password: your_api_password +``` + +{% configuration %} +api_login: + description: Your Sigfox API login. + required: true + type: string +api_password: + description: Your Sigfox API password. + required: true + type: string +name: + description: The name to prepend to the device ID. + required: false + default: "sigfox" + type: string +{% endconfiguration %} + +Note that `your_api_login` and `your_api_password` are your **API access credentials** which can be accessed by following: + +1. Log into [Sigfox backend](https://backend.sigfox.com) +1. Select `GROUP` +1. Select `API ACCESS` +1. Click on `new` and create new access entry diff --git a/source/_components/sensor.uscis.markdown b/source/_components/sensor.uscis.markdown new file mode 100644 index 00000000000..3d214dc818a --- /dev/null +++ b/source/_components/sensor.uscis.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: USCIS Sensor +description: "Instructions on how to set up USCIS within Home Assistant." +date: 2018-03-21 08:00 +sidebar: false +comments: false +sharing: true +footer: true +logo: uscis.png +ha_category: Sensor +ha_release: 0.68 +ha_iot_class: "Cloud Polling" +--- + +The `uscis` sensor component allows you get updates on your USCIS case using your case/receipt number. The sensor gets the case information from [USCIS Website]( https://egov.uscis.gov/casestatus/landing.do) + +## Example for `configuration.yaml` : + +```yaml +sensor: + - platform: uscis + case_id: YOUR_CASE_NUMBER + name: OPTIONAL_NAME +``` + +{% configuration %} +friendly_name: + description: Name of the sensor in Home Assistant. + required: false + default: USCIS + type: string +case_id: + description: Case/receipt number used to get the case details from USCIS web client. + required: true + type: string +{% endconfiguration %} + +All the data will be fetch from [USCIS](https://egov.uscis.gov/casestatus/mycasestatus.do). diff --git a/source/_components/switch.eufy.markdown b/source/_components/switch.eufy.markdown new file mode 100644 index 00000000000..1a79dbd26bd --- /dev/null +++ b/source/_components/switch.eufy.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Eufy Switch" +description: "Instructions on how to integrate Eufy switches into Home Assistant." +date: 2018-04-09 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: eufy.png +ha_category: Switch +ha_iot_class: "Local Polling" +ha_release: 0.68 +--- + +The `eufy` platform allows you to control your [Eufy](http://www.eufylife.com) switches from within Home Assistant. + +They will be automatically discovered if the [Eufy](/components/eufy/) component is enabled. + diff --git a/source/_components/switch.fritzbox.markdown b/source/_components/switch.fritzbox.markdown new file mode 100644 index 00000000000..83657be0c88 --- /dev/null +++ b/source/_components/switch.fritzbox.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "Fritzbox Switch" +description: "Instructions on how to integrate the AVM Fritzbox switch." +date: 2017-11-12 17:10 +sidebar: true +comments: false +sharing: true +footer: true +logo: avm.png +ha_category: Switch +ha_release: 0.68 +ha_iot_class: "Local Polling" +--- + +

+To get AVM Fritzbox switch follow the instructions for the general [Fritzbox](/components/fritzbox/). +

+ +### {% linkable_title Attributes %} + +The are several attributes that can be useful for automations and templates. + +| Attribute | Description | +| --------- | ----------- | +| `device_locked` | The state of the key lock at the device. +| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface. +| `temperature_unit` | The unit of the temperature sensor (only available if the device support temperature sensor). +| `temperature` | The current temperature sensor reading (only available if the device supports temperature sensor). +| `total_consumption` | The total power consumption since the beginning of operation (only available if the device supports power meter function). +| `total_consumption_unit` | The unit of the total_consumption (only available if the device supports power meter function). diff --git a/source/_components/switch.homekit_controller.markdown b/source/_components/switch.homekit_controller.markdown new file mode 100644 index 00000000000..43bf3be57b1 --- /dev/null +++ b/source/_components/switch.homekit_controller.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "HomeKit Switch" +description: "Instructions on how to setup HomeKit switches within Home Assistant." +date: 2017-03-19 21:08 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple-homekit.png +ha_category: Light +ha_iot_class: "Local Polling" +ha_release: 0.68 +--- + +To get your HomeKit switches working with Home Assistant, follow the instructions for the general [HomeKit controller component](/components/homekit_controller/). diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown index b1d18991358..5fc0d8de47b 100644 --- a/source/_components/tts.markdown +++ b/source/_components/tts.markdown @@ -88,3 +88,33 @@ data_template: ## {% linkable_title Cache %} The component has two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. + +## {% linkable_title REST Api %} + +#### {% linkable_title POST /api/tts_get_url %} + +Returns an URL to the generated TTS file. Platform and message are required. + +```json +{ + "plaform": "amazon_polly", + "message": "I am speaking now" +} +``` + +The return code is 200 if the file is generated. The message body will contain a JSON object with the URL. + +```json +{ + "url": "http://127.0.0.1:8123/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_demo.mp3" +} +``` + +Sample `curl` command: + +```bash +$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ + -H "Content-Type: application/json" \ + -d '{"message": "I am speaking now", "platform": "amazon_polly"}' \ + http://localhost:8123/api/tts_get_url +``` diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown index f751532e70d..0e769fc6a45 100644 --- a/source/_components/zha.markdown +++ b/source/_components/zha.markdown @@ -26,8 +26,10 @@ There is currently support for the following device types within Home Assistant: Known working ZigBee radios: -- Nortek/GoControl Z-Wave & Zigbee USB Adaptor - Model HUSBZB-1 +- Nortek/GoControl Z-Wave & Zigbee USB Adapter - Model HUSBZB-1 - XBee Series 2C +- [Elelabs ZigBee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html) +- [Elelabs ZigBee Raspberry Pi Shield](https://elelabs.com/products/elelabs_zigbee_shield.html) To configure the component, a `zha` section must be present in the `configuration.yaml`, and the path to the serial device for the radio and path to the database which will persist your network data is required. diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 6b3c34b0a0f..9eafdece879 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -80,6 +80,13 @@ Home Assistant adds extensions to allow templates to access all of the current s - `float` will format the output as float. - `strptime(string, format)` will parse a string to a datetime based on a [format][strp-format]. - `log(value, base)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. Can also be used as a filter. +- `sin(value)` will return the sine of the input. Can be used as a filter. +- `cos(value)` will return the cosine of the input. Can be used as a filter. +- `tan(value)` will return the tangent of the input. Can be used as a filter. +- `sqrt(value)` will return the square root of the input. Can be used as a filter. +- `e` mathematical constant, approximately 2.71828. +- `pi` mathematical constant, approximately 3.14159. +- `tau` mathematical constant, approximately 6.28318. - Filter `round(x)` will convert the input to a number and round it to `x` decimals. - Filter `timestamp_local` will convert an UNIX timestamp to local time/data. - Filter `timestamp_utc` will convert an UNIX timestamp to UTC time/data. @@ -274,6 +281,10 @@ The following overview contains a couple of options to get the needed values: {% raw %}{{ float(value_json) * (2**10) }}{% endraw %} {% raw %}{{ value_json | log }}{% endraw %} {% raw %}{{ log(1000, 10) }}{% endraw %} +{% raw %}{{ sin(pi / 2) }}{% endraw %} +{% raw %}{{ cos(tau) }}{% endraw %} +{% raw %}{{ tan(pi) }}{% endraw %} +{% raw %}{{ sqrt(e) }}{% endraw %} # Timestamps {% raw %}{{ value_json.tst | timestamp_local }}{% endraw %} diff --git a/source/_docs/tools/hass.markdown b/source/_docs/tools/hass.markdown index 3ba0896f359..73e0bd68cd2 100644 --- a/source/_docs/tools/hass.markdown +++ b/source/_docs/tools/hass.markdown @@ -39,6 +39,7 @@ optional arguments: specified days --log-file LOG_FILE Log file to write to. If not set, CONFIG/home- assistant.log is used + --log-no-color Disable color logs --runner On restart exit with code 100 --script ... Run one of the embedded scripts --daemon Run Home Assistant as daemon diff --git a/source/_posts/2018-04-27-release-68.markdown b/source/_posts/2018-04-27-release-68.markdown new file mode 100644 index 00000000000..4ac9d1f460b --- /dev/null +++ b/source/_posts/2018-04-27-release-68.markdown @@ -0,0 +1,501 @@ +--- +layout: post +title: "0.68: HomeKit control, Eufy, FritzBox, SigFox sensors" +description: "Enjoy your weekend with this brand new release of Home Assistant." +date: 2018-04-27 00:01:00 +date_formatted: "April 27, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-04-0.68/components.png +--- + + + +Weekend is around the corner and that means that it's time for the next release of Home Assistant. 0.68 brings a ton of great goodies and bug fixes. + +One of the coolest features this release is by [@mjg59]: you are now able to **control** HomeKit devices. Previously, it was possible to control Home Assistant from iOS devices using the HomeKit protocol. With this release, Home Assistant is able to become the controller and use HomeKit to control lights and switches directly. Since HomeKit is vendor agnostic, it means that any HomeKit light or switch will now be compatible with Home Assistant. Very cool. + +Another cool new platform, also by [@mjg59], is support for Eufy devices. Eufy is the Home Automation brand of Anker and they have been producing reasonably priced devices which can now be controlled by Home Assistant too. Thanks for all your contributions [@mjg59] ❤️. + +## {% linkable_title New Platforms %} + +- Add support for Eufy bulbs and switches ([@mjg59] - [#13773]) ([eufy docs]) ([light.eufy docs]) ([switch.eufy docs]) (new-platform) +- Add support for controlling homekit lights and switches ([@mjg59] - [#13346]) ([homekit_controller docs]) ([light.homekit_controller docs]) (new-platform) +- Adding USCIS component ([@meauxt] - [#13764]) ([sensor.uscis docs]) (new-platform) +- Add support for new platform: climate.modbus ([@Kirchoff] - [#12224]) ([climate.modbus docs]) (new-platform) +- Add AVM fritzbox smarthome component ([@hthiery] - [#10688]) ([fritzbox docs]) ([climate.fritzbox docs]) ([switch.fritzbox docs]) (new-platform) +- Adds SigFox sensor ([@robmarkcole] - [#13731]) ([sensor.sigfox docs]) (new-platform) +- Add blackbird media player component ([@koolsb] - [#13549]) ([media_player.blackbird docs]) (new-platform) +- Add support for Sensirion SHT31 temperature/humidity sensor ([@viorels] - [#12952]) ([sensor.sht31 docs]) (new-platform) +- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform) + +## {% linkable_title New Features %} + +- Support binary_sensor and device_tracker in HomeKit ([@Yonsm] - [#13735]) ([homekit docs]) (new-feature) +- Add Homekit locks support ([@philk] - [#13625]) ([homekit docs]) (new-feature) +- Support CO2/PM2.5/Light sensors in HomeKit ([@Yonsm] - [#13804]) ([homekit docs]) (new-feature) +- Support Garage Doors in HomeKit ([@marthoc] - [#13796]) ([homekit docs]) (new-feature) +- Support basic covers with open/close/stop services HomeKit ([@nickw444] - [#13819]) ([homekit docs]) (new-feature) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + +## {% linkable_title Breaking Changes %} + +- Icons! Material Design Icons has implemented some naming guidelines and this caused 9 icons to change names, 3 of which are home automation icons: `roomba` -> `robot-vacuum`, `nest-protect` -> `smoke-detector`, `nest-thermostat` -> `thermostat` ([see all changes](http://templarian.com/2018/04/18/material-design-icons-v2-3-54/)). +- Support for multiple MAX!Cube LAN gateways caused a slight change to the configuration schema. Make sure to check the docs for the new one. ([@syssi] - [#13517]) ([maxcube docs]) ([binary_sensor.maxcube docs]) ([climate.maxcube docs]) (breaking change) +- Ebox sensor platform has been disabled because the dependency was not compatible with pip 10. ([@balloob] - [#14003]) ([sensor.ebox docs]) (breaking change) + +## {% linkable_title Beta Fixes %} + +- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform) +- Order the output of the automation editor ([@balloob] - [#14019]) ([config docs]) (beta fix) +- HomeKit Alarm Control Panel Code Exception Fix ([@schmittx] - [#14025]) ([homekit docs]) (beta fix) +- Revert cast platform polling mode ([@OttoWinter] - [#14027]) ([media_player.cast docs]) (beta fix) +- Handle HomeKit configuration failure more cleanly ([@mjg59] - [#14041]) ([homekit_controller docs]) (beta fix) +- Update device classes for contact sensor HomeKit ([@marthoc] - [#14051]) ([homekit docs]) (beta fix) +- Upgrade broadlink lib ([@Danielhiversen] - [#14074]) ([sensor.broadlink docs]) ([switch.broadlink docs]) (beta fix) +- Fix timezone issue when calculating min/max values in tibber #14009 ([@Danielhiversen] - [#14080]) ([sensor.tibber docs]) (beta fix) +- Updated list of AWS regions for Amazon Polly ([@GotoCode] - [#14097]) ([tts docs]) (beta fix) +- Change Eufy brightness handling ([@mjg59] - [#14111]) (beta fix) + +## {% linkable_title All changes %} + +- Update Homekit to 1.1.9 ([@cdce8p] - [#13716]) ([homekit docs]) +- Update docstrings ([@fabaff] - [#13720]) ([ihc docs]) ([cover.opengarage docs]) ([cover.tahoma docs]) ([sensor.trafikverket_weatherstation docs]) +- Add option to ignore availability in google calendar events ([@cgtobi] - [#13714]) ([calendar.google docs]) +- Allow use of date_string in service call ([@Juggels] - [#13256]) ([calendar.todoist docs]) +- Add timeout / debounce (for brightness and others) ([@cdce8p] - [#13534]) ([homekit docs]) +- added support for smappee water sensors ([@hmn] - [#12831]) ([smappee docs]) ([sensor.smappee docs]) +- Initialise filter_sensor with historical values ([@dgomes] - [#13075]) ([sensor.filter docs]) +- Fix Gogogate2 'available' attribute ([@dlbroadfoot] - [#13728]) (beta fix) +- Bluesound bugfix status 595 and await ([@thrawnarn] - [#13727]) ([media_player.bluesound docs]) +- Upgrade aiohttp to 3.1.2 ([@fabaff] - [#13732]) +- Upgrade sqlalchemy to 1.2.6 ([@fabaff] - [#13733]) ([sensor.sql docs]) +- Brightness conversion for Abode dimmers ([@shred86] - [#13711]) ([light.abode docs]) +- Update CODEOWNERS (sensor.filter, sensor.upnp) ([@dgomes] - [#13736]) +- Reset permission ([@fabaff] - [#13743]) ([light.abode docs]) +- Throw an error when invalid device_mode is given ([@dangyuluo] - [#13739]) +- Fix so it is possible to ignore discovered config entry handlers ([@Kane610] - [#13741]) (beta fix) +- Upgrade netdisco to 1.3.1 ([@fabaff] - [#13744]) +- Add MQTT Sensor unique_id ([@OttoWinter] - [#13318]) ([sensor.mqtt docs]) +- Prepare entity component for config entries ([@balloob] - [#13730]) +- Check valid file on get_size ([@robmarkcole] - [#13756]) ([sensor.folder docs]) +- Qwikswitch sensors ([@kellerza] - [#13622]) ([sensor.qwikswitch docs]) +- Device type mapping introduced to avoid breaking change ([@syssi] - [#13765]) ([light.yeelight docs]) +- Only flag media position as updated when it really has ([@molobrakos] - [#13737]) ([media_player.squeezebox docs]) +- Support binary_sensor and device_tracker in HomeKit ([@Yonsm] - [#13735]) ([homekit docs]) (new-feature) +- Use config entry to setup platforms ([@balloob] - [#13752]) ([hue docs]) ([light docs]) ([light.hue docs]) +- Add Homekit locks support ([@philk] - [#13625]) ([homekit docs]) (new-feature) +- Snips sounds ([@tschmidty69] - [#13746]) ([snips docs]) +- Add missing DISCHRG state ([@swilson] - [#13787]) ([sensor.nut docs]) +- Improved upgradeability HomeKit security_systems ([@cdce8p] - [#13783]) ([homekit docs]) +- Qwikswitch Entity Register ([@kellerza] - [#13791]) ([qwikswitch docs]) ([sensor.qwikswitch docs]) +- Updated beacontools to 1.2.3 ([@citruz] - [#13792]) ([sensor.eddystone_temperature docs]) +- script/lazytox: Ensure Flake8 passes for tests/ ([@kellerza] - [#13794]) +- Fix bad metrics format for short metrics. ([@michaelkuty] - [#13778]) ([prometheus docs]) +- Update bellows to 0.5.2 ([@rcloran] - [#13800]) ([zha docs]) +- device_tracker.ubus: Handle devices not running DHCP ([@tobygray] - [#13579]) ([device_tracker docs]) +- Update yweather.py ([@wiuwiu] - [#13802]) ([weather.yweather docs]) +- Tibber lib update ([@Danielhiversen] - [#13811]) ([sensor.tibber docs]) +- Update pyhomematic to 0.1.41 ([@danielperna84] - [#13814]) ([homematic docs]) +- Add support for Eufy bulbs and switches ([@mjg59] - [#13773]) ([eufy docs]) ([light.eufy docs]) ([switch.eufy docs]) (new-platform) +- Homekit refactor ([@cdce8p] - [#13707]) ([homekit docs]) +- HomeKit type_cover fix ([@cdce8p] - [#13832]) ([homekit docs]) +- Allow platform unloading ([@balloob] - [#13784]) ([hue docs]) ([light docs]) +- Support CO2/PM2.5/Light sensors in HomeKit ([@Yonsm] - [#13804]) ([homekit docs]) (new-feature) +- Clicksend: Added support for multiple recipients ([@xTCx] - [#13812]) ([notify docs]) +- Support Garage Doors in HomeKit ([@marthoc] - [#13796]) ([homekit docs]) (new-feature) +- Abode better events ([@MisterWil] - [#13809]) ([abode docs]) +- UPnP async ([@dgomes] - [#13666]) ([upnp docs]) ([sensor.upnp docs]) +- Update example (fixes #13834) ([@fabaff] - [#13839]) +- Add support for deCONZ daylight sensor ([@marthoc] - [#13479]) ([deconz docs]) ([sensor.deconz docs]) +- initialize queue before filtering ([@dgomes] - [#13842]) ([sensor.filter docs]) +- Extract config flow to own module ([@balloob] - [#13840]) ([config docs]) ([deconz docs]) ([hue docs]) +- Add support for controlling homekit lights and switches ([@mjg59] - [#13346]) ([homekit_controller docs]) ([light.homekit_controller docs]) (new-platform) +- bump python-ecobee-api version to 0.0.18 ([@geekofweek] - [#13854]) ([ecobee docs]) +- Adding USCIS component ([@meauxt] - [#13764]) ([sensor.uscis docs]) (new-platform) +- Avoid unnecessary cast state updates ([@dersger] - [#13770]) ([media_player.cast docs]) +- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs]) (beta fix) +- Update yweather.py ([@TheCellMC] - [#13851]) ([weather.yweather docs]) +- add support for Kodi discovery ([@escoand] - [#13790]) ([media_player.kodi docs]) +- Further untangle data entry flow ([@balloob] - [#13855]) +- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs]) (beta fix) +- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs]) (beta fix) +- Added snips service descriptions ([@tschmidty69] - [#13883]) +- Add unique_id for BMW ConnectedDrive ([@gerard33] - [#13888]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) +- Revert "Update yweather.py" ([@pvizeli] - [#13900]) ([weather.yweather docs]) +- Eufy colour bulb updates ([@mjg59] - [#13895]) ([eufy docs]) ([light.eufy docs]) +- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs]) (beta fix) +- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) (beta fix) +- Fritzbox netmonitor name ([@escoand] - [#13903]) ([sensor.fritzbox_netmonitor docs]) +- Restore typeerror check for units sans energy tracking ([@andersonshatch] - [#13824]) ([switch.edimax docs]) +- Add more math functions to templates ([@Shou] - [#13915]) +- Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs]) +- Add extra attributes for device scanner, Nmap and Unifi (IP, SSID, etc.) ([@stephanerosi] - [#13673]) ([device_tracker docs]) +- Fixed Capsman data not being used ([@Marco98] - [#13917]) ([device_tracker docs]) +- Broadlink Sensor - switch to connection-less mode ([@Paxy] - [#13761]) ([sensor.broadlink docs]) +- Add support for new platform: climate.modbus ([@Kirchoff] - [#12224]) ([climate.modbus docs]) (new-platform) +- Hive R3 update ([@KJonline] - [#13357]) ([hive docs]) ([binary_sensor.hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) +- Updated foobot_async package version ([@reefab] - [#13942]) ([sensor.foobot docs]) +- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) (beta fix) +- Upgrade alpha_vantage to 2.0.0 ([@fabaff] - [#13943]) ([sensor.alpha_vantage docs]) +- Cleanup on exit ([@dgomes] - [#13918]) ([media_player.mediaroom docs]) +- Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) (beta fix) +- Add data entry flow helper ([@balloob] - [#13935]) ([config docs]) +- Xiaomi MiIO Device Tracker: Unused variable removed ([@syssi] - [#13948]) ([device_tracker docs]) +- Implement play media to set a channel based on (by priority): ([@stephanerosi] - [#13934]) ([media_player.webostv docs]) +- Update of python-mpd2 ([@karlkar] - [#13921]) ([media_player.mpd docs]) +- Add AVM fritzbox smarthome component ([@hthiery] - [#10688]) ([fritzbox docs]) ([climate.fritzbox docs]) ([switch.fritzbox docs]) (new-platform) +- Adds SigFox sensor ([@robmarkcole] - [#13731]) ([sensor.sigfox docs]) (new-platform) +- Upgrade aiohttp to 3.1.3 ([@fabaff] - [#13938]) +- Upgrade youtube_dl to 2018.04.16 ([@fabaff] - [#13937]) ([media_extractor docs]) +- Added FB messenger broadcast api to notify.facebook component ([@B1tMaster] - [#12459]) ([notify.facebook docs]) +- Added web view for TTS to get url ([@tschmidty69] - [#13882]) ([tts docs]) +- Add services for bmw_connected_drive ([@ChristianKuehnel] - [#13497]) ([bmw_connected_drive docs]) ([device_tracker docs]) +- Fix call to parent broadlink switch ([@Danielhiversen] - [#13906]) ([switch.broadlink docs]) (beta fix) +- Bump deCONZ requirement to v36 ([@Kane610] - [#13960]) ([deconz docs]) +- Fix Gogogate2 'available' attribute ([@dlbroadfoot] - [#13728]) (beta fix) +- Fix so it is possible to ignore discovered config entry handlers ([@Kane610] - [#13741]) (beta fix) +- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs]) (beta fix) +- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs]) (beta fix) +- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs]) (beta fix) +- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs]) (beta fix) +- Fix call to parent broadlink switch ([@Danielhiversen] - [#13906]) ([switch.broadlink docs]) (beta fix) +- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) (beta fix) +- Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs]) +- Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) (beta fix) +- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) (beta fix) +- Revert "Upgrade pyqwikswitch to 0.71 ([@balloob] - [#13920]) ([qwikswitch docs]) +- Bump skybellpy version to 0.1.2 ([@MisterWil] - [#13974]) ([skybell docs]) +- Fix typo an coding style ([@stephanerosi] - [#13970]) ([device_tracker docs]) +- Params of the send command can be a list now ([@syssi] - [#13905]) ([vacuum docs]) +- Support basic covers with open/close/stop services HomeKit ([@nickw444] - [#13819]) ([homekit docs]) (new-feature) +- Colorlog windows fix ([@veleek] - [#13929]) ([notify docs]) +- deCONZ migrate setup fully to config entry ([@Kane610] - [#13679]) ([deconz docs]) +- Alexa thermostat fails to properly parse 'value' field for climate ([@no2chem] - [#13958]) ([alexa docs]) +- renaming icons ([@NovapaX] - [#13982]) ([hdmi_cec docs]) ([vacuum docs]) ([vacuum.dyson docs]) ([vacuum.neato docs]) ([vacuum.roomba docs]) ([vacuum.xiaomi_miio docs]) +- Fix for Lokalise backend misinterpretation of keys ([@armills] - [#13986]) +- Bump locationsharinglib to 1.2.1 ([@thelittlefireman] - [#13980]) ([device_tracker docs]) +- Support for multiple MAX!Cube LAN gateways added ([@syssi] - [#13517]) ([maxcube docs]) ([binary_sensor.maxcube docs]) ([climate.maxcube docs]) (breaking change) +- Add additional receiver for Onkyo zone 2 ([@koolsb] - [#13551]) ([media_player.onkyo docs]) +- Add blackbird media player component ([@koolsb] - [#13549]) ([media_player.blackbird docs]) (new-platform) +- Add support for Sensirion SHT31 temperature/humidity sensor ([@viorels] - [#12952]) ([sensor.sht31 docs]) (new-platform) +- Useless code removed ([@syssi] - [#13996]) ([maxcube docs]) +- Add Homematic HmIP-SWO-PR weather sensor support ([@pascalhahn] - [#13904]) ([homematic docs]) +- Disable ebox requirement ([@balloob] - [#14003]) ([sensor.ebox docs]) (breaking change) +- Upgraded miflora library to version 0.4.0 ([@ChristianKuehnel] - [#14005]) ([sensor.miflora docs]) +- Log an error instead of raising an exception ([@syssi] - [#14006]) ([sensor.sht31 docs]) +- Tibber available ([@Danielhiversen] - [#13865]) ([sensor.tibber docs]) +- Upgrade pylutron-caseta to 0.5.0 to reestablish connections ([@rohankapoorcom] - [#14013]) ([lutron_caseta docs]) +- Add sensor device classes ([@balloob] - [#14010]) ([sensor docs]) ([sensor.ecobee docs]) ([sensor.linux_battery docs]) ([sensor.nest docs]) +- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform) +- Order the output of the automation editor ([@balloob] - [#14019]) ([config docs]) (beta fix) +- HomeKit Alarm Control Panel Code Exception Fix ([@schmittx] - [#14025]) ([homekit docs]) (beta fix) +- Revert cast platform polling mode ([@OttoWinter] - [#14027]) ([media_player.cast docs]) (beta fix) +- Handle HomeKit configuration failure more cleanly ([@mjg59] - [#14041]) ([homekit_controller docs]) (beta fix) +- Update device classes for contact sensor HomeKit ([@marthoc] - [#14051]) ([homekit docs]) (beta fix) +- Upgrade broadlink lib ([@Danielhiversen] - [#14074]) ([sensor.broadlink docs]) ([switch.broadlink docs]) (beta fix) +- Fix timezone issue when calculating min/max values in tibber #14009 ([@Danielhiversen] - [#14080]) ([sensor.tibber docs]) (beta fix) +- Updated list of AWS regions for Amazon Polly ([@GotoCode] - [#14097]) ([tts docs]) (beta fix) + +[#10688]: https://github.com/home-assistant/home-assistant/pull/10688 +[#12224]: https://github.com/home-assistant/home-assistant/pull/12224 +[#12459]: https://github.com/home-assistant/home-assistant/pull/12459 +[#12831]: https://github.com/home-assistant/home-assistant/pull/12831 +[#12952]: https://github.com/home-assistant/home-assistant/pull/12952 +[#13075]: https://github.com/home-assistant/home-assistant/pull/13075 +[#13256]: https://github.com/home-assistant/home-assistant/pull/13256 +[#13318]: https://github.com/home-assistant/home-assistant/pull/13318 +[#13346]: https://github.com/home-assistant/home-assistant/pull/13346 +[#13357]: https://github.com/home-assistant/home-assistant/pull/13357 +[#13479]: https://github.com/home-assistant/home-assistant/pull/13479 +[#13497]: https://github.com/home-assistant/home-assistant/pull/13497 +[#13517]: https://github.com/home-assistant/home-assistant/pull/13517 +[#13534]: https://github.com/home-assistant/home-assistant/pull/13534 +[#13549]: https://github.com/home-assistant/home-assistant/pull/13549 +[#13551]: https://github.com/home-assistant/home-assistant/pull/13551 +[#13579]: https://github.com/home-assistant/home-assistant/pull/13579 +[#13622]: https://github.com/home-assistant/home-assistant/pull/13622 +[#13625]: https://github.com/home-assistant/home-assistant/pull/13625 +[#13666]: https://github.com/home-assistant/home-assistant/pull/13666 +[#13673]: https://github.com/home-assistant/home-assistant/pull/13673 +[#13679]: https://github.com/home-assistant/home-assistant/pull/13679 +[#13707]: https://github.com/home-assistant/home-assistant/pull/13707 +[#13711]: https://github.com/home-assistant/home-assistant/pull/13711 +[#13714]: https://github.com/home-assistant/home-assistant/pull/13714 +[#13716]: https://github.com/home-assistant/home-assistant/pull/13716 +[#13720]: https://github.com/home-assistant/home-assistant/pull/13720 +[#13727]: https://github.com/home-assistant/home-assistant/pull/13727 +[#13728]: https://github.com/home-assistant/home-assistant/pull/13728 +[#13730]: https://github.com/home-assistant/home-assistant/pull/13730 +[#13731]: https://github.com/home-assistant/home-assistant/pull/13731 +[#13732]: https://github.com/home-assistant/home-assistant/pull/13732 +[#13733]: https://github.com/home-assistant/home-assistant/pull/13733 +[#13735]: https://github.com/home-assistant/home-assistant/pull/13735 +[#13736]: https://github.com/home-assistant/home-assistant/pull/13736 +[#13737]: https://github.com/home-assistant/home-assistant/pull/13737 +[#13739]: https://github.com/home-assistant/home-assistant/pull/13739 +[#13741]: https://github.com/home-assistant/home-assistant/pull/13741 +[#13743]: https://github.com/home-assistant/home-assistant/pull/13743 +[#13744]: https://github.com/home-assistant/home-assistant/pull/13744 +[#13746]: https://github.com/home-assistant/home-assistant/pull/13746 +[#13752]: https://github.com/home-assistant/home-assistant/pull/13752 +[#13756]: https://github.com/home-assistant/home-assistant/pull/13756 +[#13761]: https://github.com/home-assistant/home-assistant/pull/13761 +[#13764]: https://github.com/home-assistant/home-assistant/pull/13764 +[#13765]: https://github.com/home-assistant/home-assistant/pull/13765 +[#13770]: https://github.com/home-assistant/home-assistant/pull/13770 +[#13773]: https://github.com/home-assistant/home-assistant/pull/13773 +[#13778]: https://github.com/home-assistant/home-assistant/pull/13778 +[#13783]: https://github.com/home-assistant/home-assistant/pull/13783 +[#13784]: https://github.com/home-assistant/home-assistant/pull/13784 +[#13787]: https://github.com/home-assistant/home-assistant/pull/13787 +[#13790]: https://github.com/home-assistant/home-assistant/pull/13790 +[#13791]: https://github.com/home-assistant/home-assistant/pull/13791 +[#13792]: https://github.com/home-assistant/home-assistant/pull/13792 +[#13794]: https://github.com/home-assistant/home-assistant/pull/13794 +[#13796]: https://github.com/home-assistant/home-assistant/pull/13796 +[#13800]: https://github.com/home-assistant/home-assistant/pull/13800 +[#13802]: https://github.com/home-assistant/home-assistant/pull/13802 +[#13804]: https://github.com/home-assistant/home-assistant/pull/13804 +[#13809]: https://github.com/home-assistant/home-assistant/pull/13809 +[#13811]: https://github.com/home-assistant/home-assistant/pull/13811 +[#13812]: https://github.com/home-assistant/home-assistant/pull/13812 +[#13814]: https://github.com/home-assistant/home-assistant/pull/13814 +[#13819]: https://github.com/home-assistant/home-assistant/pull/13819 +[#13824]: https://github.com/home-assistant/home-assistant/pull/13824 +[#13832]: https://github.com/home-assistant/home-assistant/pull/13832 +[#13839]: https://github.com/home-assistant/home-assistant/pull/13839 +[#13840]: https://github.com/home-assistant/home-assistant/pull/13840 +[#13842]: https://github.com/home-assistant/home-assistant/pull/13842 +[#13851]: https://github.com/home-assistant/home-assistant/pull/13851 +[#13854]: https://github.com/home-assistant/home-assistant/pull/13854 +[#13855]: https://github.com/home-assistant/home-assistant/pull/13855 +[#13862]: https://github.com/home-assistant/home-assistant/pull/13862 +[#13865]: https://github.com/home-assistant/home-assistant/pull/13865 +[#13882]: https://github.com/home-assistant/home-assistant/pull/13882 +[#13883]: https://github.com/home-assistant/home-assistant/pull/13883 +[#13884]: https://github.com/home-assistant/home-assistant/pull/13884 +[#13887]: https://github.com/home-assistant/home-assistant/pull/13887 +[#13888]: https://github.com/home-assistant/home-assistant/pull/13888 +[#13889]: https://github.com/home-assistant/home-assistant/pull/13889 +[#13895]: https://github.com/home-assistant/home-assistant/pull/13895 +[#13900]: https://github.com/home-assistant/home-assistant/pull/13900 +[#13903]: https://github.com/home-assistant/home-assistant/pull/13903 +[#13904]: https://github.com/home-assistant/home-assistant/pull/13904 +[#13905]: https://github.com/home-assistant/home-assistant/pull/13905 +[#13906]: https://github.com/home-assistant/home-assistant/pull/13906 +[#13908]: https://github.com/home-assistant/home-assistant/pull/13908 +[#13915]: https://github.com/home-assistant/home-assistant/pull/13915 +[#13917]: https://github.com/home-assistant/home-assistant/pull/13917 +[#13918]: https://github.com/home-assistant/home-assistant/pull/13918 +[#13920]: https://github.com/home-assistant/home-assistant/pull/13920 +[#13921]: https://github.com/home-assistant/home-assistant/pull/13921 +[#13929]: https://github.com/home-assistant/home-assistant/pull/13929 +[#13934]: https://github.com/home-assistant/home-assistant/pull/13934 +[#13935]: https://github.com/home-assistant/home-assistant/pull/13935 +[#13937]: https://github.com/home-assistant/home-assistant/pull/13937 +[#13938]: https://github.com/home-assistant/home-assistant/pull/13938 +[#13940]: https://github.com/home-assistant/home-assistant/pull/13940 +[#13942]: https://github.com/home-assistant/home-assistant/pull/13942 +[#13943]: https://github.com/home-assistant/home-assistant/pull/13943 +[#13946]: https://github.com/home-assistant/home-assistant/pull/13946 +[#13948]: https://github.com/home-assistant/home-assistant/pull/13948 +[#13958]: https://github.com/home-assistant/home-assistant/pull/13958 +[#13960]: https://github.com/home-assistant/home-assistant/pull/13960 +[#13970]: https://github.com/home-assistant/home-assistant/pull/13970 +[#13974]: https://github.com/home-assistant/home-assistant/pull/13974 +[#13980]: https://github.com/home-assistant/home-assistant/pull/13980 +[#13982]: https://github.com/home-assistant/home-assistant/pull/13982 +[#13986]: https://github.com/home-assistant/home-assistant/pull/13986 +[#13996]: https://github.com/home-assistant/home-assistant/pull/13996 +[#14003]: https://github.com/home-assistant/home-assistant/pull/14003 +[#14005]: https://github.com/home-assistant/home-assistant/pull/14005 +[#14006]: https://github.com/home-assistant/home-assistant/pull/14006 +[#14008]: https://github.com/home-assistant/home-assistant/pull/14008 +[#14010]: https://github.com/home-assistant/home-assistant/pull/14010 +[#14013]: https://github.com/home-assistant/home-assistant/pull/14013 +[#14019]: https://github.com/home-assistant/home-assistant/pull/14019 +[#14025]: https://github.com/home-assistant/home-assistant/pull/14025 +[#14027]: https://github.com/home-assistant/home-assistant/pull/14027 +[#14041]: https://github.com/home-assistant/home-assistant/pull/14041 +[#14051]: https://github.com/home-assistant/home-assistant/pull/14051 +[#14074]: https://github.com/home-assistant/home-assistant/pull/14074 +[#14080]: https://github.com/home-assistant/home-assistant/pull/14080 +[#14097]: https://github.com/home-assistant/home-assistant/pull/14097 +[@B1tMaster]: https://github.com/B1tMaster +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@Danielhiversen]: https://github.com/Danielhiversen +[@GotoCode]: https://github.com/GotoCode +[@Juggels]: https://github.com/Juggels +[@KJonline]: https://github.com/KJonline +[@Kane610]: https://github.com/Kane610 +[@Kirchoff]: https://github.com/Kirchoff +[@Marco98]: https://github.com/Marco98 +[@MisterWil]: https://github.com/MisterWil +[@NovapaX]: https://github.com/NovapaX +[@OttoWinter]: https://github.com/OttoWinter +[@Paxy]: https://github.com/Paxy +[@Shou]: https://github.com/Shou +[@TheCellMC]: https://github.com/TheCellMC +[@Yonsm]: https://github.com/Yonsm +[@aav7fl]: https://github.com/aav7fl +[@andersonshatch]: https://github.com/andersonshatch +[@armills]: https://github.com/armills +[@balloob]: https://github.com/balloob +[@cdce8p]: https://github.com/cdce8p +[@cgtobi]: https://github.com/cgtobi +[@citruz]: https://github.com/citruz +[@dangyuluo]: https://github.com/dangyuluo +[@danielperna84]: https://github.com/danielperna84 +[@dersger]: https://github.com/dersger +[@dgomes]: https://github.com/dgomes +[@dlbroadfoot]: https://github.com/dlbroadfoot +[@escoand]: https://github.com/escoand +[@fabaff]: https://github.com/fabaff +[@geekofweek]: https://github.com/geekofweek +[@gerard33]: https://github.com/gerard33 +[@hmn]: https://github.com/hmn +[@hthiery]: https://github.com/hthiery +[@karlkar]: https://github.com/karlkar +[@kellerza]: https://github.com/kellerza +[@koolsb]: https://github.com/koolsb +[@marthoc]: https://github.com/marthoc +[@meauxt]: https://github.com/meauxt +[@michaelkuty]: https://github.com/michaelkuty +[@mjg59]: https://github.com/mjg59 +[@molobrakos]: https://github.com/molobrakos +[@nickw444]: https://github.com/nickw444 +[@no2chem]: https://github.com/no2chem +[@pascalhahn]: https://github.com/pascalhahn +[@philk]: https://github.com/philk +[@pvizeli]: https://github.com/pvizeli +[@rcloran]: https://github.com/rcloran +[@reefab]: https://github.com/reefab +[@robmarkcole]: https://github.com/robmarkcole +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@schmittx]: https://github.com/schmittx +[@shred86]: https://github.com/shred86 +[@stephanerosi]: https://github.com/stephanerosi +[@swilson]: https://github.com/swilson +[@syssi]: https://github.com/syssi +[@thelittlefireman]: https://github.com/thelittlefireman +[@thrawnarn]: https://github.com/thrawnarn +[@titilambert]: https://github.com/titilambert +[@tobygray]: https://github.com/tobygray +[@tschmidty69]: https://github.com/tschmidty69 +[@veleek]: https://github.com/veleek +[@viorels]: https://github.com/viorels +[@wiuwiu]: https://github.com/wiuwiu +[@xTCx]: https://github.com/xTCx +[abode docs]: /components/abode/ +[alexa docs]: /components/alexa/ +[binary_sensor.bmw_connected_drive docs]: /components/binary_sensor.bmw_connected_drive/ +[binary_sensor.hive docs]: /components/binary_sensor.hive/ +[binary_sensor.maxcube docs]: /components/binary_sensor.maxcube/ +[binary_sensor.qwikswitch docs]: /components/binary_sensor.qwikswitch/ +[bmw_connected_drive docs]: /components/bmw_connected_drive/ +[calendar.google docs]: /components/calendar.google/ +[calendar.todoist docs]: /components/calendar.todoist/ +[climate.fritzbox docs]: /components/climate.fritzbox/ +[climate.hive docs]: /components/climate.hive/ +[climate.honeywell docs]: /components/climate.honeywell/ +[climate.maxcube docs]: /components/climate.maxcube/ +[climate.modbus docs]: /components/climate.modbus/ +[config docs]: /components/config/ +[cover.opengarage docs]: /components/cover.opengarage/ +[cover.tahoma docs]: /components/cover.tahoma/ +[deconz docs]: /components/deconz/ +[device_tracker docs]: /components/device_tracker/ +[ecobee docs]: /components/ecobee/ +[eufy docs]: /components/eufy/ +[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ +[fritzbox docs]: /components/fritzbox/ +[google docs]: /components/google/ +[hdmi_cec docs]: /components/hdmi_cec/ +[hive docs]: /components/hive/ +[homekit docs]: /components/homekit/ +[homekit_controller docs]: /components/homekit_controller/ +[homematic docs]: /components/homematic/ +[hue docs]: /components/hue/ +[ihc docs]: /components/ihc/ +[light docs]: /components/light/ +[light.abode docs]: /components/light.abode/ +[light.aurora docs]: /components/light.aurora/ +[light.eufy docs]: /components/light.eufy/ +[light.hive docs]: /components/light.hive/ +[light.homekit_controller docs]: /components/light.homekit_controller/ +[light.hue docs]: /components/light.hue/ +[light.yeelight docs]: /components/light.yeelight/ +[lock.bmw_connected_drive docs]: /components/lock.bmw_connected_drive/ +[lutron_caseta docs]: /components/lutron_caseta/ +[maxcube docs]: /components/maxcube/ +[media_extractor docs]: /components/media_extractor/ +[media_player.blackbird docs]: /components/media_player.blackbird/ +[media_player.bluesound docs]: /components/media_player.bluesound/ +[media_player.cast docs]: /components/media_player.cast/ +[media_player.kodi docs]: /components/media_player.kodi/ +[media_player.mediaroom docs]: /components/media_player.mediaroom/ +[media_player.mpd docs]: /components/media_player.mpd/ +[media_player.onkyo docs]: /components/media_player.onkyo/ +[media_player.squeezebox docs]: /components/media_player.squeezebox/ +[media_player.webostv docs]: /components/media_player.webostv/ +[notify docs]: /components/notify/ +[notify.facebook docs]: /components/notify.facebook/ +[prometheus docs]: /components/prometheus/ +[qwikswitch docs]: /components/qwikswitch/ +[sensor docs]: /components/sensor/ +[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ +[sensor.bmw_connected_drive docs]: /components/sensor.bmw_connected_drive/ +[sensor.broadlink docs]: /components/sensor.broadlink/ +[sensor.deconz docs]: /components/sensor.deconz/ +[sensor.ebox docs]: /components/sensor.ebox/ +[sensor.ecobee docs]: /components/sensor.ecobee/ +[sensor.eddystone_temperature docs]: /components/sensor.eddystone_temperature/ +[sensor.filter docs]: /components/sensor.filter/ +[sensor.folder docs]: /components/sensor.folder/ +[sensor.foobot docs]: /components/sensor.foobot/ +[sensor.fritzbox_netmonitor docs]: /components/sensor.fritzbox_netmonitor/ +[sensor.hive docs]: /components/sensor.hive/ +[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ +[sensor.linux_battery docs]: /components/sensor.linux_battery/ +[sensor.miflora docs]: /components/sensor.miflora/ +[sensor.mqtt docs]: /components/sensor.mqtt/ +[sensor.nest docs]: /components/sensor.nest/ +[sensor.nut docs]: /components/sensor.nut/ +[sensor.qwikswitch docs]: /components/sensor.qwikswitch/ +[sensor.sht31 docs]: /components/sensor.sht31/ +[sensor.sigfox docs]: /components/sensor.sigfox/ +[sensor.smappee docs]: /components/sensor.smappee/ +[sensor.sql docs]: /components/sensor.sql/ +[sensor.tibber docs]: /components/sensor.tibber/ +[sensor.trafikverket_weatherstation docs]: /components/sensor.trafikverket_weatherstation/ +[sensor.upnp docs]: /components/sensor.upnp/ +[sensor.uscis docs]: /components/sensor.uscis/ +[skybell docs]: /components/skybell/ +[smappee docs]: /components/smappee/ +[snips docs]: /components/snips/ +[switch.broadlink docs]: /components/switch.broadlink/ +[switch.edimax docs]: /components/switch.edimax/ +[switch.eufy docs]: /components/switch.eufy/ +[switch.fritzbox docs]: /components/switch.fritzbox/ +[switch.hive docs]: /components/switch.hive/ +[switch.vesync docs]: /components/switch.vesync/ +[tts docs]: /components/tts/ +[upnp docs]: /components/upnp/ +[vacuum docs]: /components/vacuum/ +[vacuum.dyson docs]: /components/vacuum.dyson/ +[vacuum.neato docs]: /components/vacuum.neato/ +[vacuum.roomba docs]: /components/vacuum.roomba/ +[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ +[weather.yweather docs]: /components/weather.yweather/ +[zha docs]: /components/zha/ diff --git a/source/images/blog/2018-04-0.68/components.png b/source/images/blog/2018-04-0.68/components.png new file mode 100644 index 00000000000..57d9fc40b38 Binary files /dev/null and b/source/images/blog/2018-04-0.68/components.png differ diff --git a/source/images/screenshots/binary_sensor_classes_icons.png b/source/images/screenshots/binary_sensor_classes_icons.png new file mode 100644 index 00000000000..53363bcb990 Binary files /dev/null and b/source/images/screenshots/binary_sensor_classes_icons.png differ diff --git a/source/images/supported_brands/eufy.png b/source/images/supported_brands/eufy.png new file mode 100644 index 00000000000..98d647b0568 Binary files /dev/null and b/source/images/supported_brands/eufy.png differ diff --git a/source/images/supported_brands/qwikswitch.png b/source/images/supported_brands/qwikswitch.png index ada6158b54d..0109f03a359 100644 Binary files a/source/images/supported_brands/qwikswitch.png and b/source/images/supported_brands/qwikswitch.png differ diff --git a/source/images/supported_brands/sensirion.png b/source/images/supported_brands/sensirion.png new file mode 100644 index 00000000000..4c0576cacda Binary files /dev/null and b/source/images/supported_brands/sensirion.png differ diff --git a/source/images/supported_brands/sigfox.png b/source/images/supported_brands/sigfox.png new file mode 100644 index 00000000000..fdc7200ec81 Binary files /dev/null and b/source/images/supported_brands/sigfox.png differ diff --git a/source/images/supported_brands/uscis.png b/source/images/supported_brands/uscis.png new file mode 100644 index 00000000000..2268fb48b11 Binary files /dev/null and b/source/images/supported_brands/uscis.png differ