From 78d5d8346885a9befa59f47da3cf4d60547ae665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jason=20K=C3=B6lker?= Date: Sat, 13 Jan 2018 17:58:28 +0000 Subject: [PATCH 01/60] light/mqqt_json: document brightness scaling (#4403) --- source/_components/light.mqtt_json.markdown | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/source/_components/light.mqtt_json.markdown b/source/_components/light.mqtt_json.markdown index d6ba5ad07d0..d14f58001a4 100644 --- a/source/_components/light.mqtt_json.markdown +++ b/source/_components/light.mqtt_json.markdown @@ -63,6 +63,11 @@ brightness: required: false type: boolean default: false +brightness_scale: + description: "Defines the maximum brightness value (i.e. 100%) of the MQTT device." + required: false + type: integer + default: 255 color_temp: description: Flag that defines if the light supports color temperature. required: false @@ -191,6 +196,29 @@ light: brightness: true ``` +### {% linkable_title Brightness Scaled %} + +To enable a light using a brightness scale other than 8bit the `brightness_scale` option may be added to denote the "fully on" value: +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt_json + name: mqtt_json_light_1 + state_topic: "home/light" + command_topic: "home/light/set" + brightness: true + brightness_scale: 4095 +``` + +Home Assistant will then convert its 8bit value in the message to and from the device: + +```json +{ + "brightness": 4095, + "state": "ON", +} +``` + ### {% linkable_title Implementations %} - A full example of custom lighting using this platform and an ESP8266 microcontroller can be found [here](https://github.com/corbanmailloux/esp-mqtt-rgb-led). It supports on/off, brightness, transitions, RGB colors, and flashing. From fda2bca3c0589685edb1fc7101212c7423effe30 Mon Sep 17 00:00:00 2001 From: Lukas Barth Date: Sun, 14 Jan 2018 18:19:19 +0100 Subject: [PATCH 02/60] Document templates in MQTT climate (#4407) * document templates * Remove stale comment * Fix template --- source/_components/climate.mqtt.markdown | 58 +++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown index 03c5808ceb6..85675df1f62 100644 --- a/source/_components/climate.mqtt.markdown +++ b/source/_components/climate.mqtt.markdown @@ -78,6 +78,10 @@ payload_not_available: required: false type: string default: offline +value_template: + description: Default template to render the payloads on *all* `*_state_topic`s with. + type: template + required: false current_temperature_topic: description: The MQTT topic on which to listen for the current temperature. required: false @@ -94,6 +98,10 @@ mode_state_topic: description: The MQTT topic to subscribe for changes of the HVAC operation mode. If this is not set, the operation mode works in optimistic mode (see below). required: false type: string +mode_state_template: + description: A template to render the value received on the `mode_state_topic` with. + required: false + type: template temperature_command_topic: description: The MQTT topic to publish commands to change the target temperature. required: false @@ -102,6 +110,10 @@ temperature_state_topic: description: The MQTT topic to subscribe for changes in the target temperature. If this is not set, the target temperature works in optimistic mode (see below). required: false type: string +temperature_state_template: + description: A template to render the value received on the `temperature_state_topic` with. + required: false + type: template fan_mode_command_topic: description: The MQTT topic to publish commands to change the fan mode. required: false @@ -110,6 +122,10 @@ fan_mode_state_topic: description: The MQTT topic to subscribe for changes of the HVAC fan mode. If this is not set, the fan mode works in optimistic mode (see below). required: false type: string +fan_mode_state_template: + description: A template to render the value received on the `fan_mode_state_topic` with. + required: false + type: template swing_mode_command_topic: description: The MQTT topic to publish commands to change the swing mode. required: false @@ -118,6 +134,10 @@ swing_mode_state_topic: description: The MQTT topic to subscribe for changes of the HVAC swing mode. If this is not set, the swing mode works in optimistic mode (see below). required: false type: string +swing_mode_state_template: + description: A template to render the value received on the `swing_mode_state_topic` with. + required: false + type: template away_mode_command_topic: description: The MQTT topic to publish commands to change the away mode. required: false @@ -126,6 +146,10 @@ away_mode_state_topic: description: The MQTT topic to subscribe for changes of the HVAC away mode. If this is not set, the away mode works in optimistic mode (see below). required: false type: string +away_mode_state_template: + description: A template to render the value received on the `away_mode_state_topic` with. + required: false + type: template hold_command_topic: description: The MQTT topic to publish commands to change the hold mode. required: false @@ -134,6 +158,10 @@ hold_state_topic: description: The MQTT topic to subscribe for changes of the HVAC hold mode. If this is not set, the hold mode works in optimistic mode (see below). required: false type: string +hold_state_template: + description: A template to render the value received on the `hold_state_topic` with. + required: false + type: template aux_command_topic: description: The MQTT topic to publish commands to switch auxiliary heat. required: false @@ -142,12 +170,40 @@ aux_state_topic: description: The MQTT topic to subscribe for changes of the auxiliary heat mode. If this is not set, the auxiliary heat mode works in optimistic mode (see below). required: false type: string +aux_state_template: + description: A template to render the value received on the `aux_state_topic` with. + required: false + type: template {% endconfiguration %} -#### Optimistic mode +#### {% linkable_title Optimistic mode %} If a property works in *optimistic mode* (when the corresponding state topic is not set), home assistant will assume that any state changes published to the command topics did work and change the internal state of the entity immediately after publishing to the command topic. If it does not work in optimistic mode, the internal state of the entity is only updated when the requested update is confirmed by the device through the state topic. +#### {% linkable_title Using Templates %} + +For all `*_state_topic`s, a template can be specified that will be used to render the incoming payloads on these topics. Also, a default template that applies to all state topis can be specified as `value_template`. This can be useful if you received payloads are e.g. in JSON format. Since in JSON, a quoted string (e.g. `"foo"`) is just a string, this can also be used for unquoting. + +Say you receive the operation mode `"auto"` via your `mode_state_topic`, but the mode is actually called just `auto`, here's what you could do: + +{% raw %} +```yaml +climate: + - platform: mqtt + name: Study + modes: + - off + - on + - auto + mode_command_topic: "study/ac/mode/set" + mode_state_topic: "study/ac/mode/state" + mode_state_template: "{{ value_json }}" +``` +{% endraw %} + +This will parse the incoming `"auto"` as JSON, resulting in `auto`. Obvisouly, in this case you could also just set `value_template: {% raw %}"{{ value_json }}"{% endraw %}`. + + ### {% linkable_title Example %} A full configuration example looks like the one below. From a489115a08b292cedbcc5a6d1adc0b3b15b50fc6 Mon Sep 17 00:00:00 2001 From: Conrad Juhl Andersen Date: Sun, 14 Jan 2018 20:49:13 +0100 Subject: [PATCH 03/60] Googleified the Google Assistant docs (#4404) --- source/_components/cloud.google_assistant.markdown | 4 ++-- source/_components/google_assistant.markdown | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/cloud.google_assistant.markdown b/source/_components/cloud.google_assistant.markdown index 1ab00b84377..3dc3dde7cf1 100644 --- a/source/_components/cloud.google_assistant.markdown +++ b/source/_components/cloud.google_assistant.markdown @@ -38,7 +38,7 @@ cloud: - switch.outside entity_config: switch.kitchen: - name: Custom Name for Alexa + name: Custom Name for Google Assistant aliases: - bright lights - entry lights @@ -52,7 +52,7 @@ google_actions: type: map keys: filter: - description: Filters for entities to include/exclude from Alexa. + description: Filters for entities to include/exclude from Google Assistant. required: false type: map keys: diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 8d52c96919a..5904ae734f6 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -37,7 +37,7 @@ google_assistant: - group entity_config: switch.kitchen: - name: Custom Name for Alexa + name: Custom Name for Google Assistant aliases: - bright lights - entry lights From d5c3a8edab05ed2132a5a50089a950921c7be969 Mon Sep 17 00:00:00 2001 From: Nicko van Someren Date: Sun, 14 Jan 2018 13:15:27 -0700 Subject: [PATCH 04/60] Added page for new Lutron covers support. (#4400) * Added page for new Lutron covers support. * :pencil2: Added ha_release tag --- source/_components/cover.lutron.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 source/_components/cover.lutron.markdown diff --git a/source/_components/cover.lutron.markdown b/source/_components/cover.lutron.markdown new file mode 100644 index 00000000000..50cb5b1ef90 --- /dev/null +++ b/source/_components/cover.lutron.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Lutron Cover" +description: "Instructions how to setup the Lutron shades within Home Assistant." +date: 2018-01-11 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lutron.png +ha_category: Cover +ha_iot_class: "Local Polling" +ha_release: 0.61 +--- + +To get your Lutron roller shades working with Home Assistant, follow the instructions for the general [Lutron component](/components/lutron/). From e32717db89d8a51fd0476cc753e661b2e7d5a9fe Mon Sep 17 00:00:00 2001 From: tschmidty69 Date: Sun, 14 Jan 2018 15:18:14 -0500 Subject: [PATCH 05/60] Snips say and say_action services (new) (#4399) * Update media_player.markdown * Update media_player.markdown * Update snips.markdown * Update media_player.markdown * Update snips.markdown --- source/_components/media_player.markdown | 4 +- source/_components/snips.markdown | 58 ++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index 5e19cf34e9c..62c1af3a4cc 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -14,7 +14,7 @@ Interacts with media players on your network. Please check the sidebar for a ful ## {% linkable_title Services %} ### {% linkable_title Media control services %} -Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, `media_play_pause`, `media_play`, `media_pause`, `media_stop`, `media_next_track`, `media_previous_track`, `clear_playlist` +Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, `volume_set`, `media_play_pause`, `media_play`, `media_pause`, `media_stop`, `media_next_track`, `media_previous_track`, `clear_playlist`, `shuffle_set` | Service data attribute | Optional | Description | | ---------------------- | -------- | ------------------------------------------------ | @@ -63,6 +63,6 @@ Currently only supported on [Spotify](/components/media_player.spotify/), [MPD]( | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------- | | `entity_id` | no | Target a specific media player. For example `media_player.spotify`| -| `shuffle` | no | `true`/`false` for enabling/disabling shuffle | +| `shuffle` | no | `true`/`false` for enabling/disabling shuffle | diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown index 642faabf93d..1e8dae2e052 100644 --- a/source/_components/snips.markdown +++ b/source/_components/snips.markdown @@ -171,3 +171,61 @@ SetTimer: ``` {% endraw %} +### Sending TTS Notifications + +You can send TTS notifications to Snips using the snips.say and snips.say_action services. Say_action starts a session and waits for user response, "Would you like me to close the garage door?", "Yes, close the garage door". + +#### {% linkable_title Service `snips/say` %} + +| Service data attribute | Optional | Description | +|------------------------|----------|--------------------------------------------------------| +| `text` | no | Text to say. | +| `site_id` | yes | Site to use to start session. | +| `custom_data` | yes | custom data that will be included with all messages in this session. | + +#### {% linkable_title Service `snips/say_action` %} + +| Service data attribute | Optional | Description | +|------------------------|----------|--------------------------------------------------------| +| `text` | no | Text to say. | +| `site_id` | yes | Site to use to start session. | +| `custom_data` | yes | custom data that will be included with all messages in this session. | +| `can_be_enqueued` | yes | If True, session waits for an open session to end, if False session is dropped if one is running. | +| `intent_filter` | yes | Array of Strings - A list of intents names to restrict the NLU resolution to on the first query. | + +#### Configuration Examples + +```yaml +script: + turn_on_light: + sequence: + service: script.turn_on_light + service: snips.say + data: + text: 'OK, the light is now on' + +automation: + query_garage_door: + trigger: + - platform: state + entity_id: binary_sensor.my_garage_door_sensor + from: 'off' + to: 'on' + for: + minutes: 10 + sequence: + service: snips.say_action + data: + text: 'Garage door has been open 10 minutes, would you like me to close it?' + intentFilter: + - closeGarageDoor + +# This intent is fired if the user responds with the appropriate intent after the above notification +intent_script: + closeGarageDoor: + speech: + type: plain + text: 'OK, closing the garage door' + action: + - service: script.garage_door_close +``` From c2226035d823ccc81b4cebb0a62dfa973fd37a46 Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Sun, 14 Jan 2018 21:47:41 +0100 Subject: [PATCH 06/60] Hyperion light, new features (#4376) * Update Hyperion light documentation Added brightness, HDMI and effect support in my pull request. This includes two new optional variables that can be configured. * :pencil2: Small typo's --- source/_components/light.hyperion.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/light.hyperion.markdown b/source/_components/light.hyperion.markdown index eccb243e37d..7f3b23ad6c3 100644 --- a/source/_components/light.hyperion.markdown +++ b/source/_components/light.hyperion.markdown @@ -29,5 +29,7 @@ Configuration variables: - **host** (*Required*): The IP address of the device the Hyperion service is running on. - **port** (*Optional*): The port used to communicate with the Hyperion service. Defaults to `19444`. - **name** (*Optional*): The name of the device used in the frontend. -- **priority** (*Optional*): The priority of the hyperion instance. Defaults to `128`. +- **priority** (*Optional*): The priority of the Hyperion instance. Defaults to `128`. +- **hdmi_priority** (*Optional*): The priority of the HDMI grabber of this Hyperion instance, note that this priority must be higher than all other priorities used for correct behavior. Defaults to `880`. - **default_color** (*Optional*): The color of the light. Defaults to `[255, 255, 255]`. +- **effect_list** (*Optional*): The list of effects that can be used. Defaults to `['HDMI', 'Cinema brighten lights', 'Cinema dim lights', 'Knight rider', 'Blue mood blobs', 'Cold mood blobs', 'Full color mood blobs', 'Green mood blobs', 'Red mood blobs', 'Warm mood blobs', 'Police Lights Single', 'Police Lights Solid', 'Rainbow mood', 'Rainbow swirl fast', 'Rainbow swirl', 'Random', 'Running dots', 'System Shutdown', 'Snake', 'Sparks Color', 'Sparks', 'Strobe blue', 'Strobe Raspbmc', 'Strobe white', 'Color traces', 'UDP multicast listener', 'UDP listener', 'X-Mas']`. From 951dc25c4d9db19a613d41c3d90a20d0966575d0 Mon Sep 17 00:00:00 2001 From: Bob Anderson Date: Fri, 12 Jan 2018 14:13:58 -0800 Subject: [PATCH 07/60] Add detail on external client/server requirement (#4401) * Add detail on external client/server requirement * Update name --- source/_components/alarm_control_panel.concord232.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/alarm_control_panel.concord232.markdown b/source/_components/alarm_control_panel.concord232.markdown index 9581683f3ec..8a9c00b7b31 100644 --- a/source/_components/alarm_control_panel.concord232.markdown +++ b/source/_components/alarm_control_panel.concord232.markdown @@ -14,7 +14,9 @@ ha_release: 0.31 The `concord232` platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4. -To enable this, add the following lines to your `configuration.yaml`: +To use this platform, you will need to have the external concord232 client and server installed. The server must be running on the device which is connected to the automation module's serial port. The client must be installed on the machine running Home Assistant. These may often be the same machine, but do not have to be. For additional details in setting up and testing the client and server, see https://github.com/JasonCarter80/concord232. + +To enable this platform in home assistant, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry From e042340b41346a28b27996cdd1bff2b2f3349862 Mon Sep 17 00:00:00 2001 From: R Huish Date: Sat, 13 Jan 2018 17:58:57 +0000 Subject: [PATCH 08/60] Broken internal link for [autostart](docs/autostart/) (#4408) Current link giving 404 error --- source/_docs/installation/virtualenv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index 022b8e9ea82..e62966b26c5 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -34,7 +34,7 @@ _(If you're on a Debian based system, you will need to install Python virtual en ``` $ python3 -m pip install homeassistant ``` - 5. Configure it to [autostart](docs/autostart/) + 5. Configure it to [autostart](/docs/autostart/) 6. Or run Home Assistant manually: ``` $ hass --open-ui From 028158f2f7b7ac93c14f7dff76e8c6e744ec010c Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sat, 13 Jan 2018 17:59:48 +0000 Subject: [PATCH 09/60] Added Python version notes (#4406) Given that people using Windows keep grabbing the alpha releases of 3.7, I've added a recommendation of Python 3.6, and a note about not downloading alpha or beta versions, and how to identify them. --- source/_docs/installation/windows.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_docs/installation/windows.markdown b/source/_docs/installation/windows.markdown index 3554d44737a..1c9ced30b04 100644 --- a/source/_docs/installation/windows.markdown +++ b/source/_docs/installation/windows.markdown @@ -9,7 +9,11 @@ sharing: true footer: true --- -To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python for [https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) and follow the instructions of the installer. +To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python (the latest version of Python 3.6 is recommended) for [https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) and follow the instructions of the installer. + +

+There may be alpha or beta releases of Python listed on that download page (marked by the letters `a` or `b` in the version number. Do not use these versions. +

Start From b70a54bacbea3cb5a41366386c86789f51f1ed30 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 13 Jan 2018 19:10:42 +0100 Subject: [PATCH 10/60] Update for 0.61 --- source/developers/credits.markdown | 270 +++++++++++++---------------- 1 file changed, 122 insertions(+), 148 deletions(-) diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index 00acf5e0df5..9e5a224e4b6 100644 --- a/source/developers/credits.markdown +++ b/source/developers/credits.markdown @@ -2,7 +2,7 @@ layout: page title: "Credits" description: "Credits for the developers who contributed to Home Assistant." -date: 2017-12-24 22:59:57 +0000 +date: 2018-01-13 18:07:58 +0000 sidebar: true comments: false sharing: true @@ -13,27 +13,21 @@ This page contains a list of people who have contributed in one way or another t ### {% linkable_title Author %} -- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6082 total commits to the home-assistant organization, 3596 commits to home-assistant, 1324 commits to home-assistant.github.io, 674 commits to home-assistant-polymer, 244 commits to home-assistant-js, 118 commits to netdisco, 44 commits to home-assistant-js-websocket, 26 commits to hass-release, 14 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 6 commits to LabelBot, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to hassio-addons-example, 2 commits to hassio-build, 2 commits to python-hassbian, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 1 commit to home-assistant-notebooks, 1 commit to home-assistant-iOS, 1 commit to warrant") +- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6125 total commits to the home-assistant organization, 3619 commits to home-assistant, 1332 commits to home-assistant.github.io, 682 commits to home-assistant-polymer, 244 commits to home-assistant-js, 118 commits to netdisco, 44 commits to home-assistant-js-websocket, 26 commits to hass-release, 14 commits to home-assistant-assets, 10 commits to LabelBot, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to hassio-addons-example, 2 commits to hassio-build, 2 commits to python-hassbian, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 1 commit to home-assistant-notebooks, 1 commit to warrant, 1 commit to home-assistant-iOS") ### {% linkable_title Contributors %} (in alphabetical order) - [7even (@hwikene)](https://github.com/hwikene "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Aaron Bach (@bachya)](https://github.com/bachya "35 total commits to the home-assistant organization, 23 commits to home-assistant, 12 commits to home-assistant.github.io") +- [Aaron Bach (@bachya)](https://github.com/bachya "36 total commits to the home-assistant organization, 23 commits to home-assistant, 13 commits to home-assistant.github.io") - [Aaron Linville (@linville)](https://github.com/linville "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Aaron Morris (@Morrisai)](https://github.com/Morrisai "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Aaron Polley (@xarnze)](https://github.com/xarnze "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Abhishek Anand (@aa755)](https://github.com/aa755 "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Abílio Costa (@abmantis)](https://github.com/abmantis "20 total commits to the home-assistant organization, 12 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-js-websocket, 1 commit to netdisco, 1 commit to home-assistant-polymer") -- [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant") -- [Adam Baxter (@voltagex)](https://github.com/voltagex "2 total commits to the home-assistant organization, 1 commit to home-assistant-polymer, 1 commit to home-assistant") +- [Abílio Costa (@abmantis)](https://github.com/abmantis "20 total commits to the home-assistant organization, 12 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-js-websocket, 1 commit to home-assistant-polymer") +- [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") +- [Adam Baxter (@voltagex)](https://github.com/voltagex "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Adam Cooper (@GenericStudent)](https://github.com/GenericStudent "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") - [Adam Dullage (@Dullage)](https://github.com/Dullage "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Adam Garcia (@pancho-villa)](https://github.com/pancho-villa "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Adam Mills (@armills)](https://github.com/armills "284 total commits to the home-assistant organization, 148 commits to home-assistant, 81 commits to home-assistant-polymer, 51 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") -- [Adam Stone (@astone123)](https://github.com/astone123 "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Adde Lovein (@addelovein)](https://github.com/addelovein "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Adam Mills (@armills)](https://github.com/armills "286 total commits to the home-assistant organization, 150 commits to home-assistant, 81 commits to home-assistant-polymer, 51 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") - [Adrian Popa (@mad-ady)](https://github.com/mad-ady "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Adrien Ball (@adrienball)](https://github.com/adrienball "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Adrien Brault (@adrienbrault)](https://github.com/adrienbrault "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -47,53 +41,46 @@ This page contains a list of people who have contributed in one way or another t - [Albert Lee (@trisk)](https://github.com/trisk "13 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io") - [Alberto Arias Maestro (@albertoarias)](https://github.com/albertoarias "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Alessandro Mogavero (@alexmogavero)](https://github.com/alexmogavero "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Alex (@alexrockt)](https://github.com/alexrockt "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Alex (@MungoRae)](https://github.com/MungoRae "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Alex (@asbach)](https://github.com/asbach "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Alex (@asbach)](https://github.com/asbach "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "3 total commits to the home-assistant organization, 3 commits to hassio-addons") -- [Alex Harvey (@infamy)](https://github.com/infamy "25 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io") -- [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Alex Harvey (@infamy)](https://github.com/infamy "29 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io, 4 commits to hassio-os") +- [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Alex MF (@adsmf)](https://github.com/adsmf "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Alex Tzonkov (@attzonko)](https://github.com/attzonko "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Alexander Kratzer (@hexxter)](https://github.com/hexxter "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Alexander Rust (@binarybucks)](https://github.com/binarybucks "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Alexandre Perrin (@kAworu)](https://github.com/kAworu "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Alexis Iglauer (@ax42)](https://github.com/ax42 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Alfie Day (@Azelphur)](https://github.com/Azelphur "12 total commits to the home-assistant organization, 12 commits to home-assistant") -- [Aliaksandr (@minchik)](https://github.com/minchik "7 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to appdaemon, 2 commits to home-assistant") -- [Allan Glen (@allanglen)](https://github.com/allanglen "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "119 total commits to the home-assistant organization, 69 commits to home-assistant.github.io, 45 commits to home-assistant, 3 commits to home-assistant-polymer, 1 commit to hassio-addons, 1 commit to pi-gen") +- [Aliaksandr (@minchik)](https://github.com/minchik "7 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant, 2 commits to appdaemon") +- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "125 total commits to the home-assistant organization, 75 commits to home-assistant.github.io, 45 commits to home-assistant, 3 commits to home-assistant-polymer, 1 commit to pi-gen, 1 commit to hassio-addons") - [amigian74 (@amigian74)](https://github.com/amigian74 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [amorsillo (@AndrewMorsillo)](https://github.com/AndrewMorsillo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Anders Fogh Eriksen (@Fogh)](https://github.com/Fogh "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "120 total commits to the home-assistant organization, 86 commits to home-assistant, 32 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") -- [Andrea Campi (@andreacampi)](https://github.com/andreacampi "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "126 total commits to the home-assistant organization, 91 commits to home-assistant, 33 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Andrea Campi (@andreacampi)](https://github.com/andreacampi "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") - [Andrea Falcone (@asfalcone)](https://github.com/asfalcone "5 total commits to the home-assistant organization, 5 commits to issue-bot") -- [Andreas Björshammar (@abjorshammar)](https://github.com/abjorshammar "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Andreas Cambitsis (@acambitsis)](https://github.com/acambitsis "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Andreas Jacobsen (@andreasjacobsen93)](https://github.com/andreasjacobsen93 "9 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to hassio-addons, 1 commit to home-assistant") +- [Andreas Björshammar (@abjorshammar)](https://github.com/abjorshammar "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Andreas Jacobsen (@andreasjacobsen93)](https://github.com/andreasjacobsen93 "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to hassio-addons") - [Andreas Rammhold (@andir)](https://github.com/andir "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Andreas Renberg (@IQAndreas)](https://github.com/IQAndreas "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Andreea-Daniela Ene (@AndreeaEne)](https://github.com/AndreeaEne "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Andrej Friesen (@ajfriesen)](https://github.com/ajfriesen "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Andrew (@aneisch)](https://github.com/aneisch "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to home-assistant") -- [Andrew (@aoakeson)](https://github.com/aoakeson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") -- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "662 total commits to the home-assistant organization, 530 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 19 commits to home-assistant.github.io") -- [Andrew LeCody (@aceat64)](https://github.com/aceat64 "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Andrej Friesen (@ajfriesen)](https://github.com/ajfriesen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Andrew (@aneisch)](https://github.com/aneisch "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [Andrew (@aoakeson)](https://github.com/aoakeson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "692 total commits to the home-assistant organization, 560 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 19 commits to home-assistant.github.io") - [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Andrew Stock (@watchforstock)](https://github.com/watchforstock "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Andrew Thigpen (@andythigpen)](https://github.com/andythigpen "33 total commits to the home-assistant organization, 32 commits to home-assistant, 1 commit to home-assistant-js") -- [Andrew Williams (@nikdoof)](https://github.com/nikdoof "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [andrew-curtis (@andrew-curtis)](https://github.com/andrew-curtis "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Andrey (@andrey-git)](https://github.com/andrey-git "253 total commits to the home-assistant organization, 109 commits to home-assistant-polymer, 108 commits to home-assistant, 36 commits to home-assistant.github.io") -- [Andrey Kupreychik (@foxel)](https://github.com/foxel "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Andrzej (@andriej)](https://github.com/andriej "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Andrey (@andrey-git)](https://github.com/andrey-git "264 total commits to the home-assistant organization, 116 commits to home-assistant-polymer, 111 commits to home-assistant, 37 commits to home-assistant.github.io") +- [Andrey Kupreychik (@foxel)](https://github.com/foxel "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Andrzej (@andriej)](https://github.com/andriej "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Andréas Lundgren (@adevade)](https://github.com/adevade "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Andy Castille (@Klikini)](https://github.com/Klikini "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Andy Castille (@Klikini)](https://github.com/Klikini "11 total commits to the home-assistant organization, 7 commits to home-assistant, 4 commits to home-assistant.github.io") - [Andy Loughran (@andylockran)](https://github.com/andylockran "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [andyat (@andyat)](https://github.com/andyat "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [anotherthomas (@anotherthomas)](https://github.com/anotherthomas "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Anthony Hughes (@tony2nite)](https://github.com/tony2nite "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to home-assistant") +- [Anthony Hughes (@tony2nite)](https://github.com/tony2nite "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Antoine Bertin (@Diaoul)](https://github.com/Diaoul "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Anton Glukhov (@toxxin)](https://github.com/toxxin "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Anton Lundin (@glance-)](https://github.com/glance- "7 total commits to the home-assistant organization, 6 commits to home-assistant, 1 commit to netdisco") @@ -115,6 +102,7 @@ This page contains a list of people who have contributed in one way or another t - [Austin (@trainman419)](https://github.com/trainman419 "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Avraham David Gelbfish (@adgelbfish)](https://github.com/adgelbfish "2 total commits to the home-assistant organization, 1 commit to hadashboard, 1 commit to pi-gen") - [azeroth12 (@azeroth12)](https://github.com/azeroth12 "1 total commits to the home-assistant organization, 1 commit to appdaemon") +- [baflo (@baflo)](https://github.com/baflo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Balázs Suhajda (@suhajdab)](https://github.com/suhajdab "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Baran Kaynak (@barankaynak)](https://github.com/barankaynak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Barry Williams (@bazwilliams)](https://github.com/bazwilliams "10 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to netdisco, 2 commits to home-assistant.github.io") @@ -128,16 +116,19 @@ This page contains a list of people who have contributed in one way or another t - [Ben Doerr (@bendoerr)](https://github.com/bendoerr "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ben Nuttall (@bennuttall)](https://github.com/bennuttall "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Ben Origas (@borigas)](https://github.com/borigas "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Ben Randall (@veleek)](https://github.com/veleek "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Ben Randall (@veleek)](https://github.com/veleek "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Ben Thomas (@wazoo)](https://github.com/wazoo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Benjamin Parzella (@bparzella)](https://github.com/bparzella "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [bestlibre (@bestlibre)](https://github.com/bestlibre "16 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to hassio, 1 commit to home-assistant-polymer") +- [Benji (@bbbenji)](https://github.com/bbbenji "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [bestlibre (@bestlibre)](https://github.com/bestlibre "16 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio, 1 commit to hassio-build, 1 commit to home-assistant-polymer") - [BigMoby (@bigmoby)](https://github.com/bigmoby "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [BioSehnsucht (@BioSehnsucht)](https://github.com/BioSehnsucht "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 3 commits to home-assistant, 2 commits to home-assistant-polymer") - [Bjarni Ivarsson (@bjarniivarsson)](https://github.com/bjarniivarsson "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant-polymer") - [Björn Orri (@bjornorri)](https://github.com/bjornorri "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") - [Björn Ramberg (@bjorne)](https://github.com/bjorne "1 total commits to the home-assistant organization, 1 commit to hassio-build") - [Blanyal D'Souza (@blanyal)](https://github.com/blanyal "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Bob Anderson (@rwa)](https://github.com/rwa "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [Bob Igo (@Human)](https://github.com/Human "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Boced66 (@boced66)](https://github.com/boced66 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [boltgolt (@Boltgolt)](https://github.com/Boltgolt "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [boojew (@boojew)](https://github.com/boojew "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant") @@ -151,10 +142,10 @@ This page contains a list of people who have contributed in one way or another t - [Brandon Mathis (@imathis)](https://github.com/imathis "484 total commits to the home-assistant organization, 484 commits to home-assistant.github.io") - [Brandon Weeks (@brandonweeks)](https://github.com/brandonweeks "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [brburns (@brburns)](https://github.com/brburns "2 total commits to the home-assistant organization, 2 commits to netdisco") -- [Brendon Baumgartner (@bbrendon)](https://github.com/bbrendon "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") +- [Brendon Baumgartner (@bbrendon)](https://github.com/bbrendon "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") - [Brent Hughes (@bah2830)](https://github.com/bah2830 "27 total commits to the home-assistant organization, 18 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to netdisco") - [Brent Kerlin (@bkerlin)](https://github.com/bkerlin "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [Brent Saltzman (@brent20)](https://github.com/brent20 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") +- [Brent Saltzman (@brent20)](https://github.com/brent20 "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") - [Brian Cribbs (@cribbstechnologies)](https://github.com/cribbstechnologies "43 total commits to the home-assistant organization, 26 commits to home-assistant, 15 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Brian Fitzgerald (@Brianfit)](https://github.com/Brianfit "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Brian Hopkins (@btotharye)](https://github.com/btotharye "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") @@ -165,18 +156,18 @@ This page contains a list of people who have contributed in one way or another t - [Bruno Adele (@badele)](https://github.com/badele "22 total commits to the home-assistant organization, 22 commits to home-assistant") - [Bruno Binet (@bbinet)](https://github.com/bbinet "1 total commits to the home-assistant organization, 1 commit to hassio-build") - [Bryce Edwards (@hoopty)](https://github.com/hoopty "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [c727 (@c727)](https://github.com/c727 "16 total commits to the home-assistant organization, 10 commits to home-assistant-polymer, 6 commits to home-assistant.github.io") +- [c727 (@c727)](https://github.com/c727 "18 total commits to the home-assistant organization, 11 commits to home-assistant-polymer, 7 commits to home-assistant.github.io") - [Caius Cioran (@caiuspb)](https://github.com/caiuspb "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Caleb (@finish06)](https://github.com/finish06 "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [Cameron Bulock (@cbulock)](https://github.com/cbulock "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") -- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "92 total commits to the home-assistant organization, 84 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to hassbian-scripts, 1 commit to fabric-home-assistant, 1 commit to homebridge-homeassistant") +- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "95 total commits to the home-assistant organization, 87 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to homebridge-homeassistant, 1 commit to hassbian-scripts") - [carlosmgr (@carlosmgr)](https://github.com/carlosmgr "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Carter (@BluGeni)](https://github.com/BluGeni "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [cdce8p (@cdce8p)](https://github.com/cdce8p "14 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 2 commits to home-assistant") +- [cdce8p (@cdce8p)](https://github.com/cdce8p "21 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 7 commits to home-assistant, 2 commits to home-assistant-polymer") - [Cecron (@Cecron)](https://github.com/Cecron "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Cenk Gündoğan (@cgundogan)](https://github.com/cgundogan "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Cezar Sá Espinola (@cezarsa)](https://github.com/cezarsa "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [cgtobi (@cgtobi)](https://github.com/cgtobi "21 total commits to the home-assistant organization, 12 commits to home-assistant, 9 commits to home-assistant.github.io") +- [cgtobi (@cgtobi)](https://github.com/cgtobi "22 total commits to the home-assistant organization, 13 commits to home-assistant, 9 commits to home-assistant.github.io") - [chanders (@chanders)](https://github.com/chanders "2 total commits to the home-assistant organization, 2 commits to hadashboard") - [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "19 total commits to the home-assistant organization, 12 commits to home-assistant, 7 commits to home-assistant.github.io") - [Charles Garwood (@cgarwood)](https://github.com/cgarwood "17 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 6 commits to home-assistant") @@ -196,45 +187,48 @@ This page contains a list of people who have contributed in one way or another t - [Christian Brædstrup (@LinuxChristian)](https://github.com/LinuxChristian "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Christian Lasarczyk (@ChrisLasar)](https://github.com/ChrisLasar "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Christian Studer (@cstuder)](https://github.com/cstuder "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "12 total commits to the home-assistant organization, 6 commits to home-assistant, 6 commits to home-assistant.github.io") +- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "15 total commits to the home-assistant organization, 8 commits to home-assistant, 7 commits to home-assistant.github.io") - [Christoffer Kylvåg (@christoe)](https://github.com/christoe "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Christoph Wagner (@Christoph-Wagner)](https://github.com/Christoph-Wagner "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Christopher Viel (@Chris-V)](https://github.com/Chris-V "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Christopher Viel (@Chris-V)](https://github.com/Chris-V "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [chrysn (@chrysn)](https://github.com/chrysn "65 total commits to the home-assistant organization, 65 commits to libcoap") - [chz^3 (@chzchzchz)](https://github.com/chzchzchz "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Ciquattro (@CiquattroFPV)](https://github.com/CiquattroFPV "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [clach04 (@clach04)](https://github.com/clach04 "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [Claus F. Strasburger (@cfstras)](https://github.com/cfstras "1 total commits to the home-assistant organization, 1 commit to pi-gen") +- [cogneato (@cogneato)](https://github.com/cogneato "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Colin Dunn (@colindunn)](https://github.com/colindunn "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Colin O'Dell (@colinodell)](https://github.com/colinodell "24 total commits to the home-assistant organization, 13 commits to home-assistant, 11 commits to home-assistant.github.io") - [Colin Teubner (@netopiax)](https://github.com/netopiax "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Constantine Grantcharov (@conz27)](https://github.com/conz27 "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Constantine Poltyrev (@shprota)](https://github.com/shprota "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "18 total commits to the home-assistant organization, 18 commits to home-assistant.github.io") - [Corey Pauley (@devspacenine)](https://github.com/devspacenine "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [corneyl (@corneyl)](https://github.com/corneyl "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Craig J. Ward (@wardcraigj)](https://github.com/wardcraigj "23 total commits to the home-assistant organization, 17 commits to home-assistant, 6 commits to home-assistant.github.io") -- [CTLS (@CTLS)](https://github.com/CTLS "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [CTLS (@CTLS)](https://github.com/CTLS "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [cxlwill (@cxlwill)](https://github.com/cxlwill "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") - [Dale Higgs (@dale3h)](https://github.com/dale3h "33 total commits to the home-assistant organization, 21 commits to home-assistant.github.io, 10 commits to home-assistant, 1 commit to hassbot, 1 commit to homebridge-homeassistant") - [Dan (@danieljkemp)](https://github.com/danieljkemp "23 total commits to the home-assistant organization, 16 commits to home-assistant, 7 commits to home-assistant.github.io") - [Dan Chen (@djchen)](https://github.com/djchen "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "14 total commits to the home-assistant organization, 12 commits to home-assistant, 2 commits to home-assistant.github.io") - [Dan Faulknor (@danielfaulknor)](https://github.com/danielfaulknor "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Dan Nixon (@DanNixon)](https://github.com/DanNixon "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [Dan Nixon (@DanNixon)](https://github.com/DanNixon "17 total commits to the home-assistant organization, 12 commits to home-assistant, 5 commits to home-assistant.github.io") - [Dan Ports (@drkp)](https://github.com/drkp "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Dan Sarginson (@dansarginson)](https://github.com/dansarginson "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Dan Smith (@kk7ds)](https://github.com/kk7ds "84 total commits to the home-assistant organization, 68 commits to home-assistant, 14 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Dan Sullivan (@dansullivan86)](https://github.com/dansullivan86 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Dani (@danichispa)](https://github.com/danichispa "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") +- [Daniel (@delneet)](https://github.com/delneet "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Daniel Escoz (@Darkhogg)](https://github.com/Darkhogg "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "364 total commits to the home-assistant organization, 242 commits to home-assistant, 119 commits to home-assistant.github.io, 3 commits to home-assistant-polymer") -- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "75 total commits to the home-assistant organization, 38 commits to home-assistant.github.io, 34 commits to home-assistant, 3 commits to hassio-addons") +- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "367 total commits to the home-assistant organization, 245 commits to home-assistant, 119 commits to home-assistant.github.io, 3 commits to home-assistant-polymer") +- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "77 total commits to the home-assistant organization, 38 commits to home-assistant.github.io, 35 commits to home-assistant, 4 commits to hassio-addons") - [Daniel Peukert (@dpeukert)](https://github.com/dpeukert "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Daniel Schaal (@schaal)](https://github.com/schaal "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Daniel Stone (@daniel-stoneuk)](https://github.com/daniel-stoneuk "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Daniel Trnka (@trnila)](https://github.com/trnila "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Daniel Watkins (@OddBloke)](https://github.com/OddBloke "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Daniel Watkins (@OddBloke)](https://github.com/OddBloke "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Daniel Welch (@danielwelch)](https://github.com/danielwelch "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") - [DanielXYZ2000 (@DanielXYZ2000)](https://github.com/DanielXYZ2000 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to hassio-addons") - [Daniyar Yeralin (@yeralin)](https://github.com/yeralin "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") @@ -264,21 +258,21 @@ This page contains a list of people who have contributed in one way or another t - [Dennis Karpienski (@TheRealLink)](https://github.com/TheRealLink "24 total commits to the home-assistant organization, 15 commits to home-assistant-polymer, 6 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") - [Dennis Sutch (@sutch)](https://github.com/sutch "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Derek (@itchaboy)](https://github.com/itchaboy "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Derek Brooks (@broox)](https://github.com/broox "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Derek Brooks (@broox)](https://github.com/broox "39 total commits to the home-assistant organization, 30 commits to home-assistant, 9 commits to home-assistant.github.io") - [dersger (@dersger)](https://github.com/dersger "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant-polymer") - [devdelay (@devdelay)](https://github.com/devdelay "16 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant, 4 commits to homebridge-homeassistant") -- [Devon Peet (@dpeet)](https://github.com/dpeet "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [Devon Peet (@dpeet)](https://github.com/dpeet "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Diogo Gomes (@dgomes)](https://github.com/dgomes "10 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.github.io") - [DoloresHA (@DoloresHA)](https://github.com/DoloresHA "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Domantas (@Dohxis)](https://github.com/Dohxis "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [dramamoose (@dramamoose)](https://github.com/dramamoose "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [DrewSK (@dzsquared)](https://github.com/dzsquared "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [DubhAd (@DubhAd)](https://github.com/DubhAd "95 total commits to the home-assistant organization, 95 commits to home-assistant.github.io") +- [DubhAd (@DubhAd)](https://github.com/DubhAd "107 total commits to the home-assistant organization, 107 commits to home-assistant.github.io") - [Duoxilian (@Duoxilian)](https://github.com/Duoxilian "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 5 commits to home-assistant") - [ebpetway (@ebpetway)](https://github.com/ebpetway "55 total commits to the home-assistant organization, 55 commits to warrant") - [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Egor Tsinko (@etsinko)](https://github.com/etsinko "11 total commits to the home-assistant organization, 9 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Egor Tsinko (@etsinko)](https://github.com/etsinko "12 total commits to the home-assistant organization, 9 commits to home-assistant, 3 commits to home-assistant.github.io") - [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") - [eldanb (@eldanb)](https://github.com/eldanb "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Eleftherios Chamakiotis (@lexam79)](https://github.com/lexam79 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -296,7 +290,7 @@ This page contains a list of people who have contributed in one way or another t - [ettisan (@ettisan)](https://github.com/ettisan "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Eugenio Panadero (@azogue)](https://github.com/azogue "76 total commits to the home-assistant organization, 45 commits to home-assistant, 25 commits to home-assistant.github.io, 3 commits to homebridge-homeassistant, 3 commits to home-assistant-polymer") - [Ezra Bowden (@bn0)](https://github.com/bn0 "2 total commits to the home-assistant organization, 2 commits to warrant") -- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4390 total commits to the home-assistant organization, 2846 commits to home-assistant.github.io, 1454 commits to home-assistant, 29 commits to home-assistant-notebooks, 24 commits to home-assistant-assets, 11 commits to hassio-build, 10 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 2 commits to hassio, 1 commit to home-assistant-js-websocket") +- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4452 total commits to the home-assistant organization, 2870 commits to home-assistant.github.io, 1483 commits to home-assistant, 32 commits to home-assistant-assets, 30 commits to home-assistant-notebooks, 11 commits to hassio-build, 10 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 2 commits to hassio, 1 commit to home-assistant-js-websocket") - [Fabian Heredia Montiel (@fabianhjr)](https://github.com/fabianhjr "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Fabrizio Furnari (@fabfurnari)](https://github.com/fabfurnari "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [fakezeta (@fakezeta)](https://github.com/fakezeta "7 total commits to the home-assistant organization, 7 commits to home-assistant") @@ -307,27 +301,27 @@ This page contains a list of people who have contributed in one way or another t - [Finbarr Brady (@fbradyirl)](https://github.com/fbradyirl "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Florian Holzapfel (@florianholzapfel)](https://github.com/florianholzapfel "11 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to netdisco") - [Florian Klien (@flowolf)](https://github.com/flowolf "16 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 3 commits to home-assistant") +- [florianj1 (@florianj1)](https://github.com/florianj1 "1 total commits to the home-assistant organization, 1 commit to hassio") - [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") - [Fonta (@f0nt4)](https://github.com/f0nt4 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Franck Nijhof (@frenck)](https://github.com/frenck "16 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 2 commits to hassio, 2 commits to home-assistant-polymer") +- [Franck Nijhof (@frenck)](https://github.com/frenck "17 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 2 commits to hassio, 2 commits to home-assistant-polymer") - [Frank (@syphernl)](https://github.com/syphernl "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Frantz (@rofrantz)](https://github.com/rofrantz "2 total commits to the home-assistant organization, 2 commits to netdisco") -- [François Martin (@martinfrancois)](https://github.com/martinfrancois "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Frantz (@rofrantz)](https://github.com/rofrantz "7 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to netdisco, 2 commits to home-assistant.github.io") - [Frederic Hemberger (@fhemberger)](https://github.com/fhemberger "93 total commits to the home-assistant organization, 93 commits to home-assistant.github.io") - [Fredrik Fjeld (@fredrikfjeld)](https://github.com/fredrikfjeld "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "176 total commits to the home-assistant organization, 74 commits to hassbian-scripts, 70 commits to home-assistant.github.io, 27 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") - [freol35241 (@freol35241)](https://github.com/freol35241 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [froz (@froz)](https://github.com/froz "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [fuga2136 (@fuga2136)](https://github.com/fuga2136 "13 total commits to the home-assistant organization, 13 commits to home-assistant.github.io") -- [Gabor Gulyas (@gaborgulyas)](https://github.com/gaborgulyas "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Gabor SZOLLOSI (@szogi)](https://github.com/szogi "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to appdaemon") - [GadgetReactor (@GadgetReactor)](https://github.com/GadgetReactor "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Gavin Mogan (@halkeye)](https://github.com/halkeye "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Geoff Norton (@kangaroo)](https://github.com/kangaroo "14 total commits to the home-assistant organization, 14 commits to home-assistant") - [George.M (@nodinosaur)](https://github.com/nodinosaur "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant") - [Georgi Kirichkov (@kirichkov)](https://github.com/kirichkov "17 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to appdaemon") -- [Georgi Yanev (@jumpalottahigh)](https://github.com/jumpalottahigh "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Georgi Yanev (@jumpalottahigh)](https://github.com/jumpalottahigh "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Georgii Staroselskii (@staroselskii)](https://github.com/staroselskii "1 total commits to the home-assistant organization, 1 commit to pi-gen") +- [gerard33 (@gerard33)](https://github.com/gerard33 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Gergely Imreh (@imrehg)](https://github.com/imrehg "16 total commits to the home-assistant organization, 11 commits to home-assistant, 5 commits to home-assistant.github.io") - [Gianluca Barbaro (@MrMep)](https://github.com/MrMep "24 total commits to the home-assistant organization, 16 commits to home-assistant, 8 commits to home-assistant.github.io") - [Gianpaolo Macario (@gmacario)](https://github.com/gmacario "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -339,8 +333,8 @@ This page contains a list of people who have contributed in one way or another t - [Graeme Smith (@Instagraeme)](https://github.com/Instagraeme "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Grant McConnaughey (@grantmcconnaughey)](https://github.com/grantmcconnaughey "8 total commits to the home-assistant organization, 8 commits to warrant") - [GreenTurtwig (@GreenTurtwig)](https://github.com/GreenTurtwig "83 total commits to the home-assistant organization, 75 commits to home-assistant.github.io, 8 commits to home-assistant") -- [Greg Dowling (@pavoni)](https://github.com/pavoni "250 total commits to the home-assistant organization, 223 commits to home-assistant, 25 commits to home-assistant.github.io, 2 commits to netdisco") -- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Greg Dowling (@pavoni)](https://github.com/pavoni "251 total commits to the home-assistant organization, 224 commits to home-assistant, 25 commits to home-assistant.github.io, 2 commits to netdisco") +- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") - [Greg MacLellan (@gregmac)](https://github.com/gregmac "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Greg Stengel (@theCMack)](https://github.com/theCMack "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Greg Stevenson (@gstevenson)](https://github.com/gstevenson "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") @@ -350,13 +344,13 @@ This page contains a list of people who have contributed in one way or another t - [Guillaume Rischard (@grischard)](https://github.com/grischard "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Gustav Ahlberg (@Gyran)](https://github.com/Gyran "20 total commits to the home-assistant organization, 20 commits to home-assistant") - [gwendalg (@gwendalg)](https://github.com/gwendalg "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Hajime Morrita (@omo)](https://github.com/omo "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Hamid (@hamid-elaosta)](https://github.com/hamid-elaosta "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Hamid (@hamid-elaosta)](https://github.com/hamid-elaosta "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Hao Hu (@howiehu)](https://github.com/howiehu "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [happyleavesaoc (@happyleavesaoc)](https://github.com/happyleavesaoc "109 total commits to the home-assistant organization, 86 commits to home-assistant, 22 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Harald Nagel (@haraldnagel)](https://github.com/haraldnagel "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") - [Hari Menon (@floydpink)](https://github.com/floydpink "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Harris Borawski (@hborawski)](https://github.com/hborawski "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [hawk259 (@hawk259)](https://github.com/hawk259 "8 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant, 1 commit to home-assistant-polymer") +- [hawk259 (@hawk259)](https://github.com/hawk259 "10 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Heath Paddock (@heathbar)](https://github.com/heathbar "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Heiko Rothe (@mKeRix)](https://github.com/mKeRix "20 total commits to the home-assistant organization, 15 commits to home-assistant, 5 commits to home-assistant.github.io") - [Hellowlol (@Hellowlol)](https://github.com/Hellowlol "4 total commits to the home-assistant organization, 3 commits to netdisco, 1 commit to appdaemon") @@ -369,7 +363,7 @@ This page contains a list of people who have contributed in one way or another t - [Hillary Fraley (@hillaryfraley)](https://github.com/hillaryfraley "12 total commits to the home-assistant organization, 12 commits to home-assistant.github.io") - [honcheng (@honcheng)](https://github.com/honcheng "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") - [Hugo Dupras (@jabesq)](https://github.com/jabesq "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io") -- [Hugo Gresse (@HugoGresse)](https://github.com/HugoGresse "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") +- [Hugo Gresse (@HugoGresse)](https://github.com/HugoGresse "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [Hung Le (@hungle)](https://github.com/hungle "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Huw Davies (@beardedgeek)](https://github.com/beardedgeek "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Hydreliox (@HydrelioxGitHub)](https://github.com/HydrelioxGitHub "46 total commits to the home-assistant organization, 34 commits to home-assistant, 12 commits to home-assistant.github.io") @@ -378,7 +372,7 @@ This page contains a list of people who have contributed in one way or another t - [ianj001 (@ianj001)](https://github.com/ianj001 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [icovada (@icovada)](https://github.com/icovada "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") - [Igor Shults (@ishults)](https://github.com/ishults "12 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Ioan Loosley (@ioangogo)](https://github.com/ioangogo "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") +- [Ioan Loosley (@ioangogo)](https://github.com/ioangogo "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [IoTmessenger (@IoTmessenger)](https://github.com/IoTmessenger "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Issac Kelly (@issackelly)](https://github.com/issackelly "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [J-CMartin (@J-CMartin)](https://github.com/J-CMartin "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -399,8 +393,8 @@ This page contains a list of people who have contributed in one way or another t - [Jan Harkes (@jaharkes)](https://github.com/jaharkes "110 total commits to the home-assistant organization, 100 commits to home-assistant, 10 commits to netdisco") - [Jan Losinski (@janLo)](https://github.com/janLo "21 total commits to the home-assistant organization, 16 commits to home-assistant, 5 commits to home-assistant.github.io") - [Jan Pobořil (@iBobik)](https://github.com/iBobik "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jan Wh (@janwh)](https://github.com/janwh "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Janne Grunau (@jannau)](https://github.com/jannau "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Jan Willhaus (@janwh)](https://github.com/janwh "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Janne Grunau (@jannau)](https://github.com/jannau "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [Jared Beckham (@jtbeckha)](https://github.com/jtbeckha "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Jared J. (@jjensn)](https://github.com/jjensn "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Jason Carter (@JasonCarter80)](https://github.com/JasonCarter80 "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -420,7 +414,7 @@ This page contains a list of people who have contributed in one way or another t - [Jeremy (@Wutname1)](https://github.com/Wutname1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Jeremy Williams (@jwillaz)](https://github.com/jwillaz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [jeremysv (@jeremysv)](https://github.com/jeremysv "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "25 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io") +- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "29 total commits to the home-assistant organization, 16 commits to home-assistant, 13 commits to home-assistant.github.io") - [Jerold Albertson (@jeroldalbertson-wf)](https://github.com/jeroldalbertson-wf "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Jerry Workman (@JerryWorkman)](https://github.com/JerryWorkman "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jesse Hills (@jesserockz)](https://github.com/jesserockz "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -454,27 +448,27 @@ This page contains a list of people who have contributed in one way or another t - [Johnny Chadda (@joch)](https://github.com/joch "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Jon (@JonMurphy)](https://github.com/JonMurphy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jon Caruana (@joncar)](https://github.com/joncar "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Jon Griffith (@arretx)](https://github.com/arretx "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") +- [Jon Griffith (@arretx)](https://github.com/arretx "11 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to appdaemon") - [Jon Maddox (@maddox)](https://github.com/maddox "102 total commits to the home-assistant organization, 78 commits to home-assistant, 16 commits to homebridge-homeassistant, 8 commits to home-assistant.github.io") - [Jonas Pedersen (@JonasPed)](https://github.com/JonasPed "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Jonatan Castro (@jcastro)](https://github.com/jcastro "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Jonathan Baginski (@patchedsoul)](https://github.com/patchedsoul "115 total commits to the home-assistant organization, 87 commits to fabric-home-assistant, 28 commits to home-assistant.github.io") - [joopert (@joopert)](https://github.com/joopert "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Jordi (@hokus15)](https://github.com/hokus15 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jordy (@jbarrancos)](https://github.com/jbarrancos "39 total commits to the home-assistant organization, 39 commits to home-assistant") +- [Jordy (@jbarrancos)](https://github.com/jbarrancos "40 total commits to the home-assistant organization, 40 commits to home-assistant") - [Jose Juan Montes (@jjmontesl)](https://github.com/jjmontesl "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") - [Joseph Carter (@iKarith)](https://github.com/iKarith "9 total commits to the home-assistant organization, 9 commits to pi-gen") - [Joseph Piron (@eagleamon)](https://github.com/eagleamon "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Josh (@karlw00t)](https://github.com/karlw00t "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "6 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant, 3 commits to home-assistant") -- [Josh Nichols (@technicalpickles)](https://github.com/technicalpickles "26 total commits to the home-assistant organization, 15 commits to home-assistant, 11 commits to home-assistant.github.io") +- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to homebridge-homeassistant") +- [Josh Nichols (@technicalpickles)](https://github.com/technicalpickles "28 total commits to the home-assistant organization, 15 commits to home-assistant, 13 commits to home-assistant.github.io") - [Josh Wright (@JshWright)](https://github.com/JshWright "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io") - [jpcomtois (@jpcomtois)](https://github.com/jpcomtois "1 total commits to the home-assistant organization, 1 commit to libcoap") - [JudgeDredd (@JudgeDreddKLC)](https://github.com/JudgeDreddKLC "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") - [Juggels (@Juggels)](https://github.com/Juggels "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") - [Julian Kaffke (@jaykay)](https://github.com/jaykay "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "17 total commits to the home-assistant organization, 11 commits to home-assistant, 6 commits to home-assistant.github.io") +- [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") +- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "18 total commits to the home-assistant organization, 12 commits to home-assistant, 6 commits to home-assistant.github.io") - [jumpkick (@jumpkick)](https://github.com/jumpkick "15 total commits to the home-assistant organization, 12 commits to home-assistant, 3 commits to home-assistant.github.io") - [Justin Dray (@justin8)](https://github.com/justin8 "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to home-assistant") - [Justin Hayes (@GussyH)](https://github.com/GussyH "7 total commits to the home-assistant organization, 7 commits to hadashboard") @@ -482,7 +476,7 @@ This page contains a list of people who have contributed in one way or another t - [Justyn Shull (@justyns)](https://github.com/justyns "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Jürgen W (@jurgenweber)](https://github.com/jurgenweber "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Kai (@luxus)](https://github.com/luxus "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Kane610 (@Kane610)](https://github.com/Kane610 "16 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") +- [Kane610 (@Kane610)](https://github.com/Kane610 "18 total commits to the home-assistant organization, 8 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") - [Karen Goode (@kfgoode)](https://github.com/kfgoode "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [karlkar (@karlkar)](https://github.com/karlkar "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Keaton Taylor (@keatontaylor)](https://github.com/keatontaylor "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -497,7 +491,6 @@ This page contains a list of people who have contributed in one way or another t - [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "19 total commits to the home-assistant organization, 11 commits to home-assistant, 8 commits to home-assistant.github.io") - [Kevin Gisi (@gisikw)](https://github.com/gisikw "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Kevin Gottsman (@gottsman)](https://github.com/gottsman "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Kevin Panaro (@kevinpanaro)](https://github.com/kevinpanaro "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Kevin Siml (@appzer)](https://github.com/appzer "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Keyasha Brothern (@KMBrothern)](https://github.com/KMBrothern "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [kfcook (@kfcook)](https://github.com/kfcook "3 total commits to the home-assistant organization, 3 commits to home-assistant") @@ -507,14 +500,11 @@ This page contains a list of people who have contributed in one way or another t - [Krasimir Chariyski (@Chariyski)](https://github.com/Chariyski "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Krasimir Zhelev (@zhelev)](https://github.com/zhelev "1 total commits to the home-assistant organization, 1 commit to netdisco") - [kroimon (@kroimon)](https://github.com/kroimon "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Kyle Decot (@kyledecot)](https://github.com/kyledecot "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Kyle Gordon (@kylegordon)](https://github.com/kylegordon "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Kyle Hendricks (@kylehendricks)](https://github.com/kylehendricks "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Kyle R (@qcryptic)](https://github.com/qcryptic "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [lamiskin (@lamiskin)](https://github.com/lamiskin "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [LaurensBot (@LaurensBot)](https://github.com/LaurensBot "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [lamiskin (@lamiskin)](https://github.com/lamiskin "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [Lars Englund (@larsenglund)](https://github.com/larsenglund "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [lee-js (@lee-js)](https://github.com/lee-js "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Leon99 (@Leon99)](https://github.com/Leon99 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to appdaemon") +- [Leon99 (@Leon99)](https://github.com/Leon99 "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Leonardo Saraiva (@vyper)](https://github.com/vyper "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Lev Aronsky (@aronsky)](https://github.com/aronsky "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") - [Lewis Juggins (@lwis)](https://github.com/lwis "64 total commits to the home-assistant organization, 51 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") @@ -528,25 +518,23 @@ This page contains a list of people who have contributed in one way or another t - [LucaSoldi (@LucaSoldi)](https://github.com/LucaSoldi "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Lucien Guimier (@guimier)](https://github.com/guimier "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Ludovic (@ldvc)](https://github.com/ldvc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Ludovico de Nittis (@RyuzakiKK)](https://github.com/RyuzakiKK "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Ludovico de Nittis (@RyuzakiKK)](https://github.com/RyuzakiKK "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Lukas (@lukas-hetzenecker)](https://github.com/lukas-hetzenecker "14 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "24 total commits to the home-assistant organization, 13 commits to home-assistant, 9 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "27 total commits to the home-assistant organization, 15 commits to home-assistant, 10 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Lukas Ecklmayr (@outrun0506)](https://github.com/outrun0506 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Lukas Porubcan (@Luc3as)](https://github.com/Luc3as "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Luke Armstrong (@lukearmstrong)](https://github.com/lukearmstrong "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Luuk (@Maharball1)](https://github.com/Maharball1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [LvivEchoes (@LvivEchoes)](https://github.com/LvivEchoes "8 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Maarten Groeneweg (@lazytesting)](https://github.com/lazytesting "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Maciej Bieniek (@bieniu)](https://github.com/bieniu "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to hassio-build") - [Maciej Wasilak (@mwasilak)](https://github.com/mwasilak "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Magnus Ihse Bursie (@magicus)](https://github.com/magicus "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to netdisco, 3 commits to home-assistant.github.io") - [Magnus Lyckå (@magnus-lycka)](https://github.com/magnus-lycka "1 total commits to the home-assistant organization, 1 commit to netdisco") - [MagnusKnutas (@MagnusKnutas)](https://github.com/MagnusKnutas "29 total commits to the home-assistant organization, 29 commits to home-assistant") -- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") +- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") - [Maikel Wever (@maikelwever)](https://github.com/maikelwever "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Malte Franken (@exxamalte)](https://github.com/exxamalte "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Manu (@matrixagent)](https://github.com/matrixagent "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Marc Egli (@frog32)](https://github.com/frog32 "9 total commits to the home-assistant organization, 7 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Marc Egli (@frog32)](https://github.com/frog32 "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [Marc Forth (@mf-social)](https://github.com/mf-social "13 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") - [Marc Pabst (@mxtra)](https://github.com/mxtra "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Marc Plano-Lesay (@Kernald)](https://github.com/Kernald "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant") @@ -554,53 +542,48 @@ This page contains a list of people who have contributed in one way or another t - [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "140 total commits to the home-assistant organization, 77 commits to home-assistant, 61 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer") - [Marcin Jaworski (@yawor)](https://github.com/yawor "12 total commits to the home-assistant organization, 12 commits to appdaemon") - [Marcus Schmidt (@mar-schmidt)](https://github.com/mar-schmidt "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Marijn Giesen (@marijngiesen)](https://github.com/marijngiesen "7 total commits to the home-assistant organization, 5 commits to hadashboard, 2 commits to home-assistant.github.io") +- [Marijn Giesen (@marijngiesen)](https://github.com/marijngiesen "5 total commits to the home-assistant organization, 5 commits to hadashboard") +- [Marius (@ciotlosm)](https://github.com/ciotlosm "6 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 2 commits to home-assistant") - [Mark Coombes (@marthoc)](https://github.com/marthoc "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Mark Grosen (@mgsb)](https://github.com/mgsb "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Mark Huson (@mehuman)](https://github.com/mehuman "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") -- [Mark Oude Veldhuis (@markoudev)](https://github.com/markoudev "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [markferry (@markferry)](https://github.com/markferry "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Markus (@iMarkus)](https://github.com/iMarkus "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to hassio") - [Markus Becker (@markushx)](https://github.com/markushx "6 total commits to the home-assistant organization, 6 commits to libcoap") -- [Markus Lipp (@LightIsLife)](https://github.com/LightIsLife "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Markus Peter (@bimbar)](https://github.com/bimbar "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Markus Peter (@bimbar)](https://github.com/bimbar "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Markus Stenberg (@fingon)](https://github.com/fingon "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Martin Berg (@mbrrg)](https://github.com/mbrrg "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Martin Donlon (@wickerwaka)](https://github.com/wickerwaka "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Martin Donlon (@wickerwaka)](https://github.com/wickerwaka "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Martin Eberhardt (@DarkFox)](https://github.com/DarkFox "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "143 total commits to the home-assistant organization, 114 commits to home-assistant, 29 commits to home-assistant.github.io") -- [Martin Rowan (@shortbloke)](https://github.com/shortbloke "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Martin Vacula (@MatoKafkac)](https://github.com/MatoKafkac "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Martin Weinelt (@mweinelt)](https://github.com/mweinelt "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Martokk (@martokk)](https://github.com/martokk "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Mateusz Drab (@mateuszdrab)](https://github.com/mateuszdrab "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Mathew Peterson (@mathewpeterson)](https://github.com/mathewpeterson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to homebridge-homeassistant") -- [Matt N. (@mnoorenberghe)](https://github.com/mnoorenberghe "49 total commits to the home-assistant organization, 24 commits to home-assistant-iOS, 16 commits to home-assistant.github.io, 7 commits to home-assistant, 1 commit to homebridge-homeassistant, 1 commit to home-assistant-polymer") +- [Mathew Peterson (@mathewpeterson)](https://github.com/mathewpeterson "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [Matt N. (@mnoorenberghe)](https://github.com/mnoorenberghe "52 total commits to the home-assistant organization, 24 commits to home-assistant-iOS, 17 commits to home-assistant.github.io, 9 commits to home-assistant, 1 commit to homebridge-homeassistant, 1 commit to home-assistant-polymer") - [Matt Rogers (@rogersmj)](https://github.com/rogersmj "20 total commits to the home-assistant organization, 20 commits to hadashboard") -- [Matt Schmitt (@schmittx)](https://github.com/schmittx "33 total commits to the home-assistant organization, 23 commits to homebridge-homeassistant, 6 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Matt Schmitt (@schmittx)](https://github.com/schmittx "37 total commits to the home-assistant organization, 23 commits to homebridge-homeassistant, 7 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to home-assistant-polymer") - [Matt White (@mw-white)](https://github.com/mw-white "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io") - [Matteo Lampugnani (@t30)](https://github.com/t30 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Matthew Bowen (@mgbowen)](https://github.com/mgbowen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Matthew Donoughe (@mdonoughe)](https://github.com/mdonoughe "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Matthew Garrett (@mjg59)](https://github.com/mjg59 "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Matthew Hilton (@matt2005)](https://github.com/matt2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Matthew Schick (@mattsch)](https://github.com/mattsch "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "20 total commits to the home-assistant organization, 13 commits to home-assistant, 7 commits to home-assistant.github.io") - [mattie47 (@mattie47)](https://github.com/mattie47 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [mauriciobonani (@mauriciobonani)](https://github.com/mauriciobonani "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") +- [mauriciobonani (@mauriciobonani)](https://github.com/mauriciobonani "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [maxlaverse (@maxlaverse)](https://github.com/maxlaverse "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [maxlaverse (@maxlaverse)](https://github.com/maxlaverse "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [mboeru (@mboeru)](https://github.com/mboeru "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") - [Menno Blom (@b10m)](https://github.com/b10m "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant, 1 commit to netdisco") - [mertenats (@mertenats)](https://github.com/mertenats "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Micha LaQua (@milaq)](https://github.com/milaq "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Michael (@hartmms)](https://github.com/hartmms "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [Michael Auchter (@auchter)](https://github.com/auchter "13 total commits to the home-assistant organization, 13 commits to home-assistant") -- [Michael Buffington (@elbowdonkey)](https://github.com/elbowdonkey "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Michael Fester (@michaelfester)](https://github.com/michaelfester "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [Michael Furtak (@mfurtak)](https://github.com/mfurtak "5 total commits to the home-assistant organization, 5 commits to issue-bot") - [Michael Gilbert (@Zyell)](https://github.com/Zyell "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Michael Heinemann (@heinemml)](https://github.com/heinemml "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Michael Heinemann (@heinemml)](https://github.com/heinemml "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Michael Kutý (@michaelkuty)](https://github.com/michaelkuty "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Michael Luggen (@l00mi)](https://github.com/l00mi "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Michael Prokop (@mika)](https://github.com/mika "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Michael Requeny (@requenym)](https://github.com/requenym "14 total commits to the home-assistant organization, 14 commits to home-assistant.github.io") @@ -608,54 +591,44 @@ This page contains a list of people who have contributed in one way or another t - [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "61 total commits to the home-assistant organization, 31 commits to home-assistant, 26 commits to home-assistant.github.io, 3 commits to home-assistant-polymer, 1 commit to netdisco") - [Michel Settembrino (@Michel-Settembrino)](https://github.com/Michel-Settembrino "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [micw (@micw)](https://github.com/micw "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Miha Lunar (@SmilyOrg)](https://github.com/SmilyOrg "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mikael Bergemalm (@bergemalm)](https://github.com/bergemalm "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Mikayla Hutchinson (@mhutch)](https://github.com/mhutch "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mike Christianson (@MikeChristianson)](https://github.com/MikeChristianson "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Mike G Chambers (@mikegchambers)](https://github.com/mikegchambers "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Mike Megally (@cmsimike)](https://github.com/cmsimike "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Mike Megally (@cmsimike)](https://github.com/cmsimike "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [Mike Nestor (@mnestor)](https://github.com/mnestor "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant-polymer") - [Mike Roberts (@m-roberts)](https://github.com/m-roberts "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [mikey (@pfista)](https://github.com/pfista "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mikkel Høgh (@mikl)](https://github.com/mikl "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Milan V. (@milanvo)](https://github.com/milanvo "18 total commits to the home-assistant organization, 10 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [MinchinWeb (@MinchinWeb)](https://github.com/MinchinWeb "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [miniconfig (@miniconfig)](https://github.com/miniconfig "27 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.github.io") - [Minims (@Minims)](https://github.com/Minims "3 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant") - [Mister Wil (@MisterWil)](https://github.com/MisterWil "17 total commits to the home-assistant organization, 11 commits to home-assistant, 6 commits to home-assistant.github.io") -- [Mitchell Cash (@mitchellcash)](https://github.com/mitchellcash "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mitesh Patel (@gurumitts)](https://github.com/gurumitts "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io") -- [mje-nz (@mje-nz)](https://github.com/mje-nz "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io") - [mjj4791 (@mjj4791)](https://github.com/mjj4791 "22 total commits to the home-assistant organization, 15 commits to home-assistant.github.io, 7 commits to home-assistant") +- [mmmmmtasty (@mmmmmtasty)](https://github.com/mmmmmtasty "8 total commits to the home-assistant organization, 8 commits to appdaemon") - [Molodax (@Molodax)](https://github.com/Molodax "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Moon Shot (@moonshot)](https://github.com/moonshot "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [moose51789 (@moose51789)](https://github.com/moose51789 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [moskovskiy82 (@moskovskiy82)](https://github.com/moskovskiy82 "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [motir (@motir)](https://github.com/motir "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [mtl010957 (@mtl010957)](https://github.com/mtl010957 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Mārtiņš Grunskis (@grunskis)](https://github.com/grunskis "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Naren Salem (@naren8642)](https://github.com/naren8642 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Nate (@BillyNate)](https://github.com/BillyNate "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Nathan Flynn (@eperdeme)](https://github.com/eperdeme "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "19 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to appdaemon, 1 commit to home-assistant-polymer") +- [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "19 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to home-assistant-polymer, 1 commit to appdaemon") - [Neil Lathwood (@laf)](https://github.com/laf "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [Nelis Willers (@NelisW)](https://github.com/NelisW "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant") - [NeLLyMerC (@NeLLyMerC)](https://github.com/NeLLyMerC "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Nemanja Stefanovic (@nemik)](https://github.com/nemik "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [neonbunny (@neonbunny)](https://github.com/neonbunny "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Nicholas Amadori (@namadori)](https://github.com/namadori "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Nicholas Griffin (@nicholasgriffintn)](https://github.com/nicholasgriffintn "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Nicholas Sielicki (@sielicki)](https://github.com/sielicki "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Nicholas Sielicki (@sielicki)](https://github.com/sielicki "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Nick (@quadportnick)](https://github.com/quadportnick "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Nick Touran (@partofthething)](https://github.com/partofthething "38 total commits to the home-assistant organization, 25 commits to home-assistant, 13 commits to home-assistant.github.io") - [Nick Waring (@nickwaring)](https://github.com/nickwaring "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Nicolas Graziano (@ngraziano)](https://github.com/ngraziano "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Nicolas Martignoni (@martignoni)](https://github.com/martignoni "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Niklas (@niklaswa)](https://github.com/niklaswa "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Niklas Morberg (@morberg)](https://github.com/morberg "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Nigel Rook (@NigelRook)](https://github.com/NigelRook "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") +- [Niklas (@niklaswa)](https://github.com/niklaswa "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Nikolas Beutler (@biacz)](https://github.com/biacz "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [NMA (@nma83)](https://github.com/nma83 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "117 total commits to the home-assistant organization, 92 commits to home-assistant, 25 commits to home-assistant.github.io") +- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "119 total commits to the home-assistant organization, 93 commits to home-assistant, 26 commits to home-assistant.github.io") - [NotoriousBDG (@notoriousbdg)](https://github.com/notoriousbdg "3 total commits to the home-assistant organization, 3 commits to hassio-addons") - [NovapaX (@NovapaX)](https://github.com/NovapaX "9 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 4 commits to home-assistant, 1 commit to home-assistant-assets") - [ntalekt (@ntalekt)](https://github.com/ntalekt "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") @@ -668,13 +641,12 @@ This page contains a list of people who have contributed in one way or another t - [Oliver (@scarface-4711)](https://github.com/scarface-4711 "24 total commits to the home-assistant organization, 14 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to netdisco") - [Oliver van Porten (@mcdeck)](https://github.com/mcdeck "10 total commits to the home-assistant organization, 10 commits to home-assistant") - [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "41 total commits to the home-assistant organization, 29 commits to home-assistant, 12 commits to home-assistant.github.io") -- [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [oznu (@oznu)](https://github.com/oznu "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Parker Moore (@parkr)](https://github.com/parkr "60 total commits to the home-assistant organization, 60 commits to home-assistant.github.io") - [pascal (@passie)](https://github.com/passie "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Pascal Bach (@bachp)](https://github.com/bachp "10 total commits to the home-assistant organization, 9 commits to home-assistant, 1 commit to netdisco") -- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "2268 total commits to the home-assistant organization, 879 commits to hassio, 440 commits to home-assistant, 322 commits to hassio-build, 306 commits to hassio-addons, 299 commits to home-assistant.github.io, 16 commits to hassio-addons-example, 4 commits to hassio-cli, 1 commit to home-assistant-js-websocket, 1 commit to netdisco") -- [patkap (@patkap)](https://github.com/patkap "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "2335 total commits to the home-assistant organization, 917 commits to hassio, 446 commits to home-assistant, 323 commits to hassio-build, 315 commits to hassio-addons, 305 commits to home-assistant.github.io, 16 commits to hassio-addons-example, 10 commits to hassio-cli, 1 commit to netdisco, 1 commit to home-assistant-js-websocket, 1 commit to hassio-os") - [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Patrik (@ggravlingen)](https://github.com/ggravlingen "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -695,12 +667,12 @@ This page contains a list of people who have contributed in one way or another t - [Phil Cole (@filcole)](https://github.com/filcole "8 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 3 commits to home-assistant") - [Phil Haack (@Haacked)](https://github.com/Haacked "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "24 total commits to the home-assistant organization, 18 commits to home-assistant.github.io, 6 commits to home-assistant") -- [Phil Kates (@philk)](https://github.com/philk "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Phil Kates (@philk)](https://github.com/philk "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Philip Hofstetter (@pilif)](https://github.com/pilif "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Philip Lundrigan (@philipbl)](https://github.com/philipbl "65 total commits to the home-assistant organization, 56 commits to home-assistant, 9 commits to home-assistant.github.io") - [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "37 total commits to the home-assistant organization, 24 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to appdaemon") - [Phill Price (@phillprice)](https://github.com/phillprice "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") -- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "22 total commits to the home-assistant organization, 13 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "25 total commits to the home-assistant organization, 15 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Pierre Ståhl (@postlund)](https://github.com/postlund "45 total commits to the home-assistant organization, 30 commits to home-assistant, 9 commits to home-assistant.github.io, 4 commits to netdisco, 2 commits to home-assistant-polymer") - [Piratonym (@Piratonym)](https://github.com/Piratonym "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [pkonnekermetametrics (@pkonnekermetametrics)](https://github.com/pkonnekermetametrics "5 total commits to the home-assistant organization, 5 commits to warrant") @@ -710,9 +682,8 @@ This page contains a list of people who have contributed in one way or another t - [rbflurry (@rbflurry)](https://github.com/rbflurry "16 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 3 commits to home-assistant") - [Reed Riley (@reedriley)](https://github.com/reedriley "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Rendili (@Rendili)](https://github.com/Rendili "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Rene Tode (@ReneTode)](https://github.com/ReneTode "25 total commits to the home-assistant organization, 25 commits to appdaemon") +- [Rene Tode (@ReneTode)](https://github.com/ReneTode "38 total commits to the home-assistant organization, 38 commits to appdaemon") - [René Kliment (@renekliment)](https://github.com/renekliment "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Rev Michael Greb (@mikegrb)](https://github.com/mikegrb "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Reza Moallemi (@moallemi)](https://github.com/moallemi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [rhooper (@rhooper)](https://github.com/rhooper "27 total commits to the home-assistant organization, 25 commits to home-assistant, 2 commits to hadashboard") - [Riccardo Canta (@commento)](https://github.com/commento "3 total commits to the home-assistant organization, 3 commits to home-assistant") @@ -722,9 +693,9 @@ This page contains a list of people who have contributed in one way or another t - [rkabadi (@rkabadi)](https://github.com/rkabadi "17 total commits to the home-assistant organization, 17 commits to home-assistant") - [Rob Capellini (@capellini)](https://github.com/capellini "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Rob Slifka (@rslifka)](https://github.com/rslifka "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1315 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 248 commits to home-assistant.github.io, 91 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to home-assistant-js, 3 commits to scenegen, 3 commits to organization, 3 commits to home-assistant-js-websocket, 3 commits to appdaemon, 3 commits to hadashboard, 3 commits to hassbot, 2 commits to home-assistant-assets, 2 commits to fabric-home-assistant, 2 commits to lambda-home-assistant-github, 2 commits to LabelBot, 2 commits to micropython-home-assistant, 2 commits to home-assistant-notebooks") +- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1315 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 248 commits to home-assistant.github.io, 91 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to hassbot, 3 commits to hadashboard, 3 commits to home-assistant-js-websocket, 3 commits to appdaemon, 3 commits to home-assistant-js, 3 commits to scenegen, 3 commits to organization, 2 commits to LabelBot, 2 commits to home-assistant-assets, 2 commits to fabric-home-assistant, 2 commits to home-assistant-notebooks, 2 commits to micropython-home-assistant, 2 commits to lambda-home-assistant-github") - [Robby Grossman (@freerobby)](https://github.com/freerobby "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Robin (@robmarkcole)](https://github.com/robmarkcole "15 total commits to the home-assistant organization, 9 commits to home-assistant.github.io, 6 commits to home-assistant") +- [Robin (@robmarkcole)](https://github.com/robmarkcole "16 total commits to the home-assistant organization, 9 commits to home-assistant.github.io, 6 commits to home-assistant, 1 commit to home-assistant-assets") - [Robin Laurén (@llauren)](https://github.com/llauren "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Roddie Hasan (@eiddor)](https://github.com/eiddor "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Roi Dayan (@roidayan)](https://github.com/roidayan "6 total commits to the home-assistant organization, 6 commits to home-assistant") @@ -736,26 +707,26 @@ This page contains a list of people who have contributed in one way or another t - [rpitera (@rpitera)](https://github.com/rpitera "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [rubund (@rubund)](https://github.com/rubund "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [runningman84 (@runningman84)](https://github.com/runningman84 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Ruslan Kiianchuk (@zoresvit)](https://github.com/zoresvit "1 total commits to the home-assistant organization, 1 commit to pi-gen") +- [Ruslan Kiyanchuk (@zoresvit)](https://github.com/zoresvit "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Russell Cloran (@rcloran)](https://github.com/rcloran "19 total commits to the home-assistant organization, 15 commits to home-assistant, 4 commits to homebridge-homeassistant") - [Ryan Bahm (@rdbahm)](https://github.com/rdbahm "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Ryan Borstelmann (@SlothCroissant)](https://github.com/SlothCroissant "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Ryan Daigle (@rwdaigle)](https://github.com/rwdaigle "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Ryan Kraus (@rmkraus)](https://github.com/rmkraus "193 total commits to the home-assistant organization, 163 commits to home-assistant, 15 commits to home-assistant.github.io, 14 commits to home-assistant-polymer, 1 commit to home-assistant-notebooks") -- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "11 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io") +- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "47 total commits to the home-assistant organization, 35 commits to hassio-cli, 7 commits to home-assistant, 5 commits to home-assistant.github.io") - [Ryan Turner (@turnrye)](https://github.com/turnrye "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Sabesto (@Sabesto)](https://github.com/Sabesto "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Sam Birch (@hotplot)](https://github.com/hotplot "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Sam Holmes (@sam3d)](https://github.com/sam3d "4 total commits to the home-assistant organization, 4 commits to pi-gen") - [sam-io (@sam-io)](https://github.com/sam-io "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [sander76 (@sander76)](https://github.com/sander76 "41 total commits to the home-assistant organization, 37 commits to home-assistant, 4 commits to home-assistant.github.io") -- [schneefux (@schneefux)](https://github.com/schneefux "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Scott Bradshaw (@swbradshaw)](https://github.com/swbradshaw "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Scott Griffin (@scottocs11)](https://github.com/scottocs11 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Scott O'Neil (@americanwookie)](https://github.com/americanwookie "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") - [Scott Reston (@ih8gates)](https://github.com/ih8gates "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Sean Dague (@sdague)](https://github.com/sdague "64 total commits to the home-assistant organization, 44 commits to home-assistant, 11 commits to home-assistant.github.io, 5 commits to home-assistant-polymer, 3 commits to netdisco, 1 commit to home-assistant-js") - [Sean Gollschewsky (@gollo)](https://github.com/gollo "17 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to hassio-build") +- [Sean Wilson (@swilson)](https://github.com/swilson "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Sebastian (@sebk-666)](https://github.com/sebk-666 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Sebastian (@sgso)](https://github.com/sgso "3 total commits to the home-assistant organization, 3 commits to libcoap") - [Sebastian Muszynski (@syssi)](https://github.com/syssi "42 total commits to the home-assistant organization, 21 commits to home-assistant, 19 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") @@ -799,13 +770,14 @@ This page contains a list of people who have contributed in one way or another t - [thecynic (@thecynic)](https://github.com/thecynic "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Theodor Lindquist (@theolind)](https://github.com/theolind "25 total commits to the home-assistant organization, 25 commits to home-assistant") - [Thiago Oliveira (@chilicheech)](https://github.com/chilicheech "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Thibault Cohen (@titilambert)](https://github.com/titilambert "39 total commits to the home-assistant organization, 26 commits to home-assistant, 13 commits to home-assistant.github.io") +- [Thibault Cohen (@titilambert)](https://github.com/titilambert "41 total commits to the home-assistant organization, 28 commits to home-assistant, 13 commits to home-assistant.github.io") - [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to hassio-addons") +- [Thijs de Jong (@bakedraccoon)](https://github.com/bakedraccoon "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [ThinkPadNL (@ThinkPadNL)](https://github.com/ThinkPadNL "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Thom Troy (@ttroy50)](https://github.com/ttroy50 "10 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 3 commits to home-assistant") +- [Thom Troy (@ttroy50)](https://github.com/ttroy50 "11 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 4 commits to home-assistant") - [Thomas Friedel (@tfriedel)](https://github.com/tfriedel "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Thomas Petazzoni (@tpetazzoni)](https://github.com/tpetazzoni "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Thomas Phillips (@thomas-teknique)](https://github.com/thomas-teknique "2 total commits to the home-assistant organization, 2 commits to pi-gen") +- [Thomas Phillips (@thomas-phillips-nz)](https://github.com/thomas-phillips-nz "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Thomas Purchas (@thomaspurchas)](https://github.com/thomaspurchas "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Thomas Pötsch (@thp-comnets)](https://github.com/thp-comnets "7 total commits to the home-assistant organization, 7 commits to libcoap") - [thrawnarn (@thrawnarn)](https://github.com/thrawnarn "1 total commits to the home-assistant organization, 1 commit to netdisco") @@ -830,10 +802,12 @@ This page contains a list of people who have contributed in one way or another t - [Toshik (@Toshik)](https://github.com/Toshik "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Touliloup (@RiRomain)](https://github.com/RiRomain "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [tradiuz (@tradiuz)](https://github.com/tradiuz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") +- [travislreno (@travislreno)](https://github.com/travislreno "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [trbs (@trbs)](https://github.com/trbs "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Trevor (@tboyce021)](https://github.com/tboyce021 "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.github.io") - [Trey Hunner (@treyhunner)](https://github.com/treyhunner "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [trollkarlen (@trollkarlen)](https://github.com/trollkarlen "5 total commits to the home-assistant organization, 5 commits to home-assistant") +- [tschmidty69 (@tschmidty69)](https://github.com/tschmidty69 "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant") - [Tyler Page (@iamtpage)](https://github.com/iamtpage "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [Tõnis Tobre (@tobre6)](https://github.com/tobre6 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") @@ -857,7 +831,7 @@ This page contains a list of people who have contributed in one way or another t - [Will W. (@tiktok7)](https://github.com/tiktok7 "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Willems Davy (@joyrider3774)](https://github.com/joyrider3774 "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") - [William Johansson (@radhus)](https://github.com/radhus "1 total commits to the home-assistant organization, 1 commit to hassio") -- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "104 total commits to the home-assistant organization, 70 commits to home-assistant, 32 commits to home-assistant.github.io, 2 commits to netdisco") +- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "106 total commits to the home-assistant organization, 71 commits to home-assistant, 33 commits to home-assistant.github.io, 2 commits to netdisco") - [williamlehman (@williamlehman)](https://github.com/williamlehman "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [wind-rider (@wind-rider)](https://github.com/wind-rider "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [wokar (@wokar)](https://github.com/wokar "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") @@ -872,11 +846,11 @@ This page contains a list of people who have contributed in one way or another t - [Zac Hatfield Dodds (@Zac-HD)](https://github.com/Zac-HD "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Zen Tormey (@xehn)](https://github.com/xehn "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Zhao Lu (@zlu)](https://github.com/zlu "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Zio Tibia (@ziotibia81)](https://github.com/ziotibia81 "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant") -- [Zorks (@Zorks)](https://github.com/Zorks "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [Zio Tibia (@ziotibia81)](https://github.com/ziotibia81 "14 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io") +- [Zorks (@Zorks)](https://github.com/Zorks "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Åskar Andersson (@olskar)](https://github.com/olskar "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to hassbian-scripts") This page is irregularly updated using the [`credits_generator` tool](https://github.com/home-assistant/home-assistant.github.io/tree/next/credits_generator). If you think that you are missing, please let us know. -This page was last updated Sunday, December 24th 2017, 10:59:57 pm UTC. +This page was last updated Saturday, January 13th 2018, 6:07:58 pm UTC. From 1e7b950ad61781ff781fcb6fc5bdc07daf128650 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 13 Jan 2018 22:55:57 +0100 Subject: [PATCH 11/60] update --- source/_docs/frontend/browsers.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown index d0ead42c919..6ad520acfc1 100644 --- a/source/_docs/frontend/browsers.markdown +++ b/source/_docs/frontend/browsers.markdown @@ -23,7 +23,7 @@ We would appreciate if you help to keep this page up-to-date and add feedback. | Internet Explorer ([IE]) | 11 | Not supported | Does not support promises. | | Microsoft [Edge] | deli. Win 10 | works | Streaming updates not working. | | [Chrome] | 61.0.3163.100 | works | | -| [Firefox] | 56.0 | works | | +| [Firefox] | 57.0 | works | | | [Iridium] | 48.2 | works | | | [Opera] | 42.0.2393.351 | works | | @@ -39,7 +39,7 @@ We would appreciate if you help to keep this page up-to-date and add feedback. | :-------------------- |:---------------|:-----------|:-------------------------| | [Firefox] | 57.0 | works | | | [Midori] | 0.5.11 | works | | -| [Chromium] | 61.0.3163.100 | works | | +| [Chromium] | 63.0.3239.108 | works | | | [Conkeror] | 1.0.2 | works | | | [Tor Browser] | 7.0.8 | works | | | [Konqueror] | | unknown | | From ba538c71f9b5ff16ffdd59e50f8c8bf9dc00be4c Mon Sep 17 00:00:00 2001 From: Lukas Ecklmayr Date: Sun, 14 Jan 2018 20:34:48 +0100 Subject: [PATCH 12/60] fixed URL for github access token (#4415) --- source/_components/sensor.travisci.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.travisci.markdown b/source/_components/sensor.travisci.markdown index a3944d69a82..82698ab737a 100644 --- a/source/_components/sensor.travisci.markdown +++ b/source/_components/sensor.travisci.markdown @@ -26,7 +26,7 @@ sensor: Configuration variables: -- **api_key** (*Required*): GitHub [access token](https://github.com/settings/applications) with the following scopes: *read:org*, *user:email*, *repo_deployment*, *repo:status*, *write:repo_hook*. +- **api_key** (*Required*): GitHub [access token](https://github.com/settings/tokens) with the following scopes: *read:org*, *user:email*, *repo_deployment*, *repo:status*, *write:repo_hook*. - **branch** (*Optional*): Determine which default branch should be used by the **state** condition. Defaults to *master*. - **scan_interval** (*Optional*): How frequently to query for new data. Defaults to 30 seconds. - **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored. From 6360fcdd432d80ade39e80ad4ab008239432f9b8 Mon Sep 17 00:00:00 2001 From: Lukas Ecklmayr Date: Sun, 14 Jan 2018 20:36:16 +0100 Subject: [PATCH 13/60] Update Docs to match regex for repository URL (#4413) Describe that https:// Repository URLs have to end with .git to match regex for repository URL. --- source/_addons/git_pull.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown index 126fab9c1a5..e482db95099 100644 --- a/source/_addons/git_pull.markdown +++ b/source/_addons/git_pull.markdown @@ -13,7 +13,7 @@ Load and update configuration files for Home Assistant from a GIT repository. ```json { - "repository": "https://example.com/my_configs", + "repository": "https://example.com/my_configs.git", "auto_restart": false, "repeat": { "active": false, @@ -32,7 +32,7 @@ Load and update configuration files for Home Assistant from a GIT repository. } ``` -- **repository** (*Required*): GIT url to your repository. +- **repository** (*Required*): GIT url to your repository. You have to add .git to your GITHub-Repository-URL (see example Config) - **auto_restart** (*Optional*): Make a restart of Home-Assistant if the config have change and is valid. - **repeat/active** (*Optional*): Pull periodic for GIT updates. - **repeat/interval** (*Optional*): Pull all x seconds and look for changes. From 7371450b2a19848abc3fe11bd2d644058e78b753 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Sun, 14 Jan 2018 12:40:38 -0700 Subject: [PATCH 14/60] Added firmware version warning (#4411) --- source/_components/camera.yi.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/camera.yi.markdown b/source/_components/camera.yi.markdown index d5f1fa4d1af..052e3b26d63 100644 --- a/source/_components/camera.yi.markdown +++ b/source/_components/camera.yi.markdown @@ -30,6 +30,10 @@ In order to integrate the camera with Home Assistant, it is necessary to install Once installed, please ensure that you have enabled FTP and Telnet on your device. +

+Currently, version 0.1.4-beta2 of the custom firmware is the highest supported. Firmwares higher than this version use [Pure-FTPd](https://www.pureftpd.org/project/pure-ftpd), which has a bug that prevents FFmpeg from correctly rendering video files. +

+

Some alternative Yi firmwares enable an experimental RTSP server, which will allow you to connect to your camera via other Home Assistant camera platforms. However, this RTSP server disables the ability to use the supremely-useful Yi Home app. In order to maintain both Home Assistant compatibility _and_ the native app, this platform retrieves videos via FTP.

From 29b655073b36fcd2e4e907016db125e19fd59074 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 15 Jan 2018 09:32:27 +0100 Subject: [PATCH 15/60] Update for 0.61 --- _config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_config.yml b/_config.yml index 413de4a3ab4..f05fc66aca5 100644 --- a/_config.yml +++ b/_config.yml @@ -139,12 +139,12 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 60 -current_patch_version: 1 -date_released: 2018-01-06 +current_minor_version: 61 +current_patch_version: 0 +date_released: 2018-01-14 # 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-0601---january-6" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): From f2f47b3b3a63c2959726a63607c4f41e41db309b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 15 Jan 2018 11:41:07 +0100 Subject: [PATCH 16/60] Add Discogs logo --- source/_components/sensor.discogs.markdown | 1 + source/images/supported_brands/discogs.png | Bin 0 -> 59964 bytes 2 files changed, 1 insertion(+) create mode 100644 source/images/supported_brands/discogs.png diff --git a/source/_components/sensor.discogs.markdown b/source/_components/sensor.discogs.markdown index 4c4bfe4ef65..281852abc79 100644 --- a/source/_components/sensor.discogs.markdown +++ b/source/_components/sensor.discogs.markdown @@ -10,6 +10,7 @@ footer: true logo: https://www.magneticmag.com/.image/t_share/MTQ5OTE1NzU4NTczMzk3OTYw/discogs-vinyl-record-mark.png ha_category: Sensor ha_release: 0.61 +logo: discogs.png ha_iot_class: "Cloud Polling" --- diff --git a/source/images/supported_brands/discogs.png b/source/images/supported_brands/discogs.png new file mode 100644 index 0000000000000000000000000000000000000000..e207579d99af6f3a8c169314aeff12e9e952d724 GIT binary patch literal 59964 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 Date: Mon, 15 Jan 2018 12:00:17 +0100 Subject: [PATCH 17/60] Add release blog post for 0.61 --- source/_posts/2018-01-14-release-61.markdown | 732 ++++++++++++++++++ .../images/blog/2018-01-0.61/components.png | Bin 0 -> 106189 bytes 2 files changed, 732 insertions(+) create mode 100644 source/_posts/2018-01-14-release-61.markdown create mode 100644 source/images/blog/2018-01-0.61/components.png diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown new file mode 100644 index 00000000000..230b737f83b --- /dev/null +++ b/source/_posts/2018-01-14-release-61.markdown @@ -0,0 +1,732 @@ +--- +layout: post +title: "0.61: Coinbase, Discogs, iGlo, Sochain" +description: "New crypto currency sensors and other new stuff including breaking changes." +date: 2018-01-14 18:00:00 +date_formatted: "January 14, 2018" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: Release-Notes +og_image: /images/blog/2018-01-0.61/components.png +--- + + + +Almost a 100 contributors to this release 🎉 That's what you get when you skip a release. It's a little late but "Happy New Year" and welcome to 0.61 the first release 2018. + +This release contain some breaking changes. Please make sure that you check the section below if you are running into trouble. + +There is not much more to tell and I don't want to make something up. + + +## {% linkable_title New Platforms %} + +- Add Discogs Sensor platform ([@thibmaek] - [#10957]) ([sensor.discogs docs]) (new-platform) +- Greenwave Reality (TCP Connected) Lighting Component ([@dfiel] - [#11282]) ([light.greenwave docs]) (new-platform) +- Added rainsensor ([@jbarrancos] - [#11023]) ([rainbird docs]) ([sensor.rainbird docs]) ([switch.rainbird docs]) (new-platform) +- Sochain cryptocurrency sensor ([@Klathmon] - [#11335]) ([sensor.sochain docs]) (new-platform) +- Support for EcoNet water heaters ([@w1ll1am23] - [#11260]) ([climate.econet docs]) (new-platform) +- Add deCONZ component ([@Kane610] - [#10321]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) (new-platform) +- Added new climate component from Daikin ([@rofrantz] - [#10983]) ([climate.daikin docs]) (new-platform) +- Add Touchline climate platform ([@abondoe] - [#10547]) ([climate.touchline docs]) (new-platform) +- Add new iGlo component ([@jesserockz] - [#11171]) ([light.iglo docs]) (new-platform) +- Add Dark Sky weather component ([@DanNixon] - [#11435]) ([weather.darksky docs]) (new-platform) +- Coinbase.com sensor platform ([@nkgilley] - [#11036]) ([coinbase docs]) ([sensor.coinbase 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 %} + +- Extend Threshold binary sensor to support ranges. This means that you can now set `up` and `lower`. ([@DanNixon] - [#11110]) ([binary_sensor.threshold docs]) (breaking change) +- The Steam game platform contains changes: + - `game` attribute no longer set in `device_state_attributes` if no game is currently being played as the string "None" is no longer passed if no current game is being played, instead the `game` attribute is not present. + - States now use lower snake case. + - The "Play" and "Trade" states has been renamed to "looking_to_play" and "looking_to_trade". + ([@frwickst] - [#11182]) ([sensor.steam_online docs]) (breaking change) +- The [`tile`][device_tracker.tile docs] platform now shows only active Tiles by default; to show all Tiles, including expired/inactive ones, `show_inactive` must be `True`. The following state attributes have been removed: `last_seen` and `last_updated`. ([@bachya] - [#11172]) ([device_tracker.tile docs]) (breaking change) +- The `hidden_string` feature has been removed from the isy994 component. Previously, this allowed entities to be "hidden" in Home Assistant if a configured string was present in an ISY device's name or folder path. This was removed because hiding devices is now done via the customization feature. +Note however, that this feature was replaced by a new ignore_string config option, which will now cause Home Assistant to completely ignore devices with the matching string so that they will not be imported as a Home Assistant device at all. This can be helpful if you have nodes in the ISY that aren't useful at all in Hass (IR transmitter nodes are a good example.) ([@OverloadUT] - [#11243]) ([isy994 docs]) ([binary_sensor.isy994 docs]) ([cover.isy994 docs]) ([fan.isy994 docs]) ([light.isy994 docs]) ([lock.isy994 docs]) ([sensor.isy994 docs]) ([switch.isy994 docs]) (breaking change) +- The [`egardia` alarm panel][alarm_control_panel.egardia docs] platform no longer a need the users to run a separate Egardiaserver component. It can now also run on HASS.io. ([@jeroenterheerdt] - [#11344]) ([alarm_control_panel.egardia docs]) (breaking change) +- The binary sensor platform of the DoorBird integration has been deleted, so remove DoorBird from your `binary_sensor` configuration. Instead, set the `doorbell_events` option of the `doorbird` component to `True`. The `last_visitor` option has been removed from the camera component, as it is now always added as an entity. ([@Klikini] - [#11193]) ([camera.doorbird docs]) (breaking change) +- The following attributes of the TP-Link switch and light platform have been renamed: + - Light: `current_consumption` -> `current_power_w`, `daily_consumption` -> `daily_energy_kwh` and `monthly_consumption` -> `monthly_energy_kwh` + - Switch: `current` -> `current_a`, `current_consumption` -> `current_power_w`, `total_consumption` -> `total_energy_kwh` and `daily_consumption` -> `today_energy_kwh` ([@DanNixon] - [#10979]) ([light.tplink docs]) ([switch.tplink docs]) (breaking change) +- Move IMAP Email Content body to an attribute ([@notoriousbdg] - [#11096]) ([sensor.imap_email_content docs]) (breaking change) +- Automations which were using `state` that was returning `target_temperature` of the `netatmo` climate platform needs an update. ([@ciotlosm] - [#11345]) ([climate.netatmo docs]) (breaking change) +- The default availability payloads for the `MQTT` switch platform have changed from "ON" and "OFF" to "online" and "offline" (in order to match the majority of MQTT platforms that already supported availability reporting). ([@DanNixon] - [#11336]) (breaking change) +- Customizations for how entities are exposed to Alexa are no longer set via `customize`. Instead they are set via the configuration of the cloud component: + + ```yaml + cloud: + alexa: + entity_config: + switch.kitchen: + name: 'Name for Alexa' + description: 'Description for Alexa' + display_categories: 'LIGHT' + ``` + ([@balloob] - [#11461]) ([cloud docs]) ([alexa.smart_home docs]) (breaking change) +- The extension of the `alpha_vantage` requires an update of the configuration as now are exchange data available as well. ([@ChristianKuehnel] - [#11427]) ([sensor.alpha_vantage docs]) (breaking change) +- The `prometheus` component now supports pushing all sensors and fixes wrong metrics. If may require that you update your configuration. ([@michaelkuty] - [#11159]) ([prometheus docs]) (breaking change) +- Insteon local devices will now use their address as the `entity_id` and `name`. The friendly name can be customized using the [standard customization configuration](https://home-assistant.io/docs/configuration/customizing-devices/). ([@camrun91] - [#11088]) ([insteon_local docs]) ([fan.insteon_local docs]) ([light.insteon_local docs]) ([switch.insteon_local docs]) (breaking change) +- Google Assistant is no longer configured via `customize` but instead has its configuration under the `google_assistant` entry in your `configuration.yaml`. The attributes will no longer have to be prefixed with `google_assistant_` either. + + | Old option | New option | + | ---------- | ------------ | + | google_assistant | expose | + | aliases | aliases | + | google_assistant_name | name | + | google_assistant_type | type | + + Before: + + ```yaml + homeassistant: + customize: + switch.kitchen: + google_assistant: false + google_assistant_name: nice lights + google_assistant_type: light + aliases: + - roof lights + + google_assistant: + ``` + + After: + + ```yaml + google_assistant: + entity_config: + switch.kitchen: + expose: false + alias: roof lights + name: nice lights + type: light + ``` +([@balloob] - [#11499]) ([cloud docs]) ([google_assistant docs]) (breaking change) +- The `climate.set_aux_heat` service is no longer available for the Sensibo cliamte platform. Now call `climate.turn_on` or `climate.turn_off`. ([@andrey-git] - [#11579]) ([climate.sensibo docs]) (breaking change) + +## {% linkable_title All changes %} + +- Try multiple methods of getting data in asuswrt. ([@PeWu] - [#11140]) ([device_tracker.asuswrt docs]) +- Hydroquebec component use now asyncio ([@titilambert] - [#10795]) ([sensor.hydroquebec docs]) +- Hive Component Release Two ([@KJonline] - [#11053]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) +- Add Discogs Sensor platform ([@thibmaek] - [#10957]) ([sensor.discogs docs]) (new-platform) +- Fix statistics sensor mean and median when only one sample is available. ([@markferry] - [#11180]) ([sensor.statistics docs]) +- Extend Threshold binary sensor to support ranges ([@DanNixon] - [#11110]) ([binary_sensor.threshold docs]) (breaking change) +- Bump python-miio version ([@djchen] - [#11232]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Backup configuration files before overwriting ([@cgarwood] - [#11216]) +- Upgrade to new miflora version 0.2.0 ([@ChristianKuehnel] - [#11250]) ([sensor.miflora docs]) +- Add workaround for running tox on Windows platforms ([@veleek] - [#11188]) +- added myself to become code owner for miflora and plant ([@ChristianKuehnel] - [#11251]) +- Proper Steam game names and small fixes ([@frwickst] - [#11182]) ([sensor.steam_online docs]) (breaking change) +- Bugfix: 10509 - http is hard coded in plex sensor ([@ryanm101] - [#11072]) ([sensor.plex docs]) +- Adding MotionIP to BinarySensors for HMIP-SMI ([@schnoetz] - [#11268]) ([homematic docs]) +- Revert "Backup configuration files before overwriting" ([@pvizeli] - [#11269]) +- Functinality to save/restore snapshots for monoprice platform ([@etsinko] - [#10296]) ([media_player.monoprice docs]) +- Change manifest path to /states as this is the path / actually sets. ([@andrey-git] - [#11274]) +- Report Sensibo as off when it is off ([@andrey-git] - [#11281]) ([climate.sensibo docs]) +- Added password for GPS logger endpoint ([@foxel] - [#11245]) ([device_tracker.gpslogger docs]) +- Greenwave Reality (TCP Connected) Lighting Component ([@dfiel] - [#11282]) ([light.greenwave docs]) (new-platform) +- Adds support for disabled Tiles and automatic session renewal ([@bachya] - [#11172]) ([device_tracker.tile docs]) (breaking change) +- Plex refactor ([@ryanm101] - [#11235]) ([media_player.plex docs]) +- alexa: Add handling for covers ([@philk] - [#11242]) ([alexa.smart_home docs]) +- Added rainsensor ([@jbarrancos] - [#11023]) ([rainbird docs]) ([sensor.rainbird docs]) ([switch.rainbird docs]) (new-platform) +- Store raw state of RF sensors from alarmdecoder ([@PhracturedBlue] - [#10841]) ([alarmdecoder docs]) ([binary_sensor.alarmdecoder docs]) +- Add Chime status and control to Alarm Decoder component ([@goyney] - [#11271]) ([alarm_control_panel.alarmdecoder docs]) +- Better error handling ([@rofrantz] - [#11297]) ([sensor.transmission docs]) ([switch.transmission docs]) +- Removed error log used as debug ([@cmsimike] - [#11301]) ([octoprint docs]) +- Huge ISY994 platform cleanup, fixes support for 5.0.10 firmware ([@OverloadUT] - [#11243]) ([isy994 docs]) ([binary_sensor.isy994 docs]) ([cover.isy994 docs]) ([fan.isy994 docs]) ([light.isy994 docs]) ([lock.isy994 docs]) ([sensor.isy994 docs]) ([switch.isy994 docs]) (breaking change) +- Add heartbeat to websocket connections ([@balloob] - [#11298]) ([cloud.iot docs]) +- Fix typo in bitcoin.py component for mined blocks. ([@awkwardDuck] - [#11318]) ([sensor.bitcoin docs]) +- xiaomi_aqara: Fix covers never being closed ([@cnrd] - [#11319]) ([cover.xiaomi_aqara docs]) +- Fix for track_new_devices BC ([@masarliev] - [#11202]) ([device_tracker docs]) +- Upgrade aiohttp_cors to 0.6.0 ([@fabaff] - [#11310]) ([http docs]) +- Upgrade pysnmp to 4.4.3 ([@fabaff] - [#11317]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) +- Upgrade luftdaten to 0.1.3 ([@fabaff] - [#11316]) ([sensor.luftdaten docs]) +- Upgrade yahooweather to 0.10 ([@fabaff] - [#11309]) ([weather.yweather docs]) +- Upgrade distro to 1.2.0 ([@fabaff] - [#11312]) ([updater docs]) +- Upgrade python-digitalocean to 1.13.2 ([@fabaff] - [#11311]) ([digital_ocean docs]) +- Upgrade youtube_dl to 2017.12.23 ([@fabaff] - [#11308]) ([media_extractor docs]) +- Upgrade alpha_vantage to 1.6.0 ([@fabaff] - [#11307]) ([sensor.alpha_vantage docs]) +- Bugfix for HA Issue 7292, 9412 - switch to gamertag to receive ssl image url ([@ReneNulschDE] - [#11315]) ([sensor.xbox_live docs]) +- closes #11314 by not restricting the voice to anything but a string ([@Human] - [#11326]) ([tts.marytts docs]) +- Additional device classes for binary sensors ([@schmittx] - [#11280]) ([binary_sensor docs]) +- Remove need for separate EgardiaServer setup ([@jeroenterheerdt] - [#11344]) ([alarm_control_panel.egardia docs]) (breaking change) +- Add default names and validation for TP-Link devices ([@DanNixon] - [#11346]) ([light.tplink docs]) ([switch.tplink docs]) +- Sochain cryptocurrency sensor ([@Klathmon] - [#11335]) ([sensor.sochain docs]) (new-platform) +- pass stops_at to get_station_by_name ([@ttroy50] - [#11304]) ([sensor.irish_rail_transport docs]) +- Move data instance to setup ([@fabaff] - [#11350]) ([sensor.swiss_public_transport docs]) +- Update modbus.py ([@goldminenine] - [#11238]) ([modbus docs]) +- DoorBird feature update ([@Klikini] - [#11193]) ([camera.doorbird docs]) (breaking change) +- Upgrade aiohttp to 2.3.7 ([@fabaff] - [#11329]) +- Upgrade fuzzywuzzy to 0.16.0 ([@fabaff] - [#11331]) ([conversation docs]) +- Upgrade pyowm to 2.8.0 ([@fabaff] - [#11332]) ([sensor.openweathermap docs]) ([weather.openweathermap docs]) +- Upgrade sqlalchemy to 1.2.0 ([@fabaff] - [#11333]) +- Upgrade mypy to 0.560 ([@fabaff] - [#11334]) +- Upgrade python-telegram-bot to 9.0.0 ([@fabaff] - [#11341]) ([telegram_bot docs]) +- Upgrade youtube_dl to 2017.12.28 ([@fabaff] - [#11357]) ([media_extractor docs]) +- Correct units used in TP-Link energy monioring ([@DanNixon] - [#10979]) ([light.tplink docs]) ([switch.tplink docs]) (breaking change) +- Add HTTP endpoint for resending email confirmation ([@balloob] - [#11354]) ([cloud.auth_api docs]) ([cloud.http_api docs]) +- Fix RGB template ordering in MQTT Light ([@DanNixon] - [#11362]) ([light.mqtt docs]) +- Ping device tracker now respects interval_seconds ([@tschmidty69] - [#11348]) ([device_tracker.ping docs]) +- Fido component use now asyncio ([@titilambert] - [#11244]) ([sensor.fido docs]) +- Support for EcoNet water heaters ([@w1ll1am23] - [#11260]) ([climate.econet docs]) (new-platform) +- Remember the Milk - updating and completing tasks ([@ChristianKuehnel] - [#11069]) ([remember_the_milk docs]) +- Reverts unit conversions in TP-Link bulb ([@DanNixon] - [#11381]) ([light.tplink docs]) +- Clean up Google Assistant ([@balloob] - [#11375]) ([google_assistant docs]) ([google_assistant.http docs]) ([google_assistant.smart_home docs]) +- Adding support for Egardia / Woonveilig version GATE-03 ([@jeroenterheerdt] - [#11397]) ([alarm_control_panel.egardia docs]) +- Add deCONZ component ([@Kane610] - [#10321]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) (new-platform) +- Fix broken tests ([@balloob] - [#11395]) +- Upgrade pychromecast to 1.0.3 ([@OttoWinter] - [#11410]) ([media_player.cast docs]) +- Bump pywemo to fix request include problems. ([@pavoni] - [#11401]) ([wemo docs]) +- Log exceptions that happen during service call ([@balloob] - [#11394]) +- Move IMAP Email Content body to an attribute ([@notoriousbdg] - [#11096]) ([sensor.imap_email_content docs]) (breaking change) +- Notify webos timeout error fix ([@masarliev] - [#11027]) ([notify.webostv docs]) +- Removed status block to allow https://github.com/home-assistant/home-assistant-polymer/pull/766 with no impact ([@ciotlosm] - [#11345]) ([climate.netatmo docs]) (breaking change) +- More support for availability reporting on MQTT components ([@DanNixon] - [#11336]) (breaking change) +- Do not purge the most recent state for an entity ([@tinloaf] - [#11039]) +- Performance optimization of TP-Link switch ([@amelchio] - [#11416]) ([switch.tplink docs]) +- Fixing OpenWeatherMap Sensor. Current weather is 'unknown' if forecast: false. It was reported as #8640. ([@tomaszduda23] - [#11417]) ([sensor.openweathermap docs]) +- Silence redundant warnings about slow setup ([@amelchio] - [#11352]) +- Account for User-Agent being non-existent, causing a TypeError ([@akatrevorjay] - [#11064]) +- Cloud Updates ([@balloob] - [#11404]) ([cloud docs]) +- Add support for the renaming of Yamaha Receiver Zones via configuration file. Added a test to cover the change, plus previously untested options. ([@dfinlay] - [#11402]) ([media_player.yamaha docs]) +- Plex api update ([@ryanm101] - [#11423]) ([media_player.plex docs]) ([sensor.plex docs]) +- fix: hmip-etrv-2 now working with homeassistant ([@daenny] - [#11175]) ([homematic docs]) ([climate.homematic docs]) +- Fix errors in zigbee push state ([@SteveEasley] - [#11386]) ([zigbee docs]) +- Add on/off supported feature to climate ([@andrey-git] - [#11379]) ([climate docs]) ([climate.demo docs]) ([climate.sensibo docs]) +- Fix CONF_FRIENDLY_NAME ([@cdce8p] - [#11438]) ([cover.template docs]) ([light.template docs]) +- Climate: fix missing "|" ([@andrey-git] - [#11441]) ([climate.demo docs]) +- Google Assistant -> Google Actions ([@balloob] - [#11442]) ([cloud.iot docs]) +- Added new climate component from Daikin ([@rofrantz] - [#10983]) ([climate.daikin docs]) (new-platform) +- Updated generic thermostat to respect operation_mode and added away mode ([@ciotlosm] - [#11445]) ([climate.generic_thermostat docs]) +- Reconnect to alarmdecoder on disconnect ([@PhracturedBlue] - [#11383]) ([alarmdecoder docs]) +- Set tahoma cover scan interval to 60 seconds ([@bakedraccoon] - [#11447]) ([cover.tahoma docs]) +- Add some tests to the cloud component ([@balloob] - [#11460]) ([cloud docs]) ([cloud.iot docs]) +- Input Select - Added service description ([@cdce8p] - [#11456]) ([input_select docs]) +- Input Boolean - Deleted 'DEFAULT_INITIAL' ([@cdce8p] - [#11453]) ([input_boolean docs]) +- Updated gitignore file ([@cdce8p] - [#11452]) +- Update hydroquebec component to use hass httpsession ([@titilambert] - [#11412]) ([sensor.hydroquebec docs]) +- Catch everything when calling to OctoPrint API to fix #10557 ([@w1ll1am23] - [#11457]) ([octoprint docs]) +- Update PULL_REQUEST_TEMPLATE.md ([@danielhiversen] - [#11465]) +- Alexa to not use customize for entity config ([@balloob] - [#11461]) ([cloud docs]) ([alexa.smart_home docs]) (breaking change) +- Don't duplicate html5 registrations ([@Chris-V] - [#11451]) ([notify.html5 docs]) +- AlarmDecoder remove icon function as BinarySensorDevice handles it correctly now ([@hawk259] - [#11467]) ([binary_sensor.alarmdecoder docs]) +- Upgrade psutil to 5.4.3 ([@fabaff] - [#11468]) ([sensor.systemmonitor docs]) +- Upgrade alpha_vantage to 1.8.0 ([@fabaff] - [#11476]) ([sensor.alpha_vantage docs]) +- Fix vultr tests ([@balloob] - [#11477]) +- Upgrade yarl to 0.17.0 ([@fabaff] - [#11478]) +- Add Touchline climate platform ([@abondoe] - [#10547]) ([climate.touchline docs]) (new-platform) +- Upgrade pysnmp to 4.4.4 ([@fabaff] - [#11485]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) +- Add new iGlo component ([@jesserockz] - [#11171]) ([light.iglo docs]) (new-platform) +- Add missing configuration variables ([@fabaff] - [#11390]) ([sensor.metoffice docs]) +- Clean up Alexa.intent and DialogFlow.intent ([@balloob] - [#11492]) ([alexa.intent docs]) +- Fix time functions would throw errors in python scripts ([@tomwaters] - [#11414]) ([python_script docs]) +- Upgrade pywebpush to 1.5.0 ([@Chris-V] - [#11497]) ([notify.html5 docs]) +- upgrade schiene to 0.20 ([@JulianKahnert] - [#11504]) ([sensor.deutsche_bahn docs]) +- timer: include the remaining time in the state attributes ([@Julio-Guerra] - [#11510]) ([timer docs]) +- More tolerant KNX component if gateway cant be connected ([@Julius2342] - [#11511]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) +- Snips (new) added speech response, parse snips/duration ([@tschmidty69] - [#11513]) ([snips docs]) +- Add Dark Sky weather component ([@DanNixon] - [#11435]) ([weather.darksky docs]) (new-platform) +- Lazy loading of service descriptions ([@amelchio] - [#11479]) ([api docs]) ([websocket_api docs]) ([light.lifx docs]) +- Fix canary flaky test ([@balloob] - [#11519]) +- Address missed review comments for Dark Sky weather ([@DanNixon] - [#11520]) ([weather.darksky docs]) +- New features for Owntracks device_tracker ([@cpcowart] - [#11480]) ([device_tracker.owntracks docs]) +- Reconnect before mochad switch send command ([@aosadchyy] - [#11296]) ([switch.mochad docs]) +- Fix Kodi channels media type ([@florianj1] - [#11505]) ([media_player.kodi docs]) +- Extension sensor alpha_vantage ([@ChristianKuehnel] - [#11427]) ([sensor.alpha_vantage docs]) (breaking change) +- MQTT json attributes ([@timstanley1985] - [#11439]) ([sensor.mqtt docs]) +- Support pushing all sensors and fix wrong metrics. ([@michaelkuty] - [#11159]) ([prometheus docs]) (breaking change) +- Add options feature to Baidu TTS. ([@yienxu] - [#11462]) ([tts.baidu docs]) +- Insteon local update ([@camrun91] - [#11088]) ([insteon_local docs]) ([fan.insteon_local docs]) ([light.insteon_local docs]) ([switch.insteon_local docs]) (breaking change) +- Snips: (fix) support new intentName format ([@tschmidty69] - [#11509]) ([snips docs]) +- Upgrade numpy to 1.14.0 ([@fabaff] - [#11542]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) +- Upgrade python-etherscan-api to 0.0.2 ([@fabaff] - [#11535]) ([sensor.etherscan docs]) +- Upgrade Sphinx to 1.6.6 ([@fabaff] - [#11534]) +- ZoneMinder event sensor updates ([@swilson] - [#11369]) ([sensor.zoneminder docs]) +- Move Google Assistant entity config out of customize ([@balloob] - [#11499]) ([cloud docs]) ([google_assistant docs]) (breaking change) +- Upgrade lightify to 1.0.6.1 ([@fabaff] - [#11545]) ([light.osramlightify docs]) +- Improved test runtime ([@cdce8p] - [#11553]) ([binary_sensor.workday docs]) +- Add 2 media_player services and 1 custom service to Squeezebox platform ([@ericpignet] - [#10969]) ([media_player.squeezebox docs]) +- Fix error on entity_config missing ([@philk] - [#11561]) ([google_assistant.http docs]) +- Upgrade keyring to 10.3.2 ([@fabaff] - [#11531]) +- Coinbase.com sensor platform ([@nkgilley] - [#11036]) ([coinbase docs]) ([sensor.coinbase docs]) (new-platform) +- Try to fix crashes after Hue refactoring ([@andreacampi] - [#11270]) ([light.hue docs]) +- Remove execution file perm ([@balloob] - [#11563]) +- Deprecate explicit entity_id in template platforms ([@amelchio] - [#11123]) ([binary_sensor.template docs]) ([cover.template docs]) ([light.template docs]) ([sensor.template docs]) ([switch.template docs]) +- Test tweaks ([@balloob] - [#11560]) +- Add Velux Windows to Tahoma ([@bakedraccoon] - [#11538]) ([tahoma docs]) ([cover.tahoma docs]) +- Extend hass.io services / updater ([@pvizeli] - [#11549]) ([hassio docs]) +- Add sensibo_assume_state service to Sensibo climate ([@andrey-git] - [#11567]) ([climate.sensibo docs]) +- Tracking all groups to allow changing of existing groups ([@randellhodges] - [#11444]) ([group docs]) +- Fix new squeezebox service descriptions for lazy loading ([@amelchio] - [#11574]) ([media_player.squeezebox docs]) +- Mark REST binary_sensor unavailable if request fails ([@DanNixon] - [#11506]) ([binary_sensor.rest docs]) +- Tado improvements - hot water zone sensors and climate precision ([@andersonshatch] - [#11521]) ([climate.tado docs]) ([sensor.tado docs]) +- Make the rpi_rf component thread-safe using an RLock ([@ulido] - [#11487]) ([switch.rpi_rf docs]) +- Update pyhomematic, support new devices ([@danielperna84] - [#11578]) ([homematic docs]) +- Alarmdecoder add validation of the zone types ([@hawk259] - [#11488]) ([alarmdecoder docs]) +- Support OSRAM lights on ZHA ([@armills] - [#11522]) ([light.zha docs]) +- Fix bluetooth tracker source ([@swilson] - [#11469]) ([device_tracker docs]) ([device_tracker.bluetooth_le_tracker docs]) ([device_tracker.bluetooth_tracker docs]) +- Fix for asuswrt, telnet not working and presence-detection for router mode ([@kennedyshead] - [#11422]) ([device_tracker.asuswrt docs]) +- Remove aux_heat support from Sensibo now that UI supports on/off ([@andrey-git] - [#11579]) ([climate.sensibo docs]) (breaking change) +- Changed device type of media player and cover to switch ([@Laqoore] - [#11483]) ([google_assistant.smart_home docs]) +- Control ordering of display in history component ([@rwa] - [#11340]) ([history docs]) +- Pr/11430 ([@balloob] - [#11587]) +- Cast return values and add unit tests for the yahoo weather component. ([@cgtobi] - [#10699]) ([weather.yweather docs]) +- add velux roller shutter to tahoma ([@bakedraccoon] - [#11586]) ([tahoma docs]) +- Added support for enable/disable motion detection ([@abjorshammar] - [#11583]) ([camera.uvc docs]) +- Avoid returning empty media_image_url string ([@JackWindows] - [#11557]) ([media_player.cast docs]) +- Core support for hass.io calls & Bugfix check_config ([@pvizeli] - [#11571]) ([__init__ docs]) ([hassio docs]) ([updater docs]) +- Fix Tahoma stop command for 2 types of shutters ([@bakedraccoon] - [#11588]) ([cover.tahoma docs]) +- Pushbullet email support (fix) ([@tschmidty69] - [#11590]) ([notify.pushbullet docs]) +- Fix state for trigger with forced updates ([@armills] - [#11595]) ([automation.state docs]) +- Snips add say and say_actions services (new) ([@tschmidty69] - [#11596]) ([snips docs]) +- Concord232 alarm arm away fix ([@rwa] - [#11597]) ([alarm_control_panel.concord232 docs]) ([binary_sensor.concord232 docs]) +- Bugfix and cleanup for Rfxtrx ([@danielhiversen] - [#11600]) +- Xiaomi lib upgrade ([@danielhiversen] - [#11603]) +- Upgrade yarl to 0.18.0 ([@fabaff] - [#11609]) +- patch stop command ([@bakedraccoon] - [#11612]) ([cover.tahoma docs]) +- Use kelvin/mireds correctly for setting iglo white ([@jesserockz] - [#11622]) +- Update Pyarlo to 0.1.2 ([@arsaboo] - [#11626]) + +[#10296]: https://github.com/home-assistant/home-assistant/pull/10296 +[#10321]: https://github.com/home-assistant/home-assistant/pull/10321 +[#10547]: https://github.com/home-assistant/home-assistant/pull/10547 +[#10699]: https://github.com/home-assistant/home-assistant/pull/10699 +[#10795]: https://github.com/home-assistant/home-assistant/pull/10795 +[#10841]: https://github.com/home-assistant/home-assistant/pull/10841 +[#10957]: https://github.com/home-assistant/home-assistant/pull/10957 +[#10969]: https://github.com/home-assistant/home-assistant/pull/10969 +[#10979]: https://github.com/home-assistant/home-assistant/pull/10979 +[#10983]: https://github.com/home-assistant/home-assistant/pull/10983 +[#11023]: https://github.com/home-assistant/home-assistant/pull/11023 +[#11027]: https://github.com/home-assistant/home-assistant/pull/11027 +[#11036]: https://github.com/home-assistant/home-assistant/pull/11036 +[#11039]: https://github.com/home-assistant/home-assistant/pull/11039 +[#11053]: https://github.com/home-assistant/home-assistant/pull/11053 +[#11064]: https://github.com/home-assistant/home-assistant/pull/11064 +[#11069]: https://github.com/home-assistant/home-assistant/pull/11069 +[#11072]: https://github.com/home-assistant/home-assistant/pull/11072 +[#11088]: https://github.com/home-assistant/home-assistant/pull/11088 +[#11096]: https://github.com/home-assistant/home-assistant/pull/11096 +[#11110]: https://github.com/home-assistant/home-assistant/pull/11110 +[#11123]: https://github.com/home-assistant/home-assistant/pull/11123 +[#11140]: https://github.com/home-assistant/home-assistant/pull/11140 +[#11159]: https://github.com/home-assistant/home-assistant/pull/11159 +[#11171]: https://github.com/home-assistant/home-assistant/pull/11171 +[#11172]: https://github.com/home-assistant/home-assistant/pull/11172 +[#11175]: https://github.com/home-assistant/home-assistant/pull/11175 +[#11180]: https://github.com/home-assistant/home-assistant/pull/11180 +[#11182]: https://github.com/home-assistant/home-assistant/pull/11182 +[#11188]: https://github.com/home-assistant/home-assistant/pull/11188 +[#11193]: https://github.com/home-assistant/home-assistant/pull/11193 +[#11202]: https://github.com/home-assistant/home-assistant/pull/11202 +[#11216]: https://github.com/home-assistant/home-assistant/pull/11216 +[#11232]: https://github.com/home-assistant/home-assistant/pull/11232 +[#11235]: https://github.com/home-assistant/home-assistant/pull/11235 +[#11238]: https://github.com/home-assistant/home-assistant/pull/11238 +[#11242]: https://github.com/home-assistant/home-assistant/pull/11242 +[#11243]: https://github.com/home-assistant/home-assistant/pull/11243 +[#11244]: https://github.com/home-assistant/home-assistant/pull/11244 +[#11245]: https://github.com/home-assistant/home-assistant/pull/11245 +[#11250]: https://github.com/home-assistant/home-assistant/pull/11250 +[#11251]: https://github.com/home-assistant/home-assistant/pull/11251 +[#11260]: https://github.com/home-assistant/home-assistant/pull/11260 +[#11268]: https://github.com/home-assistant/home-assistant/pull/11268 +[#11269]: https://github.com/home-assistant/home-assistant/pull/11269 +[#11270]: https://github.com/home-assistant/home-assistant/pull/11270 +[#11271]: https://github.com/home-assistant/home-assistant/pull/11271 +[#11274]: https://github.com/home-assistant/home-assistant/pull/11274 +[#11280]: https://github.com/home-assistant/home-assistant/pull/11280 +[#11281]: https://github.com/home-assistant/home-assistant/pull/11281 +[#11282]: https://github.com/home-assistant/home-assistant/pull/11282 +[#11296]: https://github.com/home-assistant/home-assistant/pull/11296 +[#11297]: https://github.com/home-assistant/home-assistant/pull/11297 +[#11298]: https://github.com/home-assistant/home-assistant/pull/11298 +[#11301]: https://github.com/home-assistant/home-assistant/pull/11301 +[#11304]: https://github.com/home-assistant/home-assistant/pull/11304 +[#11307]: https://github.com/home-assistant/home-assistant/pull/11307 +[#11308]: https://github.com/home-assistant/home-assistant/pull/11308 +[#11309]: https://github.com/home-assistant/home-assistant/pull/11309 +[#11310]: https://github.com/home-assistant/home-assistant/pull/11310 +[#11311]: https://github.com/home-assistant/home-assistant/pull/11311 +[#11312]: https://github.com/home-assistant/home-assistant/pull/11312 +[#11315]: https://github.com/home-assistant/home-assistant/pull/11315 +[#11316]: https://github.com/home-assistant/home-assistant/pull/11316 +[#11317]: https://github.com/home-assistant/home-assistant/pull/11317 +[#11318]: https://github.com/home-assistant/home-assistant/pull/11318 +[#11319]: https://github.com/home-assistant/home-assistant/pull/11319 +[#11326]: https://github.com/home-assistant/home-assistant/pull/11326 +[#11329]: https://github.com/home-assistant/home-assistant/pull/11329 +[#11331]: https://github.com/home-assistant/home-assistant/pull/11331 +[#11332]: https://github.com/home-assistant/home-assistant/pull/11332 +[#11333]: https://github.com/home-assistant/home-assistant/pull/11333 +[#11334]: https://github.com/home-assistant/home-assistant/pull/11334 +[#11335]: https://github.com/home-assistant/home-assistant/pull/11335 +[#11336]: https://github.com/home-assistant/home-assistant/pull/11336 +[#11340]: https://github.com/home-assistant/home-assistant/pull/11340 +[#11341]: https://github.com/home-assistant/home-assistant/pull/11341 +[#11344]: https://github.com/home-assistant/home-assistant/pull/11344 +[#11345]: https://github.com/home-assistant/home-assistant/pull/11345 +[#11346]: https://github.com/home-assistant/home-assistant/pull/11346 +[#11348]: https://github.com/home-assistant/home-assistant/pull/11348 +[#11350]: https://github.com/home-assistant/home-assistant/pull/11350 +[#11352]: https://github.com/home-assistant/home-assistant/pull/11352 +[#11354]: https://github.com/home-assistant/home-assistant/pull/11354 +[#11357]: https://github.com/home-assistant/home-assistant/pull/11357 +[#11362]: https://github.com/home-assistant/home-assistant/pull/11362 +[#11369]: https://github.com/home-assistant/home-assistant/pull/11369 +[#11375]: https://github.com/home-assistant/home-assistant/pull/11375 +[#11379]: https://github.com/home-assistant/home-assistant/pull/11379 +[#11381]: https://github.com/home-assistant/home-assistant/pull/11381 +[#11383]: https://github.com/home-assistant/home-assistant/pull/11383 +[#11386]: https://github.com/home-assistant/home-assistant/pull/11386 +[#11390]: https://github.com/home-assistant/home-assistant/pull/11390 +[#11394]: https://github.com/home-assistant/home-assistant/pull/11394 +[#11395]: https://github.com/home-assistant/home-assistant/pull/11395 +[#11397]: https://github.com/home-assistant/home-assistant/pull/11397 +[#11401]: https://github.com/home-assistant/home-assistant/pull/11401 +[#11402]: https://github.com/home-assistant/home-assistant/pull/11402 +[#11404]: https://github.com/home-assistant/home-assistant/pull/11404 +[#11410]: https://github.com/home-assistant/home-assistant/pull/11410 +[#11412]: https://github.com/home-assistant/home-assistant/pull/11412 +[#11414]: https://github.com/home-assistant/home-assistant/pull/11414 +[#11416]: https://github.com/home-assistant/home-assistant/pull/11416 +[#11417]: https://github.com/home-assistant/home-assistant/pull/11417 +[#11422]: https://github.com/home-assistant/home-assistant/pull/11422 +[#11423]: https://github.com/home-assistant/home-assistant/pull/11423 +[#11427]: https://github.com/home-assistant/home-assistant/pull/11427 +[#11435]: https://github.com/home-assistant/home-assistant/pull/11435 +[#11438]: https://github.com/home-assistant/home-assistant/pull/11438 +[#11439]: https://github.com/home-assistant/home-assistant/pull/11439 +[#11441]: https://github.com/home-assistant/home-assistant/pull/11441 +[#11442]: https://github.com/home-assistant/home-assistant/pull/11442 +[#11444]: https://github.com/home-assistant/home-assistant/pull/11444 +[#11445]: https://github.com/home-assistant/home-assistant/pull/11445 +[#11447]: https://github.com/home-assistant/home-assistant/pull/11447 +[#11451]: https://github.com/home-assistant/home-assistant/pull/11451 +[#11452]: https://github.com/home-assistant/home-assistant/pull/11452 +[#11453]: https://github.com/home-assistant/home-assistant/pull/11453 +[#11456]: https://github.com/home-assistant/home-assistant/pull/11456 +[#11457]: https://github.com/home-assistant/home-assistant/pull/11457 +[#11460]: https://github.com/home-assistant/home-assistant/pull/11460 +[#11461]: https://github.com/home-assistant/home-assistant/pull/11461 +[#11462]: https://github.com/home-assistant/home-assistant/pull/11462 +[#11465]: https://github.com/home-assistant/home-assistant/pull/11465 +[#11467]: https://github.com/home-assistant/home-assistant/pull/11467 +[#11468]: https://github.com/home-assistant/home-assistant/pull/11468 +[#11469]: https://github.com/home-assistant/home-assistant/pull/11469 +[#11476]: https://github.com/home-assistant/home-assistant/pull/11476 +[#11477]: https://github.com/home-assistant/home-assistant/pull/11477 +[#11478]: https://github.com/home-assistant/home-assistant/pull/11478 +[#11479]: https://github.com/home-assistant/home-assistant/pull/11479 +[#11480]: https://github.com/home-assistant/home-assistant/pull/11480 +[#11483]: https://github.com/home-assistant/home-assistant/pull/11483 +[#11485]: https://github.com/home-assistant/home-assistant/pull/11485 +[#11487]: https://github.com/home-assistant/home-assistant/pull/11487 +[#11488]: https://github.com/home-assistant/home-assistant/pull/11488 +[#11492]: https://github.com/home-assistant/home-assistant/pull/11492 +[#11497]: https://github.com/home-assistant/home-assistant/pull/11497 +[#11499]: https://github.com/home-assistant/home-assistant/pull/11499 +[#11504]: https://github.com/home-assistant/home-assistant/pull/11504 +[#11505]: https://github.com/home-assistant/home-assistant/pull/11505 +[#11506]: https://github.com/home-assistant/home-assistant/pull/11506 +[#11509]: https://github.com/home-assistant/home-assistant/pull/11509 +[#11510]: https://github.com/home-assistant/home-assistant/pull/11510 +[#11511]: https://github.com/home-assistant/home-assistant/pull/11511 +[#11513]: https://github.com/home-assistant/home-assistant/pull/11513 +[#11519]: https://github.com/home-assistant/home-assistant/pull/11519 +[#11520]: https://github.com/home-assistant/home-assistant/pull/11520 +[#11521]: https://github.com/home-assistant/home-assistant/pull/11521 +[#11522]: https://github.com/home-assistant/home-assistant/pull/11522 +[#11531]: https://github.com/home-assistant/home-assistant/pull/11531 +[#11534]: https://github.com/home-assistant/home-assistant/pull/11534 +[#11535]: https://github.com/home-assistant/home-assistant/pull/11535 +[#11538]: https://github.com/home-assistant/home-assistant/pull/11538 +[#11542]: https://github.com/home-assistant/home-assistant/pull/11542 +[#11545]: https://github.com/home-assistant/home-assistant/pull/11545 +[#11549]: https://github.com/home-assistant/home-assistant/pull/11549 +[#11553]: https://github.com/home-assistant/home-assistant/pull/11553 +[#11557]: https://github.com/home-assistant/home-assistant/pull/11557 +[#11560]: https://github.com/home-assistant/home-assistant/pull/11560 +[#11561]: https://github.com/home-assistant/home-assistant/pull/11561 +[#11563]: https://github.com/home-assistant/home-assistant/pull/11563 +[#11567]: https://github.com/home-assistant/home-assistant/pull/11567 +[#11571]: https://github.com/home-assistant/home-assistant/pull/11571 +[#11574]: https://github.com/home-assistant/home-assistant/pull/11574 +[#11578]: https://github.com/home-assistant/home-assistant/pull/11578 +[#11579]: https://github.com/home-assistant/home-assistant/pull/11579 +[#11583]: https://github.com/home-assistant/home-assistant/pull/11583 +[#11586]: https://github.com/home-assistant/home-assistant/pull/11586 +[#11587]: https://github.com/home-assistant/home-assistant/pull/11587 +[#11588]: https://github.com/home-assistant/home-assistant/pull/11588 +[#11590]: https://github.com/home-assistant/home-assistant/pull/11590 +[#11595]: https://github.com/home-assistant/home-assistant/pull/11595 +[#11596]: https://github.com/home-assistant/home-assistant/pull/11596 +[#11597]: https://github.com/home-assistant/home-assistant/pull/11597 +[#11600]: https://github.com/home-assistant/home-assistant/pull/11600 +[#11603]: https://github.com/home-assistant/home-assistant/pull/11603 +[#11609]: https://github.com/home-assistant/home-assistant/pull/11609 +[#11612]: https://github.com/home-assistant/home-assistant/pull/11612 +[#11622]: https://github.com/home-assistant/home-assistant/pull/11622 +[#11626]: https://github.com/home-assistant/home-assistant/pull/11626 +[@Chris-V]: https://github.com/Chris-V +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@DanNixon]: https://github.com/DanNixon +[@Human]: https://github.com/Human +[@JackWindows]: https://github.com/JackWindows +[@JulianKahnert]: https://github.com/JulianKahnert +[@Julio-Guerra]: https://github.com/Julio-Guerra +[@Julius2342]: https://github.com/Julius2342 +[@KJonline]: https://github.com/KJonline +[@Kane610]: https://github.com/Kane610 +[@Klathmon]: https://github.com/Klathmon +[@Klikini]: https://github.com/Klikini +[@Laqoore]: https://github.com/Laqoore +[@OttoWinter]: https://github.com/OttoWinter +[@OverloadUT]: https://github.com/OverloadUT +[@PeWu]: https://github.com/PeWu +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@SteveEasley]: https://github.com/SteveEasley +[@abjorshammar]: https://github.com/abjorshammar +[@abondoe]: https://github.com/abondoe +[@akatrevorjay]: https://github.com/akatrevorjay +[@amelchio]: https://github.com/amelchio +[@andersonshatch]: https://github.com/andersonshatch +[@andreacampi]: https://github.com/andreacampi +[@andrey-git]: https://github.com/andrey-git +[@aosadchyy]: https://github.com/aosadchyy +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@awkwardDuck]: https://github.com/awkwardDuck +[@bachya]: https://github.com/bachya +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@camrun91]: https://github.com/camrun91 +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@ciotlosm]: https://github.com/ciotlosm +[@cmsimike]: https://github.com/cmsimike +[@cnrd]: https://github.com/cnrd +[@cpcowart]: https://github.com/cpcowart +[@daenny]: https://github.com/daenny +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@dfiel]: https://github.com/dfiel +[@dfinlay]: https://github.com/dfinlay +[@djchen]: https://github.com/djchen +[@ericpignet]: https://github.com/ericpignet +[@etsinko]: https://github.com/etsinko +[@fabaff]: https://github.com/fabaff +[@florianj1]: https://github.com/florianj1 +[@foxel]: https://github.com/foxel +[@frwickst]: https://github.com/frwickst +[@goldminenine]: https://github.com/goldminenine +[@goyney]: https://github.com/goyney +[@hawk259]: https://github.com/hawk259 +[@jbarrancos]: https://github.com/jbarrancos +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@jesserockz]: https://github.com/jesserockz +[@kennedyshead]: https://github.com/kennedyshead +[@markferry]: https://github.com/markferry +[@masarliev]: https://github.com/masarliev +[@michaelkuty]: https://github.com/michaelkuty +[@nkgilley]: https://github.com/nkgilley +[@notoriousbdg]: https://github.com/notoriousbdg +[@pavoni]: https://github.com/pavoni +[@philk]: https://github.com/philk +[@pvizeli]: https://github.com/pvizeli +[@randellhodges]: https://github.com/randellhodges +[@rofrantz]: https://github.com/rofrantz +[@rwa]: https://github.com/rwa +[@ryanm101]: https://github.com/ryanm101 +[@schmittx]: https://github.com/schmittx +[@schnoetz]: https://github.com/schnoetz +[@swilson]: https://github.com/swilson +[@thibmaek]: https://github.com/thibmaek +[@timstanley1985]: https://github.com/timstanley1985 +[@tinloaf]: https://github.com/tinloaf +[@titilambert]: https://github.com/titilambert +[@tomaszduda23]: https://github.com/tomaszduda23 +[@tomwaters]: https://github.com/tomwaters +[@tschmidty69]: https://github.com/tschmidty69 +[@ttroy50]: https://github.com/ttroy50 +[@ulido]: https://github.com/ulido +[@veleek]: https://github.com/veleek +[@w1ll1am23]: https://github.com/w1ll1am23 +[@yienxu]: https://github.com/yienxu +[__init__ docs]: https://home-assistant.io/components/__init__/ +[alarm_control_panel.alarmdecoder docs]: https://home-assistant.io/components/alarm_control_panel.alarmdecoder/ +[alarm_control_panel.concord232 docs]: https://home-assistant.io/components/alarm_control_panel.concord232/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[alarmdecoder docs]: https://home-assistant.io/components/alarmdecoder/ +[alexa.intent docs]: https://home-assistant.io/components/alexa.intent/ +[alexa.smart_home docs]: https://home-assistant.io/components/alexa.smart_home/ +[api docs]: https://home-assistant.io/components/api/ +[automation.state docs]: https://home-assistant.io/docs/automation/trigger/#state-trigger +[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/ +[binary_sensor.alarmdecoder docs]: https://home-assistant.io/components/binary_sensor.alarmdecoder/ +[binary_sensor.concord232 docs]: https://home-assistant.io/components/binary_sensor.concord232/ +[binary_sensor.deconz docs]: https://home-assistant.io/components/binary_sensor.deconz/ +[binary_sensor.isy994 docs]: https://home-assistant.io/components/binary_sensor.isy994/ +[binary_sensor.knx docs]: https://home-assistant.io/components/binary_sensor.knx/ +[binary_sensor.rest docs]: https://home-assistant.io/components/binary_sensor.rest/ +[binary_sensor.template docs]: https://home-assistant.io/components/binary_sensor.template/ +[binary_sensor.threshold docs]: https://home-assistant.io/components/binary_sensor.threshold/ +[binary_sensor.trend docs]: https://home-assistant.io/components/binary_sensor.trend/ +[binary_sensor.workday docs]: https://home-assistant.io/components/binary_sensor.workday/ +[camera.doorbird docs]: https://home-assistant.io/components/camera.doorbird/ +[camera.uvc docs]: https://home-assistant.io/components/camera.uvc/ +[climate docs]: https://home-assistant.io/components/climate/ +[climate.daikin docs]: https://home-assistant.io/components/climate.daikin/ +[climate.demo docs]: https://home-assistant.io/components/climate.demo/ +[climate.econet docs]: https://home-assistant.io/components/climate.econet/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[climate.hive docs]: https://home-assistant.io/components/climate.hive/ +[climate.homematic docs]: https://home-assistant.io/components/climate.homematic/ +[climate.knx docs]: https://home-assistant.io/components/climate.knx/ +[climate.netatmo docs]: https://home-assistant.io/components/climate.netatmo/ +[climate.sensibo docs]: https://home-assistant.io/components/climate.sensibo/ +[climate.tado docs]: https://home-assistant.io/components/climate.tado/ +[climate.touchline docs]: https://home-assistant.io/components/climate.touchline/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[cloud.auth_api docs]: https://home-assistant.io/components/cloud.auth_api/ +[cloud.http_api docs]: https://home-assistant.io/components/cloud.http_api/ +[cloud.iot docs]: https://home-assistant.io/components/cloud.iot/ +[coinbase docs]: https://home-assistant.io/components/coinbase/ +[conversation docs]: https://home-assistant.io/components/conversation/ +[cover.isy994 docs]: https://home-assistant.io/components/cover.isy994/ +[cover.knx docs]: https://home-assistant.io/components/cover.knx/ +[cover.tahoma docs]: https://home-assistant.io/components/cover.tahoma/ +[cover.template docs]: https://home-assistant.io/components/cover.template/ +[cover.xiaomi_aqara docs]: https://home-assistant.io/components/cover.xiaomi_aqara/ +[deconz docs]: https://home-assistant.io/components/deconz/ +[device_tracker docs]: https://home-assistant.io/components/device_tracker/ +[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/ +[device_tracker.bluetooth_le_tracker docs]: https://home-assistant.io/components/device_tracker.bluetooth_le_tracker/ +[device_tracker.bluetooth_tracker docs]: https://home-assistant.io/components/device_tracker.bluetooth_tracker/ +[device_tracker.gpslogger docs]: https://home-assistant.io/components/device_tracker.gpslogger/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.ping docs]: https://home-assistant.io/components/device_tracker.ping/ +[device_tracker.snmp docs]: https://home-assistant.io/components/device_tracker.snmp/ +[device_tracker.tile docs]: https://home-assistant.io/components/device_tracker.tile/ +[digital_ocean docs]: https://home-assistant.io/components/digital_ocean/ +[fan.insteon_local docs]: https://home-assistant.io/components/fan.insteon_local/ +[fan.isy994 docs]: https://home-assistant.io/components/fan.isy994/ +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[google_assistant.http docs]: https://home-assistant.io/components/google_assistant.http/ +[google_assistant.smart_home docs]: https://home-assistant.io/components/google_assistant.smart_home/ +[group docs]: https://home-assistant.io/components/group/ +[hassio docs]: https://home-assistant.io/components/hassio/ +[history docs]: https://home-assistant.io/components/history/ +[hive docs]: https://home-assistant.io/components/hive/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[http docs]: https://home-assistant.io/components/http/ +[image_processing.opencv docs]: https://home-assistant.io/components/image_processing.opencv/ +[input_boolean docs]: https://home-assistant.io/components/input_boolean/ +[input_select docs]: https://home-assistant.io/components/input_select/ +[insteon_local docs]: https://home-assistant.io/components/insteon_local/ +[isy994 docs]: https://home-assistant.io/components/isy994/ +[knx docs]: https://home-assistant.io/components/knx/ +[light.deconz docs]: https://home-assistant.io/components/light.deconz/ +[light.greenwave docs]: https://home-assistant.io/components/light.greenwave/ +[light.hive docs]: https://home-assistant.io/components/light.hive/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.iglo docs]: https://home-assistant.io/components/light.iglo/ +[light.insteon_local docs]: https://home-assistant.io/components/light.insteon_local/ +[light.isy994 docs]: https://home-assistant.io/components/light.isy994/ +[light.knx docs]: https://home-assistant.io/components/light.knx/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.mqtt docs]: https://home-assistant.io/components/light.mqtt/ +[light.osramlightify docs]: https://home-assistant.io/components/light.osramlightify/ +[light.template docs]: https://home-assistant.io/components/light.template/ +[light.tplink docs]: https://home-assistant.io/components/light.tplink/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[lock.isy994 docs]: https://home-assistant.io/components/lock.isy994/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[media_player.kodi docs]: https://home-assistant.io/components/media_player.kodi/ +[media_player.monoprice docs]: https://home-assistant.io/components/media_player.monoprice/ +[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/ +[media_player.squeezebox docs]: https://home-assistant.io/components/media_player.squeezebox/ +[media_player.yamaha docs]: https://home-assistant.io/components/media_player.yamaha/ +[modbus docs]: https://home-assistant.io/components/modbus/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[notify.pushbullet docs]: https://home-assistant.io/components/notify.pushbullet/ +[notify.webostv docs]: https://home-assistant.io/components/notify.webostv/ +[octoprint docs]: https://home-assistant.io/components/octoprint/ +[prometheus docs]: https://home-assistant.io/components/prometheus/ +[python_script docs]: https://home-assistant.io/components/python_script/ +[rainbird docs]: https://home-assistant.io/components/rainbird/ +[remember_the_milk docs]: https://home-assistant.io/components/remember_the_milk/ +[sensor.alpha_vantage docs]: https://home-assistant.io/components/sensor.alpha_vantage/ +[sensor.bitcoin docs]: https://home-assistant.io/components/sensor.bitcoin/ +[sensor.coinbase docs]: https://home-assistant.io/components/sensor.coinbase/ +[sensor.deconz docs]: https://home-assistant.io/components/sensor.deconz/ +[sensor.deutsche_bahn docs]: https://home-assistant.io/components/sensor.deutsche_bahn/ +[sensor.discogs docs]: https://home-assistant.io/components/sensor.discogs/ +[sensor.etherscan docs]: https://home-assistant.io/components/sensor.etherscan/ +[sensor.fido docs]: https://home-assistant.io/components/sensor.fido/ +[sensor.hydroquebec docs]: https://home-assistant.io/components/sensor.hydroquebec/ +[sensor.imap_email_content docs]: https://home-assistant.io/components/sensor.imap_email_content/ +[sensor.irish_rail_transport docs]: https://home-assistant.io/components/sensor.irish_rail_transport/ +[sensor.isy994 docs]: https://home-assistant.io/components/sensor.isy994/ +[sensor.knx docs]: https://home-assistant.io/components/sensor.knx/ +[sensor.luftdaten docs]: https://home-assistant.io/components/sensor.luftdaten/ +[sensor.metoffice docs]: https://home-assistant.io/components/sensor.metoffice/ +[sensor.miflora docs]: https://home-assistant.io/components/sensor.miflora/ +[sensor.mqtt docs]: https://home-assistant.io/components/sensor.mqtt/ +[sensor.openweathermap docs]: https://home-assistant.io/components/sensor.openweathermap/ +[sensor.plex docs]: https://home-assistant.io/components/sensor.plex/ +[sensor.rainbird docs]: https://home-assistant.io/components/sensor.rainbird/ +[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/ +[sensor.sochain docs]: https://home-assistant.io/components/sensor.sochain/ +[sensor.statistics docs]: https://home-assistant.io/components/sensor.statistics/ +[sensor.steam_online docs]: https://home-assistant.io/components/sensor.steam_online/ +[sensor.swiss_public_transport docs]: https://home-assistant.io/components/sensor.swiss_public_transport/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.tado docs]: https://home-assistant.io/components/sensor.tado/ +[sensor.template docs]: https://home-assistant.io/components/sensor.template/ +[sensor.transmission docs]: https://home-assistant.io/components/sensor.transmission/ +[sensor.xbox_live docs]: https://home-assistant.io/components/sensor.xbox_live/ +[sensor.zoneminder docs]: https://home-assistant.io/components/sensor.zoneminder/ +[snips docs]: https://home-assistant.io/components/snips/ +[switch.insteon_local docs]: https://home-assistant.io/components/switch.insteon_local/ +[switch.isy994 docs]: https://home-assistant.io/components/switch.isy994/ +[switch.knx docs]: https://home-assistant.io/components/switch.knx/ +[switch.mochad docs]: https://home-assistant.io/components/switch.mochad/ +[switch.rainbird docs]: https://home-assistant.io/components/switch.rainbird/ +[switch.rpi_rf docs]: https://home-assistant.io/components/switch.rpi_rf/ +[switch.snmp docs]: https://home-assistant.io/components/switch.snmp/ +[switch.template docs]: https://home-assistant.io/components/switch.template/ +[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/ +[switch.transmission docs]: https://home-assistant.io/components/switch.transmission/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[tahoma docs]: https://home-assistant.io/components/tahoma/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[timer docs]: https://home-assistant.io/components/timer/ +[tts.baidu docs]: https://home-assistant.io/components/tts.baidu/ +[tts.marytts docs]: https://home-assistant.io/components/tts.marytts/ +[updater docs]: https://home-assistant.io/components/updater/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[weather.darksky docs]: https://home-assistant.io/components/weather.darksky/ +[weather.openweathermap docs]: https://home-assistant.io/components/weather.openweathermap/ +[weather.yweather docs]: https://home-assistant.io/components/weather.yweather/ +[websocket_api docs]: https://home-assistant.io/components/websocket_api/ +[wemo docs]: https://home-assistant.io/components/wemo/ +[zigbee docs]: https://home-assistant.io/components/zigbee/ diff --git a/source/images/blog/2018-01-0.61/components.png b/source/images/blog/2018-01-0.61/components.png new file mode 100644 index 0000000000000000000000000000000000000000..8f03dfe6b70bf2b2e071afb83f82449b15e56767 GIT binary patch literal 106189 zcmcG#by$>L)ILfmN~3g(lytX%A|WZ=A>GZ;q0%7TjYBEj9nuZb-QC@F_PpQsJJ&hq z|MOlj?=TL`^X$F$TK9dgdj-qONuZ+;p}@hxp-X-iRfK~>G=qafIDUx)URhOE%>(~? z<|rbm{1W`<`O+u|{7mR1rtYLJNMh!uIq{F?F0dMY>fc-{BEC+>L^JSlgHfpkYGC{!iL6i0!Cxa?Y52|*N zbK?MgEENBL5YiyL#@y^wWcz#A!>J@6_UgK&?$EbuQ}AKQIP4Vl!xmMmPW)_Wl+HY5 zbabX7B*Ne!)l+fEkM~BC!L$snsLYL@1VfqvdzDwCNVRRnu27pR8g})R|BtJ8n1nuO zBEh&)Ui9P5@oQh^bPhw z?zCC81WOSZ=cvSZZ_=6| zptYvi?b8=ii6CyUTZ59{X#B8>ULyIb7pd+$dwek!3nIhz++%vR(%GETN#g&JvrK26Imm^uR!!JY`!s7$f z45=02Ck{m?(;bBZkv7DIcZ}o2gBGn`L3zN2B*)-!Quvv59bHxEwDG}->Q zIF=?Fl%Ab@@1r8}y5B@^VB|X@9D3NInmG=X1?*Y&bJ>>^$*i(5SBoAIr>71gzpz+Z z?%BOtTJkEWMN59cW%Rf25?1i?zp2TqpzNTN?3>w@#e2*mBLwO$Lej`uh!! z=yKG{44yZ*938f%B9BxMHE74tg+#YdO^6jyc@CqA(*9E9PNX-;G|C~WD8 zY<~-)l&F`(OyuQ9PTskC2m`tIHASvDG&ZEEZH2Wzp2_fE=EvHF!}OtiEIr=mvDCSx z=c_CV@k!`mxXs0dpXlaoXfRh{wD{ho0Sim>89%b`EABv9$-8QYGovgAh% z-pDb4EulpI7w)T=nSz2|s`2Hpmoy~NN_d%;fE(_(w(uv}GDR)hX`7j?v&a^OUM^Fx$79I4K_q z$q;BATyAyyNh}brkR=|O9v`x>Vy1ASETzAVAal3v6tNXXWRAt)u7|wHZh>oA$(;1wY%80&9;Fjz4h*|)< z&DT}QnRKi?>~>c5awFtib9R?QZIj`2S$B7L?c}elJ>|yziM;l2+XFF=ex;(EbSi$3 zR3u_B)swN8!{bz4vS(2r~V%FK{ZcC2*TIy*NfIyt%R z`o!>eVWG)bpw{)WFDCN%3y-z!RS^;%I#Vbg^1u3zbe+FO-+W=bNlgoU;I+bIPK@kw zVeX}5>a`!OCPv%ydpqK`*TzY${Pb`X z6B~Q}d`muvMb})BzQAinppQr&TzMkH(NUkMkjpZ?LH<@$gv zl1c(@o8nVINY}ic*Q~_cR?E@S%sZzQ@FM4244a-wtNVp=QzNm8 zAiVn3n%OhJX*4WT4=-@fgXc~OW6P3=PKs(hHD;Kpw@&$K`9_ZJfAS3^W+7j{%AyQz z(4;K&eCwYdmR@6dIeR>_j?^10I4JyF2rdHw>sL5z8ky~td1QMB+{=CuM1HM@{=tJ` zA1^}+zK8NsGiywo1>P`!i(2Utu59ar+`s^&WN~+K`YCS+ylO*Skyed9fk|kk$hp}6 zeyZ;Tluh66HNM=y^3t7!-85&jrz(vbVR8CUG8QxjgIq|)+M3C*JKUNhtaz_bvnm7% zh1Onu`i1p$JJr(D-%m+Ry#jEV$9Nmciwg2Jmu zBH>)~=w-<_3<9C4sU+`_Z5ZR@`?WYxZE8XpHg!Tua^t_a9K@R%chG(8OEQx~sI=*m zgq$w)BPl8qw%Js$zG;_)N@L_b(Ppk|;85HK-QK$EdK_?pq}DqyV8x-MqeEJtR+8J?+&nRi-oD&)wP@HA zNimShr{s;;Vcu_0#%eu_LzBT)wi52?sR8n@pvPsI`ydep8LtfQYx8Ik%j+exjq=9E zkeWr!!O4hfHjl}hRL8@a>4VE_E{n*tn9fFq&C^q8r(auCOiPT&IV+uMUP84%@g+qr z!h*ag8uo%bL2k%J!-1;?#7d*WvR@p+T%?Gi^j%+kOD>eNx5SO4olSg-c(6ua{Ar=- zqJz9!eX+ibf1)&F5UfhsQprD?olVDoetRN~rsy&Yam{l!U6@st9B8)k{JgwLrSx zFBP?Mp+ZK>r5c~5%VQE&XlN(Gd0N9KMsIaaK77v0WG5k}>M)+_>9^~)mgd1}4f|$Nn=qnF_ktxw*O$ zpQ855V&e9xI6CDNiSHKQ8NB+V^(&*W&t%9G;n3elA0U;S0H&4i2KxJ@(4P3xeij zaY0@&ew$i*Lp#y>%?W=;*P~$%3(A*+GgobGxX~B)3<18pyxfjI%{uq#dM#pSsYMu^ z*^QVlLi$IGO+~p3OiUY{_4tyyAyZSsH&1 zZyh->RFI9hS$58;bB4{}rv|p`=b0Oi?KrU-?2YeF|EX0Vv@27bG+N1tUEL zK}+G{uVaVwA^9TD+K_Vp{NuEnDKets<299`S4)o>?0G~kGe%dk&wk(2Ai&^u6eA_X zQjjNPCa#svX*bIV-kHe$HYt?Wl$Ck-lSqYWf2<-2GwR9q>Vxui8{E$U*>zeyVmSv9 zPHR@9QbMItLpte#1b=GMW)%tx{`6YQi<=pT?dGbPhe?Z9vMbWCo+t@1rgP9Uph*~L=LvJ6GUvSby>RKh3FOfYPfq(O1STe;p_d|A1z`4KuJ*BlW>{=CA%pHsRXVY9QEv5H1UMwKbvi;ZqnG&BzDJ+CH< zb>?;*&BBBpuMI(6==<>;HM<~-x5x~S_w1)6@BSrT#>CXr+2tbX zf;q__l|Jh9WHRHtDVJumR(4?gz#-F_7ij6Wl7_&2P)vixZ4hdn9Keoy5zx9K|LsTL zo15nlZ9&RFRGRGQ^>7v({Z9(o*w9LTqRbqs*|mCl)p2pxi-)(>hXo&PErS$uUZ!A8 zQi2WaVaYeVdn9V+E)aI4$z5@%B+Z@}7rXwV)BpHaUnehDck8SiP5|?^&OnpqEY~<@ zJ48>dgH@v<>xar*pFxbC784P7K|sGv804W4m52lliC6O#)sq<$&j8`yb2d8rBDLlZ zem*vgD`A+SbVbPB^%R;+M5@x2DNy0eHOy@sWu#uoP^2tbL{6pF@2l>*OX>slPs;K; z5yjmW6L!;#zXR@LC;aFN{;ZE>d0*lgpG=%N^vK4HaERTZwSV0i%^?x;2&D+|{fmuJ<*Y z?=nb>!UW0VmMcevCnQy+DjO8*SY-5#gY;)?x;EVm`h9d?FV}HN%+%&32a#D*OUYKU zHD&~&mBf7LS^gj?7}&SVCevvuVd-|$^!9bCs!6zPtGR893WHFIJU*vEYm(Sl&++U| z!tPtHk??+fY69+e#TfRrj32z-%_1b~sdqCR;YKCxf87mQ=bo~yGRvl&*~!>^+rIbL zV&wO6;7udrha8q4Hi`R8`5XQh`h}`t&$l)^o{J*O5mPz}T1~4+=1zUo4G8r%XC7_B z*hfEWh@0@6vH#oss~ql?PT8IrX@7NWbi$5-`cRo_@4?-}y`>T-FCy5FpM4js{47ya zHDR}rA3wT9B2r)Q7UFenP*-oKtE&?loxJEQoK+1F&NQqtLpw_N+wrS6n|hWt4qE!Q zBivUAr9eb^N?g4<=UJf28ZrK6^!lMvUitM8Yk=xpmb?<|c-_O3bAzY$4(#fF{6OHg zng2{RdeT0!v9Zy3yIU~tb+zCCkDV9x>r+7V_DQ9yFab*0&``L?l0_M-ew%Bx&BCG$Lk*T!5~yZhGV&+zR0Gt@b7Jq?_+@az zb{!Q-1_T*G9mVq^N3dRdrOeJ`qf;JSh&EVNmyWldn;Ia)Sq5+bakOhNZKJ~udf0!GQxl^4{RngIM zeq$2vGoT#@=44dlm4*k|l<$3JYKRzTdv`W{=6vL>D4E2f`MpY$bBHXeEewB?oodd1 z!Gr>ua*aR}D24b8fabIJ_QNyJKOvFt=dY%v;a(&1a~E`p#jw}9yJH|$XoGuUa)10b z)N*y_W;3XO5j(zyNzizffkJ~Ow|Z}H&i*CPOa;I&=>+D^t+UQW4m98O^=jL1A2@@w zTD-mTG>3_-=WC+?g=O=)Jzwjq!1DTTGD5)V`bM*&E;d#X2R}hxQ#BkxTTUQB_tuyu z1A=sDf=J?&-ezN)Bi(>BGm})SEw{UexG;-J;m+~j3B}Ib2{4fM<`TfXF+_Bvsw>p? z(Df-!jTeLVhvbw^W*}4EHk7GXPJ4Ku>`pf}B;U$cYGuvouUJ;xp5*ir+Up=YDyE@* zc2U>~JwDkIa%x{+^A&O?Igd&?>@YuC{EH*k(3MRgiPjsAdFn8xgEkaya}+i>619w= z?~B-ZF+RR$jbs)qM{IZ&O)%5aOB$!#)9(b%>2gwB;LJ%KX3nyiaU>6S94k~0;gW_) z?O{wun|tDWyYoIT*M|MfXK5$9iE|R~i($mXTxdOW+sY|iy^TSICh`u=i;!JIT=j_l zz5)9`Kgkn=vU%2)ldTJW^AFrUDJ$+oRNKf9Bz7?A4N;q&gxaKvzjpaUiNTeVxPaCk(d~PDN?%3J?zL)*AqvcmLh& zHWi09>jhOcUlaTXfW=Z{4d)6^1F1h?7xB9uznQDCrF|XT(Ihjr?$UBcdbQv}p2BTy z0h#f-yIi@t(`1|*DQIp^&yh~>ZuOuS9p3(Z1&AR;F+(Fb{DY}eS&mjvvnT+xdBc8f z8(jK*UfuL7i_eJHkRZjV3Mxf%8nTI90c0sEhWE>t39^^dfHF8{zn?A*XU&=T7+_Q< z*HBw5gd5WB+Xiw00m{{ksou5UW_ep!o&AVwV_3 zZlmw5YT{&6i|zKHJo4W2bjMU#t^aswb({*|#c^5$&UR%G`SYdMf5-&>1gG_TTmKEJ z`uCx|LM8oDYq5~X$TcFz91ShppQb5g&W4(cj(?MP^ z@pS0>V+cEU(q@On0{ zJ%45GtHZWexcIJGj6@j;&-fJapt-uXi5~<+Bvm3$lV8SFy|UQN`ffP(ux(?R#S8Hl zp>RH&pILeN6R_8!W}oZhmF*t&g_r-Fbhcnx>#SwT!D+e3Ic~1GqJ{!tllj#Cka5c+ zpSrcG)56!W+`-xfn<4%)wAb&EX*b{ILyhla(i+qoE=iqq5=N9d|5HW(e0gS;`y=eHXLsS7PA`Fi^+C;H2JAnw&^dOtpqjy99pa8ax+3;~|LdC6` zIp7wQ_xZK^M+b8npUj`fRk=ICVHSx07?X03PJ3qRq%5%@Px9{1Cmzj`-zKi4o@;H| zpwtS@>&PmoM9Oz$XTJTcZ_KtQT=Z4O<}F88F1wcu{li#l*{e70^@Ir}q%XWk=>O1S zDU2h%^@HG|;&CzE&ZiDqw62w}mTMjJTB8j(#3WDKtEt($gRsHD!Exg4krg9yUNJV>ZTKY zT!lI{LYF@WPHaiuM!ozc{}NrcFX?~taxfhFhfkrlBRg%f)}fP4#K^L?sg{~c{A{=# zOE+p?E!oMWyg!l-7xVQ6-c0yW(m1F1>n9=qBv0-5E5oDFiveyNAXXImANRW#5935d z!oH>>oZuYZY>L&%knI}pEfP6(BwTaf+Q`3Zklnk)x)c03C5xcXF?sQ& z!iS2ml9CNwlo2He@l}~L(!*a(evCS+|rD84%1BbF4mfcWdO7D zC2|RcaRkuVms0&LZm+UhRB8_&wtN{NOMkCFd7nqpptE*&h7`43u3ytxghJlI+BJ=h0T@JHV>6O$!8&l9}$nq|ae^x9&0rB_;C&u?LADX_n)E-(KN8aKd- z=6&o-&gymRQ^$-N~ zFz20I3rFsPxUw~I4)ak_`aXu4`xQL;g8T@d7k=A_V71a=t2F|}b#aNIIAO2^Imu}> zMl(siBnj|?Y(K*WO?=LGXZ~|(uKWgxvC8Dc@rwtQ(W_-wNggjD`o2*A}EAxIrR+zw9DuMkJ9suX>(cKSMrjV3NfOWN(h_bq~c z%xz?AfKJ?ifI!NL@9VNTPIjeKPgN{Z`pLCQ_NzjfA%fjblZjFdVy&6mz9{@A|Kh!8 zzO5L(1<}#bcuYFX388$Bo6Bc6(^ZygH3*d--hALC=~_E+N>vXMvbqZ={YlJI-#PfQ zW^RyLuQ{jUjW1X%RCnX=<0mgOMhlAYi2tNA zzV#$siHeT`XhO4db=Yh(hSUr*uTX{1l*%5yl`I(3d%i*;61RKy`E0uPoPRcrqmTzE zW(vx!Ca zJQon7c1Y!A`P>1z-kD5nf53gjW zfsh z^vG2j<7C7`MMOH^>LSKxx49?KwlU?DT`Tw%J$+rHh*B^pZUflE-R^{p@RilRvsUPi zH9Nw~Z2DjLD^G~clJF@4!PU;`)+FgX z{Qr0X{IGewQhEJdn{>hX;Gg*63StE#GGdGDUOB6_VfxU z)z)*Zn@n14T1kvkKu&k<`TDrmRpPjYu4j6G%{Efp65nN+B%*;Mm*@Kt@rB*Rgqp)# z5f6uPU($5pWB@$Ms%1Deb9$@JiF|-pJjFY7jQQu+&RR$2n?(^o8!4pjweFl@HU0oe8wy7h zinpON)>Ej2nvZ-vjWlX@GI6(>DKrxBEuY_~E2Jz;QNE?Tzc`@uv{n^HGOn|qVN&Np zkJ&y)pjM%nP092I^4;R1>JZ_lrk~qK6bqK!`eUrPII4c?%~i4YKk7~9geRf#X{*an zj!`~&?JxF_pi-ODHUSB`{Fm&eiu{P9I<;vd9?13Z5DMSuUDgJSyWs5*fBbXG_PLXa zpw;u$3wKFr={-9f3D7_U(iS+$U94!$XK6=pBdD78_H0p~v-=mU;uK|4xQpi8@S!Xt z|NcRICu~b7DJgx+vLp=3Ixv@wM>t=IrE0eauKoQVv?9g>8{30_Qi-b2%Fx%&p|_0D=TMw)$S-yz0>A zJ&_`jrm+Q4x?wUqqyHbu=w3PdRR{H2Cks4@{!b%tUwG*9QNZ2$7cS_2l!B&xozBc; z7lnM9k^oWaWb-ybZZPDzPm`D=B&el`udgqn@5J5eosxngDKwLvU{A=b$_yw^$Ah6S zI?!`hWlJ3wuQ{E`i`G6!lIH%v6e?J?GZ!>`K@*j>+F>*G4i@n1pD+@>W?1l!{tL_a4 z`$-MclgGOwmqh0gs2Cs-e2ykSyG8Tu>ytuj-#)F2OHCap)TpSBv!%Fwi~hU#^5k~U zHoEkf9|@BzC?`(enM=0arY0smUEJMWvtZ9WRFOtVj|p`96hS^4|7bxWCkPlJxfea4 zi;1l7qDu7skr#-q2?u&UBMyjWx$>vG@?RSzrzOach_uBI}V4 zbokv*NO#h^zo@*mFjD-1hNR6Un8Fe0Ugp9&aNlcEVUg{=AA1MLWCtq_2yCf*5vEa# zWbq&EZ6IeeCPuZd|2jD{;j9*qpYYQ-)kl8Ok09z4Dy%3#+@V9;kb8VL}2{`da#be zO{wj;@G>!~EmOI>ZAdRd_V`Sd9ZD=#aGKiDdFKBreGwG%^73lfA<~+;+@JB)Cjc%F zwD!#We3Y!Po2OYvkYv^_+y&&`bN*ZA{gdd8q2^ zvpu;R5(3);pFJTS6f@evd3R3@|B&`FRc1+3|mVF>cGu z#&awJD*c?kzI<*!;IHD=I4r6KK&$B3LO{fISj`*Yl2iyLoJ`+LrHC#8Y zUE9==cABa69)c4RT3-8LFGxK>;R&Bs>b*ZB&@lLer&V0HJ|*~5bRs}QQFX{gNX(Kp z#Aic8MqhJNWE%>mA=&Y(yW95T5NstnMj}^jRc#E0US#guyas|rmhXgyqjob{-5qP? zb{l*e`$C%CE9G!1kXHy4l$Y;Q7V@LktJzq`29w%jlK8meC}wPuF;TM3BU3il>(8Ju z>bA2w?WPjvZy9cS5SSKxOjmWty2zxIt<`2HxndF9NuL&a$*P$Hj?|#4RLiz)AX}})V zv-t@lSKjhbc;j=SBN^A%nTTU>bY&~bzsjD+ryyV})#OxseQ+*q&;Ev^-b(A!@K!G0 z&0}Nh_HEhUV)Hi%>FdkH_~@C7oe-q_;|i-k+q~zq0v7%ppOr zX5@+)5a{2u>UXAmrKBE_(~M556cs?0v)r!*9nPECn}_(5C6?Pd3p&vgLSF$^ zUPv+#IRj{RrwiUC3S3E}k;MkKulzMAb5aksYD{_^F8cdj$=3yey_wsQZqYXPlqpOK zISH^SI$rD_EZ1dA*JMjM8ubtY2(2YUFnEZp&CQS2odk-|_7eUsTk!-)T8WYrO#B!e zJ?ZEH%Ly`%wKpK@1dFUk>ZY|Msx%lj9$r}1VN%i#k@4$a6BP*pLaG_*o+k%X=`S_B zE(Fkkj!Xc2wcpjT$r5Q|XYEy*jReXS9gxI4ONaws@H@;u13bAldlA%&G!ssZYBYP! z`N0;KPFZZ$U!@ToyPr3(mw>OFlkqCB*QNNYp1D?nMlT+yM?bXrn)1A*##72JthvVizOqwywDVZw1PRL2oVcrd3 zuKlX$I>LS=n!Ri;@7%Vf!Bi9+PIrdT-23qZ`N0&JG$We=I{u zV|0nvfn^br&41?CZfUT}9p<3-VSj(<($cVt-}sV3^CGTb%dkpwrb&RjrKLKrVvHJO+@EBE(FL2sdpm_MN0|S| zj`g2Qm%fB2*mnNQ=7sl!H}O_Afx>Bh7bw`!5*M9v0y^dB@a1TQVj z+I-OfraLul`{$qm+;!j_6CK?){zu8}dLoZrD%TF z?U4?P%7(-GQ2Vv6sMuIhcXxi%bT=AIq3f?H8(05+eVTXMN&^v#Q8E=ewP$>PeKHT3 z(jnn<$QHZpS_2aDUe(OK!K3!9@FUT=rPs^S~Sh)G3Me0&$7 zX=q&T?nx@8lTac8L7D4z-qBm3SttuIVzvo6DLO zSxrr%Kn&8=swrK=-e~H1`)<ej*q2;RFM_x8H7oF2Dhp8Z9{v|DuB zvOj9NicU(B1WqmB@Lc=;g6!+oP+H^tX}@5aEXDQAu(vqa4w!zc(YraA;NGf?3~&sydR$roUfvB}bmuP+ z@uXPvzO#lMV31g+v>nlT7M!pzE-tKQ%KbB*?zip_Y<*zc3RaN0dLWuwTD{heLW-`q zZj-3_qR1BLp#skP%U^tMv3+j(_5Qnt^=N5LE8B^DmHV@dC!^LM&q+5Ad>*%a-qF#S zpLiP^Q)9kAhKr$*ZL_E%TY|?D+;rl-A}R@m0~yK+v?*VZdq#q+PyzOHn!mW=ke@NW zc?^kiYBc^<`P*eo#=W0$f4n^qvrqf=9@!7qJ=UWnU>DVLw{XOJHSc)Sr`9~Wa}iF+ zk=y@KM-L}h^m?MiyK^9kL!-uqGZsNrH#3uve*ZeWdO$_!tCYuRm0MS<4?zX~dr z^1Mfe_buJo=HOa>L9xNz<$<8L(ng8T1B1W6f1!3=bSQKEyTb}%o7(Tl*fhuBDxy0> z@vr1D{I6F@1l?oziW|bSv#DU~+VztV`|741vX?0ABg8Xrhp1I!(`ivv?sBAC-16uS zQX$N12C86~*5;ze(FW{}rgU6LL8HeMnCQxef!7IELtPdi_&|E?JaDc_X}LMus=0lf zP}2*WI{=cPnEjO4h)XK-mhRae%ud}4+w!HSM;C6}#ewskG5G5hOrPnMdUx!)`08=f zwmsmrOn2X<%au#(%Zd=1T^;(?zp-lTb4UDi*Yea4BG>RpO;z=@>BuVr7<*To8wi0J zlV{1315~pz&cO!WV(q%uDT7@B=)~78Pj|xLR0e^QHCt)k2u>^0DPFK>Em(tXV9g?n z2;3RVs{qHPmQx~vY-2OUHdn93n~I8x)nWbfVcixPP*2xJ1)uKE0F@2{RaQ|^F_GJv zh^6sZL^~O%tB1{ZHUSu!^Fs+`5 zTboFF*c))EHt0mL;wC<7zGH^1+S*Ae@Q68I>79E4OVAp~XTbM-_Fwc=fTEO6rIa#>UhRQ<4$Cm`U3P1#S57Gx-!e&j&1Cvlj1Pt4YJtzD+l*;%1 zVqEF|I8gW}WXt`0MB-0L$=1zQhONR!Bmk1Ae4g%>{uC8$Otm~h=1sqU_y!{23I`7l zmRMZ&2;SeU$25YFe}B?}{gZ$VsM3-{jsez59?ZwS!3ib@)$M%U`RAzPZWNoUZCI~{rXzp^|F9e{G2xV{J2;-tvd zi=lWC`55dnyW^%zqb`f2q$F%##X|8Qu2%IqU@QgfciixnlCiO|1@P-hOs z$xQdY-H~Ha($g!UkxkA9VK9E=^W;%wv%r4=ves|lrR6f{c)4+P7gxNuJIJ%7{7tjj zvu+fk)AVpTha!(nE2j*@G!w19FD8Ilb^<^H6>;%^{6Bvb>Wd3NLSgtIoBm#7Fhf|c z>3mdr7j$@(fqlJi?;^jgO(bWp9_1N=#rSUpdRkhEhnry^RbX~MR*Ia%e(PfHVQ0F z=h5_ZbUP&?e1lt0Z?&48}p67NyGN&DJ@ZTGfGbSO5b3cbQ>#e#`v^i^aigmDCi3%X*d* z0+f`_(I#N}ks9N?09N+u6c9!iB`ET!_{_?n)lPb-B{6q1mhlMg7ZirtjcThIDBQ)} z(o=JHOUB}5w8P}X6sQ48&wp##)QJ`8Hfajp?N`8-(_;DWcl)g!VCjzSG*C#;b_j-T z8|)I3g?*YwIc1w3Z}-Za+5^y)z}X0j>mO=l=ir#=2*wtWnQ}$9zP|%`QH41{dZ)hF zrsctT!;W{nSf^n%zD%=d7r=FM$28y!Rg%k7V$!ZH?QRKOeB>Y5kQr(!PV+d>!S^}O zBBzrb8*lcyGdM~EH);XWR9TDZQ0kumG(zYQ-xf)g_k+8Ny87>Q*Hz@_za_}rsNxS@ zi*vdiA9i=EDl4|cOt0<=D~1$(kkQR`IFbeW7W4pLCAla3k? zR8;YGU4OyO&g!U+$3a!!id_dn8aOj|;Ms3GUXp}Eu!&WgP41BSdOgpR&RWhe+98n7 zW)Imkn%t{S-9Zq6bf^RiMt30RsJOYgg;u65sG3HonO>GuENQH9r;y(*o=1lmUg@SG z|06=Y>pHsxiklj~j+4TC=M6C3Dtx=$`Qk(5VLMrKmF6)H4GX&sOAj`I zZsC8KT+8qHJB~6DkqPDJ* ze0z%wBp3yNg+RbAbu_iOotZrEP>H6MNz9}H-w5A7>^I53%kGLGFM)kK32NfOK{|2O zocJ+wa&l1Qm#({b_+{>@O1zkg2bRE@>DzIl*O^i=HqPlA8dAmA^R%C5KTwJG63QSF zbgv}hwo=cd_shH66OHHKyQ=p-xv;S{kc548^$i{oPLtD(TkmPU&aq6L5zK3l25}D;gV_atRQ#?SVm5@0VW;qze*%nTBi@|eRo)32CO zZ**k?7PgHLhT^XvAKVW=-D4`{$r*!rD;Q`_%$?aeprWR>pHNXd0kaRFp=ba*Jc)IV zThZz1i~8w)+dl!60xV*3)dhBBp#W->wEz||Q|Cwv;9NWF&uPe;*TJk{8c6779UIgl zP(@$VJBJ=W_ zJ=XC6j#6Gx(K|F`0&?8_mCq9o(07)b?+*9uW(o@#K|qpU>Dt)XXs2ENZ!YQk-&`U< zLGe8{7Dv~0#lP15092{EyTb;_&!3ljqJW;zlHqo?*@?ahH782Yb*BT3ht1=ac5AYf z!)*?DO+)xUg@ya)?9ZP+cWqk4d;WLBAu2jrL|a# zaeREdmO^K$Sf?L=MKE~fD=8(_wsz8y{>%LR4y;doJZS436G-lzxWB(YUAhWrvHhJ9 z0TLY@9q?gy=_Vy5fuX;VED3@4%)lXWzfLQx50)`DA)&%*hQ0Y_(6-!RL&{_zvGqIR zi~6df@NhNLs}hDKjWKdZ`&+Yp%Z%h?lyAdZYo@|?gfX;VXgD~qBf391IIw>Rg`*P? zXqYf%eef0re=;jO+Yg-38fnU}gJ}W@AhUgkLf---ORuf>88H9@wOi>PwV=>9RHhNz zHb#LFF3XZ8q`#L3b2BYIKB2_#f$-7QCutd%`}lCz{kWh`2cre6#fZVd!S64p4L_U{ zT1IsHb{g!Aa@CjpbT&!qN^uYC=X3#TH>_I^VCJE^e-l$l<0%RZO2J5#T!F%hJ1R&8 zK8Ft*EI#^x(ZI%nfV=9n1N#eXI!io)Y(YQk(-}XJ=$^UkUS+ojli=c>nrU%Pnji~* z!;)NH4A8PNp80+>8A_G3v0(;tBb0#CeWJsy8O+@>9b1FznD{c6Z|WqLLD*SluRb0| z%)<`Z9p@gS%Q1K%Hdd*6q|1{lpztZOx;j1gM!m_M3ltt}aEZy|7AsW~`eQf!-(V413aD>FKHKNhf~YPHu`TP^|!HjG8pC7vWNUuUQ~U5HMoUbM*9h z^t8FB_vBu%2L_MYEvnc}1_%HO`BA)AM(k8%U1OgDpchcY%fb1!UQ1jr=L^SH^= z(tCZfR(DW6cRlR$I97DQ&A({56I}0I<-%k=KH@fl3%G-j$K}5M!|er(7J|Si2S@;x z*H$}24VO$UFUGpg>dYU`MaO0DWKd_t@O4B*L=a%9bH%Q9f)k*0j^Xz)dFk#bLDg0_ z50ACEs^7qPRenK1@8F;yg`4H#1{)5F0$@9#`57LEeBf39@?AgeX911hlb=Lf`JFv{ zVPN^LfxOiZ$oX`IDJI}tFydY|3h%xsfj19 z)f4HLmq($uL!wJnPCJSiB)nKDQk25N86XV*<9}c+0xO1vQoyt(q;3x|(ogDuL&KQ< zbhR}x;PD?Cc6?jk3=7>^g(_qb@sVHv`t!AbzJ4J?-fo7M5CG>bj3 zR4qI4H&hCXROX!&I{?Hne<$^)wwPa*fxk%S1^8vWh8sJ8T@@7+T0>cyr#GFS&hv!r zA8)q0#jP85^9!b1{;Mihj!74LQx!f>j~H7i$v_}lx*2l02I;IFlxa=nXkf(x*tO%p z8HTj_B5wsnhnld#-Dood?C=)=$d~>i3%bL>weikdw-XbV=4wNs#ierx+5jlQip~1g z))`FrgbjKD;jz=bkL%!M;`d1twvO-t$iyIrxh%TT-rU^Gd!7w4{rCx}YV++xNx9>e zoOn11@?U>^-Isqss(O{+41}L|IR?Xmq$OaOvg6_5hjP5e|M3EVF(t!flfoN*9F(ZU zM1raJy4u<#mIyXhCQX1#-+)UXs3~r2d=LI6p=E&We4fw!8oB)r3JMC0iu4W-+j3+G zxE!v7^tA?y?2EH5D+tC~f329U$c1R}%mvo{xXG634m zG)`Er&d$jJ6dwiwu7O}R2xN{uyice+0B5@b!44MwtMs^Gpj2vr@nvwv0EhW4Jy!=R zFq>=)`NOsZ3BOYi(0H4b?%s%+q5~NgRJTRsRITEhESlBlmemzFq`&l zH@Q!$@cjyASxd`R(@|7<`VdUC0Ahlsm1AcJ?)|oeaGOC{WL(_yzY8u)vS6ia<{hNx zIsS!R9xV+6(uJdCD?#RY{1H|bKuOT5be#wD3|0&Eai$qw+|^zuoiUC_9qAr`J_F%9 z2-LQ<`Y0D@agI)tH{?QdHtr0{0VWjs+Wb-f{P`2?(Q-oA3wp*5j*ehHo)b(~2Fs4Y zjo?**^UMxV8a7$xMG|v3RvM=rpkj=gl|ksl+;#wjM5U$4e*6eu(tJw~bbA=XE|WaO zV^seO#Ll|2A%Q;y1%{yG147Ah$?M8~Gs)Bez-)3gZ=w|b2okFKY5 zU@rrPlM9CrfLhrN$QKJpc#jbvD^~!mh|GPP0_HwAF3@`jNzn670`TrNihnKm5ITDL z)p^I^PJ^;zARZjIz92tNS-MC1#!y`Q15my*Akeg2KX}844hkyjldy*i8JUXPBl^9E zi5`25Ajb?o0tLJgZDIMJccG}Cqw2?hY^xOHSXeJjsy6%TLNsJsxNdwM{!d*YnI5a*4FnS6%S0GIfzPTTUS@7>DVU;G54Str8T*~iPa zN25L-TT`KA5ifw+s$SYgDh9CuwNxX*XjX62Qhc?!CwHV@&}0WWdO4~fao0r zWR5Z(9SqW)E*qoc1zc%M^(l~IW8H3D<*<**5QBpHUK5zf1#mM8DO zWwT4R8P3gKM7Lm)JET8>1%GXAO)N)|PA-*K0f^?AKEe$P%tH6a?aRPffaYkH4x^4z!W+baP^3R)&=ZWK`&|b>0#;VW{R*O@o4w( zV)yU{vNc?ob+j+bBKPEFUUIqPH|+CAncn_*xpj3dLikWm@A!TSNK&0(pMxx_G-c%E z@L;SFG!}wE^2q-^w$stkAzD^cB%8_)$>%ldiOhUp(asn+xGY+Do6z40S}snSi=dW= zf;?A~7!^g)x8b1hOFjssuT=mwIu{yT^iHoTOX$wP+0X5Ml5sx^wRhfOfvpfgfRFW- zAP=nqu-pl_5>gRnmHnFd2{;6}VBLO$uEk1wV5n{LjY-d%se`^vGLzzEe!N$+8 zNh07}c)c3R5~5nbwJu~joDODP^q4o-*Mo?{#K+AzR{<*M0EiLa0JKK_U2c7Wc(3$t zI0UbCN8rO>=kfdO-K*if5`|*sH_MLNhKkx zkeMVq*|U&DWF;bGMJg2)5m`x+WR;PSloXOAtITAFtnYbM@6Y)Ad;ETX{EnZa<38^D z4zK69uE#jf^Ko8sBWUr$(K1Z*ttGdQ6u~>$W&zYBE-`T@E?GC_eHg&NHE4UO8&au%jY$^rC7H@bnc4-RZ#Wo7jU$2V26cGkV$_LBBbTwK)R9G79#b{k8qs z`khR4%Gw+k!oq&Dr0OxG>a{jjCCP^{d|qo)(B=xDL!wD)-x}4IRaMrLaqo4qnkfP3 zlDgguh=T!baM;Z$W3!2kiGdP;Dw^r|@#78|E&)|G=i7#>(fMDAzsf|BHh1IRqJ1a0 z-8s}GySiMF8kNWJ($|fl(MhGH>)FC-#>U1tce&AA)7X4J>%QxgPNBzQc{)Z$VK-ae z23zEe++3mJenkV`Kze$A*m#PSUOj#|JE@a%lAE+r#1*}tP&D4-Ey0E(}EBQFc3cW<^5sh4OeE) zjqHzp;apH@CBd(tz$bQ-X+JaH`MTj3g|0pGZ8@eT%(m5+Q0HA;dTvWwbE@|Z*Q@Vt zOt01l0B)OpnaSdjnVZWxH$4pTwW_9M(obiKMhn0d_ z@%<$(r#}hA)?P_WT$Nz4oFZ*{j@^>OZ>4G0N{v)DV7p4c_I1d$=LXuIDvpP}0N%nr zJ3B#5!PRN+;(qSjkBJD+pP$0dNWBX(6Imsc(lVr4@qU?sfkFAOr*e9WHAtYa=;-AE zT0^yigN{6MZfnjckDn_3Ch^0wWNGg)G2__jqIB&Q=$A7LJ(Y8z&C5ju#q5Rkb!}G&rrh z{X-ixi#!=OY}}};uOGCtbY@web3ARf;fip6#RCTz&`HrnsRbdGb%JSD*E$fAS`~;rkLJx_ikxLV$w}bK_(sv7RlQy zOUgb)y|-1{2!*R**4h%!pMiRrgqSC5(8MHSKs-%3+Yp!!&DrUnRbS4Wz7iW7nwBQm zzrmf;^R4L8bnJ~AHk1ADIpypmA}&UdJ+x`_ob&dwPgAr^bkukRs|wnpf|fIPqk!WS zw`1zL^pM*khXbQtal1~_nQ3u6b?LZ-vE-$CusvV`c=c=*U~DoT#kzi3l64<-=Q$np&%o}#T~VC22V0x3u5!-7(Jj- z3{c7p;HM7@53hJz@P+BQ#j3p4$lhK%v(s;PU#>l>BYgeU+d5V3ti9`_a}YFvIV9<2 z@?RP4+vgXmmU3P#>wK#d9i{2^;4c0X6zm#GN8v62Zs=*R#a`biD+}M5<192(vI)$f zdG;9}=c4e-$?;0PDW*bxx~!4<>eZ`&#)07M=8s*|Tew$Si*oYE)Ly=Gg*m-3{OMCk zgb$PAQ08@vnFfrhdg0Fm&X5g^cTT~(XGS@z9J=xX78zm_h=xZ-+uOfdW*U&f-mQqI zT4f_T1|5C#)zxgP&5Nm8sgoK9e9PJ@WE>nE@Tp8iCk+kR@9Ax&@XHH)Rj3G)RJvF+ z(Ys;SE>;9rS6A1D0e1%pso&GrYmZ^fJwz`vSSwvwQ$>^GBk@`Ld`x^^jd;kI z1JA!)_Z|Oy_2%`<_@dMN^h&W)n>x?-LpVlF!EJ_xM~&6Er%xB9;*Q_!b8^~_J%&b> zW!<`q_g@Py<@T)ZW=&+_6U%+Zol85+SiA0Os9ec((*0t_@M;zKPHhkoVWwE+o9G@n z5}LE3jQP|4%->JnJ=RDaUpjkM=j?L}l#={1o4FF5XVxGshzfF}!)CsqbpGQ{`{m-_FA%YTu}oOS!y|vGi?(y9`qPzP>DMXzF|&)pQ$Eif@}DZLsk$uwNroqK zPqB}B>WA{;gMur=avt`(7Y8hTblClkD{YfmJxh4k$+vcPIDhzd zfILT4RoajK&(@<`JWzXJas3wa=9uAQath~V%YGz$?R#pnAg4Lsaxh2v#EBCPyEpO) zIvi2Qqqlo^GYVya!I2|>Lg1b~ZA;huUWTzIc+Ro#2cNTK5q16|{jK-6Np<~=MAi2# zs&Qx9-)Pk}uKzLoc38zv7g!#mcEgu1Oo+Qkmssp^>)s%9j7ImMs8rX|styict+c*x z^ls%NlWY>3Q0-#(e0*r!HsIy8CT4i;ryT`f*~U*Fym-NNf742~*sUr#9=Gp4Fpvn=}Nty>X+DYOnwPAbP#H-lv6zoMRmo?~HU z%UnUDg9P?$;m_YgkRe9j8sz5LCLMBBe{-CqpGoZ0(Ic`Y?}pXS=3Le3^T_XME>uDc zz~aApHAd9ujYA}_6#M4Qn<)YG<}|lVZ&5!jXd7lx&8_S4d2Ruj6xyk8-@eT_i#7`z z7#iROEn^O)K6&!w;;^ZS36^{LYS!dZVF3ZEUOI7rMhijlwzjsq9XhLGYQOPiB}X+R z7s-fL^Du`l)mkE_qMMx8o@*;PWD$YS!=oYTQm&wlmnBr?$ewV6WjTFqx5e?_O}sx| z{Ji|sa9tDk?l7N}3ICko9m*VS`Y*m%g;ZFLZm}1M&8l;*V7#yl@G)H3UbddLUs&y; zzKN}W%4g}IU`)lZXXUWxMr= zJ(pdICCgNFUw(Y|G`X;l6Y&Lq?DATdDtQ1ekkxSL&`K3u72JWO%jd|DkPwk*b3>Dm zcLjdTS@oU3i-?&^T5uE{1ZcYGCgv85#8WXyjDOAHSDDfJ5;$-^Tr>^k(|4+qYbM zC%NbYJGCFR>uE?9>G`h|mp#pLrFhC>Ih z;tk;*nE7OxqSSgu)^}W)jC79|ky%+jefjam(9*rZUS3sn>Q+OG(+V9U5V?@A2M-o?fk_KRCvdpqoofF2#*o$?!S^EG=HB3F?Uz)u2+1C zt0g=b6PD{RfAaL-%weahB1c>2)jr%WI zEz}GNAaz`e54Nrh@o+UrF0Hf@O~QC8-_BjTN)_vd7Y3<1j#9@6YQI3WhYxH}*mfA) z45jl{S4(H-`5>c-_uMM`_uKyXl&d4O=2MCN&W8y;J3cfvqDDC9Tim7pCPAv8PAm%5 zGs@M9Ekg>Z6jTERsCve0Jc{_*j`?DLj-a7=VY*2*XU3v{4Dt|nn$f!i;;Fh5aTIrPtI`czMJPfrx)3WBi zfOIw5&i7v|}%3yn}_-zqWX( zR?^yxyAK~S>t#wf7>WhBs=3RE)`z`_c2!$*?r!&+jzB^BWvFn>ME0LPEe;?i z6dVhtRGhPGRNeDWSXzo8D4@Fwi;SGCX`XGv&x-K&L<-Gw+N*T6=*BCuEGv+f^@gHeRNP*gc}cK4rlpLHrMfc?qD?etcIL+%42 z@dJatc$9TPee+FKY``*>GMcV(}er zzvI8J%{ZR+NfN%_d++*JN5zD$YaqX`-zutW**oUl@bP1BqT|eqn>plX{_EL!S;te+ z^8|fd@4zIMd~nNkjk^ZIU1Q$!+NU_X}S7+>X6VK@^`EL`|tL;-gP7k8PLrCW0;A+(7>|E z{daD0KbbFET3*xpcJyPjA`QRqgyWWT6OM+*ANhUB7kX1i#lMe5iFfSv`+*IjF#Y)A zIkdNbs`$G}`%8{6G?X}fc-$@~0^ z7u|P6mg%Pd@1ObfVOdg-GykDMdM9509j_Z>{7few7Bf*gVI@^euafXLPDF`cimVb{NZ=PnDk(KI6#*zi~&So3WI+0`~s^i|f#moC!9b+0Vl62;Ma zZAZk0CdbVHi_{MsP(#8oiJ}YSKcAAlvNwbdP{iHh``qAEHmJzg-pgYA_n>(vy!VoN z2qI)1bMq)dHp}w1d`&r6L$iZPWu`c=X}?N$UTsUVNX5)sCL{AB62oh+nxv?ysR@UC z`!2A>p5MkcS>T9JpsT3_PUl#!XK2twAmWLQ#YO~f4$LnBee6+yD*5>GV~ z&fnkEBjxv_q`*?sT>|=!h_PAQyLwqW2aWGiD1nqzC5Dvu0cTFTyzGoWKjYn=o{^Ce zd}Q)Y*=F5D67&=h*Bnsl5NWsk!lXX>tmVFjNRL2ijvhNE0PG}M?w3)+;`{gSk?M}z zFI-U4*I$h>dI|28xOup)J2^RNb8Op=r&bZdm8WB?-tXCt77cir>)ddGO?d#5`lhQR z2E+6e00VBzS1I|L@yHvOu`XZ5M;BOA%r<5GH@~uaXr?z>e|vT1)8k_Y%jZyRq5%Ll z(cqZRDd*$fP%3tFd&Y{RcvV2Fbq*hjoRwBef&fIpLL$$n`N z2-1L59~f@K1$X!Ku%au5CLCYi za>R*RE4>l}+1&|Zawml2)UkE6x@-K*LpHNvsdZy=;RU9TWi<=&$_O5X+BE6OlQoE1 zzz4!2B3_iAr{1OEHRt^wEdU6tNFJHTb-{0Y#yY23ENj4tqtmCFu`xk}!+L-c7mzX4 z9E2Z?@AghaE)i|pA1NFtN@PrmufL^wsvaj39Ta+$JiE7nYAFLP2iHt?hz}{2zP>j! ztU?)c-DPxYE<3@{4uu~>Xsu=zl9eIGsoBsFtOOsDfh4B#N8uz~~~7seF?QxBK3z z9n4#6xt2Y5mBQ4D|Ew7iERt_?sB;}op1e@gqj>uC>4rYs-J*XfB)yO-dA!P;Zu|Us z6ymck2oGh5lpj>J+#)+chA`6B3HhHA0{tsD%n>~seX&AFSoj6?s=XAzPZUtO(x-cw z-~@V+0ORYUw>W%=Ld%9HZuR!oZh);d=3ea=z#CnNk59?WWFWE{5Wnl5>^)!E6;OM0 z@R9Fu-z;R_oshyyadUGkIip35AaNW*H*ZMjZzjF38mNCDmn@|8@N!q$ZRhgxADZeS z@oyP7sN~R>v|sAk!kFvVCt`4pdT4w?aIpi!jP&>)@9DQVgEmSIm@Xs_Wba42>t8EVM~ z7SFj`TU!YmOzDImaHg$e@uRid$9f!^0G8<0+qWc0S?3zf=jljFN-E{FC}$e{E-}Bu zH=W#n(Hu}{p8Y#d?|I0*Y~J0GOSqA;FSG;0v@twFQ`bcTQ=edxu`~|6{DL&|#813t})n~maP55Rs8Ih6W z@-jWqxuU~jcDd)s*X6NoykF!jDNNNgZ%Sqbh1M>3ndl`?{L2AH#G}+!KORbKcD&H; zysGGvM+xK==%%PeV(XUf09CzrAm$PDMv=UGB>9aWn`DFBUXERY=5i4llrFFdR5cRZ zQGdMKHE*&td}#jsIf8VSKvBIxCyqikLz;Pc`Sr;{$>2bM{4N?Q02=~o33R-|E>A#E zkk0Fi>vG_s=;LAJj>3~NQ@k0Yog4e-0mEQ&DingC<&Z!Ro#IIVod-GBC0yvz*+72& zJ$u%XpC*E&Q@j{tAj3RQo;-2)J~=1*G--+@!6NjyemdQPk?M?LhJwBiyGxGusv9on zeD7`%WS?IenTp8B%C5P;l&zZ8erd=~Yf6q`%w^*~;VU+uE(?5$DdtPpN@VC8V4Y(8 zyPe)QYoZQG)uVk7N;hNT^T6;#`U=BDxwDcPLmeQlbD_6H-06X`gg`z3_$ihL^#R8M zV$lW019E_t_cUgK3cuelCCpEEw++G>6$SjjF2^RJXCQDtm3V=vq6Ss~eHj%6WDlD3 zsHi9)Q^4Lp#S;h?E;dn8U+Gic)0azG{Dhi(Pj7v~Ma*w>fs8^nWDu^4mpT0imxJEs z$LIVN801(SkAK&7D(TT9(N4MN7STk49w&B;5zHBAq(IQta|$j_PA@a{)0MQ!Kk$Ls z=vE1%xY5~fl$7)~M=RJpl%tKwCBx*@D!2C+d5X=QeT%KdHw6X^G^Xvld%0&m{ia6h zGEhM_7t|Jb{?#>X;rA+Q#Z632_n417$j{#`lzUKJeIJrFSTOYJS8m@P(oUvWUIl71 z-%~9j0Y(|kICPIQHTMss66X#wH$;eS77mW(07#L%K>C(jiFRTJCb(^wnRDs51q0KB1UGb?LKydpSLuRa01(PB7@y7Dm4p>WD%NLCq%?M6ce1^wKc)IXz`L1-Tmp+>e?FL#z6fTr<$ce@vNAJetd5I~^AQ16H`p7AL ziXUauytvd;%h=%H;Gbqn^nol-1moMCYg+T{!R;(pWI5G%NQ(BYO>1I$Yai#6ZJKM& ze~NQBdi37%!$!zM`!B6mKGRyn{Ojj>MT&{Z_D{tpm&a>O(|ZD7D{FG<_x!-PayahMB;~=gXFNk6vxDls2ZF!|3)|=G`)p|~FYj=oz_^mn^RJfd zs7N7l<|I?2V<~(K^mch%$U5Y@BQ9QK1=1Z`cLBbVsJaxhnqM3ht2in)+oF{9@Sz%D zA(#om+$8|hU9?#1*eOVRq)oukRMLBg%QtSY>#$$fXda$w!Olufp*HQxHrxiso?brN zbiGU~32tf&$NXZ`nvsj20zXoNm}OzL(UsqCy6)-7Ct5@-)@3wQVGXMLQVf#YvV!l_ z7}zV>+HM4;Tt254P6O>^RYlPL;`rTR89D#@tB0Nm`OIEZo%{j<0uGV4K-roTd2MwqN3r2}BLNq!|eW2#DXS*RPcT_x1Xga^dL^x={dJ4I*t?8Xf93s-9O(jvfW3_21oO^z`*z z=Vx4(&f+a%(Dg-|OIcJRgyM@2uO3+em_3f46(kN_SD@g@j#batJ<@!_C zlCpnawt=T;M)9@{-^N)Ml4;AW!a_AtgWuYf-J9SaeETnhjxT)Oqw!Lf`*gF&jvXt( zSEEW`^zN|B>w;Y4e3eZFltd{>H!^yAdjoFrwRtqz;N@OG0EAMJ9vUBP(jf4|NW*|W z!A!wVJOY~*8pD0*jTJ*vr1gUs4e3RUlxaVHIKi0-p#qf@z*Ot<04lQUk&~!P^-=4d zS?r5F3zFbdp{s3q5PN9ldFVqcY;rr{$Z1|+`t3J0xorS~?wSU#-r*^tXX2+XzqU2z z)bODx)qL+914L z{@6MqRHJjJa+l^2*g`+xu>A|RV;NWDK!{KT0yk>O<(Kc=xkQ$+y}d1lZc)GEC68}0 z1nP$cPt>qTdAevYuntgB&&2Ej!9!N@n4MeEv$h=$SS?5joG_l!c|17g{pduC2$5+M zRV{VOd+!6bCUe~28eeQ;tCiBGEDLJg=3|{dLw5vt7BV?E==X>eR9YI7eN%g=1HskmhrXdIVaJls=eiGAWO|AQHRnXzbTZCJ*q) zl3IpP?m(@BZsspzg3_QAYS9Yk0>UMtZ8~)55Gq78a}ZRhtE-oz+*#-|IdY^=`xVkP zat|gtm)Sk|;XGtqf)?UUqC#0^xGEU+Q3!&Q(Ti0MwI_-y4pEs$9b;EzwK1CeFlSdi z?!L?WddALwP~Jn&;nj}8Y^<#Bk0o!2sU`c%3L{JcHMddqTBC6AhMx0%Qbk&;gGZCV1pedheymJ5=26j17Q4{@pF5ODNbbCnT&amui1*k{#0O z^z+d?ie|wW+BYU=w#NK|`jU7_%wTL1FwN@8B8XQY(HMimHM@>WY)?|1I;ydHV4C=-7wy z|5}dO?((ivG|%~fyh3P`-q@Pm13C(`ObP)lLscZiyTAFBYlOl4^GbK=Tg6&*4_aW` zqq4;Cje$I(2q5I33M=}4JBM7Oq-MulEPA|~a1}H@3vVmA zW=tC=eTZCw`nB8EI!lBFqFqID^!`1N9%QmoZv85#lA|F5T?K94v?^a&j#Z%Nh4AFC z@yB_iKC0@eeLD-c@(akLtD?HT_V6j0_D@g7#GTrows&|fmG~Fsbhx3frlEiE=D#Ds zbP|8lwP_&I4Gt3RS`8FSx5ucKK}qxs7j!UdXkoM&qcPzake?N7FWR?1TLV!U{omq8 z8Pvb8Ua144#g#%4y%zn0GF*Ug19w5!M{M|4WkWUl!bx)D)~yU^*whamR7TwZA{ws< zh!nY7lefht_e!=w-%f_-FF*!Qjl8E=V*(L4shl%18dk5J^3ZH}C{2}``u&m7gRlrj zvqr^CJ)7#uObAPxrQUvD_C-tTOZ`Qc>a}HDPj-~I?Ej>Yof~j4zB?{sr}ba7JR`-` z8iYO4c45D(E!aE6sbDja8dI0&Yei+~DL9P=HUS|#>CIp7d)!4mg$xBaNipR;(HxP$ zM@o!4cYY=sTCM?WVL)Pf&se#WWDj&NWLN>rKa>ifj>G!<9iRu=v}FrKE7lNaA_&mW z)Q{XsBIRJ5C>5d##P62678dJAi%iTvF;0bZdnuh{QbdQN9?9QhXvU9q z^^^5(_mU{eAxzA-3=d};_Ea0UR2rE2A6R=?DB|+AHF188Q-z+dH)S*lhgq|a?^ zGIB0JJiSh4H62cuZvCyw;rb{2w^QF-Y*f#p>{(9WDSkOx^;k)qafG9MEo*%J76OOscc{nz6dk} zP#fGCi=Ty9`Y-H0H(k;}`%DURVg$Mj0rQ4YC(QrBPKIZacVX?4?dwS&4fw|M zeoz@3J^c|H7JZR<_Kd>@3aiF-wu!!u$brV33#e`=`!=wmDm>LbB`%=;i8uJ+`u}u* zuX@Ikii^2RJck*7Z-+<+ZXAcw=MHXSgZc{%2L#wjD8SIP5IF>Ra{n7mD{3Acm*57& zt$Am!On)3HrK8th5Q>29IRRTQ@$Lyp*yEL4RKx|{-9A`vV4x6ksfT6PJ)DE z?gtFz#V=pXm^ei#0H`4`-;W{`QIi#&1T+Z5s}O6362K*Hw=dHm#OZk(Mk>*KSr@cf z=bP-&%m65f#0_xpyFag-4?(#=DkCPLyHuR3s;TkviJB85opV-I1lF+a`)T%lsX#G8 z=mT9Ioz~D`!yvPk)0by!A(A`a-aGR&-EXcetYcAGFt#EtF5qTkx^+_q>*d;eigFV@ zJ+=Zdb;a%9G@Dxf139b!qy#ZFBg$K%YzO+(FgbyELPl1huPNSZp{K`&6TP5qnIG|+ zAFDx*Mc^SIJeJO~U%R-Y7TI$#phM$V3ik+XL#!JAtQ$DH60_rvAic-fW6I;lY-EfZ zCt67WN-Lk|>!BZYaCWBayx3J(D6OKVhM3h2>kSkp0d2!-D6}yoc^)$EBv2ZF z*Km)_LUk}Yq2#qPp-;qG_mn>D4=pm$37Ig~y?#9kDb7YIDGu@~(07!}L#2p@Yj~V{ z`mkn$PngiM&{Z5LCsyhU9%3@Oy=+v@xc1eX^5@gOeCZnXR?|P93vH9TXn1y;%81nN zn>0GL*F`zmM9SQhY-GCeXfSW|E!R+WVYEoi*F zA2*&W!UYgd#NC&$ZyCdg03zZtf@5K(5OUC)0pW^}BVbOxNt5nSs3W>E@@uI z0)(~7;a5Wx3K_bDLZ*1Hr)3pQb|^hdCtB=d6OxFC0xqNc>YF$W90Mt65>JGzRJ3qr zzGb>SL;PmLhcC-=js#081qI`k?%%JR`NMnAMt9A7E9aMei6g-yvztmTG&KK%l8a5k zk~t-^Z1yB*g~H%$B@S*=0-8{8iGzb96!6L2j0_>GmAiD;C<|`J^kzAb;rUgHWL4lK zN?(laEFRTdQPnh>~r2R&&J6jJGroGXVCE@wI`ZiASa< zh=omVIaHX!*SpD?SEvv!VGUAB8RRgE6i{8Q2G2Fg{;qI-deZP}3hI}id8#jby%3{$ zIyyQ5K#pc(o?UuaNd`>d?Qr=-#S{k?*kwvmW+p8TcDvA9zvuFmE9~PnVA0W=pnO8$ zTsDY2l1w$a9P^45j+~u9fe982zALcDl*5`j8royS}_ zXI7fJlm*RBxTs=z92GNuMJbEBuf7K7m4)5E&+YrfP7Zxk$=C1Ez^Oo!bMfTg;=R)D2^?)2-wVhRcxo zhiM2A$-L3C{sok5r$AuY;yf_Xo0|B881Pp+N=n73s0*6E+Vw&(P#)qWhZ|#>aS2y( zGtTiR+neLKvvWm=b^)Fw4XmuF#Xjgma|?A`@q;g)6UU{^MIgtwYU{%zs!KsNKEph< zLAUH*eWu%iaTLrxeaLRzqP%tccB1742@`_xC$u=|3sA1WO~Ds~k&5D47&gIdpXH_Q z={?vmtW?YRBc%O)GrJ&YvSPgyfjU=r(b7Cp8Z7)3bqKk!YG@ zmv$1BdePeZyLTX&5*!avuD8t!eAwQEP%YlERG0|3m>~sm)LLEmYLr*6yW-H9A%~i_iEPdoV zm$J~s6V^ZY0;D-2HslT+#{SaF2RnXOx;#;cr=D_I=#u)(SARb2p$Jb9J6*xf!nJsQ zs;XP?9H4CAP))yB4j}(jTlR!cvC#k4O0d)UJZDxY?3AruULGt8h8U$W#m}6Z1HSP193_329I-;17zVD&o_H#)bCe5!k) zo7!Pd%keX-&6%o=Yf!h2!al)BdgWOSnwuk<+<^&;fSX10$XlZC*MfPhhO`hu#3xh>_@AKn>V-JkqBq{+R3>#X$Iq zMBj065M13I_PAOybqrjNJRs;+_OZ}lxWAJyMWh-e4seB_q=QOb8q*HVfO!qY46~Q< zQ%rsH05ww_x&79TIGJ(E`+CQYsW+{g?2{J1smUqj%!77<@LVYE=pcDTKSlsBV$R{z z_H-pcoq^uwlprPs_6UTV%7>ik@gjx_xAu-`Y$(;-5 z4p1AkKPKQ>Vg;Y3Lbw;5!XcYS?d*Ol5Yh~8lIzd@*!9J|@et6|gc~FHT`Ol7VM0ZQ zj6wO(z1*ei($vxOgLI4VY5blx*?+*`&!k9YI-yIU8TB^K1a6Nzi5ec6d4;G^M#vkKNA{-i9$MC!EF zft>XVk1zJXfMyriJIpNd1F*tKe@5BC&RMLMKg|T7uSF3y3<&Sn*N^dE2NlW@OTV=! zYpXDx$#*%PDnKLk1sSNHACE0l0k%USDh%>Dr{Mk434H+5eJ50Cci^W64sUHv*`h3J zO=|f>QR`)7kwYDpx%$9M17=H)Y^oxXZmUsHqOdF?ra_j|P1a($J!UHi z7lPM3ib-~}54(w}=OfQylX;kpSAl5Q)BY5FFr1oH)zs*a?7;z%QB~j*G)~iao>s4~ zZEYBuQrFh5!8z-JCTogM%c14_lORyp#L0RH1EL~78UUI9}_v$$c(FCau@Uut+pymFoOegVk^WJ2bo(zy*zIH7b zU4y4zuFwOpab!`xxwU%*7zXb8J8~=dC!gzj{WQIG`!+t=4aOIWIW2HI;p2muM7bn7 z`Bie0EZ~kwLc;(&*5l58spj^xxd)39p;Ca(r3x&#vOND8xYdAm$LjLvTknIu25*rt z$)oUR5bl%(FTSmFPqF^bpJrK@q9=I`{SIlQfiUahprC=-X^lf~cO*AEu7xB;C8l=M z9a#?z_mXzMUxzI%cUD(dN1$Kn-ZS!Sqx0t{2S`w@0y@JwvxLa*&C@(JIyUmgaO!Io zIzy#MUNfPzO*Hh+1Q@jVgK3nMeALUEX7)QA->1Z8Qog2zlj)PyI;SsZuWzn19Pw*= z>aR_MY#4%87gZRNZ0xSY_5%{`;7B6Vfu^)N3YB9Ilw; z*+uyv*d2CqdH}oE2XJ?L-8Yd*z*0sXVu=?hQn^}t?_FYs*exzH4X2l_`~G++$|q{W za)mYnDN6?#UK2q*6W%~FRtd-q(~LT(W`~`p*LBQvnC0> zV3$H7LWeMn0!TP#roS5U$E)?f;vF^Jb>;aBI(Km<+ z#*kPW7DF_)Hi@Kgp~QFT;2@gAST`EDyFVc-uNey{iCA1*kB@)wduk{hukqSD4qx*h z6HV#x$TiT^jPyar^v;JlC|kJ+irra%6POCw7QWqBfP z<0(fhEFSun_C};scIjZb9yT<*PZk$kDFZy}4O|~&XCJ0s&TIg#gyBA$k)dH4WeT{B zfYlH zEy(b^8@BPV30-F3;E+N5LVbSZ)->U_wrOhY5x)}{6(jHWI|KFa+_p?y7^V}*Zh#+Z zt7D>^%&rqR>-(fn42ioxr5Q%qNHvw$IHXq5WNI>a6FzSm<$YEVdXi8=o+v!$6sZP@ zZPTZEbgFCrEVu6yw3Zxmd#5r%Qe*+Ppv@3a4#_}V)_?x%^NB@o1rNrj%T6ey;t(1b+UolqTlLzwq`Ch^BlSRZ+xh02>n3?Qi>Ul6H zhv5JPWciy4{_;3v!L;GKTntRUk=zTBj20$9Ai;84`F35w-k_Fb?L>JBAnXF1Ox$Du zDw!O~P@X*osYlKD0~0A35J#xofXi&OT12ctIWx9oZf5odj@ z3OF=pRr_M3hm7JCCq{_Dn(+r!?}1s5QY33+pUNceo&kd!!(@a z%agi>f^vZJvZkh>B*6-=9NIC%Htz78`MO|GYP&pq9z6Gd>B_q(7MXQId4*j=Ox*1j-i*lyHr`L)i1kcnqsn zxisrfXF>!5vcbvY{EGp1Ht58b9?+O_%srdR#F{&Yng({|g6PhT(Urq_Y(F~om$PXw$RloiegHF2}<$3RP*^(SF!Y#4y=W=sk^7IeK0Ze5D3KX2*Q`GqiA3TL7O<%C*XF=R zy;g^vH?&6R=9VkWD3*8~78eu4OgscpVNgjoDbO7{J9o0x9()tt$Ks`<^+%Du!0gQJ z%!t=&lpyZ#K#Jc%id_!(r%%1P-+O!A+D;aXK?`ub1d2igpJwbH8APBHEf0?&U!jMM zB+g{Su?#@D6E=ViR#E_1N~$zXt8`4&BWahNhpV9Um4+xi;=^7?^$0 z!_H4wOzbK&0Ein-#CZ|Hgh=;^e`i4FU_%9C+LwwuS^5QMcs0GI6drV)+olur@zbK875>gZscLJ>l!1~ipZk!^z+fN{}Rn$i+o zfvkr@!~C5uaL^(?ooLzF*x9Sm>vRmvvD&w|sZsoNHM>pgUr|f1a9xpZ##U%Tvba;t0bs`njEkbA0MB0sX_vouoR180s_y|P&*jr ze#7OVmIQ_lBPI*!^oy|Sh(dtNg=r--uk1^>Wt}EEXJU=JR3!Vn#jsIgtB_FA!-o%* z`@}hU+rQp?y;C;vrEyL7o9}L8Fvof_cs>^rZ+l=Pi*bWLyd7QBq>mpjZvM!7@x~b} zE#9x`Gu^O|1=#_-SO{&aT+d_s`vqXFAjnV$qg*Zvl4P;tJcOqx=`ymjR~n_|=3W6O zzhs}9;*oplV>+~y)yOVQcF}zSWn9j60aFzp@9r7Y{LcK#%v=a%+DX`X#ii9^T@EFt zU+V@S$7J;L>Om1IBK-F%pT|HAapk+K92(G@MJ%+Wpj7N8_S9LcT$Gim$$<+9ENT8r zixj9sP7~8#030Bs?-+WGT+<`b-528mYnOm(|vBJhC8@1<_$Vmvm1$)q;*rDam z{#67U-gCe567LSlqHm;-Aq#+!uBdD2p7^_5iHWK7DxKh6@_g4zTw^g%M9xIX{<&-( zCa1*Fm&{%)E-XKRfBgc`jdb#FT#kEL8XF$~BZtjugT9NZVIT())1N}fz08K9|5+%4mpbqr=Mz=Ou+g!5LTY(lhm!P1rV0#Av7d9>cwOJQ(2a-Go#iP zaPG)%W#bOY&Jl*LH0TdG*{qG zqgZ|-89l#iwa>jEJ%C|KA!(%39zVW%AVzSEIJdv`;ALJ;j#~kzYU}({v2I(g2*|c>T)Stki=TB1&9sp0vWXdB^d`}R1_?LNF|*_H3XtW+vz)G+F^sP6}U8U5dOVW<%toFQkm#`XOFB)j;lcdK}??S0Kxayr+0XG zv=kwPL?Tp*LFkKidHyhBsC(vVf% zPT5!zzcgDsNDwD3o`gq}}^j%HXh#0XzwEEDsBMU9%x_ z5QQ89LN6W|!NcCbEE}yDLML&UBx?X&Zy(tovWB6|YJZo$sK^uNUvRlMDR55URyg+z z9{VupP=s}>f*u%*6T6v-qf0T`3j;g5Gyq+~^70n#sL}>;&i6^@X_T@shxEyeh>kwu zSz8pIx(map6k%`^Wwq&{j?dxGr&!;}%RTqvK7rP(dSCB^P8S1AU zVoOaAjYa^)tX;qU;fu=3X23_8XljeGjhj(=A4X>w5gBO!3C+)jPp9QvWjjhXJ3Bh+ z0iKQ}oiB5!aun|#!))^sLvmf&)tV;xj@NI=`xT=k)W`iqaqdzg*b?p(BH}?v$Mm2u z(Sf*LSWr+6uSiP{hQPzje6SA7fz+HYlVCXLY1VRc-zSGi;N&Qa!v+RTjc)}f>%C~bj93aN7b|3%-r9r66A^ZtHq=5BgbQ2w#II&M?0R|NGk8^2?^P-s$81z zfpa!N8=shziuY{&B#kq;!f%OM2Qo4+;GodEj^p2I7du+>hV!;)^_`7Rkj-z(*GiB$ zqz`)|a_$IKPfx<{b9YRn7@vOCLko{UlLP@AX}r02J6`i=dU7K(Ia#S4GGF1%n^ldo z4X@w0k%kjFei^p6E!Y3kB!jTc$JX6_{KF>9H>cv53IIHgFku~p@%DJM_(w5X{ZQto z&YVs~K{7{%hbMgFw1(|0vmRz1Has{H6p2aBD5FEsl6191`UIS8m>{1=r>c$g2pW zRI>R8{r?=c#;QJOV<~?%DO?=82ded3B!#09_fJB^M)5)p4RAk@bLGz=ZQbH}9CPDW zXb#06_VMw_dT4Ng9NzYlLm9tAWSj}d$o)CNZIb0`62sr4+*DQxF#P}j8}H`->Y13V zg5dMjhs_5~7v`KaA`W^Fy)7ty?C|$#hwTj8tCBTX)xXd>{%}a1Ph0Bx)&Vf7YIdb>uQ}(Q8jU}pu z0UWGFLD&DH=a-e&C(uF_!)`I{+ioLW{+{+jg>tEvCly6>!y_HFC>~WCy>5d^?NFi`+GEV@;XJTA2kk92jEs!D64?c0t6(7GDjQEe zSz{~EzN&iOJvXI~cN^R8YjMYz)e9V=qKRe)Lfm7>koQv4b&r_V;D?HEE?!t<#J&6X zBRu%B;eC7sfa1p-Q*BKrrqg|It3;XPXJ=MFb#8qP!@u_)ywPpS%C^*}d+Rau;x&Do zt^4#9={dI;!Ao*x)`|j{4uBh+O}+`2gg1-f2`h_}oOHz4s_PWXdR8seo0z3X zPHgE>ZSla!K=H%IEU%rt=8~%pHG*l}A}kyM`T&37_xqPMI$WVt=^I|eWDNeefXXmi zhjvEU!ugJWTNi5=^yL&--YBZ8(}TvRd|UrE)hqEU1bivSxv>N>@PE~Rd)XeXAQtl% zLu0ruoX><-87E}CeR*K@`A!@D9Xq0sG$}|bquzTV(AjIT>Qi$u8=x5T@DZGEc zjB`sLC8GNK`vZ=l7}iRk$Sccc_vdFAJ9Z5_1N-ZdZ>t-`wFeFz+>BYa062CTdgY1b zi7n(@$8jbzQ&m(s1@o_{fKm@oya{e*N|Q7}p-jC! zEBW+|4AeE;7`bk8VINUfRP8Gtxn8wQqJSnmDr)l%xu~V=c|Nq+aC?e@#IW5t{q9|= z^hT~zRi&xNuV>ZLN=QvBc(f_SzuQz_`el>iP}iFK&1)GCH5O+|D8=(ZBPQN?aI)w> zS^)dE_ntkA?@qSy9R5;urE-7a%r*|{x310X7ps(@RDqF|Z2E%9c6N*h9OyXb_b$I* zY0?{M9X3_5SG(CzUmKM<%Yj@v*8k|PVpV`zTbcE(v|Zp$=~gIXV_Id64`hin=U^zu|iqnd5F2u{(ioOX%2aMj^<2SvD-yIVX!RUCx z5%}qZ)Bz{r)5$%!j()|e6mTq^yJPFtPVx?nhMjVBq;7G6!Bpnc)k*^O`ynvLmBaEB z6TQ}7W?Xr2#_x>pE~{IDIJyGM4wZO$v$pNFIr!f5GT+mkLd-CLtTWPdk zy4bsw1pbAU*lY1BkN~A_P6Yx0B4F%{pJI+nuFobQPM)6G8g&7;6RPUwd(*zC+v9{u*Bjf04Gl^U1#@!~2 zCMvkm4(n>@S{{kcs#P`e=0w}6qWXVWd&{Ugg0@RL1a~Jm!6CRi1eaie;4Z=4o!}5G zxVt8}yIXK~3+@oyVJgo%^USyA_xFdjU~$grQ{7#C*Ij#GTk@Zp6{!bA_*8*U2CEw_ zfh30Bd-+Y--;1Xk7#JA1{Km}xawuhJA8w95Imob{tTfqxmTnLLpH>^*BY-Jt*S3Sc zH^>T1!B)%7kt(lRLFTDICc$ieK>?=Zn|mO^F#@R{$4gD&V6G{Y&Div{9-5*3_q(^} z?Y*Zh=*1~2KFZ0HVR3bJTyn|C_(sfkNOIH30A0&hf2O~_=Dpu64*+$T zRPt{G^^mR(SHpw*VF1Vwm?h3#Uo$|`PbX0PF0^~|4JR=SSk%R)CJq6zb@P>5&^`*N z)c#ZDg-4mEg5@djUmSqF57(qm>D|mouaKE9c#t@5urTNhgT0FvoA&<{T7hWqqP|f@ zO|g9%2hH_Cu%i2y{{)=wpli+Iva+D6a}u8Uvn)9lyrZLZI{f4{#aQ6J2LsFOAs)Nj z^gq|$9*fxR@M(gaOU1DbW6(aJPI~u~FoIH3Q0RZ^%@j19vnv21+bllf#R(4rqEN77 z+3~j<-kubw)$@VEB)o6R0*UVj_zX6w|9*ybU&<>=YN5GVD#(!pcS$gK+$ihn${QKw zMQo6Zp=tKRhebzIGcra2y|}M-Msq}O3fdmHCPK@p{|$mA)7V7q+<5k)73ZtI6L5BB zG2O8=1m0EGXqJIV5ECE&`>2U!!)W{e^D??ItRjJc!XsWF?vR@X*3iJ<;N19FI#Lm+ zoE?i?;M6v$0sBTv))-{=RJ~0x|Hk@1BeN9F*7GGRG5`h&3gmvH?UnDyY#qpneEfG> zz`y?Q(~^O28vIj}%RZh_IcQ(=Us*2j-(eCS{5bnRB^KPIGSrGN-}O!H$}gPFm5jCN z*`NPLp76gfSUafNQJBztJIpTUn`Su84ylVNQd>dU=%jPY^*G^7R1p8l@$V#%{P*3@ zWbJY6U`N^Iz?}pXEOy-g(637Rq+_PR27dssMF%-+?J@z3MphR1p#vnhq2;a~=@5S7 z*>zBg1va8(&?f#r z-~4A4){pEApGQqN`_rXxYVbnd=>L1f7X1I8Q52Q(2Lavx8B>8kivL~S!cG4F|L3|E z#P?$(%(4J@EhlG#f2adA-P1GM{Wdk|nC}3S9*$HVmNW;&N$2Qv6XD-NCY0%$Yaast z?K8@NQM5q@ClP((DP!zDaEM$h7XIXRDUHtvky)tkh;Iv#q4`kOvvpyJulq%roHH*b zUy3dOwt&Uv>7zu%@h6uG3M)=`t^eH4jK=j%jx4A|y^gmE6E9DuU<&$1_3nrXN-6Hl zZ)nKU-BJ#PAewHaIpA+-JB2*4e4{~5aewyYj;OnKaUuTDFBv!AGn+NfTkPtZxW;`t z^2XEPiXZV<)2ku>v-oQMUT6T4CACR>LT?p(yDx4#M2(GIlVqIUN>6y86=3mD|8jTs zrcL3b?x4{TnJGm6;TjK9BGEPBCPNinP(5B?bsb@#Ak3{P`yp|}ptw43+eTgFR7mxF zkowWhY4R3Kz5A!482>q8I%1C8RSfFij`-I5T1=4Z=_-y-$-?B{g9b4B-Px14dj>5V^SMr2ojBx_(VJJ%GOp^GSZ~q zkx4T}2?Q2R2Au`@vTRmmVN^Y-;8(X|jZV@&{0eJGivFz_isHAR7>caY_^EzF^AR&R z>4l^xFB}+m$S~|8G6EPZ-|T#y9hr`uesL28MtCeBE_kM4@ z)qNR%H2z8%^8)a{a9i#t)*v63npdaO(oq5uno(*W|r z@J{#9wE-@S46T!nTP7*Md1z7Cw_oU*S6tefBm*PvnPNB@QmiN!?r_B3x+ouWjy7 z!f>U&$Np%BG)Aj7Re7ifWYdE6Ry=?%z18w41?~{9$#{{3)6Ry2XtPM@Y`>`tvqIDa zX2Q|U{fS+m9W5yM3KCPK#J^HTBFj-@vNIJfI;hF>Q3_8hP?_Oaq405*U>8kGTgb3J zKi>9PShwIC;=*Xv+fctQ4CX5dOGx0?w0neIeW7R6mJY)`;?mFXL9fLmIGH3wNsktg z>FIm7s4^aqUJGowMozmzDj>B+cf3lhKmG%Es;RZ*4bLRnk(N z4{%Fa1%tu2Z8F2hwP6;r9o_HcR@3VMNF+czp)4Y1sv?2)zhDNO$8rnY{ zz_&&V`g8HZEI-{tgk`$lG541fsly;kkg(R$p$I!+xWkn3;lcD5DzMz13I~1T5zQIE zRd=q`VCao#PsnfbrLx#ZE{m<1<`K=qO(Bw~fU>+~!qXqbkHEngTGMggP9%IKi;{vP z6^ovJkZDr-u-_k9Xb#pU!?6uXHLmMEpe$t>b^H|1&aQ}%H4gXC#40zP%5*af?Q5S? zqn^{=KI>@KUzBCIyA4$be-uxv-raa3FTn{G+*vkk6bJTp~p(TS9ZFWJ#GH-!AndmFi&e6zX}Zk zpCAo#|Ee%7*w1zL1EJ7e*J6V~gVE#C{6saYz0M=Y2+^{=;60Y63__y)mLl=HMD)Ct z!l&G6DgU{Q!y^_>TR%nQeoz}Irb2tZ9>Eb^hNB1({HZ+1mpI}s#Ybj@EJeBc&Amc> zK|@=fGomGuT&MPqC}Lk;hL&AUG)K^~F5muQeUyVWdZV!T1#Kr1n*G6IpGY9~>bIZi z+UZZZY|RfYCtnVpzMB2K{y9Em$B23jYgN%V_)IsOZk8F&IX+3dcc|S!CpMm+)2%eI z86rG7xjWu0fMNKUcVJrn_RdQXC{Vy&J#4T6RIibhEK=Kpaa?-56xdjkFMNixVmR$DT-l4FysZM^ zFrVd-5&KPbX!v?2tX1iws2m6o2T@|6PDJv}@sTs}9e%ket~n7Zr-<=k3`XHeXiI%? zpKZ}-J^TDiMNqdVL_n5Bc~x4o_nS*xQ6j}}%f`W#q!f9hUlUjd zE0)L4Q=i%0k3yX&Cg?nH!wfWD0_kuIStmI%By5Q!OI#I~exS;rlOzgf?V|@S=JD0G zO*dE?DlR1}_>2l#tYQZ)bmQT2`7QjIVJokQzfk+aK;%_eb1(mv$Ooskzz{LrIg7!S zd(25!Gn0UK*`bRW2{NeLqKY$%;8MHAX8uXwHEhgO4nLCfk~Y2w2N@a%*25Slom5y^ z286?Qjb*ghH)+3Y%TBX<+>V)C?Z*Hos0%krAleCAgO$YaZxKh{=gauzNZTC*`t`>4 zp5^JstG@gBj*a^rCiAC$XYQ9fNvou>Q#)9S&2Z{7MK0EoUpZCqWgQTzK{j=9rk{$+ z>;0sI{br}m8wPUeIzw2IJH=|$;gKChoUnIJhvbD|CcWd8l83S@Uzm>&^-NtSL)^YV z?jLSnQsU!$EplCEd{o<#9|2oyl@!FK?@&x@I3zd&bL!TEUzf&Pe^RPgc4q`06*rzUH$1h0kfn zqWT3VsR#Qy@e5o`l=_FX?+Y3i5PUGO*Y(jiyn?2G2m^_14@PLBc?+M%7pUW2Wve%6b%4I7tGv=IM2^XHA2mFrc$ z{fybFa84OoFF}&=rz6{A{>mge(@~?Bf}|?*N1V*pvkq?e;aX9mKw4!M_YpCh`v*Cq z58-gJvtg9=Bv~AeUrbNBMvtyz)6zb`_zrC0XyCVs@gr3~e6U}iOq6Q)n zQH2D!iD)S9J%d8kLGYqXTiR>H4Mk1&p{%lsFohfBq@);XBJeIXdV3@R`#21v5jP3G zBU5?N%AeH$X>hhM2T762Of_i0$-ekW8LV-BO4^-NdfKaJGRJ3$DOQe;|^Gvr;%6T=N^^SYTn^iV|p`}4t zOAod)HCkx%$;eL3Y+S z(GG2O@j4iHdaZv?p!r&#x{mH40W;?N64yV>)N^^6WrW9rA;58RiKF2}3N8d?Gu-Cs zDD!K77~)Sf_orwsiPpKb^*^o_qI4E-aKCSUcvnvKu5cb|I^@(kcRi5#!s`+DYfEi7 zikR0VyIkIoO79UYN%opbK%qHB&{sB2b7F5J$*syj#VNZ81w^$U$~EB0YhU6KHG8r< zFyf9D0iK;-y-9aa4{%;lQ9ur}y zF03FTdJap3O#1MC{-;p8-p?y`@f=M|aas+L5=r5x;jhBQ46z4z^9DR+?g>iYKd75b$^&(ib zW-!B!Jk5TvUcy8wPu-XBHC`p2i<u4vT~mnXH~@7NI=Wg+H~n|(9}$K zDV^DRtqwVBV`~$B8qPkr*8LVt^nzd1}zAYy0t1HLdL0wezQp%n(2%UNhyz1M7Fn)fF2TGq6?uq}WS=c7jSZ``!J;3w7;+-XJz@|?h;TsHxpI?7r$VSx@8g+qpK1QIkP9KxSxfX& zs`ni`SIOneAjh+B@am=+pDq>_2cei~3~pv$e7q%II(Gt%WUf#_3-_hO8gFapXwWb- zQr|8nT@%HT)`FAdpHUcOkFUn)M0n!jDwOv@)KUu4mbWPJ;th(5>K}!rNj1zt{+fCqarqslJtg$IL>~k z{TN?9qu(mm@(l&h40SbHaa9j0QCJj%$F+>oJALf+_S4;L%nudw!_>=yeHK-Aiz7Vg zH#nTA5ndOkDHP@cqH=N!07YF?Ux-tHg;Ep;{1iXZS9}aJeV@34&7mk5+C07*H7vKZ zcV>vuiUaNjG_-hpVmwGyi5}SM+hb!+I8c~Kmxl$yu76t&sj-2V@q503cVxJpxB926 zAOq_;%=)E5eTW)n%5OF$tP&d5v4N6d?#m3(!g*V6G5CyII zzMtXJ^XB9ru&F>*PHAoMWO@8l?`-BdFpR(GoR8Eq8|uJicsa-7mF`DP7n1wH{SaK_ zG#L}h6stt#&f!UObt;}RD)*`x%cfJ4E~~`OE;nG{$jaj_xHYw#qtSVCQQ2@ID*Lsb z?@x)+cQh^TdDJHX#|MV@l&wrCpWsl!DK5_Uh$F|AWEjUb4LgcNceV* zr_MF-N>%yv2HRu&!r~?-X-as;{Du_XdITyDZL5zGyQr1*|D~lL8smWUk;x~A(5acw zzP8Pb?XGDu`0X92-qSh5qg0bp-S4$@#H>BdJ|X)cuJC6L-Ph2epF@lXV}j#(yJ}yZ z9Z`9zoRW+kBVMAeA`r6^3%!nArH0)8x-*6?&h(T64rnD7>duM#(!g^P)S+UcW#_B=_WSM22E{eJu=vR%ZY4yG`K9leg$oTTFYtP2NgNfzA zHK4))G>jW&HpETt1KbW2ApqF#BBTrwkEbp!zO|U*lqBTmzlRw*Aq9IUd@jeEzOP!N z)C591on4}YLb@NNrD=ge-?<0v9P@q5yM^94q?iFJ7 zhmhpTLN2GfLok_t{%mG%zdv}=Ftd*q4!sPtu)Y_VUawvd;}>5uYIG(Kz{Dg^Dqo7( zpQFOv`9|lyQiDD_ds2DaQY*8t@l;(=2rKxfo9U7LMYzo0W=j@+XQcfTGILE7N$pwV zW!P98j7Mm~_MtO|<{-W2|{ONEb6$e7>N;VCicF@QHP z8|hQGLZHX@9GhHy9qDBG@$3-ad$Ig*adu9p$69GIsERP0@V{Olt5n zet$|o)HHiWPeR(~)UdunHfA3(c`a@P%pP`4Il&!rj%p^(7NQ;H^kV*xaSdHrcA#{n zbs&Pt3bxV2!xF+{Us}ohDQnf75&xqdTz6(a^cvQEYs-dySyD(|^%wHxWDrwu$n_XF zV_?Qc*jNj~64#utn1cGuRh5Y~Zi=?-gXwKon{|JYd8*Z7UF7#v8JKILk4|6MStePK z4*1?g&kvu*xvtB1IDW;2!B$Bi6v&hmQ|E^CxE)|0?D@?Aajr~w{i{(D9k$- zDVK`DgCPX-k0H?9z-QRo*UMsl1?5#3jhrTA!x+x`6sI(b{V;y&@S*;6N#5R_rERJP zEQOA?+2j~jy^==*uq>5+3aoQ*avI(V60i!>iaUvIyT|=)^)!vyg&-9_X4q8K!iXtv&iGg{SYr&e7OOQDs{HG#*!_qG93RNOLsGhHg?LT$*$vz@8sdU(CK=lr(*o(TF0 z6vV_cW45p%*%>4Y-XvLf*Hr}Ld6$26>ZUJEWzfe2GsEq)DF4Oy?awmneBTQ7e)$S& zt4_)I1NUS4`Uz?$3gt~$*KwBbjM+H{IIpXeS@t(wbZKd9oW2l89?Wu6OL`Ktn48%l88~~FU@rk zcyrCv(gj!~rCI^v^LQLiP!mtGOQi=%l|DxjF2}1u07+?r7-0^?7CbKTzYaf4DNp^D z{bYOXl3W;8epI^Nj1DS-5py=M8~4%@3i)tl^c2eC)$B=dR;n|aj+gY%fIKSQQrLA| zLm80$f3yJMrqve#t_w}Js3DFhaVZ&525#pmYrA5|S-w9ED#nL{1xWPaFImmhafsV+ zqKja{O~fS!inM7&b5cf^=M|#Di{z;urm!xaHZJRk#~I1^TM1;QSPIRny_Zp<2nQkL zPrO+p{=<@uk#I7mKry{!;|eyInAy%PEse;Ny!<^pJg|3p&qQdw*ql)r%ItAHl&Da# z&uXGe{HqjexY7QEY5VwYq0uz&_B7JE>-MkU1>8ep)u_%{II$>bP8Ie^7=gW(R<4c^ z!Cz4$!pQq!(#6eQZ@hw&o|e2@8($#=>F=3prfdxrXN(CwXmor2oNz3=okpVKE%JqZ zp3YO$$WpR8&cg{v|3EPCEB5YwfzD2IEDN@!Z?TUXvuddfS65v3`enD}-3cXisytYS z1Q%+uBa?|@RB5K~u}`q26T%K(P5dblqy6h4D=1i%tg~Y&ulieS`VA&#!|<#&Rk#Fr z5j_VkGIGOY=<@P6^ABL@+*$h1H4=ckQ4)Wq0*V=7`{ zMyn%i*{zquD|Lf_RVP|vaOrmEWI()HJSNGjhACCBfugo%_hk20uSDNOhnn82PUVaD zLtIL#u&%J6mW#FN=Dt0|_`@5*Apw!NfxaI;knpI8wzI1ph315O_7UD8s6P@?`}UPF zdJ|vATZ}pRP)>J8T@zWXyRm>Q_IY4t|7XFF3Rrk0`ziPEXr_+)qB2nQB#7iyz(g;G zsx_VCm&c77qzwp`$d!;%_6=-=s@)BrHcU)ZYNRhX@gduw+E0HnvuoDyxiinr80_Va z3q}1zK9};n2jAo3+0y*`(hHI1WLrFITFbm`Q*vJC>Hd8ODcD^&UTj%^CCZK`n>jE( zoEbDWDQsxQ1p*+T-T@{AAor046AX~6ov%9sUGC=J9C8XuDhwQ|o{ypB2E@E?K7Za9 zzA0Qb|CdqrM77%=*=W;@_xwDoE)nryIQ)L;pDs^7gCBh_qocp=0pfvrH!ejm#aSHr zYUyPqv8FE3BULE6v z{R2aHrtdHcWUKRnH!8W!?KnOk3XZf_BO`qWEo`#aMbrK-f=;7DnM2NQ$V@|l5yisP zS#*52tjUG$th6(V2*2<@fwh+4rOXm-+k-~V*tAy&SYFD`uEe8b6|&Nn@_OBfq_1Qa z3da?}R2=k|`?9oE-~|gih+s&chY`~8j=ki;rVzhsz#;(IK;C^5dsFIuLaMNZ;rG`C zYgM|q0a=RMUKUl~E5W$_2-Jo8`Ms~}Igr`^>VOl@!KZP8im92I-qug;-={b3N@>Xu zvNj6TOgI;%y%#!O-xD<0=B`(Yp{QC>6uM%*ahcN=@V~#Sgfyd;amkIM1<_6xZEM9@DiH*R`ZSG^hh!lH7?6cs)f%Y>RO9 zVmZ>tA(SvJl<~*8R_O&Qwcq8bmx#j$?38vG`%Z2Y566mzwEQ`iW0IIAZFk}^+a8{ zHspp|y6bTom9q1oGAo)>8j zJSKcs*#R*}=GXG*bKZ@(GA7oXt+NBP)rv$~ji8qJf)K%t5K+C{9D^FI0}LLdNc{0o zQ>oDpaaR?=1tHFPDt4BwQ}f^Unmei6dSM&NpD~JWUWzSEntPE4ay1Aja^v-9tstmr zg$6zKrvWU})yX8l2x?j;lmb1X*ZnGg z{n_eZS5JtPjFi~)(;7>SBdX({zrs_P%7aqU74uFGkEcYX%NOK$wB}A{GuX72@n1Xc z&8r^aBL?CXV=@2knxf~$%Nr94@i>Y!+Ph%%PyAl9H zjGc7kC}>h4!l6rXxFtRL#of5)%wM~n@6POnZfFu|ne-2ruG4?#-oY1SXE3RksoS<7 zS_em7sZ?AvOv10=ucdx1fL+uv_(92^uPKl$zp%AMLV@ToL~ljIT-Blehoh7~(;4}; z7EhtE>8snS5<3P&lJS~!rX{K;!o1=!@6f<LDXZRdOT$0 zRTu%I{%NY}y+v$>r^iA1Zj|m0l9EryioyB1u1YnX4->y`De8ZU%QZNf zr+LEFiE(*-Q9rT1*b{;Cqk2EESg&z?6$DAo!u9Xj<$5$!`amDPQY)ab*z?32 zT1m#x$WYomp|@~#d7;^nV6ZIqE!)jHgI3`3k%4}ePqJ*GCRLi!gBot0Hjr?~wgZlB!M}C1G<~x%?S3(BCAxcq6AYbw)MSgXL0=|V=C;DI_*BEFm zFG7J$$sBWh!Gpe&vfL>xnV%)!0w}c>wW>1(#E-bYw5PncL^~nsY0R14&N^vOetP20 zV63-V?9UPPv9*6|mJt6jX)L3XGv>e;EOg61s4>`<(@GCIkKii=q4|Rp3K3ENL04YL zTfiz6cWWaq$fiw&j!6l7+C_8z<8wFnDSf4Sm6Ez0V5KM@;=7W{tSpN7UjbGi`} ztTZu3E+)mCsJ9+)BgePoeM$dHG?g;YGo_*Jk_;(sa%Cu;j!af6IAY>Qnln-mqfA?T zfv?Vicp?&)ys`tsXghnWttL4c0T(Ews?j3E?7dZUOsnxpLk0aPL$B(5!K-+2Zwvcd zaF0!q>(h?*+OA&>la|?jYEW^u*iB*?1Vz)1C%W0)a{9#S(w82)W)V zai;jI>gwtaH-!xvlkxMHPTs0i_V|(imiM_fg#f|i^GDp`Ic5m5-jAF13+H2x2*Z(F zUDDkZ>|9{Ox&G&C|MPB|o30o7x|*JW`xQ&A%L!Un*Pd*--Uk_BzIA5veIp5@!?lc? z62UF!VHOiHF}887P8?H~5V}vl%kRwX^5G+KwQ#-3<8WgpA}wQKW6(=Sf_&g-+y-ir z8Q>^3>T&r6xv&2p6s;q`E>ty-!huBr4vNd|}h z2}NffZ_QWg{mHo$?ZH|V9m&Xjp!Xsy4J{KT6>F+>iwo#hNi?8jz@Z}ZjkUGweV%2H zbk>?zG!YcDvZcQKuDiRxA%Hvep0t($k92h~VqaRs&a&Hz1&&=4_1B+ATVMUf!mrw1 z`rIkzWk=k56LP!_vW=O0dY&mv?I{Bj;V`fxtggq4(mwWn>vcXd_`&Rl+zdZw8U1AD zpx|Ez_vHGf|QKx=om7tPaL`HEwMz>dEcC;Owqb9*VK0) zO^GJxc1BCK3z%0PDw75Vi`T^BO@><+AfEFgNvYlb;w7k;@ogrxFeYU!btK-&g=AqM@k9%6$(Q+v^EI^4 z+{tPhB4pKm<&To$A-(?f29w62Pg?PdcycM#1)YpJ2}?5i0apy}RQXa}o0wrXJSG59 zfY7w{(>C?WJ1vv3j2Pd*nDNxaxPHIhbS>}s8aUb-eo<_MHzOujmgU0v z1sfUnLakZ8!BXR$@iBhvT0fxgf3LQ5ZUy~7W7c}|E6I>Io@Cjc^rE2?6_X(2b?IdH zf_nHvYFZ#=UZ!Q_zA0^N!`NS*fvZ*j=lQQUzvLwgGVV9`&AQOy;zCPEaiVyC7r{L9 zP_QwXD-|0{0TEEJuG0h+cr~D+w3Vhu=1-3OsFB8o8Ws)p$um}D2~=)XQSn)-On1^L zmNM))=qBMN9}l4t2_N1l6c|r-p_*eZ#@Sh>uQ!Palt^$yQ67ee%?kKXtdn?!U?A9s zBeX9)QY9I$T*rCdcw8XX_VZ}^#VBErV16>uq*`{hHNA{tAROUAdb?C;YFM)*kH4ZO zGuS68dH!(qlU}UP4%DJ~4fdWpOse@3OVnH+IJt2xSBTxjzuVS|&xzEJ+^ zQ&X~h)r-K_fwIr{YP7!+jO8xrth}4A4Hr`rj(KZC0zyz@Vv{3^CCee&9;&QwQQEcI zLxsH`m9;fTmPUnQmp%lwuRgN7^OYpjTw>;!`zX(D$tt8-)Ri>-sLu41wv*Vc*$i|K zNLBxaAnr(7s(R%IIr(@coS3+|+yq%&)5SbdT|H6WjDU_8G;zHIbErh-EoeMuz^~`! zcl&&M-g=Ky2%f%xx-4kCpE8_(6uNC(yKTJvhxE_+w}Ajx0B=Ox&C_$oUWmtR-W7q) zF{k~~VmTA|@g3DjcVKyZjUMA$PQrT>CPt_~J>hB|@QrG{wr>wm6}>N#bxi}rSSh}e z*^`>Xn*~KVZ~2zW7FF-nn|IRx%mDryuT7j<3thDy(gv0z7?Y}!gii3+j>F`iN;LX`y18xGMn+gzddm?UC3F4rC$<|A&cAl7XhnC9;`iBs%iLo+_xWo{TfT)M$YGX?D%q~DSk-~rCt`AjC%zEIZ3S> ze&2jFDH$p8N&5N>vStx&7M7C$3YyeEU~;Lx=V79Ud#;qyY>r;+3;P&dMX&q#DlVTZ zS=(9-rrbQbuyE*v;z&U5&5F{Hc#1RD{j@dd&jA!WgqsX^$I`O zbVaHtnH1`v>zfdJ@5`oKso)c3lZsXo*(J*ZwT_0R%kmEx0nC28N<++&>WVA1ie$n2wPCDPO~891t4t)`=x-f3#o zoABsXpoTDnjuBPM-|O@+S1uDdoi2pgCed$aC=@CyeeN&lVd}TyG?EHX_ry;s5|Z$6 zGj*{VGC2wUnO{T|laLZ*aEFg2Bn#&^YGHKsBj%X5G9;)Zk=bWPeZ<51%!Mj0EO5ci z!}WA539-XuS1qgB@|754OKUPuxdEm^3^%y<#2z+Xm>r9>(?q4FY7Y`b@#chS%6Lgj zAGn{6?06-7%DKZsf9t(1C9A``<$fl>|C%W?`#@5);{EPn7W3)54koyHA{f#pG2+lB zC*@LanTS9&ip79Vdq6DYU+1n@)nZ2!OuC>~?FU&v5F-fccYF07xO#CktMBi{qA3Nr z18V=u_wun$1T~H6f6Bg>OEvB>{4&>AbBZtYHfg+X9`;4NijAb9;d{lcoYBS$YNggQ zf@VPps4m_H`q@nJd})SmtXB0&onW?9Wt4v=N}W)5`J;>!y=}LsD!B4Q@A8SpWHs2p zjke-L|3oV;uG@DJ8i(Cjw3TMn46(AXHW-h@cpt97*kDw#g7|#OB6LI4U8%0m>~UeF zI-cmn9u}xTwn3UtL01DgtXh%XSPGRk+y5gRMm3EVfiRKTqplfO&P-P4k%duXu(SOc z-ae4sBAY%i+c#QpMB^_{h(qyEb#J2~KEa+hTz0aXy1nNptK)K{m_)8WUo*Wc|Ivr=B% zt6#q~%An)#n;?(U!(oPLr@IpfVDv+^`x^S>)SFS&di$fGL#8zCP|DPS%}LaP1ZZ3g zcFcVo&d>Rt(%9cGu?;wlEY^vqXUrSd-3e~DO^fjb zV4lnQs#aWuG~Kw9N1aWLk$Y@04lex+?u7VCen3P2e)2LFCfz3NZ*ZntgGQWqyppJu z;pa+d{r36a?AOhl-?cGCG_v&k4kgjL%c6dQ?o@`A+*5gzU*u=YHzhUFgm#Qy5lS-Y zlC)*~!5ilrH_|taYM0#?B~A5P#=Lz<2vBbA&C}%Ze9?a2)IDVah{EA=NMiz*Hyc~# zO9($KcKOAQ5|#}09h7tyLZjngNjgY*PLc8EWb9Uvqe+?nz!nG{fe=_wz9Q$@X`yu` z=`m`wOYRA)r;fo{OTqPIeOtCByzry;X#WcjlpGtnNu>G2duy+>78++ANF|Idsq*=h z!NJCzR02FcLnNS#!dkCPN&qV%M&88r^?Nk1U0C^p`I}~dFe%iAfkErlog>t8KvgmU z3D>W}Q%H|%aseLXtnrXO!*aI$Qfb$d9ZXzMPNq&sNz2+y{Hax&Cw^+0Wt*idiA+#5 zG#C45Aby!^jxP=Ty#lcckz07?QVuA47}(hEx~V)%Cob%9IEv-1#Hfr(;r*$CfYtr$ zmyeQcj6Nc7Qw>SbX6t}qm&3r>#6V;ZoAZaYCdZ#%uaH*;JrfT)fpZ_w30?AsgXkHB zjZKZPw#n(}o}+|UY&u}2bwc!E_j$X~Bh2PemJ`$r4yR$!aa_tR-MezI*n@I|KJR`o z-Yrk!)^3Ij$LalQO_Hzn)R)XoB$xa{X)}(vRS=a?k1}CR$zk}m^5U=QF{5tKJh`wd z>shB3MNmCCD-DF-`?bvPwMB1cccUV+C1TLcz~3o(Y6afJTA;>GoyjR-A}^Dx<`HU+ zqVV?L6d8@YLBkLo`bOt&uig9*THA+d5MGk7eh})Ik7lG`G2?0h=K^Kaz-Lxk^EPf! zOho&M*7QNtUliooMJnMQ^%z$DNZ+r>I>36I_qP(xr@B823PzDV8Svhd|pU-BWLF1`Rc%DLKH*f8!+>;NRUX;aSDNKvx8U1G0II zgD5E2p>))QJ+K)F7+BzsFcorN57q8eOFPx;k&(MlJ`0H{ zk!e~Hl93V8s|KcuJ!<^VeW9K%5FlEhb?(vTWa(_ruu}>XXVOpMMBf~#XvzMs--#}i zT5EijDVQI8|Gg1t??(GwTv@%kRC9Q!HV&l_0zjUs+ zjA33!4$1LL#pW0k^m%&{pykYp()VxoR@otYm1#{(m35Vein(ur=NRK1$v{^?$lC@J zVPVpi+vB`Xd!@Wp&tn|Gs0_^Ezdn?_eKe{;-2o1;Dvk*je*;`X0f+eNi;GSkFyO{w z+$J2{D(vVg9nTzZmc-u~v~7*?&PR&Eo&)5>?>xx~P*4dP8V6jubTC7&muDnPME3J< z;0OA2Gp}3q&-`R7jMA{XWbje$w}^u^VD&4!A0?jse$FHL{B|@n9wTX5{HyrajJ#jJ z4kK3m0Sf|Jj{?4TXUS&m9N4`T0H4Bgc;Z zztZ$Bk@Ycc6C92V1-boQfoPiViBr~3n!3JimxLk9-|`htK#7-YXWtt>rH_ceEN&NZ z^C&&2;aNs)`Oafj%+5C)wV=wo*v_O^#GTpiWHJi5r`CRV1cu6N>og?#-7G?crVJa- zm&UO4^c6=2T_S%X6hM-boLiZDi-3r@SZ^&Ea0xo7|5Ah+(}hknoVkwy2PoYY;b-p7 zrnf8anrqQk$`yBeB*7sS&4>QS1490@w&<$1jay&CNEj86T&^qrZWA+_)LT% zW>>i$vI8BEhuLX1&9;l72)>>0Q zT>9NA4hfgI4Px~q@ZOG?{z11K&-4aN_IC?bssOqz-r{17E@F3OCdl^6l{Qhy4D!>0 zm3Kd@sPqBmC_udhmX`jD%lSZ8@{gti+&9D@sd*W6iaJQB#zI~HD>Jm zXHS_tu(OzxrS`D?P=z5(qgZ1D5x&DgH!ZcxIm2@H`=bKH=+}=a6+5e!SoSM#-RB+K zc9+gk6f9nZbPJ~w^0>L+NTuZE$=KKeK;qUTH6(O=LQ;*{q!K{zOITQd=&Sd#MMM)E z9iBdzV08So%edJ5Q#Z@uamXf^iePJQl zBthqVSS&GNqxIS4*l~|6SL;P!_j#8fqVE$LEp2i|D*^*60y#OR#uuk@amyGQFo-cq zO2Ag?rp|4>Tvx^cS!9l1$X07!QCdpD_s9%nLVy0C0lXOSsQ2$U#Kfh2nzhetke2{X z>dQS}Q6(iZ>!sR$!z%r%WbiLJVC#2fMZ}7;Bz0C0RT}xEw|$D_{0n~R@M|gx%X3v) z&lBdG+#6kD+Jbc_`3E^v)OahZ3S(4^$^#S((I?NonLl^k`lJ1I+uJ(^bxUX;6@Nso z>3HNG@q!NXwjKxOThjNe^!_#(&ADk$C8fZQ9YmMNoWK6D6zBD0J+QtXxAxSITfL*{ z`4L-v!HPmGC^b+|wAgG!*ChEgPNXx>a>Sc*@K3#0WpG3VDspr@Vu+7jRd1^u9S;&` zQ*t-SZcItuFQ7-D`IAFS;w`ki@>uYQdvg<_R9EvVI+cd5w37Q&l%+}lSrkYi+UxA1 z_%}F+$bBX?hEuXqQK(9cV6ux(NcgPb{%||Bh=GSEJa3bs(PAPXm<5)IfQt&k*Ok@X zKnMv1z!d=Yfmv$j*11+B$VRAk9T!B|+n!4;h67{i-BORt8S{k(KfKCDAQNmfT^$SEoDzLl0njZR>EFVz1yRI$)-F8Kq$1wrldCDF98bo99w z)-)Zrm700tFD~QU&X{SJUqkWL7qash{I!()A1V^pHwW-kSJ*2w^RS zB_plkrs8xt;5d+1WRijR5rr7k_*Z+@%;EunCTH*``vnjx{nOLQXG((sC-~-caoq1Y zq;jz|c@&48^zHfIeD)txuThsCZEh=>CP^xA!h7;W_9{G!wdQoe>}Vn&(F2%x2!KqJ z`ZrGCqJ;z;vlonfQ8*wV@ax*vZIQmROe5yo*1<-N3=@tmauS4$7ksGN&oX862EO*(D_#M zpKF7|NuuW{zRDFl@-@m&e|?_N9romXoAk!|+$m5eTi(qr`|hnT7n-rl2wTF)v!er+ zJLrSwrTE}Ofn*Ngp|Dh~$N~2pfXAQ^^Zy3OmV@aARN{(|1UgmF7CA=Y1AtyYB$+O< z&HDKJJHR#Mvjc!JL`q88(QlBRYGX3`6dyaKbbRx^{mDUa)zc|YE^Tfk>lInv6uYU( z-HYXxZgbNJkYmhl>OZFoXiNs|XSqPr-Hi9|T~@d0<9U9Xi$$LU#fNujJ*5HL^7%vS z7mrVabnBzRI|66^BBJx7`&4a9(*^G-D6lB*ewnf$ zo4H6s%P+?w7vmG0U@2C1QTQ)$0?G7-{q2XhQd=aDg z(~+2%F0(dCKJwszA_7Mh(eb@8S)Bp{)C>T7LbXa_@t(18C+)5l_m}q>JIzlt;2Ux{ z@5=-EEgV4LfKn>&rw36|TnzPrAYKhwY3_*!JF?+VrDmDa*(7onDR{1WepIEU1aycm zs&h=Hk;b6Iii0!srwbC~SbjOZ#vTnA47}b5v41_m28qglWz&M^s*D(Re!}E6;*PhR zky>%e_DIesO+*kapUXa?YVM6CS2R)Ct?`}F@ss#QfaW%c5?g2>84qV7bv^C90SWb? zQv5Y0n;w5jx2r^Iubcu44d}JSzGk(nXTCtr!M>m#xNNmvbGZpUu4Jj1P>INRE!S^7 zj@q)|Fp3>5BA&UflZJ;sv!1M@iuWZS{tVCE08f{&7%3zQDj)n6LVmj+v751)2UAni zZ$O-?erG2js01l#XbdKfYSAz{J3{R@GJ!}7F^dm5kI~D^| zqt%VpanDD5y}b?c-m^`&17p|0p>HP%BMWW(a8{_&q0d4|DYoh1kk0*f6%~+2cB+T_ zG0Vt08*obt-}e`;i6;{eT=cNfUSj>Z;a=2jjL#TQ)pvW=g?PTr^)q=Z`oL^XC7UYW z5Ev67+Y;m^X<3l2qi>d~58AKWyL$$AUW6lpy~rKSIObA7D(i`IEdHMPN3Vp$mQ+1? zp#DxX3D{5<{w&SHBk8!{s83=&WvTEmgAA!iq?z-OUTB`ouAJfh_1ROeH~l^<4?glL zp555F7;3Z>{T(LaN2lKVcTaaBIsNoi{qfj7tW~xVUuys_b$`OIc5p<$r(bTHgaNdT z9;6RFEr!D`8b`J_jPz&XYFXgXSvLZO6YKtMhK74diHBThvn z?TCRbfuGZKq);F*4uGLNJU-|&yHJs7_c<%EGm%k3AAR!ea=v76Gac)7+DS;3jJApW zUzELNSe9Mat_`A~ARvvTNDG3}-J-OBbgFcBr=lQ;2na|cs7On9Nq2X5NeI%l#_6-3 z_gjC~wyp2i?X7TKXUsX~7{{3N*sDS%$26(DZVh}}!1FU*ezb1|Fxo>|^ zv_2{(%U{|1vENW^+ovdaFYhh8e)%VAA6>aaMLkFe(rgc>i~CQ#MDAr}GTmcKwQT7o zBqZuDbaW+VGmwb?JN$$h&EzBZpVLLKI`Oc>Un#-%d(@85CnuHJK?`~PBMoSBJxD6NTWTs z9}UXaSdvZSibC4?e3828Gbj1Ntav9uZu9Q!>!5Y-Umod-q@vmNg05^eA zmy$&`p~ubScta0wJ^F}!XmE+iM)J!F87vxZWwqIZTz~Os#bSAqi2kKGnyh@UD4pf$ zZzj*Ajs4LdtP?fc#eHuvGYR9l;lanqzp@*%HDqP z$Byr}(`s+hXVPNr;eNa!79$rq(uM&WBeQX5Lcy@7&zu7=mGJZ%LT@p=x{nv2o%-&2 za7*ejk>{ms5XVIMt%vdV-Mnk+?s;mOk(NJp=;OjppJ>A+AHH(&jxKOY+{D9j7i({A z@(Tgwgv)g%1Nv|DMk`dXu{y$$E{vOe*ng+x>Bgi87R^=SkZ6pSFf%gR+^Y1wh6-ev&sjn$KIF!eWgjsUDu7W%4Q!t5h`w98U3b1K zw;H4GGdu?Nmwp`A?%YlLD1k-?WS;GLdY^PUV$K?B^%3o>B<9R_=$pF}H7}1SG~aNeQfdI83qL;2{=0{So7 zU*Me1$jBHNpnl_Xm&qg>Z(t!V0Tq>gOWapLqyc&@XuDP?NO?*b47`Fq1WOED1v^-J zX6A57j6$&9A=#X`ESjqY-?OtbuWTN2lfnv0ZTxvY0#1dvpd$KP&qMMyn((fih7yvn zNnCHf34ZuCxbj;?9cGe{{J~*C5El;xC2n2$>Puum@Cue>{P}rHY_G>SRIt6pq%al_ zEfD=+=Lln(Oc_u4=IRvgod>;v`+0 z8B`!3Kr_K=P7-z#Nel&B(gz3BVgXmv9zA|NrO$i4BvnQ^2W&gG#UTs$!Hoi5s$ai; z{}>9POznFYo>{q=-?Q6%wBWep$ca_q*cG;4FH_fDe?7;|tPG#|TPAm#zC_8<(_v+=4$AQMlrkgT?G@LpJw8hnpb zqz_}|q52?j$=)(~S=c0RWJD+V7LG`jY#LFwGk}M?jc^4X?A?REe?Es;QH3Te&LeD^LCr&ITBK!9DtKEYU(JIj~nUr=sRj3yr)@d2Ag8hivdCrXXM z0#WMmDeod6-FWkDraUq;6Gp9ulk=VvV!n}pJ0wI2YLx0^uYGU(m(*)x_*7|F{*_u@ zfJ`a5mX`8{r^8H5bIg(*SpB1JA5i*9Z4Z$D{!r(I#e?|1yhPrBe1ftun<)1_AGG^{153E z=!fssT2Js40pn--OjRWU&A#WqSJx$P#^kn<>lGV_-EufFGw*)7sm)@ntt+H0byeDh zr}=PZVPhH%kL*>xGfT}eR`-*ud)B3MiM1%(XV=P1y-D0Wyp zP470eDr+Wt;2(yt&w1>KS4~y;YdzkYd?%Ff+NWtrbE}422^I$|_W9U{XfFpCg5Eu% z5_!+siV=xUMCA5ep~*?v;IIGdKV3S0uH6*S4ST33M7)uF=_S3({OJ{tJOA^T&R9qF zJ+XW0P|ez$?|+t$jr~mRa~%xXQOs_y-MJd=xh1~JAT)6C+IC7nN`hj!a$DMR0Db$E z`i_b!4IioXj+m4a;a!%j;Tn#)pJ`##fha{^=^n)Xgl55ATC{DQ%U_i*=)sPrK;VV< zDorOr-lN8*=kALSrQEJ2T~>wKE-(aLZxM20`aV+?ly8Q&rD5=Bd4)DnvD0 zzEQ>uUYk9!UT`yQu$=5Sn|`n;0B<$$90#iJiZ@B3vU4BoqnbOZnQ5XNkBf2Gp}FuUlz85k`e?PH8#vxQ#Z1ARjbL|qarBa{ z`mYN3F~0!;0%8Ebb#?#;K_1iLocpNCkbj8t0W@ca^obt(S zsy18$3@U=?nJxSjk&r-v5EhW%!J*)**1x8Z2n8AbJ1b_zs$4jtO)@EIKCT=-Z!CiYgwcRZQs)6+j;>AdHB>2>nrjHP}I*8|J?R_zR-MA_n;I0aCzeEbQq2B8j07cJOtkLnDNt zbB(7MgO1W)_=v!tw8(PgLm;)!XF!Bqu!5C(h;c`Bq9vZT(0vnJZ5f#x0Kr57O$w~& z`b%vMfQ7Ei(gidTK&E5DtT`g$Wy|Ir^ zMWqNHtyE!*b{AkO3gZ$XM52IUQ2A!b#1r7|fWlE?t%KaAyZf=ZF<;^tih<8DJ-F$E z!*%lq%8-UR!-lum=~g6QlE`6<33vl2bV2N`-(Bh;A9CSN2-~l`)z;Cm07mF90DXn9 zS%yYtX=t1Is6r8w+mmTPNdSBp;l+Q3W3T&NVQO zx9{z>8t^g3@g=P}eitFzv(aGE#suuf8Q_2JKt>0)^%q5Jpk1^BJ9a$*=7wqY3V8>> zNE?8@b{z|gmX-BA;JG2N8Vt(7i`nkW(qISjDp**;n0gP$2lU*q+njG7Q+s~`qtSsl z`+JItAy0eZ)H}?!CBT&}T%2x0fie9BK%cr`8;`)VQNROII+Uyleyb5oBR|6sN3f}Y zpLhvAl+V=EhS~=f{_KF2KiCV!a+&utckteP4O0<`1AD+%_-R;w#pm*LW)J9bpumtU z>>aPdtA)GaM*&z70;K`a1e^0Nc$X838K&I$hlv%TR*@af(IMe8aBK*p5+)04X#h`t z1i#fIdMSi>Z6drMpta7RvG_4Yexcb#gFLIQ7K0tUYh9<^1HlAWwWP~3ueupfSI2zXXXHdL2%#jyX9Ep%BJw+)#LjA3SU*hLy7I_k1IdZn{MrFP zy@Y`d@E?Q^X2XNez#4_|+%+Bs+yhzgs0PeI?f@GQ;h|nrhYb5`{XV}c;F$x)tQa0X z%vatV`6!U|0bV$Q9EDNfzFmE|{xzA~k{FC%fx@txy`EiW$2YLj`Ht&gD)(s-At1k? zF|iEjtvNvYvIx3v37HnKYX0<-V=E6xNx1{_uO3)M^6=%r!lQRw?!58U^YZ)Yv3=Rgl~cbj zLIfQXIL%wP5+`h?ny$EXx?Q^hlOIs-sMx+Z++W!fZDuyxPR12@ry4&otAZaY2H0$) zA)TgcSj2WP^SIW0^dEIB%O`U(_K&(&O7yAxu)neoIFlW~S0VFl2N)3CS{H%1)Hqe5 zibB430nBn2NH7pDFsAo`te9%rlLQeiwu8NvVn>klHopTM&?sCC)r44BSW{9^%3Fj*ku29MV8i%$La0^_wMGP&9Al3%l(zS0Q zDsD%Zc70r%Uk`pF6CCYwr)?Rfob;nk=)2Ors9LdB`&muxR93J*$5FfkMl2 z*%yc-f466n!5(-d!V%Jt_b~T&aMf3OlBr4UhI+p%kWbq1f?v0=xqE1oFYpSmb35RM z^)?*Az#El`iOKBQ*ox&jo0LW8Bsiv9Bpx1n0p>TQ+rFy&&Y*Se+Y;ZGzUh#rjGX8e zj%&Rf9!xl2jkCB6tuGA&pog>Y zoL7LPVdEs2tY9EO2?3ZBWguM%Hvwp0J$98-&h4sa1^g2$^4O*)|AIIm9S~}d7f>J0 zAZ4;F@PZpqfa~3$V64&E+ua4OIsw9}6iH^^vH9aB1cGuj0HZNZ_F%zBn0pqntfnR= zSN2(af;m?ba#OHxa|8fLEPL9rzP{f7($T@;Iu1^*D?`d#V2Z%e4DAii*_jSJsQWFc zTmC>`L|ChwfPX>I)?2lg7an^D$6o%ie+hu(D3YPO|Iq8mZrWqxKA56QKnwsx^Gdhi zwv=oepk=`|AMzjo>}hlutpXo(3BW3*Fe(X&iQzB+#80~IR62O9YpR2(75nZ;c#4*7l3ZCCZ1XF$}cdtcR%~nf|fjztJ5OM%pzQG$Y4O-(Fe#WywKu-=rPh`%TL+gQ)!G#7f*`0K)FSMh^Ce!?(F8~mQ&^e z5O%$4YXbx1q3g(s;!8Y$_^a=|uLiEzkRG$@mVHD}m8Q?OBk@Q`S|Fdek_-U^SR;;Z z%dw_q08Ijnk(HCX=|qfT3sAc{AxrodiN^{Vv4~j>fmmXim^c4x-YS`sJE5ym?~57p zbsD$*Aq`-mX&`Z4_-6|c`yn?KvuOq@!Tp81Q24)v?b`NelxF3fUAjw zrsoZB@ra4h&jx3R6k7PzddXxR95|pC1Jn;dZQ}76sHjLl0~`Vp9X&nx#7P5p0cM#$ z7xFVCBqM?$c0zy+#RP|NRKZDt4%c#BAgH4sG$mrguRCo|C&HpaKu#_Pi{+Jl3wXKE zOMVVY*x$_wUPG!~1not06lAv*VpE&W@OloduD@+47&?aXOhQKml za<98hXT)xr1s#?sr%C4n%M0`yl@8%`K>8qHPgrZQ2C=~$9W)_b%R2DrZvh6nN>=BI zk=c*4E^)~Yn~Z(ScThV(|2(X~ea~d8YEKb1R3vi2l=3>=EJaCAY(iGpmhC~^^Xq3x zH^B(K1H#^CSae`{r4<&g?%TIvh3UPbQF}rJ3n#MbhO*^7bQU6F^h|mKDieUuIe;rD zax{yE@N&`H{?F$(j}%OEb90kGo+@Ubs}p68jgQyanEb8~-)&*=@Mt05d22Ej!5BGL zrPcsb3YGmmxA#$_H4ePOdrwdGXae{wm6~gvy4NtrAu&)iAO8s8P+&MW1My6zCrQ{H zpmVT8hz_#P9+A`cu*F~(CMw1bMiM|-d2!SGx`Y0^7XZNJFwsE~_lG2J7wEhGRKgw! zJl&XJ?<3lYV8|fXeztK2pDulQagGE%W)_x()DX72PzC@(J3KS<-UTFZXcxkqu+teZ zk)I&l?1e1a!+Nvcw*7BAOCHo&jgUKT)E&c8il9INx1woj$Zytr$D}8z3jv-HY3SC& zy&MfBUo;}qS&qHB5y|qgc_*Ld-NcTnX>J zCIo8FU4SJb*fP%Nzpg?wX`l@gQn8%hk$1m1UMZgsW+8>V2C5)-;2I&9h=AYx@9aWl zLl2hi@J*4hGQB9Bh!yb`P)v`6M6d8g6DCm1>wyI`X>W@eJVZ!U0qgq3gWR5 z5qIH-!6|ANpsdlbogruc97oV#}DT zMs99pPUX7(dr&>@Lgp0-bw>Z3T`M%*+M7a1Iv~kzOA_{k1_lGjuC+2C3=Hj}pO|^%24r7$!zOJ~gcO_Yd=vE0ehwA;Du`gd~U!l+tfw zR?+Z~3m~lo{CDyvplRFo+D?DIu;-~&^*&U0JfO`RVJWp5yNjB!QPJ7aA-Ld?>^3MA z2;@GuelFl^|Gc^gc}Cnf_O3)hjVlhY?DTK!w*$WTi5S3Gct4J`C7Ifk>M$@e%2iIW zg@lCktO-xzpNz53{n)<9;3wNdw4}ctG1>q+r3PIx)Xyoa0Ffl!0U|?uRrmVWUdOKvedLVkY!sgC3hjP$y zJ&jhn6Ol&*(Mxn?b4ukyoR3TP56$5D2$hWZGetgVWrGr;kQ&NDSnC8?)?+s}KJ_f_ zpW%A@oK0{1o|8KL9u0?A$Kkv_=y(rw$KcDJY3~*dttniJOCeX2kK)9)>5Lvqh>b}e zJXIE(O#5M&U!<;+Www#m;2%6RJgl9QW|%XZdH4F2_M|J%!+z2Puol=JB=(%2<6WPe zB!6-zhHl5ZR=*}-g}=wWyLt|5MW}~=hPDa}_^)pZlACHL)>zZsz>~P%=YcTn0E1AO zgGCI6<&8^`s6fIBlGZA1b(xAVMK()+1y?_5c+U6BBfbEAY2~Lr}LoD+fi^b6Y$1z{F6-D76iR(Iz z_KknPhWv;W3k@3Ae||c^jNZtPL5e&ayg?y@Wv|+~5+-`VCy=<6dMSLo7|G@gc*}>d zz^bUK-nf4K4lu2O1@!<@OxQ-L*Iok&I@QKaT-=qC37Z8duC1IV;vEd;#z1T#<+Hnk z;tLo4?!yNLcJ@5wk)(4iDiN=vS4-$P6rdML#!Z&MN83Sy&wDI@Tu)gf*QrDiDv&lY zsNDQu`s|+V^%TO=2YO>g#U51j2#OYA!hTDe1fofW0lPs>0?mqobQa zR(ztR6|1rC3z`e^fQ!??fr5U9UcGHtvX0uj-gu9&8-H(08w;+ zIrAKVUdTU_lXpOQ@ovn@#)01t7IF@gPEwFfu47`p0L9A-xQ{lQ`UOTeKvJZA@Zh6j zqQIZR=3^47>>CWbkgFiD!cHYTxJ0NMMyow}p?Xhs-JWI}S$7gZc6q^DzH##= zosdvMdXfibNRvbTHa(;Tur%XQQ-{^oih`PZ_BUO037F4ayRpbDERjZDt^>RZdQQ&B zKq`;bhz-puw}${eTZClN{AVXXY+E5?4CphndX`vIQv-l>!1fhRAA-O}4Rl5lWD$jR z3e>V>K+=Q4{v4R2s;-IkhO;|!4MKaJoK+|5SrmdU?~z;q!HZVGSWsXq^*VO2soq!j z^7ck}xh*i5Wxx%u45+wApbzSa41lHxTS%55^;v|%>m{hFkfh=ij&;IhXaRS-Kl}T} z@a(Ggx&;+7eTTEPpg<3SK~Ml;o67ghp33w0!?2AmDp)WPqGxj`Is4zV3L`{Wht%x( z@6mju?v{_^dIuvQ5hlTl2c){~aa|@bIz`~8TR>YcM=obY^s)^hN&BJKBCzsEkf4wP z6j3ga+-5jeZ-e6}5log`dX6ULAaxsHADVHI0X558W@G{|XYlRTrBiQHnY#KJ3diID z_XL8Kt(}-_#^E{SSW+=;dPg9WZhRL4F)sA?SYaSYW>N6sP*a91+FDx;0fp*pxryA+ zwAY@3daiDpEy$7#QP3~&d2C^E4+<@@ypfTqQoxcUf&$#s4L^{Dli-!qfa+ASuMIga zFs!4HYX_1m2q3*?Tx=VtR)A&?^r z`ey83{>W^HX8`cq$vRlst`62*gWZ!aAbdlCH1h2X^by?*_A+1CvP1_D?Zp`25F`m_%6GlT}**44EHFkPGBQxjuj`?Di^$RSn> zs1%e5kx>Ryu_;3}ef`5@DXB6#2~^mBV;@iDn(vUVlx#9n;|*;fyub$kF)QS3Vc}RA zP$NfceMOO?k(jsudVD}q-;R(+V9f~K7qnCNGu_Y}QJ6KbQ@FI=4L;*taIixbFG%eG zLW9k^?qBluBNmsJRh~UtENR|>@Votet~Rm*ILv$;oo#P`*%B;60OzV)+&Di!?=$0qrigC;eo}uf#?`AxF}d`r zjhSt!hM%7w1x{5|CT{e8L3=7_2M9zoJI}PM#g<>zl`5+=%L@;M1*>}jnf1G3|Cz$M zJ6FjC5RXuxwLR7Cd7{`|vLx|3Mb6npVQOsqoHbGL@rxI!I_^qnPpb8O>zRK_r-g%Z z{1%=fhtuj)P+#gmc1PMgw?%!t3akGh6JQ)47T~^iDD+0YmDdt#=S0I`>hJFdceGWf zq=xA=Cy(E^peBlkN0f4q^W^E%TNxP{M@L6or`|mm25M?yODK8Y{e2Hc8!G6f$twMYUeT!k*1+BKIK zp2Y0>ouM!5S(td{Tdj!R{?3U@H_wW=g-npmCW5ZVqbV7zocJw zn~(-L+BSBps6~Mw2GR*z)j@dAWt@(|+t4l({SkWMt+b06NR`)xuO2a9(djx>n=7@+(T4mR9FbkzB>VD6|^mh~WV3 z-^MP}Oj$X+g*hRH1-iO^ekjmW#fVt|F}rFJ1AV_X2G-Sw?z={%C*8Tmm4oKx@Z6g?nXiubRyd)*hwufD{w%DGcG#2nA6?Zd#)!#uM7kQvVWcGs zc<%@Q(S?gEdj5buvkMRN40;$kknFS#C?2UD8I-k@Q?nj_%v%szkc?*k7jdiHc5J6WzLno+& z3F7Ce(dj9{Ez;Sj3S3Gdurhq3u}++NpMxwE zA}NoY9^?^539V+)6#->&@O3m&18dq9s3TV@r@Em+Z|!cEPV4J^SV9Ynh%i~`#*rJW zUW3m@9+>UiIoO&CX?h`^KA^1m6g`rFoh!+7D%0$P6zv2e5#@D#?OxCn~n&CRY9&v%X3CASL%K)t00$&sP*S zz-)ZjoGOfgCz&#`AtS4ps#9un|BrH``y%!@5p4Sxx!2B8wzeEk%IR_wz>RQvVCU6{ z86ozV))>?$_5)qK;h#UXmRL{x6#R{}tLk}gG6)M(W({Eu;%vb-o&}rREk`#N`qqnp zV2R~7NBcHyWaGA1gW(D8suI|u$Me|SEqCOIv`KCZ3a90B`AZrb8>@fG7GM?%6QR;& zD;1Jl`Okc)IqGui>cqjRgHg)=mR;$v+g;Edl`@xMX5>`F2h45HhDU#mx93*b9?lvU zW*-Xh_~HyC9}Z|j*4MoH(&#MU4`i(|f6vzzS5`dp>Qj}C{FaSjagL3ZDg9(~baFDk zveM$`j|Mc<%GF|je}89HNeM}b{E1C?0jRg|@m~$B0SXw?4-pKG-qw@eME~m{Y@crr zIhtEG@179@>|_KGB+esc$XxF*GiS)4-ftYD<7JHb`0-Zi%T(yFe|1t4Pj^f-1b*Ra zUm*shSuUuXu%dr7Z;;^f2YO)Fw!_P2Gp_z(OAYvN*xL&POnZUtA`%@|GRg0J9w;n{*) zGHPl>j~+epIv*NgYdJqVi~BnkP^Jx|xHosIoK%hQ4Ty;`9NIa=)YQq2wIk->2C9)A zDpBMNTtu$gj?mZ>+qCmDu(Zy#DLHs2M~ha(()g}$jf9zm{mQJ9z}Qb8G-YMw_m##J z0*N1Bl9zn5-qY028iGv#4YTCvywwU4x^EKrriKHOL^oxx+aJTUHS^}uK5TQ+&MCR3 zeYYFJW_70-SL%=jGw3UV>e}N)$Mqzts;ZJOR3L)o#%EB0#M961^7jYHXmS;gZOLvutjOq`as$M@`{J? zU79(=Sc>e#^V$r+>WmuduBC(-JGxnH@3OdqS6VvCJ;V(v4nz%*f|2GH0l@%%7tu;M z>Nt_zl=BGWk-yrbShR{Ah`!K#fiYxWa#E~)A1Kf?-o64MB=<*MmJa8ux_f*hKckdP~t3*upiy&SW%vlYAv zevMiz%XWOa%TsvIia&1wrqOIixG~6QB;Qi< zlJLSRmEd~Qs5L=rKYReo#+>*5LZ@+Xnsl0Y){x56r+4B9Z`i*BKrX~}v8Eq)Aa~+S2 zOcr+O>FFjKNCT}@?*Ch%v72rO&)1+UtY8do7|$wz3HjDoZUspo6qELx!L+J)8a&sa7b90H*rZ_`u zB2CIF-!bR(;LF_*Z0o-p=jAg_v-qzpdtY}tCGpZjTVD;!er?^fLIC-(F3JD-w)GbE zDU?ks!;DOA-gHehwHQap%M!8KLZwxCHzm{hAi`{PL#kr$4q;2$s<@{~kxVe4XT`qqFlc?gVIL+d5f2uZdJNV5O?DXq7} zPLOkD4UMZtg|3(t> zO*6;&iyUHEmnQ&{T_X!dK(cWNNcKO2Cy`pIK)Lw;l41QP*}C5M|0s+9|4ZL;f~?!{ zGfxg1YFx1SDDF>D{O46R5;33^sZ058G!7+Oz2@*kx^q`QzYCu-ZT{7)c(Ki7!znX0$Zkf=%lU1zO}m}d??Grpa_hbCICy+KHWIvES6AZ>)L5ixMSR^~XNJ?}cU_V-D5d*< zpT<&3FXW-DRmbXYyEPwt^lS z#zJR@v(Dr1#6&!~uMTM7lrF}HRFus|FNL}JkCrgrOw6f|G^^i5UhUi3zHmQxj&U#f zAY7@;$?-GY+IrXoi-wFRMUn$2*#!>Wp%I%txo1LCB@VO7{yub*c-1sU6eY7ox%=ko z4$colvl%0dFN1Xn05{!fHsQT@dYxhg1JsrarpHHGFqNfYNa zd*EX^lCr$?+-FC8P}s8wMujAd+Z)! zd#9^$n(7Ph6KMW-FMxk^sWrUcyUwRPpH|HXsgo;SDu!G;?Wey*HNAMkCDV3Pb%}a( zs_K2|JsN%AQ748Wz%1@-%9A9$!yEL=?b1=aT3PN!o2P%Tzq^|7yGO7&Ps6vf8&JOkvev^yzrz;yXq&fY-yre5Pqf6xVqIsYDr>JZHc9C3EMLLMtP8K9<~~PxTU&!F;5}t;>dvnid82D}dCW~UKH>d^Yi$FEx4_vk zx0k;A(0!VBw^lr@CnSiej{c-B5!RXQJhytmp0wdhE+Za3ZJR*yY`oLU%MiOo{+RBX zbBd`Og>kfnh)6-ygV*8vEr)j5Uk|X0x}LAZ(@u~QM*bT7G)LMKGPU>ZZL@vnv)SXf zID%QYoAX0127ALnkK-n%>0;>MiMPC?om}B$JY}+b-=iWOvU8kmmoI|n{J!E)hD92^RqcZGCp4Br}svDMS9qk1L zuFaAxPN94F*LJrS4L&4{XL0jh!S|^>CQle5(xh)aK97*)PL9EjdE3(Nm|J=EGs$I^;;db;>kc7e2w5$>Wop<`xh zz*y;71S(|&yN~}4Bvr692bAd+py$N$D}4JgQJPly{DG|Ji1~Y2F_e>;bDTIw`$EOQ z=gl{ZByH;+dh&E9BrIp?=yE?xkG!OumXc9;6q#F?g(JfMGkjZVt9cxqWQisCRbIDP zi_4cY$D@X?Q-^nXzv0x6lu~{`AI?kYW}nZ~Ay&~;-EzroRB3u?c`5nHp!M3er7C4; zx4P?a>21N*d)+qu+?fM19v3ppzxBkG34BXZk7W`dk)e@t{D`W}sj6f$4-NyH0q>}K zHs0Q>f8g!0H~lQD=_rO*Sxzp$JC;_9@=g4Lak`fG3tW@R;x&>9>odm{eA)YIT{Ayf zSn28B+BTmD4;`Mrt2~{2Qu58tpW9q@5YPo)^xSMUTwcn8)AwcsTbLWfI<8Gdn%B zE&Hgn$BsTi$B>$Q;b@gt`{BE<=-<-G@!yBHtRsh>o7VSn;dr=N{LbR-=jM8Qz4i`( zu*n^8ULN+APewVuS6zBz?Qjyscz!qH=!F%2{4UPkh5!C&W=PCHu&kwWWYwlLl zg_wKW7};r(jGrF8)S#4Cy4{TXxYV&~{JiZ_%f24Z$(DL*^&q>QzqR|f#P~wH!z#U1)J_e8baVj3-EaP0AhBlJihyeJ;bkCrGi1?>A~iQCRc*&p-3ac}EsA z0%7|U+=<_P7l(>3UOaiGaq@_+K;-bjjPdUm$N8HS%7yq&T+O-Xo6vZQUSL21<~EI+*k;L;PK?Yn4{cgp2@_^#1byo=D{`xE<4+`3R^DW2UB#%Ie7&I+ zncuQ`LLPa#BNjvBTw5ye`)s97pu~jQDRyhabm#et82?EM*Tjx}>6|3;m!1zE+O@qOz|4Y&hqo@LD%&^pOI_A_ zrrKVk@Tt4R^$d(eK6mg{eQIEJigQ-f!X$7lz*Fcl8O?Ik&cXNfh%06Y12faB@P`>r zR<3i-kF3KXDvp8Jk;@jnzX1*Nj?4z1^}!~r#OfJHjz_r9w*%#tIE^vK6%$c@?C$Wh z4<1B3e7RG-S%Ti9Gn{98bY$$4ZhD(RK?2U=bg5`q-bE`~HhJLJhY}a9HJyGH<7L7g z-teU-&W3Gr(}NA}B8@p}-9EmtDEe%^{K)=$hvpLY{?Fytg;H_{uJ>+T+2B7TcT>@O zS-SgoIq!3=D-lld+?uE_xp3FQpYlMSon-GUJ za~{}dKOj%@y+agD7UtX-D772!LvVfHd}P+UTf;o(x#Tb^4oSIE2-YE%kwYo@+m!C<<%?Mui^3MlA0}U&7Q45Bdyr$)R8P%5YEF0Ovmv!;X+xl_qn5ipAK_wSVGxxdn)&_~Ob7*U%&OUFxTS84dL zQ2E)j_1t_la4oB~=1KdmtRr{%Qd4%%WXr(D@}EE9U892~F*!eJ@J&shz!LOM&Sau+ zB^b9mmw1WO1d61%#GAcwu`aV>JBJMy=NvmbSGQ#Q8k^=gPiI!CeJLh3@?IvL5kLvS z*U_$Bq&MHroS9)b7vA-`YshBh*ZHd>=WU%n^CH-oVwDLzDT3O`zfmm}=#S_}6#NC` zoCU@lPOejL>x-{lBi=>(n>%v@?OA#|#;JOQ^0L7G2dI2#{qTP$3<0!T=1wMPm+PCNW4lPi)a-GQyF=jPh^>}FECXKO@e z%FdHg^3UVWPtryjH7Q+OmZ%xeo!(CHr>XaRqH1_xR`g7}Yf&TS&+c%ZyVY8)n3`Vu zL9px#O{;q~0%)14OZ%Hx`9tx|-v-RwpZ5xz5n;m?)9NPvPQi+rSD*h)fn+3oT+QLM8$LO4bdsyz zD#&UDW9LUZi>4}`yUlB8ULNxVhv8O`+e(>J&zInIn%{fW)$w{4Gr@#&_G&d%(+KW2 zZ_iIb*9k=r8NVo`4!ne4TD2)Bnn>UKS@ZX<)Z?_x5nP3B5i`%fWoMp2>N3s(GVEQ? zyT5c%^|*crYDgJy_(>OtX^Aa}rTDYS z+e(ynECciqD1o(YkI%bX$#(Hz(Z@+Jvdu>4!k(CVbY6X{o1D3j z*Op)OSI9!6<8wD&*RDVIu&3gGqxDQ%uh!L4fu6A)bCrVP-TJdwS2tmIwQp?3MP&Dt zH^&Lq3B*FDer067=p-IV{xe-gaQ4~TZ$siG`Ba}xC|$QMl7YQz9ynZo)SJMM=n}GR zkN~gkuWnV7(2G!=p5^7U>jy-94B~l+mp<)R_~X_}ewtySq!`L7c5z5_mr24mdOj@7 zFR54P>8^hB#2oK?*^5nWuZ6~}po0H)<`UIZpK862_Q%@VsOTl3jyTOYjb!hPtEjA* z*`7B>YLgZPkBF=RJkp%8kNJUpSo*)r{eK0klok!FgkXg{_u54{>psP(`DI};J%{b( z>XkJSX`(cbrU%Zx6fV&wzZajF=XTgvOLxqEX8RlV~eI&u4KOs#11N3e4mrB-aOeR!)lfeR1&&izIsE<^8ML zaja0)HG2BY*V)*obh*~cd*^Ws2jshw(|ueD&f&W1izEf>zGW^BiD zWAVPRZKJz>U}`1VO|vC;d-%KH2Yl0&aK1>sO4(zD#NZxD+@bSna}H(LfOu_Y-0aos z8*!W%^n7LYd!Y(eU$%!r{CH=qw9|xte15o)y3r(|Ud~vZzdb!QODLhV)MJ_?II>XG zbuweF`ssanQLX7X8C1FcFSt_41qi47Q29DK>?!zfj*X>cnyIMvO}aD6K4A)0)ZmSk zLbVgH7ogyCbo}XkNO_@cG zwr9OWouYJo6~@X?qiytwsw%%IMi*5Ty*US=U!tD{E2jKvzZ~?;Gd>{>6QZdzf=w?Q%yI@dSFrrDz9GUPvI)AZO>EWNLQ|B`88-ZMPf^L^+1 zBzhi8;WJov#Wi{^i7OvM<>0+i&`gx8l$B=c#!4WFYiP0l1pl>#;F2Jg(odSb6rDdb z_ET#EG&jy;rEVotXg+?EG3_UjwiI=-!eRf0bR2JO<>Gl!@Y@tlOS|aA@t!ZKtRop_ z!EZNGBS@*#PQ4k?rFT3o+sUEYn zBo3XDk1eDmaEB>#OP7DG%KdV;d`Y1g6(JvZTS^Iu zS3$d2%TC4b)NWVu>#YfF-kTH+dU#`mVBV9hG6||%E5jh2mcG<+<%y$l(szZNbls2* zKZHXYj7CHEWSifc+kG^dsE+^jl}YdwA%dPk*A)LmE+2b(?cr@ zm(Av#j+WjjZ(Lc<+CL5g6hGEZ`x>33ZeUpsS2RUAR8X<6-VykFi|{@7C2*FF}KQu*lF|Mp&d?ClMaz0cX{s%BiTQzQA* zwZ)Vb-n5k7;HOUqht|~y5zmgbw6o9db@cftVqrUc=+dsuk2T`w&tH3YFy}fYN2}&O z+pDA&rKRVKBQU;}EmEBPl4@8;_!9^IYxS1h->+Fk%k!q4?!8%TmGW^gxlG@q%wTmC z93K8}%6q^6>NP#5kKg0uKfS+A`Xog|$sQ+p6yi z^&d^7+wM*MNI{vXoqlwAL||s@H*9ilxqbLddy=zVPu@X_LQfLFdHJHHbbsjwR}Dty z_%_%DN%D_oO-gTCe!<&3?r3H1-2KV((ol-gtGHOHTP?l)f3f#gVO4hTzb~SoG!oJv zh=>Z((yfHj2uO*DbhmnHW%YJZ-Cx#CsZ3E^TUBXAzEqzR_e-I>pT@~X|2sP z-it?yQpMJb=N+eK8mnS-6Urmi>GzE=4~>gICL{`x1gdAZn=FXC zYjLf%73;T?JxM$ib0i{irFrIR)jiYo`$=q-CW@!`*1edGbxVHs?!r6s&FfR{b(>KI z>PbJko6^vR>g!KMvTkgSl=4JoPs&LuQhnq(c#&sUpQ@T~^r*7QM*9lUM+Z?9+rbc3 zZ^caI9>gCcC)Uq@`HrRTA-0*dU&c`8`XIsjn&4CMGonF?XITrVk7&_-Jp9HZzQpP0 zy{i*BxAN{N)zq^Brh{rAQLGK5hmzy^6X# zwFRq#q*DCz>z{J%9^bc9K47d9bHGi;yeGnX&b4`^r|@w2)Nk^uc!0u<(PB|uJf)iC z4Km7zv(DD_7|qANw|}OtivW6eET+PbOaF+tPb{f3BVefU)r;Qc zm=2f*i3CiTlpa zbb^<0RVX{ri3oXN{W{yYrpANTu;K!-iq|TE*Z-{A3gSMyF^j{ZEl6+P8r{SAIB>4I3(e5 zgg1E`9`&HZ86vIst=1mLs+=yHF3E&T@w_5VT%v@6#k_QyHzxh1Y34QZ*@B`XMf?}# zgC_6#m(!BPmz-G7)>Ud;zAr`yqX{X!9TM<#9(JfCD@~5_4=24d3a-`9I@P$tBZ4%$cW!6sUK@8x;W!7 zxXH=WlU!}H#yQ1c&CPu|U#kDIU-$9V1&SX#9<5tl=?oJ^#mYJ8?dO$OFQqKUpS=F@ zvbAOZcediW(ciaSY?HMSSwT<9a-?DgIx|iwig(^zkTF2*Qgz(*-MIC2`f*HGrz@54 zYxiTIfx=BLu88#{Yn52&C{?#*-ASlacx_lz0nME(Pi&|~ z$JROAwJ}Q@w*x8kMpQ7qkZm&Bhs9Io(>i4!w%_)YuBW`z^GgHw@j4LNl8EJDW#Fj$oo|zyCaf1kVPLV zBsv+>u#VEg=Add~d<3P}`DG{934fyqpOC(@IkT0EAGXo{^^lC)WvF9YBc&}kHq zSFqIF_?dsSrHbR%2U2vet}Uz zi3-zOTI27*nMOQYQ7}Q6kf>SNQ>$xn`~)Ex#8-(GUfA*0Gm*Z^7!s(tB#UWRQxm34 zRO5Q7`Na27JI``uZah!zYN@lh$&%%I!do8Hn>72W1oBA#OV%3qNFdU(z*ZGYra*o3L>$u+V3Ja8jjK7RAWmu zg~eUp?02t>0)5o0r+y=WX3wom)GcE@1(!%UH@W@Q0t3dw{6c-%w4tFh1HFN@Jl}J= ziEqK&2i?h$lRvt)>gDl6o~yj%HkeKvPOJGGaO3YtKl4-lYc0~&3*{VQ7>D)=D^unb(vc#J{wnW$Pb$BdGAEIf*Rk=gZA@FANNph#^OsH{czU0 zFc$QSdsU;qS+-X($@{FkR>jfL&g$vqw~|Y3%2pM}K@0YuGu~}RZaR%^UP;pmycE#l z()MY<(I{!Ldb1XnhqZFB%88aPuf09V_r$2}fNW5isaHH}OcjKDD}7sfV=QrpW!{ z_I#-|Er-4Sj!{1qCEZlCF3GWqN>Wevj!*<);3L)CU|e^C^rYh?*gmeSc20M95A$>) z3O07$_uTF>w(1dYJ&Iml>k<#1(A;#_APaC=X`0Z#T=~

pxK|IDl{Qx*}gfNrC>D zo+7C=9LP-!{*r;Y)8iR1_5LQSA;G5mpysev(F6U)3pei(p3=Ey;NUz|RA|-KaoY<0 zPF^W;d|h~3SJ!(VJC!@WLN3Nn6>xPP`f8N#bfMXk3Wk14nobWe9$YM^ zsS2pTWBO4^XPolOVRaWjVpY-t=9jhZIiY+DAB4J^s=={I9toO!tj9GBYL{6iZ>{TVX@FG3bGiY+Fgr5;Ng(^{qdU#*erh z32a?hJiB-NyI1Id{~iV*4TtR^k{AB6VJXf7l`CmkJyp4Ih1rC&XgM*Sn0z=)E3B(I zt1zper_j4LvgEd(^`H!r~g&g$ay$fL-1B>f%b*^hU(Df6Erc^WYpPJ`NI|baoV9VYav}1?W@9$k!sfY z$weCGJUcq0FM6y$j}2?ty}#(6BcP!(UEO!Z2{(LZ9j#79neag7^@UXW$*;1P2cJ9h zzC#zqz_`PCt62r!i1TP=5)spGtd4k;V&)oJ7Jaay@iFQc_t*C}BU-N6kV$o3Xf;ms zMPEr4dfOLlJt;yf?0Wxc|7#(lonkNl*R6d5`y2LxrnATDtK-TN8l}a$fq&y7XG9#b_8T6@J@;IrczSkv!L0nfUKY8I*O9=~%QY9} z+lA=&WD_IS7e}_X==ZxF^Q^jreH5M3gfuFW#9-AoPR%GkF1LHBBf>q^bjO3E_JrSd zxA;$Awd+DnV9N`QbvA+Nl##WXPY;eB-ZT>V;(hw1nFeHGUD&huxihDjoffUX(v02n z8+KvbNR>p}dAuZ%&aA0Pt;G8c|^$ z-*Y&%^RDdSNNm01%;bA7APi>!;n@bm{t5+MmWI~}7dej!@n;M2n#04pzwXWbh`Q9{ zI;E~!M#%lWRM4!P(zNsI(E-0I5ku>JQ^LfJ3DuKv^|3q_(hB8;jKjk;I?-0+u0*#( z;tD~A^yLxK)B1x!x=OD`{INKLj56Cu7BPChIp&I?sjshpUlC*Q4EiN@X^elTRAi60 z`~3@E92{0^f|XI{Cq$G%Gk?Wlp_E^sP_wg-zNx{?-dg|XPgbQ{5x#+TBHQZy<(BB( z^+1n3izL)&PRq*AXcY^o)tN6rv05tXt*GeQ68BdY^#AN7$W%MkU|_p0;j{LqqRJT; ziFuBMIN{9Bt99Y0tBOOgMRa2OOFb)~O4(9K`CG z!|Y(ylV_8k--Uf+dy)f+1>C9QCy!?@eiU;aK?w~PV@O0vk5dS1=g$#u~G*ipj z71@QzZo4Y1@ilBwun{RYiFt{Q3U5ew^(l6#RVK!S&*bLxDkXVi4x99}?x#lDTPZe| zx)VK8z#lYC`L3-UJhPmGo^+vMrKatOec`d*GkmsnKXD^h;PK-U4xKQTJGc`(J!v$e z)UR&K&_aKTc{l9Q>;m?Cs2d}@zrqf6mGEm~-JM87ZY^%MnwbYzDAWye8Nbwh zZSKjr%B%BDnkk-g$oJ!1(XDZQVsF^k#o~*xac&Ki;acg`rTsGTNa;1#&$m~ZFUwSY zIG!WezzN*g5D9{mdc&5X;EsDJ&+>#=$b-gK#rmx+zISBw(B#N0YmZNIy* zcgm5!^a;}&+^fZBFU+g;ulJ;D;E|OO z2wM%lWe04pm>bGAxG)Cge&UZB%+o~Ez03S z?SIzPy8RBfsB7UEN<>jj5*12XrC#O*{gEcyw>Nt0BjKgA zGJLC#e`08a;C+XU?;#((_CGduv9^KzdWp8wjMF zHBOR`dnDF}mHw<4bOe?m=XgEeuUU`1lroFrWtOnKr1OkELYBTs$P$0>m$3$3eqfGx zKM6{T@dJm;?!9v3$ET4o?|snaccaQzG5iJ7#9w()W(aI=$v#-+jXVCUz@m%bv;%$ zQ3#Jf3A2phCoO-(j{`C3G8Nc=A7!~Va zjj*fMx}@(@yiJ!jzByywW0)jH?6|~PP`wk}nG{@a!q+-%Uj@yQ@!PkM=@`|iXVf-Z zy~gdcvuLy_ypPlTeJiulN`5r;%p4ygmvVA*0 z78z{Uco!2qw9vm_ziuTPOA;YfBFFI>*T%RWZggil9$5# zFA_(Ngyg?4od@sV{SQFrz2Bw(a&@AZng6GAlbP{<8akPAa1d?}a%P`NUhe<-qvfxr zO?Vtk#G`)t;gDKPfH<9f8=Why<0ybFA6I$yp%mj$uNBPsvw(9)-^UwyR0G^a41~&6 z@3v?0O9T(y%M>M7cmVA$Vn9Khh6Y#J+Zvl?i=7F+=82sj`HNMz0ih%?|3O_~vu@`Q znvSV=hXFX&%&Q3Sk)6z)d+&Y6SAz!@p8?hFKyWe1(F{O-^pSz!GLH^6dw@BF6WHA5 z^k%D1U0=E2?;}OUY+zLB0Wr~PtfH_f!nI(p@@SAWGN&e`?_bQ%^W9S*!$7yPoRP`8 zpYeTXY(j+gjG%72p#dD#{mAzScCV;J-4JwLxsBs;cAUegdCtQr4(QVcl!rYuZG9i# z6?NM+>#t+UuhDC69oFIvM|!DWZ~tC$&n83KiGdV}=I8+UVa_vi7vR8sw5bV(&0hXT zV(c9+5ZDP&U=S_=kahu#oh2h&At3mp-qQ-Dl-v&O*}KY`+$fDaL&S5`O8ZDM;?clc=xpHApQx^$q-R3mhy zD}1~k4ni0XO;{AXCi_ZPoT~%EON-5@p@(}KV5-5oXH(~=Q_ynijr7O^Bc$+IDk-qD z<^fk^{lki-bCGXIPa3-O0jRD}_G^@~?b@x&)kCX*tKNa$XdXaMAl!9c#ZZKov>Gq+ zni~N+0jmC83QI=!y}CbALarOMm2Uvqqvt%JadJF$z5tizX(bY9p9@f}1_R*DQQef$ z{HEgY%E9qp;CnU!h%W)a2db3_M;<5=k-C!reemm8UCoRXdjYNI(24gB*zU;a0-a^9 z!X22|B(h*>g{=f%D0Rc4AWv+mukM}R|l&An-4Nd#Vl{;Ph zr1;pY9`^t-ECjfRdw_?{0ame|6Z#hJgpVfD#~OprQRYTpK!q$aU#CcJY922fB2SwxGdxdZN%h#L0%9hJ z5&A=mI|c%C2q0om0!~e#Zsh`Sg&2vi&^mgy1j}#ijcPo3qN1%W51sNae7;y9U@oA< zMdEbdxqG)7_|VG$GXcYeuXX5C(+LMiqjwj(H>BOKZCS0!bJl;r{CD16wBGpKwwiHa2z<+gK`W&fb)QR_y^YR+IXz*^cQ~3>$TFhSKy7FelZ~^)G41GwJe?o zVkAPWDtK0(2(aKVgk%rQs5^-ZfQG7`_Q5k7$RjUqJQG6h3{XXjA$Naw!{WApC0#4!FaO^&XzSC7`>~H(f2xuB`e6B498~Kr<&MQww zD{Xu5IO-%ICP1Ss;sb$$yfg0DvjsyzdgW3TGPJijW?NVe++G0P711pidgji)K_%c_ zR>sTC!;`sbJ!S%P0O3fCJM}3d$SU#EW#ziFqg7~Bzt-{j#kO17Dz9lbEyA%p+F$R0 z0M(8B^?2^{6xFQU0kXF!hEzH+aM>0Rbp{~983DRy9Eem101s3kc#e!rtcPTo5$%Z! zEly*FkN=%({m5KfeddhdFSZO;J6wFPDasEy(Hv|PsSpUY04Z6<^e zXc6MnfkX9oC-wXvEUft1R^*b4bKzJ@@1sW@Pk?0rMxqY=+ZF&EyF(I8J2V8oKV9!$ zT*w2aysE0F^S^(80)kDOl@Vn?4M-wnY=XTP1>jSW#AzZ17dr)k8CM0=H?)B57UJ#! z(+oFAz7}F(9{ja$9>~UF`AQCC$`Zj}o$chroHHH-^#J4S;4;9kPSRRPt4lu@8N1}PD3BHDgoL{LRL5u^JESHlY8#Qm8?2EaYi`p!1EN zCuLDk@lF(UG>JYBf4}aW5zA9O_rk_J&Qza>wtVE9M|DwYEca&_u4;J1NW)fA1fIgW0U>(F? zx_~^Kjj;y=JNm67=CRcW?557IHHJtjIG)j}UxSpT0MJJ1U`)jjUiu-dXB_uudy)n- z7kTxUpShH2S?{&fEEE>)Edl-_4+3M`_$Cl=0zhHZ0<{Z!Xqskk+oUz0@6z@{qS=cCCkD*6xY5J2^R0F2M~w8k{q z`5NGq!ra3txtL69fuW^YsPlcqG&S5<`x52_h)gqf@rXhJaBIx8-ov~L1(lXor_!bV zTvC+*>*7+xkXX(WQTFY(b4t8`Tb_z1AtQqgmJlkeWMgB~$ss#H^plX9m(`>eKKo&< z4FKPK6+hm$2QG>crHlf7TO>mdxR{X!4`Go0g)jmNDC7;`lb2jTv}*xw^!w`Gpxc?E z$LYg45Uz9urbloC=-eR0vUnf^A>bfj5y?4?0bYy?vO&+ie1q><_8@IQg6lsFDa6%C zjUAq}qoLL2TE>B!snDd3Buij8JMe%U;5vHe^OYi=frit4T}WwGpQ$+t+i$;fKONrK z180Je<{SW81PbV{!8EI3f|`S82C$nL5MG0AYGDfDH$Mky0rX~*#B~I9$c2Anq4siw zXR=PEjUp@AEO@N&WhTVwroac1dIN$OU$HNvXF-ET*oCd8s7>@EvvJ)rVB?ulY)Hll z<`@rg6R23~;PEf^*LylL%jP%I9GoF!^N*vW5l_KW4@s)l7cvngbB{WT&*W z*1&u`5&XQL`TBTuG%%P{G&Nhn^tut)AD~`APaJJ+HFk!6EtWVwK3-)^7 zKDa&VpR9fDzzvYH)o@$LA3|~lArc~RKEL6<5Rwv-k|Q)|@HK|onhKR|%`iAT3#aI! zK7b9m4;C9Br3^y9Tb^nZ2VBKGl47SU0##H_S@{+pA0G>Q<(Q(0iAkrU|GUFuJz4{p zO?tdneDfL|A3nqahSv9W7umR>98dL+nFA1_q<^p54IG#QKrEuhS~^+1Yx{EWY8(=B zKE3A#9DVq$lvh3%E@D4O4Ho)!*-Ia&fZQ`nB76)-1uh826Vz0=XKGe3MF6vfOlsKE zx9NsVo|~H+1GHU^Bik*d^E;{~G$bup2fT_OkO!>1_Q>-Jr@C)N3Du#|%r}1|kZON1 z*@8TU3rd_D6&We4Lk9f@&S}rAA*n}DvIrdB;AEBp(m%Eu8-ODMPcsFPoq|C_fG^Pe z59n*BPM)Z?8>tvbP66=*k*!IBcj~>G@h{&n_|kbho5XYQbeO|Bs_yr*NaunBH#avS z7(`=m6bK;-$;H4-w?R1rL&Gtb#qAlvCqBFU@aCCma8&b9RJ=f-lW@BLL{4oyUAIM4 zaUhAORP3`Lh>uaTmk#CseNZfL-xr%8B=?rsZm)EbW4EBl$)9GfO#Z#v)tkoN*czD~CkyJa1wCxN;))&5XMvDb(s)C>;n=}}8N$GwAWw52frnaitC6et|+E}=mzBN1?o9}s-y zWrjEJI2up5i|*b`q8u{drB&>E1;K<89s$VX+(JgqX#(6p5DMY;@=#}8R215t@xE{o z<0-%#uih=>gLtP7Xni<8W3D}1<7_Eys>*!3dZ?1#c?wYD+~5fTce)TC8*VY6zvsF( zeBp@)1-7pwlvrd#J9BMjkU^`X6bwN|0rANYP#hpR+y)h(_o=DM0Q`ce4&p7c2VnF7 z(qUdh-+12vd^n_z0wy%4mY)5?UDe2=LEDI&qu+)1_Lf%MUUt>QSdT$*c1!5d@2&n1 z&SP`8ms2E#$B|4GlD}#YQ!)~pPRkq9@1n5-H7VJ3UoT!j&1FHNQwN2Hy>zSi(NZQ_ z^;KRVLE%W&F=W;lrHz;tiG$3I-b2X1LQV@ZhnBCH^t{j|2-6>nLhm1V*k|L8j1J$X>%ctZA|HgH2eJ49ui|PS zLef;(L=OX`EZlkw5>xRSh1=iZVfCf`CH<+mv3Elk+^!dh6=xt!PvK zRgoq+kVbwmeo*>Zo3rnNak;2BQR# z4v*an+lfPVU<A`I)zZRhfx@gWBprP-i_T;2^9+}6)#-iX0G&m`r zK!UCYzV8WPpfmx!NR`r1*1hI6;IfI%Y(ow)bgUQg;aS)GKr?0|Fo^BP_E!e(nv4Ly zdH~ilkQ;nftOf5AusQq=go4P9bh9$Ua)|y391#=#;IbPsu}E<=;%x&(*{)K0OV~&A)%ofFd1XU z)-@wV_n#IvdkwJ}4Rlx%{!C^~QyaWHpd@QBlfK zM~V$t7L;e#DU-Xf0x(C5?MBtl^-BE?EC)xCwL>0ascs-SF_0$d`$R@2;Fq(0c1}({ z#OzN19G5^eIILi4DFXpg4^&v|8YiMG&>8+Upo`GI&;|Q|ZRjG5 zAUFUEs~Qk`+ZT7fkFUz+Pci3t_2-R(lcYl45>>Byn>voP5Z8GxM0{dyas5?>J-iMMP!&AautNQC6 z8yhnpUksq>WaJJ0K}*t#tJ#XYmdDc}0fH?fyJ(^6uV=@nI^Zs8Zd(7t9kPETU%&PH zCc9aiBr}O2fG5|+OG)*Ie%eMW!|F%x-tgfo_|HQRPbCH?AlY<_c?_GBe5429G~(^>5Bb7T2a4Q)kb~ zU~hv4IEFn?AV00Q;Dbaa9wjfihzW5kad!KP{rGZCcglo22%!st^G?zf1c5l>K3?q# zC#o5_cqFl|^zvFb-d&xF1XGZWE7U7}59?f@`o1)rdjo+&hNxd7tTQ+>AIwcPjzS2)K?+13bp}Zz1a%Ef2j4;@5-PruHR=*L5qc3U|)@{r#)P@4<&k zfV4P|nk;reU#7vS7X*mXD`}o;p5W+BEl@j9IWuVIfkg&|UFLriz)^FJc-w}b`mAJ3B*E_zx0|J7si>%68-Ui?AhM10w9#g1sV1U%1_Np$ zUd85$e0oBHOPB>Z)geHX{-B1Q4+hPT&tB)AlZjiJoesrAy2Xy9vk#0Zv27}k0}oJe zyuf)BV3^0d+OPwwU71%@g!bW_he>F~#QAx8V zy$xTNHuyn?$A1368frd&cV^3tSgJo943s3=EfWK$mpU0`UM8L`3Zgu8kj!ahhVPdvpT)%^aM?Tr|N z0o#!e?1Jz;P4N>@%|>OZ>FFsjlU#UyTC-<=!}PC*XNA>>4@@-R7s3KrG~mU_M#yLV znCBIOTCyftC29odDRPoss1bEK*s_rta)u}@J!GR#!{*VrP(QVv2 zEs0p{o5Q9+1rc{9Iw6l?aY~hQ&|= z9n4|ljX+2H+6kw%{wN4RX6J8=?{07Ju(IDa9t_c@43O;UbNdCnW|r=1;#-8bO{Myk zR>Gz3-ey-vr5laihb4ZH{X%kMRCgTltvV<`-X$bZoo3@A&;H{7-p0+pXBx2l?q0-y zwsE7_USRSn=Fk1%kO~r#e}aNZiY`H3kR5sSVP3}*J-kGe`6b_`xfDi5C6=b=e}WA3 z{y7Qqzpt{0{SuF%IOGgVMqrcNR9VDrKft(wZjav_L=%ILTuJ=DFDHrlvcwuOz!N4+ zO9+CSBcM15TQlGe()+m-VsEu5hoQ`2^&atqu=ffw1wpa-&6QDzb^jl~qcADmytH{u zi-Na!2=7T(w2G)~F!Ah?LLazu^5P*-;QdtI(*Tny;vd)lZ`jUoKz-sONQ;NQL`<;CjrV@z=_lKjviT z>I4~SIcDAcmuI)aM4hH_`DKN*>@nF`1>F~=E2_0iYnwIn>-&&z^(12gxmE zX(JV|q#2J2?wJ3^8HQ?yhtAgV`3kl#Iz50i{LRgOFJ$84Yg@rk^g%|!kPF+u(-}vX9D>sX<*vWADG@khh_D2XBgI|0jg@$KiAQb6f)6@qZ88|D{0x zzjHW%BrW+R?3d9D6)nUXgwNQzPCj5J$#vGvCWC$ROPFux;-&u`4&k>+{b9FvJ0ko1#qww4@(qM}EtYgjZ>!+`{+I9fHm=HlZ6)Xd@;K31vYxWPR%e0b8(-|_WcD|Q<>vW0c21@?rEmMItq3gW{4*j~>;-Uo zl`uI(K}mT0_5B>$cxAje@tX1MF{`JCLJuDvkEmD0`Cfip!Uo{7K7#vRyO;sR#8X~p z-|Jn^f`2yGZVf)}OPuBXXTbdqfAV}3x;WdW`qi}fEPDJ=IIj4si8OPKRjcP_t@mxH zCnC-YrJmwS$xu%YVr7+YbWXBcF2~qoG*_6RJAbc3*=;|}b~-g?CrD-*R{O5AvlAsE z`tRs?s==>pGMCWSrgCd(YGqnVU3Pgn%NM=i-tMmCm$o|AOsLEGuOV zYT-MyziXSTO3dO&3=eic{(XMH(%rDp1A&qcJ@T)x(pDdnKCLq5U%D|z9iETt#)K6V zf-2&>FCJXb|A-|>$$3Rb$4Psyk(#)I;C@WiFdg?FU7@!nN-0B;<%ai!D{Ms@Zv8tg zTa@E3naRtif53WDpLbSVV$Cq~gZ|r$=&*~i(<)colw7V4*~Ny@Ws}xCCrzt^&x_t4 zXVsEtNuppSTc@-D}e%XBEb$HcKScSAICu*UM|FZdyuD7WKo1DN3r~ zhvx@e&152$#D$w=dh%Zzv3Y4KYiV+q<6a~d3Rtc^T{z3XTpbnT)DuP=CSj;zYTety zu$y7^FtOR>_=0a?dz!vQ{59=sxy$!!u$4r8)ZWdPEe}02HOlhdZZF39n0@K)Bbs$R z-zGjkpZwBwZiUR7O0EV9JVc7oQw0CaiWcQQ9O|^&Of#aFEVktG={0 zM3V&u`GNg6EVD;gpIE&}4d(e}*RN5S(3D`do6gvkG4idy(c37Z4RLty7hb$=bf?|K zXzYw3;Q0e#vJV5F6`8>^N3$ZU@uq)devw>IFAPp}iNaR8{x84V$RE znaIYaew6F{=WNqfwDY%1W)?$;e{1K5A|EIIaiDWWK+$blR0eCUxOCAGL()B>)Dvs& z^*j8Tgjl(c%qdxgP?s-o_TF}2MYg3yi+hY$W7(@FQUZj{C2~0{=n9PWjl_2TEjk}K zSRS!v6I#{!w1*^oh-q+9Xc{3}KE%O}y%-hHG0qk80QdG?kA#pAe~l(>QFH3R8p#0G zv08$h3yEjaLe%#Od3-vqE_^9ujJ>Dbo-$Fp(=OTb!izJCQgqu## zEOBd&XaB~qCKmZT4-R%izB5fW6Q#_Z=NTV342g3-_^VyDy6c1T4UpNpepEwwgbEF#w3x>bMNQ!z5vM!!p3@0Q``hT>*cMgyUPwayj)L~`-9wKl7QJF~Av1b>QM$gUP;=hP1Z??L z7OZahm=7;~@JE@)n^=x-q)YU{4D{d9=w_KVNVKa*3EBw>zfTmy3Ct8tyBfTf{_6b3 zu*-MDW$%E9fC%CIn-#xQ?~u@m8SwM=^2M$z-{hZ2V|ya?@dVR_{nWdY3@bo>N4<7N zT&3l}z=r81`%BBQH#(JO(waL9;huC(HSV-={yqKnlg<1h zZ?+ZYneCNBQY=%UfDzitT45zEj-+lvv&7ogvum;C40qN1tQj8k(F!DCQObOobHv2a zK75m^qPnH+_;SC^jJuU7SELcS~4xE1@j!mRLlqSf8^jSd#C z*+fP(uipHkczL{QyVN)PCHZ=m@uREx9o)<48|0g#{Pw6SbH}3uCtCi1`c?kE&9Clt zwQD@TFtMDvN83V(QonbK`QOu@t7W{OmG`_%J(FJgpI8?}D*p@HtU@DX>YV)1z}n!a znf=}CH;ritO@%Ei3Ho?1_H{P#I#P=kJCk2w%gI=iPBU?R=wFocKIJvlJ*{Ftea`wx z9u*gy7;*!Q3rXEdSy>U%eRW}!e2IbQQIeh^l96~lnXdyQ1k@Z$q_Zy(Zsc?gTJJuq zjA;K>UWF_4ek`A1Img9B*^o;34PiyVXF1iFS7^cM^_F*@9>XOj_YybKU^%dD?iX#8 zbqpzfQA@?CKr)@3fH3p8QZ8`?ozzhBt>F`p&PC?-6Zuh$uFv~daW;c=ZQ`l2at!=! zvS{1Jho44qTWJuQQMw7$M9FvrtX47|=N80As-0CiCoZsv?vRXch?Q>?n=7gH-Mh}W zezI~C?M$`2T(-oYqR^(3=(-lvH}CgD5}!^jk^e^aYo6`ngA2_V9oV&ZBswoGaOkyZ z8Ejm~3gu}vXrJaXdi`R>%WPTZqUZ!cQ)L+>W7mo2Fwl)cSaKP%xQ}T2w&2y|tp_N+ADLe6|~8<9^05 zDihlp6ZO68%b{ZvM1AOx8=^y~4-c>Z;hX8*zhvpGrsfsV_m>Aswm)$(=}gxi4cWQX zXQ8qO;+ci)OSX1)ik`R0o=0x4`@eMVlpXTA@`0@6jUr=I(8I<)9a(jin%0dj_dgc` zY_@;bpEr{poW>MXuz#g~i)vSWlx|KPt05&&7nSBk)imv@;aHJQ*zxvlGa9$DmS5=r z%=s>Fm&WSer-DQ8kZq!jq5fqnWtjzMN|Uu6TXJKb7d|}R-kW!mB8naqkleXzLV{bg z_(xMd`_0Q$ z7PT%O$E(;G`P_@uxS+@UIj%hfwi7z!v3Or{CjdCxE8rma`iev@qq9yEZ-(FZ6 zUbP~>IoufE-VUwinsmma{+u!7sTs@5Sy^Es-(3E+2Ik9i%5XX%vdEG(yM!%N;<^NE zkE<_++P%7*KAm_-en*1!P&B<)2xjNEne|~!#;ca%u^K+sT4~^D1tZJ_JQ_Fg+B;CB z!D~g$Cogfwimua+1{s!pbt+S;(s=ln#!pIjHkL-_T7q_C6XzGZYCSjuh|V4|FIyV* zf0)XiHFkm(|2XzJo6dvfwGp`a-o1z3i$L`RJ5P&iod(2$qfWxeWk zrX%5!!fi@Uh@&J*l!Lbv1k6kDnbGkMD9|yz>Gth2qoQeVaG z{!7U9ZVb8Ol|a{vn#o1!Y8Sqx)A>o${CRcUhV^Uaj|+Hai>w?wp&k308nuZ>pUkPx z+8++PnCl%y{pj{%FW6#Zvt)R-`Dac{@U^@=j!h*^A1``E5U2Vd^EzBEjd|34jkg!V z=aL(B1>M+tO>#N>wVm6vhG+B zWE);wUE@{P*=a{p>=H2)dE_69GcHPd}o2l*!5LP!iw3AUxesoMPYUf@bSaV(HrO8W&4S)Wf>Et2D<@k!<zvVA4@Z9RJV8ao_*Y5I2&OLuRGIEuxq-Gt+evs3orjn(D&Bl`8TBsa{(V|Kg4yR zir#9o!92LzG<{GtQEyogN<1b?lIO!+Z*k<^{DMl+m9$4p>d#5Do*g>rLC6)Xp;?Cx zTFZY;too+8H#VUxjmYHW6HPXz25v8>3OZ)8aS7I{x9#nJU)6!&9QKPuYm$lr|7PJ_ zwp4dNGCrpXXETQ-yK$Xtro%T3QL$&C&6tuOC8p0wPzz4UAMhm9+txMymFIjdMGj8Tx|Kekywh4V@sqlc)@@;DC!G%GNUC7sjd#7V65*ka~#8%!>9E9RqveH=9zD?E4s1wlz!h_{k|-O zrN2XrUlfYB)||e1^FK%9-{|xfEqQ?4dcFO+nrh@u!-%(|ZG| z$oMAwJ0@uK#kZf|qSDq5b3Zh^pXyF{e$e`n)BRdbOe`9oa(V|yWz_kmozv=-p{3t% z?h-!iEeTHhF{$;f;vnv`ZAw!S8%GDXx*h)g+kHFBujZ-VoG!#&>Z^Zg%4fQf@j}7% zezo;cZ>heRuY=Twm=m5Ez9DD+$q(o%y?V~B1+$t^xmV&hZ=Q$X_0o2W&~~fO{!*!6 zQ1op!D$D!I=1JC8<3zyQxsa8e?Atd&%BzyyL;9yUWQ2um)TQ6)-vZdoLY^k=0;LRg zt~tf513`Mm3+(i1oex5>8!my^Nmn-0vkqS;^7nk3IbyU^ad|kvql)v(rB*mPYHuw5 zDvtifGuE-dsYY%S-LX3?w3Ba}N3QjPy+7B@?ti&NRh1;Vva9e!$4#idH9TjiYU|09 zCx7~-i9R3anwpVsJBAqdRb=_4Uid<5)8I<2fU7O=_KmRAsrXA?agHev|gcH>a{zInJ6H zbQTK5{r7@F1eLQTE+pTV4T{4G+ zAlFME#+;)Yso>HM3*axaVT2pbo=zOP^sa41MHIBY#)-Jd-B&;IO4ZB z+xPR<#~S{fyV%%VU0-kSj@`0wQ!>qZ?Clb*`G0~?J}HxgZys)4GnzUulP?X7K<%yc z1U?a#=^a1ozbbh?axXd3ryah{B-=N68?U!9JXLtqPKkl}_9jk*>AP4Lo5BfVx`@Ge z6T+w;De?1Be;TAS<#YmdtY=fT9EI=%24j<8$C5NfBq8MHWFxk$>uYnZFM{E_g5|D=c~`KotImOzM!_cQwGASHpFUD25D3tFpbSF z&|S2v5t?-&QV`)rsp0r$j20zZU;acTVwsroT!NTJSh7Qpuh~k*VnvXP-Q>|odD-XD zC!)%?{?i&G_pHrz9FzhF=#++dIKvhwW$vRALYvWqakY1Cl)co{+M;6Zv6L2ban!G1 z52igK&i3*16`mcWF(FhkZM(71g!^G1@O_?ALSX{c=j4!X3* z)@)!)EoAr2{eWL1rMq|wXR9{tkMezf29?I21__ zkXhT;V9(gnXU~6K-^>-3s4n&7@(cURg?w~KmVJfs{dZWrpi4$k3D8>GyI&sIwo(_2 z)d;bU$qXW*q>UIfE61V?Tyi_P;@=)Yi;MN-o9QStwnXVYmr$xR6MW+q@a^`G^QMv7({G6;aPxpV7cjo_4cK_p# za+64lr7$T=Wett&k}O#(%*ZmfY=e=k*-6H&vYWB*`!XY9Fkwg%LfM89k}N}(?7PpI z`~5e3fBOE=&gv_|g#c3vI=zzCq%sHTn8r6%P zo~c+ZZ44CoF;79+M7ct~$|qYqlJR&N9e8?k33c{cj;Ie z$aV3Db}Y@l9D7zw76@q@$3t?hUs)n3Rg>l|N1+!PT$zg>xxIMMv+AA$Z6WZdzr`+< zEH%{U*Qy}XqOz>jsFbxQE($V7!vto*tT?mVl05{~JWhk?Pjfa#=I{P@S6RLKK^Z5s z@MRMA;1=ES+I;n3O;tfrrtep3gqrBZm~SP>>%>_#a{q;87gG*ioEjf9D%RYATl_3T z&_C#S*0hVxEM8OFw_2wmXd7OXpq7SYeOP}2@=1L7clp+jQ-~aXJ3Bi%f@L=zn zDB^qd#SOl($oPhaMwt~w_>%Z^US|-MBE;46ZItND(}(V_ckNnXW58sU{i~-Km{qS+ zhQ6x(gHnQYfLWX6w|=eGx!_tZ#1hQG3|k+S;^2QAig!8dC4j>snKxeD-w%&KF-pGO zQ8oOpOa8TsH>NWK%Y5$7&nfmCGwYI&Om}idz~aAR{PDK*%@6;=g71CQX^wx1cg*3j zWO*+S|E>CU&mGMCurQnJ+Hs`(e3?~z$O5uFa~fY&Bc*^S)zZrOfNa>IxhBY$rN5>adRsNuXk@9+P^)kY`cbcD|@JxQt;hrrao z(K1@~2UBY8b!N_|vqp_-PdTN{st;W7Z5V`VeRO2RRD)={r0MWW>3_G0<4+}ssJ_P; z{;A)sVaLp@JiU}E$GgjmeBoax#yXi?sbXRHTj2-7Cwo(H$i9Kkm*z!sybnBwrXkfuBF?d`23)GZTyeCx2~@ z93=6i{=hWaFIL^h5Wc45)~9N*tdinzyNsTJXY8!4={{5Bopa2=;QEbmOrqR-nHLN9Q^POX;EapGDz|ZA{yxx-r$KBYn@GCEW-2VdsfF`kpppHaXZZLFe2>s@quTIkO zN|;1%X|ame-hjKGr?Y}}7qvJYo|`D$At>M5ctc?Prvz^|I3bgv0=v;HFNATE}Wt;K$XKmW+@E=6yX6K zm!*xfW-b^`4dG-n5zdG=9Da{fMP79<3C7LY%YK;4*zfr0{DA&+YvB9b&H1ODwRrY-OlFb9_bCPK^qR6G}^d zc%Ecv%h@oraJK}^z{@Aru~hGNiS@j{P$FZ1(i@-t)Q_fu(y*`=Ow$#%Q_h&gfr6MA z+24LubUpi@dhAnF7{aGHUjGQREw%B@?;ukjx>&|@2Rfs~;px*QKlDpQm#M40O_cTC zNtwW3r%b~_^+XXtYj)-9)=gWk`>I0ZuW?BemREV3Epdqb!S`JlLz7>83pxk+lSU8a zBL^`fclDj)QUHS|7*+-<%$N3lINQi%{qWM|RG zqSzky&5f`ygu~W;m^!-zE!Wso%w>p22#`fDWa65W$4!|vin=8Q7M!exyFGn^R+Ty> zXV~B(yjdb4Ib~!A-UMjln$Gy&%wq4~Emyp2e4WO-AL@R9iwGH&&Kd;0J79%SwyJdS z^=jYmX-Kn{PCLCn>q;qEGGFxGCz0(wGou%N*GDfnAx0P1pPifnTIcJ&BIkH-w8@P& zw%wW@EZRd~%e;`GcYCD6hj9xj>V$=rOdKHt+>(|0s6sh@I-g|An^3!s^j?NhJ9p$u zuOr|)Og$Rlz}+9)!Bi6k2i}Uv9;=KVd3X~@K6z$7J}hm;)~g~Kd7k!T;l1tz+@l=@ zQ+SnG8rL=@ja2L<*BvzxOli4V*rq85y5BmQVwP>hf0VoDHoem63E4fc@9JzqgsFOG z@7D$?G?%s(7IIsdl?@MbqJn0$y885mhpEZw(n-#-$m1duW%~%OonZ5VI(wx^sBP`{ zddS|xR>^~|&IUvgzw@(@P4)LNw;5%!L+UdIbB&rE@m@OXY^0D3g<73#1UE8Oer;FN zOR-P#<%0M|7BVUyi5On=rg9!APipy}URt&+PmdX>FkU!E#|n;^OJkS;N>zu6C?Qm= z3V&7A^^32J_g=&l|BiC(HMr9xX@3bmo9xrZ(oHyHzpp8Bt|Y$CB=6|eo5X`KQR7D& zsCEUDGSMns{Fnq;|0V?b)+<@{w%C}2;myEs`qtAye?AN;c6XT^*-t)_Zg_}@68A7< z^%y_fV5x(>oP^}~Lg@Z|#< zp3LVEWlG*P25rpTjm@JE$HiS`r?W4&8{b?LGWBVQ;R`V;{cY3WR$So4(Y4;6J5ZCi zHhQ0(>9CwWOiHKlYYz@5$-R39+Vg}vwpuzzo9g)a;D~uQux*Ce<6#)>G0rLPR{Z<(OeTw7kyX+8 z1RG7eH2LZZHB)$&zYF7}6#XuMxI|NM? zx-Q^ylA=vr&0EE@Qv%(wV!v_Opm!Ku z8#46Mo#-+6-TBL1n?`4sV-4&k(n(xGd?4g-hYrJad5zHmGPZ@aAY+hQgo1Biw!)&e zS4{xMaMRahLR+xw`t_DYgo_UlXs)Zx#Qu-KLIE-z}q{hgL_47IQ_=vIUh28s4x ziaQO8w-C#23q=ngot^u0en_yEH$KKi_fQ(DEIn@wZ_4#S^)ayHa*5c3`+nh!rDZp* zR!}?U@PDA-mp`)^=$6iWdTt>e^f$z-Lzyh%?58j>Qc*XiMhqNzcd;8ffN4pzN;Za< zI(ub(+0gE#)iriQ@K2js@-Zg$K^~i>akMqjJp@RQLN?N*k4JkO$um`drH+-EmB|I`ABCGTOzvwfzKDMqTACtdk z(^gB(Cw1La$=lwBmN)*9hPY5FNe6xrcwWz1<~Pj7mX`R83?>`e%vI0Cv?xAk?)8V*ehK4B3^7x^2TOBzDg>QnLcg+~u z@7wRY%EyRyJoj(n1f{j?I@Z(>{0R14-Uy)!r)z6!04e*+uokUC8A!4>TiXwMt(o5yrOCd!Z=Z$@ zR7qbLH7%>GGzkuFrVmrC9ODA}JCTj?un=*|c0}8JS=rWJ6J}=?k(DiL4cC>}tf76L zA#`NUNBd9pssASG{}MRshcY z_j3%S+zDC+U>iix=8*rds2hVLBO^;cXs|7jxRecc+zY17yvc0hpc$Y7#&+6oAQK_wR?p z@fM{(>*1w%C*&v)0XRi}fP8KOev-}U2LLCW0A~(52jHg|fM*OW?JNwHdjsyq<>+A7 zAHb>hro-~2WFwGc{j)Ka7L++5H!&Fzz-FPFa9uCu+w>EA`$CnYou^HJA|1C3nZcMq z{nqRNm@UE`U53XS&;Yg%nd^z!2kIykY7Zcc-vu(X`)iN`8vr!3IKwISNCeZ>=r%?m zJe$OWn%<|t)8IeP!Ns-sndjLcprS^XGK`YtECHAV z&>t)y7At8GGXQ!-Zrvi^XHzbCp)^5aW1%%X>D;$oHGTbPK`J1@;96Q*vC|-bdc4dW zaPlkOz#!wa`m@!4DuS!Vi)t7RQG{C^E|}0rXNO+%=D-H@Sx6aBD{T3#fB|4aW7@Bt z`_jl6+u;qE$NAaxXTw0G0QFtApn(%K1oieD%>+OM^rQ?>nusHa#(~DwB=AU`4{KDFv_u@wQMUnUi zC543=z@CxpZ)qxy(LsWK1JaJvk5lj5h*ZE8LA8yF4Pf9nS=#1(jsUW2Z;BXYWm#sO#v4FdKFvWJ5)eVxKYaM#Hfx;wsO$+he=El9wZ{-z$3vAV>92o2 zExnDas2KeByg-ffP}%zfcGAwm;vyzHyApuJo2Jr09w-{Y~qeOPrQVCDql|QUMd)3?d^3WNd>mJ2Nw* zZFpU8tFXSlzQcup^5vn;VJ!^;Ihl-T8>g=+QvR#0jJ3gs{`#rX8l;1nTSKFxsijXg zIbSOEB?_h%33pdRf$jo?eXjY*xMuw25*x$;$trdl0)d!S*+zgoaxcI(l~+{g(L@fGV4iftNRhp3fw%?O9z-sF zyYk{E9iX)rKwu67rAWZrCV+4R?T<}jk!jqZw@7n=)#FE{y4SeG%>=c@V5h(?t55O3 z*uaYG4^S`}5O(@0lJ~53yG)>)q5w|EVwLVK`K(Q2*x(+;4`G6uQ&CR{H{lhbs*1h43 zY|f+A_QdHJMPjrvm{)@Ub?85z8(HHyXP~_MI}v0_$ET&IZw?wgL@rTko9-;hWvX7y zNw)OYPDc2oE;p_ljDvYg@xW2e+MET?f&}V^`at#zsc@B+|ZbPuA^y!-up^R>fY+ zL7Ytnjq zqSD-%`!EDTd;mHl7eo6AI-GT3VZqSGCfB*L6eh>pY|O_2>bCkY_WCuhkwKo~vXYVq zu&3qFb!_T*%w_a7Z3=>9PJY;6Nt2nlx#59}u7O zKqS=IuXENCYMl4pQqz&EY)neL)pwVk<3s1rY zZ{(TQ^%x?NrFsL#j~~b9eJ@Fim2t%PM9r4e)ELv&3E(#w93H+7CLrGxON9KaPK4Su zz?AA&q?hFV;%~s0@9p`+qH%_jmy+yF%gV|O4_;X4>+5qJ(?a3I)hMADQ$RM^HxtBk zW2PVIn2c;KkCy{1v_$l~kTz(=glUD;^|st)-3$7nO@USA<+`QDI`Z)uU#kGi2-X2% z&Ntu;xv6#*cg2(X=a2F8=YRczLTF|0MTTPAeO4xLu|9zXo#cn`d-uWwsnK^yQaMse zn-{i%qsaObP{cG9I=TU)^h9;Q=vrf`Rb z0znyBS(k^0SHP4AR%q-n){XqhwrXA0kG8*)nyTHl0FlJua5~o$Uw2GXb|y4IQ?yV2 zy>01o35_;kAp?GD@cTq=Z?6I1hXWSo=i>yUD|ky$d_}RKsen3y+E;#5VJGbuHc1;X zq0R3;Nxh+c<8zT_6X8H6;^Va;V{!?YErElhnf~bZO5q*gtwK?1v}xiO&`W-P4WEsp z;{{d z^UNnhr%A+gSeHcTtxY)Kc;sA!*_q?nZFw psa|-|{2#xB656z#6LQ37w*+C8$nFQPe?M_TTf;yduV(%7{{VJ}j)4FG literal 0 HcmV?d00001 From 1b1fcb555879cbf002955e85e2b911b657fbe4be Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 15 Jan 2018 19:20:11 +0100 Subject: [PATCH 18/60] Add sender (#4422) --- source/_components/notify.clicksend.markdown | 32 +++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/source/_components/notify.clicksend.markdown b/source/_components/notify.clicksend.markdown index 96a43adfe12..e7eb8acc816 100644 --- a/source/_components/notify.clicksend.markdown +++ b/source/_components/notify.clicksend.markdown @@ -18,10 +18,10 @@ The `clicksend` platform uses [ClickSend](https://clicksend.com) to deliver noti ### Get your ClickSend API Credentials Go to your [ClickSend Dashboard](https://dashboard.clicksend.com) section and create your new project. After creating your project, you should now be able to obtain your `username` and `api_key`. -### Configuration To add ClickSend to your installation, add the following to your Home Assistant `configuration.yaml` file: ```yaml +# Example configuration.yaml entry notify: - platform: clicksend name: ClickSend @@ -30,12 +30,28 @@ notify: recipient: PHONE_NO ``` -Configuration variables: - -* **name** (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is `ClickSend`. The notifier will bind to the service notify.NOTIFIER_NAME. -* **username** (Required): Your `Username`. -* **api_key** (Required): Your `API Key`. -* **recipient** (Required): Your phone no. This is where you want to send your notification SMS messages. eg: `09171234567` - +{% configuration %} +name: + description: "Setting the optional parameter name allows multiple notifiers to be created. The default value is `ClickSend`. The notifier will bind to the service `notify.NOTIFIER_NAME`." + required: false + type: string +username: + description: Your Clicksend username. + required: true + type: string +api_key: + description: Your Clicksend 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`." + required: true + type: string +sender: + description: The name or number of the sender. + required: false + type: string + default: recipient +{% endconfiguration %} To use notifications, please see the [getting started with automation page](https://home-assistant.io/getting-started/automation/). From 100eaa4a23f348d986dfdf38562211a7e987db22 Mon Sep 17 00:00:00 2001 From: angel12 Date: Mon, 15 Jan 2018 15:09:46 -0700 Subject: [PATCH 19/60] Include Smart Dimmer Switch (#4111) Update documentation to include the Smart Dimmer Switch --- source/_components/light.wemo.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/light.wemo.markdown b/source/_components/light.wemo.markdown index a2ff553aada..df44818d044 100644 --- a/source/_components/light.wemo.markdown +++ b/source/_components/light.wemo.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Belkin WeMo Lights" -description: "Instructions how to integrate Belkin WeMo LED lights into Home Assistant." +description: "Instructions how to integrate Belkin WeMo LED lights and WeMo Dimmer Switch into Home Assistant." date: 2016-02-20 00:45 sidebar: true comments: false @@ -14,7 +14,7 @@ ha_release: 0.14 --- -The `wemo` platform allows you to control your [Belkin WeMo](http://www.belkin.com/us/p/P-F5Z0489/) LED lights from within Home Assistant. +The `wemo` platform allows you to control your Belkin WeMo [LED lights](http://www.belkin.com/us/p/P-F5Z0489/) and [Smart Dimmer Switch](http://www.belkin.com/us/F7C059-Belkin/p/P-F7C059/) from within Home Assistant. They will be automatically discovered if the discovery component is enabled. From d656fec50a34283bae0ee1b03d799af2a4891f12 Mon Sep 17 00:00:00 2001 From: karlkar Date: Tue, 16 Jan 2018 09:24:29 +0100 Subject: [PATCH 20/60] Addrd extra arguments to onvif config (#4425) --- source/_components/camera.onvif.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/camera.onvif.markdown b/source/_components/camera.onvif.markdown index 9c48b6b4243..0cfa7cf4534 100644 --- a/source/_components/camera.onvif.markdown +++ b/source/_components/camera.onvif.markdown @@ -31,6 +31,6 @@ Configuration variables: - **username** (*Optional*): The username for the camera. - **password** (*Optional*): The password for the camera. - **port** (*Optional*): The port for the camera. This defaults to 5000 - +- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g. image quality or video filter options. More details in [FFmpeg component](/components/ffmpeg). If you are running into trouble with this sensor, please refer to the [Troubleshooting section](/components/ffmpeg/#troubleshooting). From 0d754a62994769908daf2655f1c3d1228b248026 Mon Sep 17 00:00:00 2001 From: nicxvan Date: Wed, 17 Jan 2018 02:03:42 -0500 Subject: [PATCH 21/60] Add text about serial option for z stick operation (#4440) * Add text about serial option for z stick operation * Fixing naming conventions to match brand names * Fix name --- source/_docs/z-wave/installation.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 15b87957cb0..d5bdbae4c98 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -25,7 +25,11 @@ $ sudo /Applications/Python\ x.x/Install\ Certificates.command ```

-The installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspbery Pi. +The installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspberry Pi. +

+ +

+On Raspberry Pi you will need to enable the serial interface in the raspbi-config tool before you can add Z-Wave to Home Assistant.

## {% linkable_title Configuration %} From 7b20739182fb41d3af0e52606b804fc8a28806f0 Mon Sep 17 00:00:00 2001 From: Antony Messerli Date: Wed, 17 Jan 2018 01:04:27 -0600 Subject: [PATCH 22/60] Adds KU6290 to tested Samsung TV models (#4441) --- source/_components/media_player.samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index f64277c404e..c743a692698 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -56,6 +56,7 @@ Currently known supported models: - U6300 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - K6500AF (port must be set to 8001) - KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed) +- KU6290 (port must be set to 8001) - MU6170UXZG (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) - K5600AK (partially supported, turn on works but state is not updated) From f8ab881dd4f0c1b7d2aac7799808d41d46148d39 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 17 Jan 2018 02:05:37 -0500 Subject: [PATCH 23/60] Added mychevy docs (#4410) * Added mychevy docs * :pencil2: Update ha_release * :pencil2: Removed configuration variables header --- source/_components/mychevy.markdown | 73 +++++++++++++++++++++++ source/images/supported_brands/chevy.png | Bin 0 -> 27477 bytes 2 files changed, 73 insertions(+) create mode 100644 source/_components/mychevy.markdown create mode 100644 source/images/supported_brands/chevy.png diff --git a/source/_components/mychevy.markdown b/source/_components/mychevy.markdown new file mode 100644 index 00000000000..64584db11d9 --- /dev/null +++ b/source/_components/mychevy.markdown @@ -0,0 +1,73 @@ +--- +layout: page +title: "MyChevy" +description: "Instructions on how to integrate Chevy Bolt car into Home Assistant." +date: 2017-08-28 17:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: chevy.png +ha_category: Hub +ha_release: 0.62 +ha_iot_class: "Cloud Polling" +--- + +The `MyChevy` component communicates with the +[my.chevrolet](https://my.chevrolet.com) website using selenium to log +in as your user, and screen scrape the data provided. GM does not +make it easy to sign up for any official development program, so this +provides a workaround to get access to your data. + +This component provides the following platforms: + - Binary sensors - if the car is plugged in + - Sensors - such as Battery Level, Charge Mode, EST Range, Total + Distance Traveled + +To use MyChevy in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +mychevy: + username: email + password: password +``` + +{% configuration %} +username: + description: The email address associated with your my.chevrolet account + required: true + type: string +password: + description: The password for your given my.chevrolet account + required: true + type: string +{% endconfiguration %} + + +#### {% linkable_title Installation %} + +Because this uses selenium behind the scenes, installation is more +complicated than merely pip install. See the installation instructions +at https://github.com/sdague/mychevy. + +#### {% linkable_title Limitations %} + +The architecture of the GM automotive networking imposes some +limitations on the functionality of the component. + +The OnStar network link is very slow, and takes 1 - 3 minutes to get +information back from the car. As such the mychevy component only +polls every 30 minutes to not overwhelms that connection. + +The OnStar network (or more specifically the gateway used by the +my.chevrolet website) appears to suffer more than most networks when +the car is a) in a garage, and b) it's cold outside (like < 15 degrees +F). One of the provided sensors is a status sensor which indicates if +we got connectivity with the car on the last polling cycle or not. + +The "API" for this is written by web scraping. As such, it only +currently is known to work if you have a Chevy Bolt EV, and only 1 +Chevy car connected to OnStar. Patches for extended support should go +to the https://github.com/sdague/mychevy project first, then +Home Assistant can be extended. diff --git a/source/images/supported_brands/chevy.png b/source/images/supported_brands/chevy.png new file mode 100644 index 0000000000000000000000000000000000000000..184da879bc910f76d2d67360997679f335dcee39 GIT binary patch literal 27477 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 Date: Wed, 17 Jan 2018 21:31:52 +0100 Subject: [PATCH 24/60] Add documentation for yamaha_enable_output (#4201) * Add documentation for yamaha_enable_output * :pencil2: Corrected optional flag on entity_id --- source/_components/media_player.yamaha.markdown | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/_components/media_player.yamaha.markdown b/source/_components/media_player.yamaha.markdown index c958aa1466c..049b33a832d 100644 --- a/source/_components/media_player.yamaha.markdown +++ b/source/_components/media_player.yamaha.markdown @@ -113,3 +113,13 @@ script: media_content_id: "Bookmarks>Internet>Radio Paradise" ``` + +### {% linkable_title Service `yamaha_enable_output` %} + +Enable or disable an output port (HDMI) on the receiver. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of Yamaha receivers. +| `port` | no | Port to enable or disable, e.g. `hdmi1`. +| `enabled` | no | To enable set true, otherwise set to false. From 3f9319dd431ca9a07b2873048697517f5be9a80b Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 18 Jan 2018 01:29:07 -0600 Subject: [PATCH 25/60] Update github url (#4450) --- source/_cookbook/configuration_yaml_by_aneisch.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_cookbook/configuration_yaml_by_aneisch.markdown b/source/_cookbook/configuration_yaml_by_aneisch.markdown index ec652e87ac4..fa59c4f6483 100644 --- a/source/_cookbook/configuration_yaml_by_aneisch.markdown +++ b/source/_cookbook/configuration_yaml_by_aneisch.markdown @@ -8,6 +8,6 @@ comments: false sharing: true footer: true ha_category: Example configuration.yaml -ha_external_link: https://github.com/aneisch/home-assistant/ +ha_external_link: https://github.com/aneisch/home-assistant-config/ --- From 06d8bb1634c265de89a5d5a4d09a1ce60eca4c8d Mon Sep 17 00:00:00 2001 From: markferry Date: Thu, 18 Jan 2018 22:03:54 +0000 Subject: [PATCH 26/60] Document min_max 'last' attribute (#4167) --- source/_components/sensor.min_max.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.min_max.markdown b/source/_components/sensor.min_max.markdown index db4db382a48..a71e0650e20 100644 --- a/source/_components/sensor.min_max.markdown +++ b/source/_components/sensor.min_max.markdown @@ -14,7 +14,7 @@ ha_release: "0.31" --- -The `min_max` sensor platform consumes the state from other sensors to determine the minimum, maximum, and the mean of the collected states. The sensor will always show you the lowest/highest value which was received from all monitored sensors. If you have spikes in your values, it's recommended to filter/equalize your values with a [statistics sensor](/components/sensor.statistics/) first. +The `min_max` sensor platform consumes the state from other sensors to determine the minimum, maximum, latest (last) and the mean of the collected states. The sensor will always show you the lowest/highest/latest value which was received from all monitored sensors. If you have spikes in your values, it's recommended to filter/equalize your values with a [statistics sensor](/components/sensor.statistics/) first. This sensor is an alternative to the [template sensor](/components/sensor.template/)'s `value_template:` to get the average of multiple sensors. @@ -42,7 +42,7 @@ sensor: Configuration variables: - **entity_ids** (*Required*): At least two entities to monitor. The unit of measurement of the first entry will be the one that's used. All entities must use the same unit of measurement. -- **type** (*Optional*): The type of sensor: `min`, `max` or `mean`. Defaults to `max`. +- **type** (*Optional*): The type of sensor: `min`, `max`, `last` or `mean`. Defaults to `max`. - **name** (*Optional*): Name of the sensor to use in the frontend. - **round_digits** (*Optional*): Round mean value to specified number of digits. Defaults to 2. From 4d19f4ba1249f46af0abd088043d87f265563893 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Jodoin Date: Thu, 18 Jan 2018 17:04:51 -0500 Subject: [PATCH 27/60] Added TekSavvy data usage sensor documentation. (#4227) * Added TekSavvy data usage sensor documentation. * Fix usage_gb parameters * Fixed date * Use configuration section + formulation fix * Removed tab * Update 'ha_release' --- source/_components/sensor.teksavvy.markdown | 77 ++++++++++++++++++++ source/images/supported_brands/teksavvy.png | Bin 0 -> 136009 bytes 2 files changed, 77 insertions(+) create mode 100644 source/_components/sensor.teksavvy.markdown create mode 100644 source/images/supported_brands/teksavvy.png diff --git a/source/_components/sensor.teksavvy.markdown b/source/_components/sensor.teksavvy.markdown new file mode 100644 index 00000000000..2181e4273de --- /dev/null +++ b/source/_components/sensor.teksavvy.markdown @@ -0,0 +1,77 @@ +--- +layout: page +title: "TekSavvy" +description: "Instructions on how to integrate TekSavvy data usage within Home Assistant." +date: 2017-12-17 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: teksavvy.png +ha_category: Sensor +ha_release: 0.62 +ha_iot_class: "Cloud Polling" +--- + +Integrate your [TekSavvy](https://myaccount.teksavvy.com/) account information into Home Assistant. + +You can get your API key from +https://myaccount.teksavvy.com/ApiKey/ApiKeyManagement + +To use your TekSavvy sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: teksavvy + api_key: API_KEY + total_bandwidth: 400 + monitored_variables: + - usage + - usage_gb + - limit + - onpeak_download + - onpeak_upload + - onpeak_total + - offpeak_download + - offpeak_upload + - offpeak_total + - onpeak_remaining +``` + +{% configuration %} +api_key: + description: The TekSavvy API key to access the service. + required: true + type: string +total_bandwidth: + description: Your bandwidth limit in gigabytes. + required: true + type: string +monitored_conditions: + description: Conditions to display in the frontend. + required: true + type: list + keys: + usage: + description: Bandwidth usage (percentage). + usage_gb: + description: Bandwidth usage (gigabytes). + limit: + description: Monthly bandwidth limit (gigabytes). + onpeak_download: + description: Bandwidth used by download outside the unmetered period (gigabytes). + onpeak_upload: + description: Bandwidth used by upload outside the unmetered period (gigabytes). + onpeak_total: + description: Total bandwidth used outside the unmetered period (gigabytes). + offpeak_download: + description: Bandwidth used by download during the unlimited period (gigabytes). + offpeak_upload: + description: Bandwidth used by upload during the unlimited period (gigabytes). + offpeak_total: + description: Total bandwidth used during the unlimited period (gigabytes). + onpeak_remaining: + description: Remaining bandwidth (gigabytes). +{% endconfiguration %} + diff --git a/source/images/supported_brands/teksavvy.png b/source/images/supported_brands/teksavvy.png new file mode 100644 index 0000000000000000000000000000000000000000..ba241bc6ef0d93f43c9fee1a1094ff2ae63d726d GIT binary patch literal 136009 zcmeFZXH=8h+BO;$#R@7aO+f|ey^1sy0g)!X7ePQ;LhseCH0dQ2mEHxU1PEY(2%&eR zM1jyDkkCRX-;8c??e`n|yyuK@e(sFrkQI{o%xB*1x~}_ve05(<@zimK;}8hsl+xWh znh*%hDG20X%h7}29Sz*lSMV2w%`Mei5J*Y5A4ww`{QqUkyPB#H$O~!+BozGF0bdHf z34!=~Lm;yu5Qr2O0-FM*XP2iyB^Rb!+NVjjasr-WkdUK9LRKg-9SKc2yBY!99>fQTagSzgs>fR|ieNOuW zCF@ZRK{|PD9+*OZNKrxU1|CnED1a@NZ6HVs$PPnVNK`g|eEbpR18-VrmY+x^&z_0Y za9e-`9bhsK;)JN^DpZ?&@I89E8Qu0Q^@__uGl~PtKKiu>oq9TjgVZSZ(lQKY{eou_ zAZOrZ67)Q0XkT8xru>GlqT_V}Lp+Z)-8Jhvj$3EYuOuEso{}N)l%^*PpW=~@6MaTu*wt>+2_ilOl3X$@Pk0K(%LOXf)_uL7vdn3d0KJ=Rio707RA&bS^ z-3$=()>n3Agb?1M<3a7bkZ+?Ti=OL{po|>YrGfftYE>!zR|juZhm|<%>c*Xk{~~mj zc9nWZ{YCw|;yN2vnWYGPr-{Uh%7fQId_|1hyw_B}W!q#38(ggZnf79nnR3^i>By~Q zFRHXJH1bbhWrd=ZPnW|{Q^%`prEbJ;q$O=qf7#7wL|k~)y?N%oWoS^ZJJ-#CMM{q2 zXD)Y<8cp`nVRf4Vmjk?iaz%%@?%~9DY(8asXsh@AP6f*@We3TOl4=9AN>kLez|aF-%Ch`RJ9(;&t1TY`hf)`RTsQ!?BV zesmahi~aiH_9x0e7^)6HpODPYsRY@WU#LBD;xxsBD?)dIC$F5pOVj8Q%%+z)39 z4l{l^39c6`_e00&VC|9iXD5DKa=JDGVSXn0gRm^RDJFGX_Q~|=pwnj<-oK{1dh+Yx z6~*^&yq-oBD87DkJmY|^e08MEB%9Fd*2^#rx^su+73tqQXr$)cKX;=1NI8?v<2;2+ z3hr-xG{iM5a}0VFMd%A(_A3s*MRuN

VrUecB`#db={6|2-_7y|Y-5?&PWTu#(SS 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

%WYg2%xgnURur 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 VcvsEUhoSi4A~jB`XQ^8F{1aXChz9@w literal 0 HcmV?d00001 From af6bcffd5d6d33c575a751e51ec54d53415ce3c7 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Fri, 19 Jan 2018 11:40:00 +0100 Subject: [PATCH 28/60] Additional attributes and services of the Xiaomi Air Purifier introduced (#4254) * New attributes average_aqi and purify_volume introduced and service light.xiaomi_miio_set_child_lock_{on,off} added. * Grammar issue fixed. --- source/_components/fan.xiaomi_miio.markdown | 50 ++++++++++++++------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 218a7c0da40..23110f63028 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -8,36 +8,38 @@ comments: false sharing: true footer: true logo: xiaomi.png -ha_category: Switch +ha_category: Fan ha_version: 0.57 ha_iot_class: "Local Polling" --- -The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2, Air Purifier 2S andd Air Purifier Pro. +The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2, Air Purifier 2S and Air Purifier Pro. Currently, the supported features are * On, Off * Operation modes (auto, silent, favorite, idle) * Buzzer (on, off) +* Child lock (on, off) * LED (on, off), LED brightness (bright, dim, off) -* Favorite Level -* States +* Favorite Level (0...16) +* Attributes - power - aqi + - average_aqi - humidity - temperature - mode + - favorite_level - led - led_brightness - buzzer - child_lock - - brightness - - favorite_level - - filter1_life - - f1_hour_used - - use_time - - motor1_speed + - purify_volume + - filter_life_remaining + - filter_hours_used + - motor_speed + ## {% linkable_title Setup %} @@ -66,7 +68,7 @@ Turn the buzzer on. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_buzzer_off @@ -74,7 +76,7 @@ Turn the buzzer off. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_led_on @@ -82,7 +84,7 @@ Turn the led on. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_led_off @@ -90,7 +92,23 @@ Turn the led off. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_child_lock_on + +Turn the child lock on. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_child_lock_off + +Turn the child lock off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_led_brightness @@ -98,7 +116,7 @@ Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | | `brightness` | no | Brightness, between 0 and 2. | ### Service fan/xiaomi_miio_set_favorite_level @@ -107,5 +125,5 @@ Set the favorite level of the operation mode "favorite". | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | | `level` | no | Level, between 0 and 16. | From 6525969cfc3b54abd4424ca7250d491fc2071326 Mon Sep 17 00:00:00 2001 From: ChristianKuehnel Date: Fri, 19 Jan 2018 11:41:22 +0100 Subject: [PATCH 29/60] plant - added config option "check history" (#3417) * added config option "group_name" to plant * added documentation for new behaviour of min_brightness * Update plant.markdown fixed typos * * removed group feature (see PR for details) * escaped curly braces as they were not rendered on github * undo escaping braces --- source/_components/plant.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown index daba937a936..80fccc281d4 100644 --- a/source/_components/plant.markdown +++ b/source/_components/plant.markdown @@ -45,8 +45,9 @@ Configuration variables: - **max_conductivity** (*Optional*): Maximum conductivity level before triggering a problem. Typical value: 3000 - **min_temperature** (*Optional*): Minimum temperature before triggering a problem. - **max_temperature** (*Optional*): Maximum temperature before triggering a problem. - - **min_brightness** (*Optional*): Minimum brightness before triggering a problem. + - **min_brightness** (*Optional*): Minimum brightness before triggering a problem. In contrast to the other values, this check is *not* looking at the current situation, but rather at the last days. A problem is only reported if the maximum brightness over the last days was lower than min_brightness. You can use this to check if the plant gets enough light during the course of the day. - **max_brightness** (*Optional*): Maximum brightness before triggering a problem. + - **check_days** (*Optional*): time interval (in days) used when checking **min_brightness**, if not set, the default value is 3 ## {% linkable_title Examples %} ### Using plain MQTT sensor to get the data From 122a77bc82ff026a7edc62f6b9fc2f158005c261 Mon Sep 17 00:00:00 2001 From: tschmidty69 Date: Fri, 19 Jan 2018 05:44:01 -0500 Subject: [PATCH 30/60] Added event_data_template (#4180) * Added event_data_template * Update scripts.markdown --- source/_docs/scripts.markdown | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index bffc89b8a7b..d61ee449b8d 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -124,6 +124,16 @@ event_data: entity_id: device_tracker.paulus domain: light ``` +You can also use event_data_template to fire an event with custom data. This could be used to pass data to another script awaiting +an event trigger. +``` +event: MY_EVENT +event_data_template: + name: myEvent + customData: "{{ myCustomVariable }}" +``` + + [Script component]: /components/script/ [automations]: /getting-started/automation-action/ From 878515d59abb65d2341ef7299caee1383829be72 Mon Sep 17 00:00:00 2001 From: ChristianKuehnel Date: Sat, 20 Jan 2018 08:54:50 +0100 Subject: [PATCH 31/60] component.sensor.miflora - extended documentation regarding Bluetooth backends (#4279) * updated miflora documentation after changes to bluetooth backend y * :pencil2: Small fixes --- source/_components/sensor.miflora.markdown | 25 ++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.miflora.markdown b/source/_components/sensor.miflora.markdown index 739ce1e2c0f..4d15463a1c7 100644 --- a/source/_components/sensor.miflora.markdown +++ b/source/_components/sensor.miflora.markdown @@ -13,8 +13,18 @@ ha_release: 0.29 ha_iot_class: "Local Polling" --- -The `miflora` sensor platform allows one to monitor to plants. The [Mi Flora plant sensor](https://xiaomi-mi.com/sockets-and-sensors/xiaomi-huahuacaocao-flower-care-smart-monitor/) is a small Bluetooth Low Energy device that monitors not only the moisture, but also light, temperature and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. +The `miflora` sensor platform allows one to monitor plants. The [Mi Flora plant sensor](https://xiaomi-mi.com/sockets-and-sensors/xiaomi-huahuacaocao-flower-care-smart-monitor/) is a small Bluetooth Low Energy device that monitors not only the moisture but also light, temperature, and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. +# Installation +Depending on the operating system you're running, you have to configure the proper Bluetooth backend on your system: + +- On [Hass.io](https://home-assistant.io/hassio/installation/): Miflora will work out of the box. +- On other Linux systems: + - Prefered solution: Install the `bluepy` library (via pip). When using a virtual environment, make sure to use install the library in the right one. +    - Fallback solution: Install `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated` +- Windows and MacOS are currently not supported by the [miflora library](https://github.com/open-homeautomation/miflora/). + +# Configuration Start a scan to determine the MAC addresses of the sensor: ```bash @@ -25,6 +35,17 @@ C4:D3:8C:12:4C:57 Flower mate [...] ``` +Or if your distribution is using bluetoothctl: + +```bash +$ bluetoothctl +[bluetooth]# scan on +[NEW] Controller [default] +[NEW] F8:04:33:AF:AB:A2 [TV] UE48JU6580 +[NEW] C4:D3:8C:12:4C:57 Flower mate +``` + + Check for `Flower care` or `Flower mate` entries, those are your sensor. To use your Mi Flora plant sensor in your installation, add the following to your `configuration.yaml` file: @@ -56,7 +77,7 @@ sensor: Note that by default the sensor is only polled once every 15 minutes. This means with the `median: 3` setting will take as least 30 minutes before the sensor will report a value after a Home Assistant restart. As the values usually change very slowly, this isn't a big problem. Reducing polling intervals will have a negative effect on the battery life. -A full configuration example could looks the one below: +A full configuration example could look like the one below: ```yaml # Example configuration.yaml entry From 06e73a8ac9704b5432beb910d75ae95ee9be9e22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Bedn=C3=A1rik?= Date: Sat, 20 Jan 2018 17:09:20 +0100 Subject: [PATCH 32/60] Update holidays python module version to 0.9.3 (#4475) --- source/_components/binary_sensor.workday.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown index 7730c514fec..0d4782bc12a 100644 --- a/source/_components/binary_sensor.workday.markdown +++ b/source/_components/binary_sensor.workday.markdown @@ -28,8 +28,8 @@ binary_sensor: Configuration variables: - **name** (*Optional*): A name for this sensor. Defaults to *Workday Sensor* -- **country** (*Required*): Country code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. -- **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. Defaults to None. +- **country** (*Required*): Country code according to [holidays](https://pypi.python.org/pypi/holidays/0.9.3) notation. +- **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.9.3) notation. Defaults to None. - **workdays** (*Optional*): List of workdays. Defaults to `mon`, `tue`, `wed`, `thu`, `fri`. - **excludes** (*Optional*): List of workday excludes. Defaults to `sat`, `sun`, `holiday`. - **days_offset** (*Optional*): Set days offset. Defaults to `0`. From 1f582818fac1000003470a4c864e80560af1c508 Mon Sep 17 00:00:00 2001 From: Frantz Date: Sun, 21 Jan 2018 07:11:40 +0200 Subject: [PATCH 33/60] Enable Daikin autodiscovery (#4483) * Create climate.daikin.markdown * Added the entire Daikin platform and also Daikin sensors docs * Update climate.daikin.markdown * Update daikin.markdown * Update sensor.daikin.markdown * Added-Daikin-autodiscovery-docs --- source/_components/climate.daikin.markdown | 3 ++- source/_components/daikin.markdown | 11 +++++++++-- source/_components/sensor.daikin.markdown | 3 ++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/source/_components/climate.daikin.markdown b/source/_components/climate.daikin.markdown index 5b4c2182a9e..116cf08034a 100644 --- a/source/_components/climate.daikin.markdown +++ b/source/_components/climate.daikin.markdown @@ -29,7 +29,8 @@ Current temperature is displayed. ### Configuration ### -Manual configuration and customization is possible by using the sample configuration from below: +The component has been integrated with discovery so all your Daikin AC's climate devices can be automatically discovered. +Manual configuration and customization is also possible by using the sample configuration from below: ```yaml # Example configuration.yaml entry diff --git a/source/_components/daikin.markdown b/source/_components/daikin.markdown index 548c05ec313..03a1d598145 100644 --- a/source/_components/daikin.markdown +++ b/source/_components/daikin.markdown @@ -18,13 +18,19 @@ ha_iot_class: "Local Polling" The component integrates Daikin air conditioning systems into Home Assistant. To automatically add all your Daikin devices (ACs and associated sensors) into your Home Assistant installation, add the following to your 'configuration.yaml' file: +```yaml +# Example configuration.yaml entry +daikin: +```

Please note, the Daikin platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant

+A full manual configuration example is give below: + ```yaml -# Example configuration.yaml entry +# Full manual example configuration.yaml entry daikin: hosts: - 192.168.4.161 @@ -38,7 +44,8 @@ daikin: {% configuration %} hosts: description: List of IP addresses or hostnames. - required: true + required: false + default: All discovered hosts type: array monitored_conditions: description: List of items you want to monitor for each device. diff --git a/source/_components/sensor.daikin.markdown b/source/_components/sensor.daikin.markdown index dfb69786405..5e8967f99b6 100644 --- a/source/_components/sensor.daikin.markdown +++ b/source/_components/sensor.daikin.markdown @@ -25,7 +25,8 @@ The sensor component integrates Daikin air conditioning systems into Home Assist ### Configuration ### -Manual configuration and customization is possible by using the sample configuration from below: +The component has been integrated with discovery so all your Daikin AC's climate devices can be automatically discovered. +Manual configuration and customization is also possible by using the sample configuration from below: ```yaml # Example configuration.yaml entry From 22529d403210467053ecc3b28e0f3002254c4f3a Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Sun, 21 Jan 2018 03:40:27 -0500 Subject: [PATCH 34/60] Add docs for waterfurnace component (#4467) * Add docs for waterfurnace component * address changes from review * add further review comments --- source/_components/waterfurnace.markdown | 68 ++++++++++++++++++ .../images/supported_brands/waterfurnace.png | Bin 0 -> 6985 bytes 2 files changed, 68 insertions(+) create mode 100644 source/_components/waterfurnace.markdown create mode 100644 source/images/supported_brands/waterfurnace.png diff --git a/source/_components/waterfurnace.markdown b/source/_components/waterfurnace.markdown new file mode 100644 index 00000000000..b747ff597a2 --- /dev/null +++ b/source/_components/waterfurnace.markdown @@ -0,0 +1,68 @@ +--- +layout: page +title: "WaterFurnace" +description: "Instructions on how to integrate WaterFurnace Geothermal System into Home Assistant." +date: 2018-01-19 17:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: waterfurnace.png +ha_category: Hub +ha_release: 0.62 +ha_iot_class: "Cloud Polling" +--- + +The `waterfurnace` component communicates with the WaterFurnace +Symphony website's WebSocket to show you many of the sensors in your +system. While not an official API, this is the same backend the +Symphony website is based on, and should be reasonably stable. + +The sensors provided include: + - Thermostat Setpoint + - Thermostat Current Temp + - Leaving Air Temp + - Entering Water Loop Temp + - Current Humidity + - Current Humidity Setpoint + - Total system power (in Watts) + - Furnace Mode + +To use Waterfurnace in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +waterfurnace: + username: you@example.com + password: secr3tpassword + unit: 0123456789AB +``` + +{% configuration %} +username: + description: The email address for your Symphony WaterFurnace account + required: true + type: string +password: + description: The password for your Symphony WaterFurnace account + required: true + type: string +unit: + description: The unit serial number for your WaterFurnace + required: true + type: string +{% endconfiguration %} + + +#### {% linkable_title Limitations %} + +The WebSocket interface used by this module requires active polling, +otherwise the server side shuts down the connection. By default, this +polling is happening every 10 seconds. All sensors are updated during +every polling cycle. + +While this is communicating with a thermostat, geothermal systems +operate most efficiently when setbacks are not used, and the home is +kept at a constant temperature. It remains useful to collect the data +from the system to understand it's performance, but a full climate +interface won't be implemented. diff --git a/source/images/supported_brands/waterfurnace.png b/source/images/supported_brands/waterfurnace.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2f560a1e52e5d1acc3d3d14187a06e789b9da6 GIT binary patch literal 6985 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 z Date: Sun, 21 Jan 2018 18:34:19 +0200 Subject: [PATCH 35/60] Update climate.daikin.markdown (#4482) According to https://community.home-assistant.io/t/daikin-component-no-climate-entities-created-task-exception/39608/26 BRP069A42 does not support setting of fan speed or fan swing mode. --- source/_components/climate.daikin.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_components/climate.daikin.markdown b/source/_components/climate.daikin.markdown index 116cf08034a..52e3f5b5252 100644 --- a/source/_components/climate.daikin.markdown +++ b/source/_components/climate.daikin.markdown @@ -17,14 +17,15 @@ ha_iot_class: "Local Polling" The climate component integrates Daikin air conditioning systems into Home Assistant, enabling control of setting the following parameters: - **mode** (cool, heat, dry, fan only or auto) -- **fan speed** +- **fan speed** (on supported models) - **target temperature** - **swing mode** (on supported models) Current temperature is displayed.

- Please note, the `daikin` platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant + Please note, the `daikin` platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant. + BRP069A42 does not support setting of fan speed or fan swing mode.

### Configuration ### From 1330075f566482cd7ead9ca8eeb43ddcec519b2c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 21 Jan 2018 17:34:44 +0100 Subject: [PATCH 36/60] Extend and update API documentation (#4485) --- source/_components/api.markdown | 25 +++++++++++++++++++++++ source/_components/http.markdown | 4 ++-- source/_components/websocket_api.markdown | 25 +++++++++++++++++++++++ source/developers/api.markdown | 5 ++++- source/developers/python_api.markdown | 2 +- source/developers/rest_api.markdown | 2 ++ source/developers/websocket_api.markdown | 12 ++++++----- 7 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 source/_components/api.markdown create mode 100644 source/_components/websocket_api.markdown diff --git a/source/_components/api.markdown b/source/_components/api.markdown new file mode 100644 index 00000000000..cdac55a1b44 --- /dev/null +++ b/source/_components/api.markdown @@ -0,0 +1,25 @@ +--- +layout: page +title: "API" +description: "Instructions how to setup the RESTful API within Home Assistant." +date: 2018-01-21 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: "Other" +--- + +The `api` component exposes a RESTful API and allows one to interact with a Home Assistant instance that is running headless. This component depends on the [`http` component](/components/http/). + +

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

+ +```yaml +# Example configuration.yaml entry +api: +``` + +For details to use the API, please refer to the [REST API](/developers/rest_api/) or the [Python REST API documentation](/developers/python_api/) in the "Developer" section. diff --git a/source/_components/http.markdown b/source/_components/http.markdown index 91c25d7058b..0a6d20b2cd0 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -65,9 +65,9 @@ http: The [Set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post gives you details about the encryption of your traffic using free certificates from [Let's Encrypt](https://letsencrypt.org/). -Or use a self signed certificate following the instructions here [Self-signed certificate for SSL/TLS](/docs/ecosystem/certificates/tls_self_signed_certificate/) +Or use a self signed certificate following the instructions here [Self-signed certificate for SSL/TLS](/docs/ecosystem/certificates/tls_self_signed_certificate/). -On top of the `http` component is a [REST API](/developers/rest_api/) and a [Python API](/developers/python_api/) available. There is also support for [Server-sent events](/developers/server_sent_events/). +On top of the `http` component is a [REST API](/developers/rest_api/), [Python API](/developers/python_api/) and [WebSocket API](/developers/websocket_api/) available. There is also support for [Server-sent events](/developers/server_sent_events/). The `http` platforms are not real platforms within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) sends and receives messages over HTTP. diff --git a/source/_components/websocket_api.markdown b/source/_components/websocket_api.markdown new file mode 100644 index 00000000000..4eff8a8a3f6 --- /dev/null +++ b/source/_components/websocket_api.markdown @@ -0,0 +1,25 @@ +--- +layout: page +title: "Websocket API" +description: "Instructions how to setup the WebSocket API within Home Assistant." +date: 2018-01-21 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: "Other" +--- + +The `websocket_api` component set up a WebSocket API and allows one to interact with a Home Assistant instance that is running headless. This component depends on the [`http` component](/components/http/). + +

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

+ +```yaml +# Example configuration.yaml entry +websocket_api: +``` + +For details to use the WebSocket API, please refer to the [WebSocket API documentation](/developers/websocket_api/) . diff --git a/source/developers/api.markdown b/source/developers/api.markdown index b46b1fdc4d4..999647d0382 100644 --- a/source/developers/api.markdown +++ b/source/developers/api.markdown @@ -12,7 +12,10 @@ footer: true Home Assistant provides various APIs. For detail please refer to [Home Assistant API](https://dev-docs.home-assistant.io/en/dev/) documentation. * [Python API](https://dev-docs.home-assistant.io/) - * [Websocket API](/developers/websocket_api/) + * [WebSocket API](/developers/websocket_api/) * [REST API](/developers/rest_api/) * [Python REST API](/developers/python_api/) * [Server-sent events](/developers/server_sent_events/) + +If you are not using the [`frontend`](/components/frontend/) in your setup then you need to enable the components by adding them to your `configuration.yaml` file. E.g., [`websocket_api:`](/components/websocket_api/) for the WebSocket API or [`api:`](/components/api/) for the [REST API](/developers/rest_api/) and the [Python REST API](/developers/python_api/). + diff --git a/source/developers/python_api.markdown b/source/developers/python_api.markdown index 2e752f80b4c..818bb8d0771 100644 --- a/source/developers/python_api.markdown +++ b/source/developers/python_api.markdown @@ -13,7 +13,7 @@ See the [developer documentation][devdocs] for a full overview of the documentat [devdocs]: https://dev-docs.home-assistant.io/en/master/api/homeassistant.html#module-homeassistant.remote -In the package [`homeassistant.remote`](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/remote.py) a Python API on top of the [HTTP API](/developers/api/) can be found. +In the package [`homeassistant.remote`](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/remote.py) a Python API on top of the [HTTP API](/developers/api/) can be found. If you are not using the [`frontend`](/components/frontend/) in your setup then you need to add the [`api` component](/components/api/) to your `configuration.yaml` file to use the Python Remote API. A simple way to get all current entities is to visit the "Set State" page in the "Developer Tools". For the examples below just choose one from the available entries. Here the sensor `sensor.office_temperature` and the switch `switch.livingroom_pin_2` are used. diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown index cf850cfbec4..bd9fc8f48c7 100644 --- a/source/developers/rest_api.markdown +++ b/source/developers/rest_api.markdown @@ -16,6 +16,8 @@ Home Assistant runs a web server accessible on port 8123. The API accepts and returns only JSON encoded objects. All API calls have to be accompanied by the header `X-HA-Access: YOUR_PASSWORD` (YOUR_PASSWORD as specified in your `configuration.yaml` file in the [`http:` section](/components/http/)). +If you are not using the [`frontend`](/components/frontend/) in your setup then you need to add the [`api` component](/components/api/) to your `configuration.yaml` file. + There are multiple ways to consume the Home Assistant Rest API. One is with `curl`: ```bash diff --git a/source/developers/websocket_api.markdown b/source/developers/websocket_api.markdown index 3cf5796c1b3..46361af809d 100644 --- a/source/developers/websocket_api.markdown +++ b/source/developers/websocket_api.markdown @@ -17,16 +17,18 @@ Home Assistant contains a WebSocket API. This API can be used to stream informat Connect your websocket implementation to `ws://localhost:8123/api/websocket`. +If you are not using the [`frontend`](/components/frontend/) in your setup then you need to add the [`websocket_api` component](/components/websocket_api/) to your `configuration.yaml` file to use the WebSocket API. + ## {% linkable_title Server states %} - 1. Client connects + 1. Client connects. 2. Authentication phase starts - - If no further authentication necessary for the user: go to 3 - - Server sends `auth_required` message - - Client sends `auth` message + - If no further authentication necessary for the user: go to 3. + - Server sends `auth_required` message. + - Client sends `auth` message. - If `auth` message correct: go to 3. - Server sends `auth_invalid`. Go to 6. - 3. Send `auth_ok` message + 3. Send `auth_ok` message. 4. Authentication phase ends. 5. Command phase starts. 1. Client can send commands. From 79b32c3151e9b4dbebca4e01782292405beb0df4 Mon Sep 17 00:00:00 2001 From: Ioan Loosley Date: Sun, 21 Jan 2018 16:33:37 +0000 Subject: [PATCH 37/60] Fixing Daikin docs (#4486) * Fixed Broken images, Added Sidebar and put them in the right catagorys * Forgot the image --- source/_components/climate.daikin.markdown | 4 +- source/_components/daikin.markdown | 6 +- source/_components/sensor.daikin.markdown | 6 +- source/images/daikin.svg | 95 ++++++++++++++++++++++ 4 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 source/images/daikin.svg diff --git a/source/_components/climate.daikin.markdown b/source/_components/climate.daikin.markdown index 52e3f5b5252..4c7b2176874 100644 --- a/source/_components/climate.daikin.markdown +++ b/source/_components/climate.daikin.markdown @@ -3,11 +3,11 @@ layout: page title: "Daikin AC" description: "Instructions on how to integrate Daikin AC(s) with Home Assistant." date: 2017-12-03 05:00 -sidebar: false +sidebar: true comments: false sharing: true footer: true -logo: N/A +logo: daikin.svg ha_category: Climate ha_release: 0.59 ha_iot_class: "Local Polling" diff --git a/source/_components/daikin.markdown b/source/_components/daikin.markdown index 03a1d598145..c13983d65a4 100644 --- a/source/_components/daikin.markdown +++ b/source/_components/daikin.markdown @@ -3,12 +3,12 @@ layout: page title: "Daikin AC" description: "Instructions on how to integrate Hive devices with Home Assistant." date: 2017-12-10 21:00 -sidebar: false +sidebar: true comments: false sharing: true footer: true -logo: N/A -ha_category: Climate +logo: daikin.svg +ha_category: Hub ha_release: 0.59 ha_iot_class: "Local Polling" --- diff --git a/source/_components/sensor.daikin.markdown b/source/_components/sensor.daikin.markdown index 5e8967f99b6..74337e223f1 100644 --- a/source/_components/sensor.daikin.markdown +++ b/source/_components/sensor.daikin.markdown @@ -3,12 +3,12 @@ layout: page title: "Daikin AC" description: "Instructions on how to integrate Daikin AC(s) with Home Assistant." date: 2017-12-03 05:00 -sidebar: false +sidebar: True comments: false sharing: true footer: true -logo: N/A -ha_category: Climate +logo: daikin.svg +ha_category: Sensor ha_release: 0.59 ha_iot_class: "Local Polling" --- diff --git a/source/images/daikin.svg b/source/images/daikin.svg new file mode 100644 index 00000000000..b6f36d99046 --- /dev/null +++ b/source/images/daikin.svg @@ -0,0 +1,95 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 0b20689737b6874241d2236f3575a864ed8b0a36 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 21 Jan 2018 17:36:38 +0100 Subject: [PATCH 38/60] :white_check_mark: Various markdown, spelling, and grammar fixes (#4457) --- source/_addons/cec_scan.markdown | 2 +- source/_addons/check_config.markdown | 2 +- source/_addons/configurator.markdown | 14 ++++++------ source/_addons/dnsmasq.markdown | 6 ++--- source/_addons/git_pull.markdown | 2 +- source/_addons/google_assistant.markdown | 11 ++++----- source/_addons/homematic.markdown | 14 ++++++------ source/_addons/lets_encrypt.markdown | 4 ++-- source/_addons/mariadb.markdown | 2 +- source/_addons/mosquitto.markdown | 8 +++---- source/_addons/nginx_proxy.markdown | 5 ++-- source/_addons/rpc_shutdown.markdown | 10 ++++---- source/_addons/samba.markdown | 8 +++---- source/_addons/ssh.markdown | 8 +++---- source/_addons/tellstick.markdown | 29 ++++++++++++------------ 15 files changed, 61 insertions(+), 64 deletions(-) diff --git a/source/_addons/cec_scan.markdown b/source/_addons/cec_scan.markdown index 4c048eff157..a17d0ff09db 100644 --- a/source/_addons/cec_scan.markdown +++ b/source/_addons/cec_scan.markdown @@ -9,4 +9,4 @@ sharing: true footer: true --- -Help you to discover the HDMI CEC address. Start the add-on and look into log to see all connected device on HDMI. +Help you to discover the HDMI CEC address. Start the add-on and look into the log to see all connected device on HDMI. diff --git a/source/_addons/check_config.markdown b/source/_addons/check_config.markdown index 0b00f1b147e..f10f69848fe 100644 --- a/source/_addons/check_config.markdown +++ b/source/_addons/check_config.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -You can use this addon to check whether your configuration files are valid against the new version of Home Assistant before you actually update your Home Assistant installation. This will help you avoid errors due to breaking changes, resulting in an smooth update. +You can use this addon to check whether your configuration files are valid against the new version of Home Assistant before you actually update your Home Assistant installation. This addon will help you avoid errors due to breaking changes, resulting in a smooth update. ```json { diff --git a/source/_addons/configurator.markdown b/source/_addons/configurator.markdown index 97640ebe203..4b91a46b66d 100644 --- a/source/_addons/configurator.markdown +++ b/source/_addons/configurator.markdown @@ -11,7 +11,7 @@ featured: true og_image: /images/hassio/screenshots/addon-hass-configurator.png --- -As long as a fully featured configuration GUI for Home Assistant is still under development, you can use this add-on to add a browser based file-editor to your Hass.IO installation. By default it will listen on port `3218` of the host Hass.IO is running on. +As long as a fully featured configuration GUI for Home Assistant is still under development, you can use this add-on to add a browser-based file-editor to your Hass.IO installation. By default it will listen on port `3218` of the host Hass.IO is running on. More information and a standalone version for regular Home Assistant installations can be found in the [GitHub repository][code]. @@ -27,8 +27,8 @@ Screenshot of the HASS Configurator. - Web-Based editor to modify your files with syntax highlighting. - Upload and download files. - Stage and commit changes in Git repositories, create and switch between branches, push to remotes. -- Lists of available triggers, events, entities, conditions and services. Selected element gets inserted into the editor at the last cursor position. -- Restart Home Assistant directly with the click of a button. Reloading groups, automations etc. can be done as well. An API-password is required. +- Lists of available triggers, events, entities, conditions, and services. The selected element gets inserted into the editor at the last cursor position. +- Restart Home Assistant directly with the click of a button. Reloading groups, automations, etc. can be done as well. An API-password is required. - SSL support. - Optional authentication and IP filtering for added security. - Direct links to Home Assistant documentation and icons. @@ -55,15 +55,15 @@ Screenshot of the HASS Configurator. - **username** (*Optional*): Set a username to access your configuration is protected. - **password** (*Required*): Set a password for access. - **ssl** (*Optional*): Enable or Disable SSL for the editor. -- **allowed_networks** (*Optional*): Limit access to the configurator by adding allowed IP addresses / networks to the list. +- **allowed_networks** (*Optional*): Limit access to the configurator by adding allowed IP addresses/networks to the list. - **banned_ips** (*Optional*): List of statically banned IP addresses. - **banlimit** (*Optional*): Ban access from IPs after `banlimit` failed login attempts. The default value `0` disables this feature. Restart the add-on to clear the list of banned IP addresses. - **ignore_pattern** (*Optional*): Files and folders to ignore in the UI. -- **dirsfirst** (*Optional*): List directories before files in the filebrowser. +- **dirsfirst** (*Optional*): List directories before files in the file browser. ### {% linkable_title Embedding into Home-Assistant %} -Using the Home Assistant component [panel_iframe](https://home-assistant.io/components/panel_iframe/) it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration within the Home Assistant frontend. +Using the Home Assistant component [panel_iframe](https://home-assistant.io/components/panel_iframe/) it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration from within the Home Assistant frontend. An example configuration would look like this: @@ -76,5 +76,5 @@ panel_iframe: ```

-Be careful when setting up port forwarding to the configurator while embedding into Home Assistant. If you don't restrict access by requiring authentication and / or blocking based on client IP addresses, your configuration will be exposed to the internet! +Be careful when setting up port forwarding to the configurator while embedding into Home Assistant. If you don't restrict access by requiring authentication and/or blocking based on client IP addresses, your configuration will be exposed to the internet!

diff --git a/source/_addons/dnsmasq.markdown b/source/_addons/dnsmasq.markdown index 586a035f8f5..6ae42294f54 100644 --- a/source/_addons/dnsmasq.markdown +++ b/source/_addons/dnsmasq.markdown @@ -30,7 +30,7 @@ Setup and manage a [Dnsmasq](http://thekelleys.org.uk/dnsmasq/doc.html) DNS serv Configuration variables: -- **defaults** (*Required*): A list of dns server to forward default requests. +- **defaults** (*Required*): A list of DNS servers to forward default requests to. - **forwards** (*Optional*): A list of domains that will forward to a specific server. -- **hosts** (*Optional*): A list of hosts to resolve it static. -- **interface** (*Optional*): If a interface is set, it listen only on this interface. Need to set for resinos. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. +- **hosts** (*Optional*): A list of hosts to resolve statically. +- **interface** (*Optional*): If an interface is set, it listens only on this interface. Needs to be set for ResinOS. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown index e482db95099..8d42d8ab820 100644 --- a/source/_addons/git_pull.markdown +++ b/source/_addons/git_pull.markdown @@ -45,7 +45,7 @@ Load and update configuration files for Home Assistant from a GIT repository. * **rsa** The protocol is typically known by the suffix of the private key --e.g., a key file named `id_rsa` will be a private key using "rsa" protocol. - +

You should only use this add-on if you do not have an existing configuration or if your existing configuration is already in a git repository. If the script does not find the necessary git files in your configuration folder, it will delete anything that might be there. Please ensure that there is a `.git` folder before using this. You can verify this by listing the items in the configuration folder including hidden files. The command is `ls -a /config`.

diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 21c4c8b8af4..ac0765bc513 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -11,7 +11,7 @@ featured: true ---

- If you are wanting to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant then you want the [Google Assistant component](https://home-assistant.io/components/google_assistant/). + If you want to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant, then you want the [Google Assistant component](https://home-assistant.io/components/google_assistant/).

[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact via the [DialogFlow][comp] integration with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality. @@ -19,8 +19,8 @@ featured: true To enable access to the Google Assistant API, do the following: 1. In the [Cloud Platform Console][project], go to the Projects page. Select an existing project or create a new project -2. Open the project. In the top of the page search for Google Assistant API or use [this link][API] and enable it. -3. Create an [OAuth Client ID][oauthclient], pick type "Other", click "Create" and download the JSON file by clicking the Download JSON button on the right side. +1. Open the project. In the top of the page search for Google Assistant API or use [this link][API] and enable it. +1. Create an [OAuth Client ID][oauthclient], pick type "Other", click "Create" and download the JSON file by clicking the Download JSON button on the right side. Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your credentials over. Name the file `google_assistant.json`. @@ -52,9 +52,9 @@ Find the microphone and speakers that you want to use and note down their device The next step is to authenticate your Google account with Google Assistant. Start the add-on and click on the "OPEN WEB UI" button to start authentication. -### Add-On configuration +### Add-on configuration -Configuration example that uses the USB microphone and use the built-in headset audio output on the Raspberry Pi. Note that card and device numbers can differ on your device. +Configuration example that uses the USB microphone and the built-in headset audio output on the Raspberry Pi. Note that card and device numbers can differ on your device. ```json { @@ -73,7 +73,6 @@ Configuration variables: Use the Home Assistant [DialogFlow component][comp] to integrate the add-on into Home Assistant. - [GoogleAssistant]: https://assistant.google.com/ [GoogleActions]: https://actions.google.com/ [Samba]: /addons/samba/ diff --git a/source/_addons/homematic.markdown b/source/_addons/homematic.markdown index aa1137abd0b..8cf3c3b9b32 100644 --- a/source/_addons/homematic.markdown +++ b/source/_addons/homematic.markdown @@ -9,9 +9,9 @@ sharing: true footer: true --- -Set up a [HomeMatic](https://github.com/eq-3/occu) hardware layer. At the moment we don't support hmIP but that is in progress. For learning and handling devices use our internal homematic panel and services (in progress) or use [Homematic-Manager](https://github.com/hobbyquaker/homematic-manager) > 2.0. +Set up a [HomeMatic](https://github.com/eq-3/occu) hardware layer. At the moment we don't support hmIP, but that is in progress. For learning and handling devices use our internal HomeMatic panel and services (in progress) or use [Homematic-Manager](https://github.com/hobbyquaker/homematic-manager) > 2.0. -The logic layer will be Home-Assistant. There is no ReGa or other logic layer installed. You can't import exists configuration, you need new learn it into Home-Assistant. +The logic layer will be Home-Assistant. There is no ReGa or other logic layer installed. You can't import an existing configuration, you'll need re-learn it into Home-Assistant. Follow devices will be supported and tested: - [HM-MOD-RPI-PCB](https://www.elv.ch/homematic-funkmodul-fuer-raspberry-pi-bausatz.html) @@ -42,13 +42,13 @@ Configuration variables: - **wired_enable** (*Require*): Boolean. Enable or disable BidCoS-Wired. For RF devices -- **type** (*Require*): Device type for RFD service. Look into handbook of your device. -- **device** (*Require*): Device on host. +- **type** (*Require*): Device type for RFD service. Look into the manual of your device. +- **device** (*Require*): Device on the host. For RF devices -- **serial** (*Require*): Serial number of device. +- **serial** (*Require*): Serial number of the device. - **key** (*Require*): Encrypted key. -- **ip** (*Require*): IP address of lan gateway. +- **ip** (*Require*): IP address of LAN gateway. ## {% linkable_title Home Assistant configuration %} @@ -64,7 +64,7 @@ homematic: ## {% linkable_title Raspberry Pi3 %} -With HM-MOD-PRI-PCB you need add follow into your `config.txt` on boot partition: +With HM-MOD-PRI-PCB you need to add follow into your `config.txt` on boot partition: ``` dtoverlay=pi3-miniuart-bt ``` diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index bf6845005f6..fe3894e6f89 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -14,7 +14,7 @@ featured: false You should not use this if you are also using the [DuckDNS add-on]. The DuckDNS add-on has integrated Let's Encrypt support.

-Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration. +Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This addon will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration. ```json { @@ -39,6 +39,6 @@ http: ssl_key: /ssl/privkey.pem ``` -If you use another port such as `8123` or a SSL proxy, change the port number. +If you use another port such as `8123` or an SSL proxy, change the port number. [DuckDNS add-on]: /addons/duckdns/ diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown index b7882dd2c6f..673857de06e 100644 --- a/source/_addons/mariadb.markdown +++ b/source/_addons/mariadb.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -Set up a [mariadb](https://mariadb.org/) SQL server. It supports multiple databases, users and permission settings. If you want to only connect from inside home assistant use `core-mariadb` as the host address. +Set up a [mariadb](https://mariadb.org/) SQL server. It supports multiple databases, users, and permission settings. If you want to only connect from inside home assistant use `core-mariadb` as the host address. ```json { diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index 5512542ed20..de3df298949 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -35,10 +35,10 @@ Make sure you use logins and disable anonymous access if you want to secure the Configuration variables: -- **plain** (*Optional*): Listen to broker on port 1883 without SSL/TLS. Defaults to `true`. -- **ssl** (*Optional*): Listen to broker on port 8883 with SSL/TLS. This requires certificates. Defaults to `false`. -- **anonymous** (*Optional*): Allow anonymous connection. If *logins* is set, anonymous user can only read data. Defaults to `true`. -- **logins** (*Optional*): A list of user that will be created with *username* and *password*. +- **plain** (*Optional*): Listen on port 1883 without SSL/TLS. Defaults to `true`. +- **ssl** (*Optional*): Listen on port 8883 with SSL/TLS. This requires certificates. Defaults to `false`. +- **anonymous** (*Optional*): Allow anonymous connections. If *logins* is set, the anonymous user can only read data. Defaults to `true`. +- **logins** (*Optional*): A list of users that will be created with *username* and *password*. - **customize** (*Optional*): If you enable it, it reads additional configuration files (`*.conf`) from `/share/mosquitto`. ### {% linkable_title Home Assistant configuration %} diff --git a/source/_addons/nginx_proxy.markdown b/source/_addons/nginx_proxy.markdown index 318b9768d9c..8fd22956e72 100644 --- a/source/_addons/nginx_proxy.markdown +++ b/source/_addons/nginx_proxy.markdown @@ -9,11 +9,10 @@ sharing: true footer: true --- -Setup a SSL proxy with NGINX and redirect port 80 to 443. Make sure you have generated a certificate before you start this add-on. +Setup an SSL proxy with NGINX and redirect port 80 to 443. Make sure you have generated a certificate before you start this add-on. In the `http` section of the `configuration.yaml` file remove `ssl_certificate` and `ssl_key` and don't enter the port in the `base_url` to avoid a HTTP 502 error. - ```json { "domain": "home.example.com" @@ -25,5 +24,5 @@ Configuration variables: - **domain** (*Required*): Domain they will proxy run with it.

-It is possible to deactive port 80 if you need this for things like `emulate_hue`. Remove the host port from Network option of this add-on. +It is possible to deactivate port 80 if you need this for things like `emulate_hue`. Remove the host port from Network option of this add-on.

diff --git a/source/_addons/rpc_shutdown.markdown b/source/_addons/rpc_shutdown.markdown index 10aba2dcf5f..a4d2d6689a9 100644 --- a/source/_addons/rpc_shutdown.markdown +++ b/source/_addons/rpc_shutdown.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -Allow to shutdown a Windows computer with a service call from Home Assistant. +Allows you to shut down a Windows computer with a service call from Home Assistant. ```json { @@ -23,10 +23,10 @@ Allow to shutdown a Windows computer with a service call from Home Assistant. } ``` -- **computers** (*Required*): A list of computer object to shutdown from Home-Assistant. -- **computers/alias** (*Required*): Set a alias for this record and that is the name for the input. -- **computers/address** (*Required*): IP address or netbios name of the computer for shutdown. -- **computers/credentials** (*Required*): Credentials for logging into computer. Use a `%` as delimiter of username and password. +- **computers** (*Required*): A list of computer objects to shutdown from Home-Assistant. +- **computers/alias** (*Required*): Set an alias for this record which becomes the name for the input. +- **computers/address** (*Required*): IP address or NetBIOS name of the computer for the shutdown. +- **computers/credentials** (*Required*): Credentials for logging into computer. Use a `%` as the delimiter of username and password. ## {% linkable_title Home Assistant %} diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown index f6aff2fd92d..33e573ec377 100644 --- a/source/_addons/samba.markdown +++ b/source/_addons/samba.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Samba" -description: "Manage your Home Assistant and custom addons over Samba." +description: "Manage your Home Assistant and custom add-ons over Samba." date: 2017-04-30 13:28 sidebar: true comments: false @@ -10,7 +10,7 @@ footer: true featured: true --- -This allows you to set up a [Samba](https://samba.org/) server to access hass.io folders using Windows network shares. +This addon allows you to set up a [Samba](https://samba.org/) server to access hass.io folders using Windows network shares. ```json { @@ -32,10 +32,10 @@ This allows you to set up a [Samba](https://samba.org/) server to access hass.io Configuration variables: -- **name** (*Optional*): default `hassio`. Set netbios name of hassio device. +- **name** (*Optional*): default `hassio`. Set NetBIOS name of hassio device. - **workgroup** (*Optional*): default `WORKGROUP`. Set network workgroup. - **guest** (*Optional*): Allow login without a username or password. Defaults to `true`. -- **map** (*Optional*): Control which folder will be expose. `config` is for Home Assistant configuration folder. `addons` for local custom repositiory. `share` is a folder that can access from add-ons and Home Assistant too. `backup` for access to snapshot files. `ssl` for certificate storage, be careful with this option! Defaults all to `true`, except for `ssl`. +- **map** (*Optional*): Control which folder will be exposed. `config` is for Home Assistant configuration folder. `addons` for a local custom repository. `share` is a folder that can access from add-ons and Home Assistant too. `backup` for access to snapshot files. `ssl` for certificate storage, be careful with this option! Defaults all to `true`, except for `ssl`. - **username** (*Optional*): The username for logging in if guest login is not used. - **password** (*Optional*): Password for `username`. An empty password is not supported. - **interface** (*Optional*): Interface on that will start the share. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown index 2ee90db5850..a21a0196505 100644 --- a/source/_addons/ssh.markdown +++ b/source/_addons/ssh.markdown @@ -13,16 +13,16 @@ featured: true Setting up an [SSH](https://openssh.org/) server allows access to your Hass.io folders with any SSH client. It also includes a command-line tool to access the [Hass.io API](https://github.com/home-assistant/hassio/blob/dev/API.md). Try it out: ```bash -$ hassio help +hassio help ```

This add-on will not enable you to install packages or do anything as root. This is not allowed with Hass.io.

-To use this add-on, you must have a private/public key to log in. To generate them, follow the [instructions for Windows][win] and [these for other platforms][other]. It is possible to set a password for login since version 2.0 but for high security use private/public keys. You can not run both variant at same time. +To use this add-on, you must have a private/public key to log in. To generate them, follow the [instructions for Windows][win] and [these for other platforms][other]. It is possible to set a password for login since version 2.0 but for high security use private/public keys. You can not run both variants at the same time. -In order to start this add-on for the first time, you either need to include an ssh key (enclosed in quotation marks, on a single line without line breaks) or set a password in the options section. +To start this add-on for the first time, you either need to include an ssh key (enclosed in quotation marks, on a single line without line breaks) or set a password in the options section. ```json { @@ -39,7 +39,7 @@ After logging in, you will find yourself in this add-ons container. The Home Ass Configuration variables: -- **authorized_keys** (*Optional*): Your public keys for authorized keyfile. Every element will be a line inside that file. +- **authorized_keys** (*Optional*): Your public keys for the authorized key file. Every element will be a line inside that file. - **password** (*Optional*): Set a password for login. We do not recommend this variant. diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown index d75100774c9..407bb73dee8 100644 --- a/source/_addons/tellstick.markdown +++ b/source/_addons/tellstick.markdown @@ -15,17 +15,17 @@ Setting up the [Tellstick](http://telldus.com) service and tools contained in th To use this add-on, you first install it from the list of Built-in add-ons in Hass.io. After installation you are presented with a default and example configuration, to alter this you must follow both the JSON format and also be aligned with the [valid parameters for Tellstick configuration file (tellstick.conf)](https://developer.telldus.com/wiki/TellStick_conf). -After any changes has been made to the configuration you need to restart the add-on for the changes to take effect. +After any changes have been made to the configuration, you need to restart the add-on for the changes to take effect. Configuration variables: -- **id** (*Required*): This is a number and must be unique for each device. +- **id** (*Required*): A number and must be unique for each device. - **name** (*Required*): A name for easy identification of the device. - **protocol** (*Required*): This is the protocol the device uses. More on the different protocols later down. -- **model** (*Optional*): The parameter model is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus selflearning etc. +- **model** (*Optional*): The model parameter is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus self-learning, etc. - **house** (*Optional*): Depending on protocol the values here can vary a lot to identify or group per house or type. -- **unit** (*Optional*): Unit identifier, in most cases a value between 1 to 16 and often used in combination with house. -- **fade** (*Optional*): Fade is either `true` or `false` and tells a dimmer if is should fade smooth or instant between values (only for IKEA protocol as it seems). +- **unit** (*Optional*): Unit identifier, in most cases a value between 1 to 16 and often used in combination with the house. +- **fade** (*Optional*): Fade is either `true` or `false` and tells a dimmer if it should fade smooth or instant between values (only for IKEA protocol as it seems). - **code** (*Optional*): A number series based on ones and zeroes often used for dip-switch based devices. You will need to add internal communication details to `configuration.yaml` to enable the integration from Hass.io and the add-on. @@ -42,11 +42,10 @@ tellstick: To add [lights](https://home-assistant.io/components/light.tellstick/), [sensors](https://home-assistant.io/components/sensor.tellstick/) and [switches](https://home-assistant.io/components/switch.tellstick/) you follow the guidelines for each type individually that is [described for Home Assistant](https://home-assistant.io/components/tellstick/) -The add-on will also enable you to interact with tdtool via a Home Assistant services call, see example below for selflearning device. +The add-on will also enable you to interact with the `tdtool` via a Home Assistant services call, see example below for self-learning device. ## {% linkable_title Examples %} - Example for adding more devices in the add-on configuration (note the comma separator between devices): ```json @@ -74,11 +73,11 @@ Example for adding more devices in the add-on configuration (note the comma sepa ## Service calls -If you wish to teach a selflearning device in your TellStick configuration: +If you wish to teach a selflearning device in your TellStick configuration: -Go to Home Assistant [service call](http://hassio.local:8123/dev-service) in Developer tools and select. -- Service: `hassio.addon_stdin` -- Enter service Data: +Go to Home Assistant [service call](http://hassio.local:8123/dev-service) in Developer tools and select. +- Service: `hassio.addon_stdin` +- Enter service Data: `{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}` Replace `1` with the corresponding ID of the device in your TellStick configuration. @@ -90,14 +89,14 @@ You can also use this to list devices or sensors and read the output in the add- #### Supported service commands - `"function":"list"`: List currently configured devices with name and device id and all discovered sensors. - + - `"function":"list-sensors"` - `"function":"list-devices"`: Alternative devices/sensors listing: Shows devices and/or sensors using key=value format (with tabs as separators, one device/sensor per line, no header lines.) -- `"function":"on","device":"x"`: Turns on device. ’x’ could either be an integer of the device-id, or the name of the device. +- `"function":"on","device":"x"`: Turns on device. ’x’ could either be an integer of the device-id, or the name of the device. -- `"function":"off","device":"x"`: Turns off device. ’x’ could either be an integer of the device-id, or the name of the device. +- `"function":"off","device":"x"`: Turns off device. ’x’ could either be an integer of the device-id, or the name of the device. - `"function":"bell","device":"x"`: Sends bell command to devices supporting this. ’x’ could either be an integer of the device-id, or the name of the device. -- `"function":"learn","device":"x"`: Sends a special learn command to devices supporting this. This is normaly devices of ’selflearning’ type. ’x’ could either be an integer of the device-id, or the name of the device. +- `"function":"learn","device":"x"`: Sends a special learn command to devices supporting this. This is normally devices of ’selflearning’ type. ’x’ could either be an integer of the device-id, or the name of the device. From 44957c949923b1cd8e1b6d75159e25586fe2ba8b Mon Sep 17 00:00:00 2001 From: CV Date: Sun, 21 Jan 2018 18:07:11 +0100 Subject: [PATCH 39/60] Make a refer to autostart (#4460) * Make a refer to autostart For first time users it is not obvious to find autostart documentation. * Fix typos and link --- source/_docs/installation/raspberry-pi.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index f78838ec5ab..4667c7d9f04 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -77,3 +77,5 @@ You can now reach your installation on your Raspberry Pi over the web interface

When you run the `hass` command for the first time, it will download, install and cache the necessary libraries/dependencies. This procedure may take anywhere between 5 to 10 minutes. During that time, you may get "site cannot be reached" error when accessing the web interface. This will only happen for the first time, and subsequent restarts will be much faster.

+ +If you want setup `hass` as a daemon and autostart it on boot please refer to [Autostart Home Assistant](/docs/autostart/]. From 34039d6afc1bbd166f746ddeab16e7b36baf2be0 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 21 Jan 2018 20:36:31 +0100 Subject: [PATCH 40/60] Move logo to the right location --- source/images/{ => screenshots}/daikin.svg | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename source/images/{ => screenshots}/daikin.svg (100%) diff --git a/source/images/daikin.svg b/source/images/screenshots/daikin.svg similarity index 100% rename from source/images/daikin.svg rename to source/images/screenshots/daikin.svg From 1799ce06416af3be9b424fb45c2f15e01fab70df Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 21 Jan 2018 22:45:15 +0100 Subject: [PATCH 41/60] Move again --- source/images/{screenshots => supported_brands}/daikin.svg | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename source/images/{screenshots => supported_brands}/daikin.svg (100%) diff --git a/source/images/screenshots/daikin.svg b/source/images/supported_brands/daikin.svg similarity index 100% rename from source/images/screenshots/daikin.svg rename to source/images/supported_brands/daikin.svg From d4f87577ba47a5791003b88b3ece48b90e64ab33 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 22 Jan 2018 08:15:57 +0100 Subject: [PATCH 42/60] Update Daikin logo --- source/images/supported_brands/daikin.png | Bin 0 -> 39327 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/images/supported_brands/daikin.png diff --git a/source/images/supported_brands/daikin.png b/source/images/supported_brands/daikin.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8cbff8bbd2ccfe463b975ba1ab90bca0c4cae6 GIT binary patch literal 39327 zcmbrmcRbbq8$W!cP{}BT%tBUH5{_AvmA$t}LWtvJ&xVnek+KdlvSsg)6*4l8y)q7t z$UGV6ocne3>09^jcmH?mkI&;#FYovDzSi@)p4avIglMQKoI7**3r=%#a1%Z(E zLm)(-$VkB7KxO&rz<)?ARTShQc*395`s^48gcYJBe_O{rX>H2O-PHO$W^<r63TX>0xw<6{OJEBC*)$@XM@`s6g+p6ovAKnoiP&6;3gM#QdneC zSZvF>dE+X@=im=w&}Ev03>x*+%oT1gnGF_J&WYr~-UdWH5(6{E36)(lFH%}DLz|(i zIeVcMa-1XuUWQ3+^cuWR{WBljvxA3PZ6=d$M|jpE`4n*c*but zb>hzp+x5nX{H#%k-f`!RMiZ0POArCgX+h%))4rv37$moB^e(DS&BmSLzw@#;7~TCT zn(ntXE99OF@rksN4&%w492oss&qu%qX#=9QXTgu1hGF);pF<*<0%Kv#FKX@Rk-6ceB z4zCPf<}a($?=}yryH^*yF6lUys{MUlM+OC%?2p90;f2L`m0rVaNXX*i25hB1+c8OW zMIFia=fzDV#I8-zu!LXhuSFh=ok5>x9jj}Y+Q{qkwovQgN7MW{XAwjMwP?M|t?IkM zDYBk1SfK4MzwP2C8B^%l*8-cAMqm2hN!}6)Nc5MuIQ#M3K4D4Hd~qM!2e4t6SExTH zWWS$tOA=*d6lUc4lNYOq^tXXW8?jbk0(Srcqw=HWJ-_4X?Xn(EInDrTTL>R8dQ zdQ%-vnqv!|1QkE)+IM?at}|oB^gmzt+zMf$v$`0>m{Y@xxIR4I$52zZ{P-LXN`3lfsne8k|h0eLavQrSvFv} zVc$g6%(r?W3B1vy*H7jLCdm_XItKqF`F|gwOiJvUs*yC9;bxw`**$G#dV+nb^4X)j zK2Hl@VAcOAMZ*Z__|$BA>^1YJ(*F zweoP7{?tWt-L|w2gKUV>+qee1K z82zHN3To8&O&Pt`x(LKOUcS{=~xUWd3U6r~mJXPgK> z9p#FL7U!+z7jnFx`p5Thz`RAkyjdns%k9*>vw<}p_vXQ7*1vky##a&j4caJj@E!3_ ztrrt&R$;j*hxfo2k0sSUvw{s@bm;}^{O`wq0ccvX57^gjC0+;a`ufNk#-&JigJb;J zQd{dusy*+WfKUAIt(N`~@+zXt`78QU=|c-pLJXzo_BPhro5AD%#-!pcl4ZsGP`OAg zYzLAjH`#)a3beacdQ7+NeJ%gGRTG3MLg>UL+?6_!yO3d`Ob2V29aH?)}2l2|9aSdt+ zHw``Y=R0OI=~CH*j_qq>ZkbHPo)BN_=JpI_i|I?OX{q^pE)JZ-f$)V14F9UEFpLMm zR=>{USF<{mI2}D^HTAzhF9!ZcZO^Z4yLG5%KN;-?bk@1F6Zf*`{cAmm_Ob!lWCYJ+Sjm#RiS0^^OE9q^7*2TW+r+I39chgPUL+ar&!34Ki@bC~0tEn_u?_w*!(xw#35? zHMo*nQ7G<+fDtMjwbzD@aY!vzCTzm`}HRYRQZmM zW@ZkppXU1!0fPSl(~64N@XtJ)`g05-NCI@{uDL5V?6Y%Cm)SS}cj)?LFlR0Hs0E?tGnkLv>how|>X&qa4-zMU3s+#30t{2*-r$(uhK zJ`K(C{kf4rBlFguz6ep9uhw95d-2xa6z*?nr4_&|Ako@8hxYz6cI4EVpxBuHHV1+nJcxGYnb`dqWh zexSHpsKOt1y(ZJ3l>PHMDl(E~uH28FNvqP&VtCAbj?HSg;X0SK^wsDe^+pNGDtyZT zW}S*N*KWIAQ~|u?Nl~4IleWsE=YP#F`An~s45uT%fO z%OuDZEB^?g81ZMHvP_Te{#OD2f0ap)7yKm@vXaBs-SbxYO^_%VOmN@hK+?+& z_}JT29ORQOjjWaY^L& z(BZNs?-#PnSv68U91YL)-u*;qMXVQh0}4HcMgLYmkXR_mGTob@7u>mxtB>OPyyFNu z_Nt#0Ph7HYaQvHes7S%{o>&hi==cryD3A0JFksD)^VqfeQBgR+dEOd>Py`COU1&Sp=SLR`VD zywSsdFg;1$0{e5wU+6Q#@|V0lRU7+(E#8b^8$O7HBh08)t=8+?f{bzepL38_dSX|` z{ukD~H#gT*@`e2~4o3n^b#35$oooMSIaq>Z`4=w%LPI0%CmDKyR?hc$z}F{|J)AJ- zMJ=YHAEPUnI2VydHmrhX#4h8Svqd%PYJCk0iEB}A>MEW_11yVJ?a-k-u89vY%5i>_ zcR-^|lu5D_s;idL*v8^|6~i!c^nqzWlk48iu3EqHURh>tzqh@KoA&51>e~GrXeP#| z14`Vty^gVS@{WPudkXcM=G~ZfN)AYSYOY~CFJq`5rf9Rlu?3xg5|hsE!pcR<4Q*)d z+svRBu_Fb-8iL}Pr7(E!ZFS?I*!**mZ}a?))H&jevtRH+wH?k;Zfxk&rOsQM7#e8{ z9OUPs>c@WPlBrP>_$lHNs)e`8(B7I80nS!CaPvJ*+{KyJYLu^(@iq9~kKvkWhb_-L zYK_r@MeO*Qt|i~h0%4XByLg5VcUXNLu~TCE^&?6RpvtlO&aOn>zp1R!imHvmDqU1H z&S$%q>7A;Zg7{=1hChdXk?OutR*13la0AT}NnG4yZZuPhO7uu=>rC~P!v?tQ?Zq7u zai%B90Vl>2jjq`y!|!#DOF0+DN=!o8ENT}qlAfvN5B(!(tGdEg`K!%zi%ba>-uw7% z7PMVqLof8C-<)xWqtTf#gX#=Jmjn*mP1tic&b!>UdNa%gXlz`DxuU0H7uH}b7xB1l z=uV>$WviSWrh}v7r)0&EeZg5ORu(?rHf?*dZXf8NbphMGw!=2$X?O0*u^Lu7d*;0U z1Bc2^@o6%OnbPQ9En};dlt-WDDn(Xjyz=2BTTl7Th+R8o8b4iFAs3QmsWvGbhF*C} z`O#;ONFQ}WHi(^D*EFxD+exb}&&&zP4SLyv$srS19-J(taxblHL9MtK@+#-ffKVSE zb)7p}%ge=RWLu?EihYAcYk^rS&QIQ^chq|F%&1YLPlXFHOG$6jJE#ehG0(Os4O@tJ z9-L?^w7JK-@mr`SLqhFe#IUfRt3?DnmG-D-`Sa__bXH5)|AwV?qj8--lV0|x#gU@T6mPuWz*0F zeCJP*P9O31tdi%!W^_?SFXRks^rSs|{k`5~0fC&EbB|3o)E7uiGAdj>6v5lj}^D>gc+AAzxVI zscq(D&Ue0@xrv{Ts}Dr_plpx%N0K+<=~FpP45!Fd8&~al@)D1ct+Z>u(yb?Ny@aBf zSDq33!hko%H7Uu@k;U|Gn>2g}r?G`s*L02Sb#j-FsAUTNG;y$`f@4C`a|I^(6@Zu$ z=$Z^knr1GO;TEnho2mMGt}Jwu| zL?8fNLBW-;!^`Vw8EQ4D@CeoVsG3pW71OArH7Sm5#wj>dH}Gd{pKthOX&5J{`jFaP zwwfb#mtUc7f48IziGDk1DULDpz#~>CD^$^*5<{PU+;mvZDTyFHV^WfhN~#G;a= z@)qFrzXHfj^<46XknSJginpaI@sbY70mNNODOeQOMaFsQ^ASPN?aQC#g9DSlt}7REx7Gp^K_WG2l)M2k}*Gi=NDezhpv0)tx9iE zf&yK|Ooo}On}5}@Q&5tU{;)5AI45dHPbsF>8Z>#zm3J{%fNAU zVq6uRV&ErFL@oZnrC)lG&JmG7s@<@A*t*= z43dwIoYt#}DlFb@L$ep2SGp0uy0-t$(JLAoN;U$M8+u(JY+>PF*?*-oZx~ACK@cU5 z;ixCwz!0RKz0CFavR2^Mp7PdqnqJzrGB;gWfnLlf_Ykk+EzYwRlstY9mtV2K@3WFj z`SAG7|s4+c_HRX0b0sDQL1C6$xOlN zb%vXvO_QQphXH5PD2!8s(K0!}+p-vM5;12jRItdAEitx^^O);c-xN|*D_1r62?rPZMeK8;!meKU`-dv<76_E?OX8lH7; z;2Nz{suhdEWzxbO48n%=((6W>&vRv+&@?WnmtJRW(d!G(?!?DU-nFwg$sAUy5^c3* zJkCfTO>%*;@3si7%YBn6yz9;X#ir7GuQ~1L9?7!MB9CzH;c|Fx3g#N2>8^`uECY>W zHJt1fubl`5C(at6D1h%q*cL!sdm*D>@Z1I`l^8$ zzurCr0~a}ogwlr&Ke-Fg`z3X?wmDK~3?v~qNJ4bXt6%#lu~)7Fjc5}vQNKtZz&U}hh#zD|P12k4 z4OarNJ;}V0$Yz@aC!vCAFHFtkUB%cJplhR;R_L@Pc7>FL3xuiszc`0^X??=ios9j3 z+nz{C;@KZDu$et&4EM!eLI(>uqmd-L8`y@7N+ST?kst5#**Wq2*rjQ?2>j$Jz6}S9 z6^n50vuXLTxMc^TexiR5p+eqom6`AOD$5*J+hxOiT(|=oh2hpM8v?|UiSJpRxO>xd z%N&VpK;)IiC;D^M^`_htcgum3oR}MXo?-yP*mPw>#%)XwyoDWOL>d+nk@6uf)R)~^ z^4YIR)A0+*sjx)P0+rC-QXs|@lIT<$Zu`Y|It;NTe&6C%9p1#!pPAtzDND|)zR8@D z8hS$0BDHw6F(WUNM_SB*BYBIvPDUfOn&?Vq>*VKR&WJc22h#uxL0NU4 z2qAK&!#>T&n-UE^Qx%ym2LbGkN2mG_~j6uF`q9S6%=V%d}A^5 z*P&>dSUc9={UdwPgEg6Wy3~$4fWOMa#V{!kZ*7n_g~l_xDf3N=Rc4jVBq`REQ)Vt6 zod!K$VEygtWtrh`ho|;FSPeN&Jj<`^{nRU~VaB`RA$Rl5s2_6`-Q?Fuqj2J%TEs#O zRPY@W*2M<4Y9lnw0w`gB2NAywlT{!VmDbJOg{_6lHy7h2I|r2SW*aJ;3<0Rc(2j$J z5P5cXe>F@$;BCzP7)omo;Z^e-LQMvS^TkCPR$9dJpizpspL!wZ`T4R{blzaAkq*Xo zOwZ3>TEyKp*_gF9DL^{Ne5pBcw;i{Az6l4T8N#pDpHnwbpm~8&W0J~SoE%|~Geof# z*>Lb_8_$O$uVew)p?e56=_H_-IHaWBl_C!${R4&rAPj>tN5P|S6FP34=Uf)!2<({n zN^?>-e}kKER$tAjQ?tW%$&gur$tT=ykx(zufoO)9E1UF69=iNFc8)0U2r>(f)y!c#qHfF+h-u*K{fr zb4vh96(9SniXLG~HALyFr@RT_vG`~|Q}|UWF~NR*d*{&rz#X#45&H4O!)j=Svn1`S zEGw1FBs{3LPb>m&6{8m2CMJkrv_jc0Q8Cn=xe+s13o`CU(nUBeE5r*4J$0%CWRv}U zBt2v=PmSL#9_lqx%E0v8WhGKE!8$oWR=f`)Wh;5uM@;)XabGjf8DiEI_lw~zIz>#2 zAM2kn4+>Q}xA;AIl_6=bTDTI`f5z|yDp-`Hj9U=-3i288PV{#IJ6~*cL9LNM@Z1!b zs!GjVtqVd``5^hYQVV=KR4&^j6R}bjZR@=8QUo=wK{l&~sEjV>ek5o}EkJ>Gy>hoF z%C#7DAP?~3XIA~nyzi|P>Kl)EMaLclxKkCMtP=68n{zFAvRui3n&h|9TBBr?lIvp% zcms=x~TA_7O!E`$AhLi z$yL8m8l49^+I|Woli#cjJNMN-+;(vs4!5oI>=XFrXkdJ5^s+;YYb71oOMc$!*F(rE z<-BTvof~!gbpN@AcuI_3FJEZ{*@?qGQsK4VikT$<&Zuf`id)HVrqXm^IH`IPdeZ6z z7A4D_6YD1W*t9QsyuantiIl-_hft+%kX0qK>uV!RB4pnbCqi8_8}Ug2ng(^e^;p!j z1bip|t#*(Y4(ckw{$GeRdpP3v8PVhm%{W-=#f~bOAS`M>+yYlPq{0^o<&*iiySlMMlnXWZWLFKRme!QTzg6j&7dLO(_~vfINMh0Z0wu4>gQ7N3Py?@>Z){29r>h#2@$Yj7LB1$O&(%@1Xu@{`K zSUetmo@$**VS|1N0jtR_2jdt-ELlc|fTe-P3; zY0mdqHeGzqgzhct8iIpNX!ieOebTow-^NTnES~0rl-f0i59sfErhvdNKf1~B{VP6aFK3)EO4|*J~jh7uq zhtWg(r-na0R)$zyk+|6|Vok$tQl6lU3NWyLiMcrvyT?FHm(bI2e~Z(=2ErAr*joTt z6fmAhRYW==uI=*z#>OQVuCZ|iNlj-3BuNB~*O@MRRwfWOz0-q>p&*84q+HZhZNBQ|>4chqHWoSmu& zT(&hlX2%1*g9T)ND68mCTcvp*N8r^Cp>=0~DL<`0IHF$=4D*6^#I5lww(rL;JC#vz(=%o>-O9!fjGb$&?B#lg<22{oLs?m+}xF~qi7KCNe$mbJ`xf4)jVLhBmB}0B6O!XcpDVBLw^Hn5fD$k86+#7qysPT=2C@(<|c4CM5ap z)e<&l9fNRjagj)^Nl^khvGUO zt+^jEjUOtNti5oi1Bw3!uyp41pHNyv(u;vImCf+HN0?)wvx#|cWh6U(l&S>~fd;2@_Nd%wr1CSA_*4mje<~{NmF-N-@$yd4^dT2ZM^Nc;-!=`Uy zaq5v09LfEKmlwsaV?57Ou$0mte3y}l@g`7+M>IUlEA|oI!?!k5N`|?Ic9z)hO*Nno z!LZ~8Uy|5qx-QRbj2jr0RZ;{9p)MJ6LbwuQlWOJAm3+k%&0LcM!b)ZYDXzKH(bK7< zOuY->1rqRox4F*V3peJhOD(mDt2?a82>UNa-il5?WYQWyI(C1tj{uNtfftYFQtGHe zN%~#es`a~h+?n5v16wUCERA<{JH8SelQ4(z(uVDVc@5pfS~t6pB5`!4a`mL>F&#j5 z@8f+$^vzBvvCtgw%?q65r}!ui`=n&7h&pqgH2LE9Ne}}yDFU6f46XIZ{@qUdH{%Hn zfUDU0ujY7v9v&uf*tfm)p>cgy&h$;J>ifbKM1%IlAm>OD!7}Y$#JGq+Dd?bxfV5FM zgJtUGBMBWm`Er8y(UnYBsxjdE@72wJzwQVg*xwI$pE=S_ew$5O6 zlJWSk2`my$cBeU!4HTmyc@?W9XmWDxUO!E(aVYU8m!WOW0apIsU-Y5>2?j9(XhW=5 zEk}J%8L`|f=>H#wjN3R>@`s!QnX;#LKxT8%8er=K#m_?Pgq*y2c@ej1$Y#OL)ptSi$+a39`$HbHqNDW^9_iTT1*5*Noy zu)0WUEzqSvE zOo+j@InrSwqP(z)_158y>SY*`J~)R9BW`MbS0c~qRvvMOI9tfi9Aif z)4d6K8k;?CBcr{uF+R3!#*K049KMA0vJ!jt<u8sbOk@x zb%0dtmfm5t>V32zAh^E(6;R?%iGs~HRczCYa?T9`jyIGG8)KJhjj!RypeF;iBC<1y z>b@Ly4~?}9)?OKpKgh`728Iv@4Zt6NEcT|xAi!7Y*vurmLiM8_{!fj9Ot%_5utDa^9%e~%} z#PJJ!nulvYkldg2*43#1o&m6#6|nRQ^BS^aq^dY^Ttv~nc&(Li&|rTPH}njA`M0E_ zguicvw}gcxK)VECY5l9966p`KIO zGY?L3{xdAhtFxQXUseD{DMc%L7YuWWoV z-|Bq&Fch-i3JR2NXG+Qs)Qwh?V}8=_0)Z-i{gmM;yzzmsX}G$SNr*`6#qtt+vt2th zRqUAv%*m&+)?Jx}r4fpC=cF?gMGb6NZzs{E#zQ+Czy2m_r$*OhHkKWU*o*z(}G2_#Ow~6d)vvGa0+a>J^2GWywCYicpXZPk*OR?U2obL$-oja4_c2=Q_-HtyeL#Rdp#sQUkgO|jN9&Sv&Zk-u>j(Wu6&ef9_%l$K0Y-` z;AUCglyIK|*?0mhdypO1^zbdG2{5y!1)oj@9G5OM>F_&@ax!(9FzplX;P<4NpdSCp zCHh=t_`pG!qo)K6Gzm#S>f<)r?b1N&B+$%AT65Z?tM3d@n1={BU*9q|uqkVqC-0W(ceYu+KeKFcdt4Y&?lOR_i0zpk( z1)+OOSSD*(o%nAjDSia`gh!$=k7Jt+O%uzy;cj%fsoxz_Su;+yY<8gXS6z0+9IljIcIgu^zA4#W#99T368s1bNxQJ-Z2}dEq#EgQn+6<+#+&s?4u{2bh2=7nDMTNe7|NKeKXhZ$S@jd9Mn2)$I`j$ zGYusU>44PJSi?BG3>8=-2`L9@>7nLC9<;&#C4ObikfTT-G)7!*gtw?N$ETeQc_pef zMBo9eZ~~f^s#UG$IG5IxBGHaLI+!sE3R7%M6i{31&YnFk2R;7TDXQ^f8r6mCjYNNS z1mP!!qTQa8U|%P_P0`0;8^RD(hTX>>{jzSXXwELPpAhO}Ni35exT-Y&IypGKMrV44 zAN5Q0i^2Qy0@DF!B)wuCcMaVBx!%{wM@)eaEGR9OmHqG@y?jeo!u>PuRpY%&1qLtp zm`9Hsp4EBrX*+c6IG$@E`Qj+a>t4Wn@K3C3ldzAi9;F{`2>j;2e z>(*e%Wd-(0E%cXm);S{P#P8XZ3dCT}0yMbsp?2ST@qYa9Ry*Qj!HQ?ONOEom11ERr zC1uC(j9-lLui~LbXixQuh~R>AjRkLxvI~SEN?Pyd`E~{d?U?)}zk|{ORN1VxaZJA= zsqvLgAooap!|;X7dHhUj$dUSX{uPQSX9ti-w~Dy18^_Z)SXdk?!dXDoOeO!qi4mzw z=CMQvyo4r*S0;1Q$(~SZ6Bgqt9*)-{ye`ntF@ajH!$t+>k5kSwRYQp$$pWa@L7A#< z;gX|$Es|fJfURqxUyOnQe`dxClHQ-48x&t0*1&b637#7%wkCriB;-EWLE5-YJO*erc#(%NQbkfOO8hA)fYssh!d0w{2DDzaX> zBnVX3vM=VBYEW_7Vv!&6*(^~N4fN4^hBgp^r_gpNQA<=$^5bOxy6>OxNr#W-ezHk6 zuOg>Mx@uXJJWU@w*RUXVSqDRp!U4Mu5gqqq_Jt9HAhu%5oNTg1Qn$2ovp!!L5ti_i z{N=C-t`u1xZWmR*1?)8sw%M z)wVXpmH9eLa$p4)EIGFj@nBX7F$)y!S5YBAStuZKUs$m_U4rk_DRE?TBejbtsY8W(6&34`?7r#QpR zefNj3Z&n5U>jiig`?FthH&A`UB#4sU;BY|w@U)%PZ%y(lzqO-dsBaNGs>*bW(0ISX zKhgv&r#QwzX}-CDEG>H=Xi*>Q zSE$ic3(bjHDoc~{ul4mRKR8^E#`p=hOVROVJK3q1$?Y6+_x^uK(xB;wGa$<>7hf35&Dk}h0&Vpn*?0_;QwIKO$5 ztq7+X1R!}9w9j&2i@;R4WjJ@nS^L?|19)`?J(9kOXp_X#)<()C53!z}@|~IPi0iqx}*Ps0D((`(uzrzqefZ04z_vYDP05PjjFN zAznKKWfPo+LW*Wx!|L2Xoe3!DIo{p*hhu)sU@BLTRJ!5cIQb28Z!w)kF~P9zT38c> zN8|l&1}88P6#ThlwagqojN2ZYFypn21{DO`k=3O5sfSOks(`&lA@zIVHnyv6Bi(Ue zpNw#eXniW~hfI!_+K-I_<0uG!o3`fz4=t1`J`*mlF+Di?;p3B>g$lrv1t(4aJc`+* zD^x_pwQA=Jtj0_xBdLG!UVtCQBt=sJZYyY=URUHO9#k6{TCZb^53K_veiB!q5A?q5 zZzx_iuVW08EvmZ&(9{i(?k42@ElafpXU}w%22$U>h!a|0#GOe%?1B%>k;pfWqVatLCo=n7-QyBb$!ETDbifzwmB;=J z^7d6{!tMgPfK9pgAmvdf!XcUZ9q;0f9GYxR;jPu=^Y)3S54Ib?9KDuN#_G!ESR-?) z*9Kw6y;Z5GOk01tW%F+Uk`KO0;pyxl?DzGyJ;943HZ^qSK)d}*SSVNs>_Kom@Lx~5 zmhATaT8d8yxU=y@&D?M_TD;yXWC9S+FGgpzE#0&%To`A3S;5j?_aVShL3wF#7vn|r z_j>JKpWEj z>9TJ3;Tn0|@2dCgYD$S(Gue&=fgb6Oo3dfj6wLEsM^yy{S)Ron6WdMU`*4MP(q*s= z*>xyWu<7LRA7s`hsyPW|a06XLm)FCTs+OdC@nT3f^q zD5wa%qtJ{Wf7?zvE4VRnpgx%kE>;j2jO)BB^$f;#4His+FD%vXKVC1V;5v;`!<8=Z zm-RNKcEwGBZSHjTHP`s9iskM#-7fRZ62I?a?NYKqkHKzIK3lQOq{%rje9(McyQ^=Lgnmzs8KHBtD+STCn2F;kw?FnojTG*|{T^oVzMhVH30EzU z+(V1wuj!T4=&aqPFpdztL84o+VWb3R{3o^~evBQCbc}72c)q(D;Y``}Sx@Ki04>>hPROaY&&r=-WS3`ZT=;LH*4|#cXgEtPuo!KD|MQDWABpm0$&`tgBNt z5j_y8Dc9gEztv}%*)XYdbe>&zeUf*T2`b8r^C!(~$YKzu=esaRSmUDR{yuU9= zTo;g9k2R`tc08xf*uv~(`T09=xU14`1%L(5)x_&XNI|KJ7-(Yb!$1FQ?El(sj5$Ad0I4SQ0{zM08;Uvc7NVz3?-`_*8#rg^u#NI~aXZN5*jr z0J>@IB|NOQZ`0;#V>+m-ET3xUtu9|u#VWtW-o&ud0w=5#@wY>1!r@Y;Oc&zL zAogUP_LI?jz>~hX8hgwYRb2&Kk+QqLwBt&x$YOe9yp}bAD}w)+h!eNfhW%j4m-D9u z^uhIYT02DjR89KB>XIUr@dsd$@n;I?MSkSh%M(^ziRhzB;wcYmLDppT04+rtQ0Q@Q zrqf`c)deLcGx-aAZ`1YWAq#N?`jQKo&C2+I@i-sSIN+;w(usFYck4aw3XSZ(%kiGF z^|_mywCP(970h`IxCip{###sYeaBMxZ6%3D-|P&qdEP`MBpPqQjOXF|=HZ;8x42I4cV3O0>M?f~|ON4|o(@3VE zJQm<)piqqW*0?+2#~(KinG#o(#@|qtJUkDs5r3<5oezAQyUm<3zX$9i0CpvRx&yX} z57pq1>`$DKDH5q`pm35c9&7yR&U|Ld+ik?pZegJ6OwqeHmj>jOS~}nm@^ktjBw+RJhH%|bOr;d~wT;Esqzx!cNisB_|e_#BHVqs|@h84kO zy??P7(ay@cl;)rP3V$M@I#B+(b@IX4X?iKvQ#tUL%)Bn$``O?gOlSUEj&nBG>P85PN+W zl#LaSsF$ED$}8L>!I>ViJH(V(zq%!-a!TjkMP6H#v)o+0?#Zk5!K#DlaCx1=r%c_$ zc~@O-7nZcaV80z&+#`=n0 zukRP=8G5j^0y~YCK}>j@0skm%tucV#OE)jKM!7<^U;9oOaN{r(@x(g=309gOV zK>>1Lh^Fh!m-Fdqt?}3ISvgTGJT7+ALo&eeHO8&Ctr2gMl>|o17l;D!_spN_rIWbc zRJ)z*4C&&2fJI5#s-zg^JI|B?nKJJ-I(pO8;~Afd$s#=0xIZ3Q3f~CI!Wgo@AvV78 z;8CYT`Jl)7P|FuiDz#VFWCZ+!3W)oI2fPL^KNKK-S_~&wNO`{J=NygL>`;u>h*k4U zyY}jOF@91Myqx2O$#Xv4jrP?pM>P9Guq}k+D8MIS+!x-rU3Mej?G6ssGzO_Z8WI*l zpG8xDorQ^A6%HkR2zl*feDjABQZu;y$Adujqt^B~uIKRN&Lu#26gi9Aqlf z-+of{rh^m-#A{0OwHJPWT!G?5lgv!4Uf=BlRh<|+7vUABR=rz&7*AYZei_De?Ym3cO`A0M|XbRrxeki`*l%SY!ET|*v4W#WW z;i0XkT@&FaFMqp_hTI*Q+`JSFt^vK`<%v&yFrA|0r}mcEH9nTum7%T?#*f3Iw6l{> z?;*5#RxZ7Gf9hjV^)U3b#}zp8G#6?3{#kp{+)@hJ*!Xmc5gBML*U0!(Egi^UZ5hBr z1Z8D@IpjSZ?drR8Vw+1oCo_s6g`dx_W9oHA2lVW>)}Icx`k;h5MIAVC+na}Jjr@K{ zkI{*^BEycSOOC(-57-emtwvfPq0{KQ9%Skt6D<oYrJGLpj^(mk}jYyf&rGp(G-X z?@4YKz{$IAKhdM5CEwWOVm|Ru1(znK4-ymeH7v@15n_5W2x%TD*L#>@c=GCr)L+Qx z@sfi>lu9FGO$hVz9+`myNN z__3LQYs9YH+-+}YeVIt>ZL8ZBLmmsf={Ba-^L`QzeC*}p&!c|pJv6RZ=+pkcm^4wi|rpTy>TRy7SW4pIcW7l)v+Nq_go{^#T2 z8~KH66>4{SK{Sc)A+o8^B1dASv-X5p8OgI5iBM@-%B;6@AN_EYI@dk5KMAPH3v}hq zJ})R=j5i{^k^t5&ykPq5QcbR@15w1TMW3TxU3JgJnvh7Z(dCk!_vYVH*QMwOi^M6G zOjk_Z{ZNdDeIehiAWcD^(pTpVT3RmLJimvi1zeCT^$|T;VMWC4LmJ<3!UBU38f11! z**=}Gt(pidf0tP&ACvs6gH)Gkrt*vS1<$GOK6g@)C>?{!TJBbaLL)(ZK6CPLFhlJpzwQ~H4snstHZun!B0j+z&b zTPDX6A(DNu5GQHqB z4}$4+fmJ_M+EafsE+6e4M>=lG(=m;orO1j-&V(}OUWnemcUxMV;i>;RSQvZ_tbFVP zB(7&ae?2iY^7Nu$IG`4%0gyS!`vzp*fGn#QeCU^cX*$omIuPjd?8ZABlR+%lCVn&g z&Sz}*9Ta2TR>epizP2J53p29Mo_PeMxG^dnB=M+TR9{xe1&aRHU`qf8obrq4pWu*r$n-J^_$652 zP)~mH?5P3Wa!E4gi>QT|oMl_6nK zJ|4U|npOVWcVo}qqw{$v4Dh%726ED6GwVPzG}$TPs+D;jfGJ0pB6X(>X6=s(n-J>r zZYPYG@8c>?Q_2GeF+Mu%%f2r`ye5;qa6o+!SbAQ>^}}askne3+XR~ zUGV30ApS=6(r|uyu=eESPW)?Iytu|J(Lvcf%4*MA^eXJjo0oOu)QfuG>n#Tt$ z1gD7v7?W-?W2S-abMaq~`@#&w8XPRY+|-E_GWj+;Z@~88c2P64Yh;!M=6<0LFUewy z_egZVUoTEq`Fb@;q#j?(G1Slyj~u~y{7)f;xJU_teQ&d|10O86!}-egu^*6%xdbms zIS3d8f8w1jeME>M!tiyfw`UsvZTbBvmWM4b6V(uV!2pWCe8Nv6?!P78xpSEdVaF73 zkNPcpDWbu-yIG_DDP$iat@$6-28 zyVswzF*un%9W6x~2A|=~FIAJ3vo&5D@$lrNr|7TuT+La4r-}j)42(1YK)uLQSG44G zw;EYC=10`Do3~Czy8QCe)`JF^`rIeL`dp|^Gp2fUDYXIopGnwhvJx|&Zc zhROE9qPz-HW+(x!V#U}7M8GCdUq>CDG1%ST_veJ(T=6S_NqVm5$KIezrxrJ=yx!~> za9-gN^c~ygn9hFlUG@%;=wS3yr}12&3kL*AQumniV9&e!vA*#&Ls@2?@!iMy?snz< zK*dSZ^oP6sYv!358k4Va+-E0;%|2>CcA z(gQC}HT)Nr9PryUY&T`BY&|_@SJTO1+yF>wi(f3AI?rH-QL$k=buY7g8sjKZnM4Y@@im|$+d}`~7+x zNS7BLS$VH;<|^?eHk%^1m7Yta><~e!V`{K*RPvN62glEobR5Iuv6=}rPXR)xVefAL790+4t9@yAn9A9k)s z0T%{tg|=J2K1!)@ooR8kV=*;tCVg&k-S4d0b$+P9h|zH%xV_Z9+uVCnj_kOEyr|?D`6uJ&SHF1U?0zRQ zPnulldA4*)Tpcj!R`gS?9=aKzes5-aV+Yk+Aw~a= z)iX1kPwk52-B7y$=$1%zIK5SL_{EutwBTkXWveAduKfOr8*e^`3i4>cQ{7~{c6H|) zT6v_j9 zVAY^`qM=)4S=-3YUrwTfM0dN=Tua39v4I6w>S9hW03a12{`+S1LiAP%AK(9+f+1h3)Hqm z=49F_R4d|yzAb3tAR>S(hZ|_xlJYi}!*vC*zTY zBm@gPnPzlH^-uFwz={5bbF+z>H}|2DYj*(kLo2N8pY;tu1rg2cZr0pOw7QoU)43j# zl-J&DBJDNdmcJrb!M#2)zkIaA`{gdQ>9&T|?0{#|GieM$K>!7n=>bA*?Y z-d={npB?|a_6>EhZ1E9=jb+6N?v&0S2H&5{jIMUK_Cv;f2}?mv0f0sW9z6sbOYy^P zP#esytFfm5e@ZH7gH~wiq&Kh=W~w?dFMR?cXgqcsRzyXNbkabdD89o)%K|{7U2% z0eefN5!NJfy3B-u9N}bfkJu!N9j}^MxFdl&2MIs@{0u6(Xf-Mj<@Xdrm7*qbOz%TB zOdX-iXt-wp1j?+3xqH6(6K|Z!3bI{X?M#msHTo4mRr;z@Vp@(2=q}rupVboEAIwS4 zn6_wJPYMvp*f_tzytDB2QU`wDT-hX-_tpFFTj~U`tphKfU772lIGzLLy?pI0jt@-l zj(;)OGKvsLp|!v~l7ltfO_65}R1~;t` zR;0Oj+nEw;G*&mtbo-D(LJrRcKBoz_gD=n9{9|!A=^n9Fo|-@kE;Pj(pT2$lwua3k z%n=@eb({9*pJ8QNIE)LSDkz)NISeuN?mgVcbE@X(Q4BMG)L)-etZqiv6T~LKBX?x~OxI6jgnr1eHwJyjcP8?Sq5$HwLF-%7Rh zYJ8$4DR+v6vdB;c{%!K@Oe#ZFZa0evQq&QXCOr3$A+UdOm&go>-0C76gA5bVq2$Bx6dFQ|_r+Mji)_2h9SlQ|Sq zpB4gSTOY+gIlBq0Z5THcP~dj*(4~rr+zSpp^k{~pUVGf|dxY)&PIreQ#07hKOzRrS zoO5o1e=vrY$Mei@InSHX7_7byQ^A`$vCs*M<;F-7R9|u>=f)YFpdp!?}{HJrFcrNB7z}Dxi4t)24a{14P~2FT0mI5x8mk&-(+u1 zU}f2^ABl}A%!Aev?_;~0?F7^vp>Ms8CD){36gD2^1kzT*wc2L+nt^#*BH6{W`>X z?aGy}cx7-3-?y~<^~Lxvjg|%+3Wn(~ZkUKxm4Iocd#u8-G(NBtqUvQQp=dx3-VxChU7X=yj9!w znh-(=ngzwTC6vFQFPRCm<9!(2BDVOx8j<1SM}`7qJAheKm+f@y=v#4{VHsmL zAoJE4q65Iq{jLybe3{K3%tdgm&yGP7U;wQ@Q%sN*~IiK_=gUsScd3`Gbyd4loZJ${%t_@!P>-Db zLpG-c0Ok&|9_EthMU#%xs{4{o&Qx6v9;t@R80Jz8PBq91UQKfJg&oZSuJVw`iR9_pm|ssfkYOhi@Ab zO0QOCZg)BEN!AgdbzO0$gT^KcKhM!Gh0rQDfOz3dN_!a?A2H%qf;Wy9ahUsJ_5)`Q zXPFmA{`|D};n{Rtj*=$1HhzmykZh9S9hurbU(-0oers|&2t(-xEZ(k7@xtEAs^?kq zt`9I&z2Xm7d#f(EpTJJ=?r6qV(Dhb)>>42prPJ*VAalcB);ARH2sd&3C<=R)5rM70 zWOFP@RNmdT%MTv0LD+)`wWkU?n`$UkglP^8xAe(c{Pu$eHCZ01@Ig>Qo>TPyfY!8x z5y!p`Ge?dZMI8G!+zGO{m-l$ZRYKmwM9s9uazUetvB^%#zJ0u!% z1r)+fEDtZ`QRNOhm$$ae|JW=3O+@jt z)idOSR*)v&uzhs6o1-*#E^Y1v_7mjxOPsX+kWXJx_;hf@hOi}$C6z7!uj>x%J6XUZ zI)Wyi?k%kuT5H@soh5BUxvY6xdtMH8hk2~ne%rd4)w8BPCT?lh9ZTeqqUd#z?yZy6 z?Ttr(P8+_%HZAHylm6)@YZKmGef-o#E7q67%MU zK0}r{i9^mD55jPmBe1!oZ|@pD-d(ERyuTNo`O^u-L{dc>kudz@#hE|4@(lB|DK`dS zz@%R)GCmCvj{%j$#p^QTQDo6D1eShvWwtiBzjkwQhw&qyBZsB_DVoa!W7!a|uBg5v z*ffMy3#>K+{}=lg=Vz9BxHE9Z$KnZZB>xTVLcF(0cGkZ>{ef~iHF?gCear(_q{#oA z1&SKqOB&+#gxkjaK8>$c#uI>hLa5$BkI|PhfUYlK@72gMZ{v&is3wo+7K*^7}KzJOTQ+g9dgoU(APssOv)&U>FH5;Gi%947qLouVpOoXQ(?tppr)BkQ z3{E$9=ngSH3HE5r6{Z)x-Z>cZwH{0j6(SD;_CIa|WC0554m)cC!dvq0WVN>G&~$%Y z!x~w$vS=0iU(ZQu)t%?hqN)!0bFiK`QZP;*_;-_p>QzonJz2a^dg|#!ZYnK5SWBvZ zZm!<%K9tL#BkR_G$g$J+$?xYVc58U(QpG&i_Us@K1^Ge3fwG_VI+K1Lv~Q@?p$`o) z7D{+a-UM8sH6L;xj>0*&{&r-7q?WpKOy-eH|6DP(*b&I(T3Es%v$y!)erxT|{UMiz z)~_Vi)Q{!X^*P)MAj0ZF)psmQ4mxhLR{AevZyWT3DDAjvnY~m@?G84;ZP|aM|S)~Lr8X>+6!#R2J(yy4PWh? zCJwz-E1h`U4Vi!FK5>FPw9m5;-&U#ma;%cXboBBdqGz*B zd|$yG=eZbnSyEnrHI6{{`Zr?}|ECak>JL>8c0Ye1r@116(oSl+r(TQ+qRXw$tW6*M z&kK;x*l_~B45S3o&m18}Auga{49WzrX2}_cyogC0LCuOep z{0AgyfMqDkFrcbzOfU`C+E2-yh8`hd?iWPjp>;M$kYgSD^{LKzBh^behfU0BZe+sF zbQIVu+ZllB>2=$tAoe-%$tlc1cZ)E@<*`g3 z%cL{kPlIV}IlYlWdj8Z^0CTvRns zWH-vY27Zj&nk(g`9EO4)XNQ9S3oF0kV_5!_iA@bD=PV#kfsyBp zozAxToQP%6b+1(Byy=(kU-uklBT0!n|huV5$dnR=P4h%1Efk~=Ae--HP!hG)NCwAmhq zz6@K~T?me{(4ow86-cuDvLCO-V^6(2T|8FyeM;I}O<$9s*JqQy%t+wUDt(E_;~X;t1qt%A!(e42mzBvulh>*QE}55+~s z>Ds_RLY_yL>%VWU+q#2oMhbXlkWv?I#61h7q}mPw;_J`9TeBm*sI$uBt|!^?A;KSw z;rB<1bISH}BN5>z-sBY1rnRviMj63Gt$qt#`zme6!Q;x>|0r-+557(_QQjLGPjN)z zo;620F2J@)q0?&k!fWQh@t#xG6a&dvSv-R{jLqdk^x53N4ruxssC@+wgOLy3_XMg!Q{Rmt#aQJp^{-1ij^|xtYZTbu&<9zgSLX>@^ONsO!n2 zA(Uu=xf|#DtuUmG*U077xeT!=<>#~H${pVsT5;}y^$|ED9*cuQ&!sI7Sg5P2(qzc& zh4&qNVVLu&%v0I50X6km0rv!5gLYoD-72GgEcp4)RjipkJf6DoKD80HGqB#rt+SJY zq2g%`6zEtJ@O?1{P2NIoa1fLrq3~Yl>)a+tfv$!==0Y%)@K*Qh&uA1%9yp*DijAuS z`z5^4A7v5e>xK)32nHurc7-M2{6@!o2RaTzlZACEsq46VbnPDUy=_FlC)hk|j&cF= zcK-`Qq&@(x^*CtPy(Va;MFh7v=62>2>dap7GqQ9;vShJXblhL<)Fxhkj7oEhqM|WD zy2HzV4gzkMaQ1zgvYuz=4je%^)L)sv=l#kbU5D9iF6;&4CcM~{ZNimvaC}=~(mMuu zi1Z4|R>{RKKO$3e^eT|57`8?^A7FueM3f!~-HhcVT2IE%hTU&dZGZP10#9KVf~dO9 zL7NfgRwwhf=OC;bJU7b*@vzc6(>h*4K3#k|u+`i1%e5Q`KFXrxb^e+LK}5?LfEB5* z+5J{3y@mo3IxbAu%pM_}-9vTK%Y~7{N`|%xShui%y^Yzy21w-sfdb*Li8%@9D{eD} z1x=@S4r~BhDt>&R@#o8Wcb6EY{f!#3*5>yeT`!9S1;_SO=PlqbkKZTqP>=h;I^A!~ z{H)xNj5~$9;%+DNVX$lkKTGK5?jpp0LQ_V3yD9#q#3-b%eKWEc_4X?)uLz>v3K}3f z5K5Q^rdFea6eW?rNFgX|6Bo=wFTX)S?GVtEA`2*j;zv$HnX6$bl`fA04OcUhHIG!jvaxO~{7FVFR;^ucu&wc1r9> z3G$GM80Bkam<$9p*oc0!{ppEtj&H$>-)j5UhFG)mL#DN(E*pl zU`zD11#&oxM8AZ~u0=bcU1_9((2>#SIGBTyz6Uz(10@;T0f6^APrFNL6S!nxsJ@5H z^rv=wS&&41ge_JvaPNUSr;LrypIKiy6!i#hzdQ&k zUajk9aOv0HYm792bxY@(PzKV9cHB_1MPlvqrjosM)ZJVw9pQ$u{e<^qZkLNqWWZyy zL=}=xr(n=b|8=!42eCsD9Eb3Is6nfS@Zo?0%Qlb!R`rS|mauKeh%;OXo1jJyqJuzn zK%#Wm_d`1qAHEt~C%a*#o2rwn89W(b*nicDBj^Dv$pA64>(V>`GrEDWP!3e`gGEQQ zfRy|$&!1@iKZ-K$V&O$1d5{?t=O>hNkDMq&;M;IIsx>FIqheXjk}*nJ6D=sDxDwS_P15dL`P0PH>_iO5 z&N8wJGz3_BkAHx%h;A_@xRC{+CpJiY4PU&EDfCJ}Y2eJVSWTtfF{NA5;ikBjTDc?x zD^|2db8Nu8uqf*XTG<+S^heO=tYERHjaoKp!k2`utx;2V2;CdoyydweHEYHv1A>g; zBYOXD?keD{;hvFleEc+GxPU7%@gi0fww|_?4+rC10Zc?RpU^Sn+mUK}?wdOrcAwgA zw2DdA9#LIBC1-G$;(uH^F;wD60cA5*F0$3W=I~;TD#&plGsE)7{@$bbf0SV!Rw5hE zWM0b8u+eb|E03y)?>UjWlwcTR$*%_@gq7a!;)_H$-w&|+RYson5KtjZp(%Ywz_CTC zAkkD1GfOWjT8|T=d?=5Fg#G+WrUNp01)U2!;TzKeRs_MG=Qy2e2aqI<8UvD$2(52`9~s@!w6kO7*P|as{}X2PlSFW(38#0~F^X9brLC zOy-fg@SoDX!u|kb(p~vdxi4bM7(&6ulLrE+Ye_WaS<~&P-O>Wr3@>YnJD$J|sAN5D z^M}ATYw~!Zs?FyuOi7Z&tlW^smOoXVYr3UcorW?yUXR{7+3?4k0?P>C(OE+da|j@w z2GT$LrbDvF*uJ+bvusn!KZQY|4Q_5St)}P)%L~4yr-h+&EauW?PlfX&`dE(m!l|P> z6H8$Gk*(Zn4~a9ukZ`Rrou*-m9zJ9@E&T(1(ZR+rbYftr;H?`JY0aiX{ycCy8b>T@ z_p+XVOo}Rk6rQH?sn!$dh_G5&x{dUnV5VLph|jK964_l<>ewa=9h~GilegLH6d*ai zkJT|B&)#zM9I8dVxXlrW<6(SVKqh0oZ_`Q7h?ukPymAy9lwH^DtfosixwcTfs+1e} z>WOf#ebte@cb)#?V8VEJVPa=ONyw=zQa+P*YkzLS%6}00%`}26oTkmFfmk>1>K@@I z@-z-{aV~y_FI;lesXSIEJ|iJ+A$1zhY=WeSHdb;GBw)}*GbYL#%v;nrf}W8Pk-X|rVKv-E(RFjudHE98=8me4FW+u(@LVnPNFcodR9&mWnHI@c zr~3l@;eUoKOI(Mm-IE>^HAYdMB!IIQ$R-)JuPYpv1`GX$401E~;btB#HcCEkY%Aw! z-aQsp3^9u@bC>w=*P8Ra;+`jo=bZrj>C=ife9v2c%MOhC-pF8p?E1viR|pYF3oEc` zKr_YV5uPp#NMi5Wleg;qn5*{+f>t%+I(GElUSxptzF+D5~AXQhvTIamWeGD!Ih*8gl zIXO`_L&6(jkmPLL1j45s{SQxGrL*DoVR}4&(R8Udvq#~|y_u2(jmBX+PKe@5dzRe+ zH3n040f8_xE}*>b&y1V7z4_|He(e*^<$zwInLv%jGp|_P_@1AmRM8C<&`VQ9v|mhA zlQSk&bx4p;BR9rrGWUc_B*kiz{{&ENy#ie?5GVi zUPO5zYT!|5Nf|lBRvB7mq{>nbFoqRp;S?5X4bTgA?5*ZsSAI)w^_;ya?UWFNI}V3h z)R6lJ0;;v;_z=;U_dGRo^oXDnfsPGF2oF!iu@eqXB>?GwOGKF?>y+fU(3FA!6K?)z zmTimI3v+NIt-kbv>Irz~L+^x93;vaXW_;_!u~LJU9K4+{_&Mg-e<7-bz9`1Ymzb=p{jcti`C6FccINKwL*A8=7MBSZE6X4w1*`6_h(v z&${>Q)k!CNoqZ(n#ee1NbUUrL$d;L|BB(z9q@9O`I1FPq@IHwmn0{Wo0CC?vKe@R% z@-?95(KbsR7DK6?0t#sK6h9k~^;Ng>hr0X67)_F>-JUCJ~B1C0;;pOzH- zGCeBb(el}ruBf`0*ZSMr#dxHca3fVkLHHWlG4%Tczb3|T#e9daYgh9zCAZlArWt$L zJkG`(bD`uEQw@bm3}5T4qUvS`8*r)bmAiYaI=*aZ#jMIvM#0H0eQ0{7dYi!X*!a$2 zHxv_W;S53Q#y7X^`_AhkE-^Lvy~+pM)IZgUAyOe4BKIJTJnxQa5%1<*aZfXA4qn&u zjugtwkYd@N=)PP;5D4AUG1sdQ;WKv52>rdEXvO7j#Gk4dWS)q7VjV#Wi%{A1!Zm|C zCQX8|fO|W?6tZh^#9@a;MdKx)EkB%6xqxE)s(ERoEB5f8Qfwj+dAP6)<>=~0zxg0; z&b&8App<@5f)%xwpx4^la5<5Efxs?o+r6c0+|EhvGca?v{`exv2PuJ6cn6!W+|oM> zfTWW?Vl64u0*YDZB4Mup$3M#_0Fvnve43GcJ@blXKMRfacPWdwGl z1&nXW)X%@O5FwX5Kyi?4+$z$ce9Bfh>q_mLngS5DQWYjpm`L!{-ct-tO%i}S*RQqEF^z#*PpS`z z+KWmZhn}tt>YD8Gf{LckwOur!AsCm#%Lwf85-s&x>ifNl3uqLXyXi||AFiKOE@mqX zJqpwv11paZMV>2#hk?%rn@BNJ;qk3By&!FqV1_pOJ(PKro<(*mVpTv-bAvCd?_5S- zq)JO-HbG7i^%HVo+xs8U9N`=2xu4>CO*bRh8P`U)KO~k$(%p+AcniPz$Nzq5^4r2* zj*@aHk;meQchKf4q)9}B&A=+Rja8Sk{mAgzG=uLd11rX9o7QaF=1d()rjBk}YIZX0 z(9#tR(Yi%AJ3n1QUc=|;-R10UKeZV37Jyf5-4_&0cmPkFdBqEdInfxH@0=CKY%^m6 zPEKMny!5Z7WEL}>$f|MX;O~JIcWeeyt*vmV@%2wWZ+%|@#^HNSycbb3-#?u5__(Mp zth+s($23xOBZqUtU+;nMo{s5p7QQn2hnoLDu#Lbf1o^Mu^V~G&lEQ9HQCaI!A3hPK za9IDBqR!#34k%HQd3w|tiI_3#CoW9az6{uLSSnYITay0*>Whb=Y50MF?eVdo)?L!M zxpkMXXSL*MEKp98^Qor+p=(jdKB$>L>4I^&KUr!waOVQ+O*w}Ie2WCdKl|?FwJulct07YvcDaT74(b@_JL?m4BIx?CIW=^h6Uatw^ zAy1RYlh6|G97X-SVN!zHdNAgTRp)hV7|4SB%+iTSM$3D}5bn?LHm}B$4?E3pML7=m zOA~^p`^eg{_dq^%Jcc022t-82l5mo|-h>KvP=DT0w~(E*PVyC^q@lp*G%s80OYf1#lf*5CsDUU~X$s{mI;H=4A;cx0b5X~F)#!m>VJ z79mMhG)~ZR^JI}%@yu24uanD%=ZY2XijCcP06=_uhKXPz=kMi4c*e^QQwv zb$Uq&CF{7*Tw4JtPNk@(F4{S4?&SYuV>%|I=594*#!TABcfS~v8j~Hp3XTV^bpSX# z;OA-bcw3KFes#uT-^GVCpDcR-dBac@tzu+!7)vHbuQC+*I+DgP9e0>wU9+JyXeBB2 zRU7)A`$bx=k?Hf9QM9?v~=Lbl|hzaAh8Ks^Ae` zL){g>87|2`i5qIDCS-rA7O9zxwspJY@dIhwS39i{1vSAN{GyorZo}_QeZe7RtF4wE z?ty;5!ii2m8ecNrlMLAXb-e2)NAeA21dbQRz|nM23J6OxO*R~KR`Bp5wBDqkvTWFc z={ZBP7W)sYyxi}7IC;J&U2-Fxd|SIDO0hEmwK#9XoE+zDXR9MYWw$ty%57F3^o}~PGl+Pq%*gaq zL&tn2sYh(F>-Td4MBTx~cOtsRh1UVDbKIu=SE+}=0%yk=2TQHz68T|KREJe;V9Fi( zyZ1llDy=t0h_>wjZ<2WiyIZtZO09c(PR@Z02toV!k=<%uGU|@Z)5O(0i?cl>Of$Ku zv{7Q?Ep$9#*y&n)@-*cPi+Apf7l}Ub99%phdQa1C0MJyKc zSgd835_J@?``BYkYNTCeh9&B6pHO-;s3$aQhT~6Z`PP=r(G>WZ0w>2b46Ww@G6aTG z{+&H%Z$-Bk-(SKdrCf>d`d!uA-$a35iXwvjcwtCcT$i#_`-aNb-rT^4YF52+D6a%$ zv1)XP3Ydhv5Wi!!i9FUbKLDbRd_ly_s6J@Xu`oa1p7Ku1l!3W!STIYc^cg7bFRPm*lfajOPEa*QeKHL1~pua!HsA>(c{WZxXCju9c?xQV#=`s!B{I+=u2Tq$n=P zbeyY@SWe~pvS=lklPsT^5oF|k_Y(YSjHp4qxl|0+Fa+PZ!@;aCdy|9b40u2UzCkRZ zaQgL;QT({;-e43NR56HH>waD&w#Od$S5w4*rd;^taHnT-&E~ZkE~_5DjwVDf1ux@s zUGp8L8J5hi1OAly&>S21KuwwEt{Mj(_%-P6OwZVmHWDviJmHnIbQ=Xn?kehb1t?iH zCD>)uG@(Ne(Z{zWRYvj`?Zwv)UF2WKi~tovx#dqTRLz=`o;pB}kRicRD)LzKZ0q*E zl8pEd?y!Z(d&?O*y<`Hpykw>wN6t#`nQbMbWUWBxr~XZmS4JJ>;B!Zs3g3< zo_L(MbAO|W8wqa zSz&C-F%R|Gwt2P$fa{Gd|{4LShDCBhS z;DW<}p)H(mve)M%;{_8{t_k|TntpV$TX%Pwjq@!N;dZcI@Px#InB?*b)@4{kRi`4{2&M+1}1u18a{a8^G7^d_LXzi#uRfD1VY@&^-bJA=-i1v^kcIJBn zWC!wQ&tYXDT=2a1;*9NYFORfPHwv9F1+fa^kCNPdFe=bCoO3yg^>RL!qS$|n1K$DL zltOp7Kb$$HdTw{)$t2TZWpN=;KX8J_8Rg_F6C>6*OFy7nD{NMvOq0=Kl_43k#1%-l z6FrqPRK?R-pKEj+(3s9)(76m1Z_?{r*6>M<+T+IJo^QXP z9~`yePjn201*J>jA2?o&6a!fgy!#12`-%7^`6=_V$A0YB3ThtrJejdR$r|dN&q~Jx zY;35YT=29FM1F0Y7hzmCjPnx2%s}BDNz0eRP?FtQeN|`%yq-H=UjdxP}vUUt% zkRNFtPssi>1gHh&3B^PR->u?E9V&Kw_x}}&ah9oIai){xuQ*oy&NnB1=P@RRq6*wF zsEzyJ*S>>)^_vpZFCMUbrqi>PaoTfO4j`o0JvTV)Lgkb{kRaI?l*WAE!QBY-o$D}C zU1x`pHn%S5_%#M^!f0>ij2x#rC`i)cUYN!#xCVI~mPbsvI_0!Lj!mcpD| zb5|0nB|~1u>^?b%qCR{1=fmwoZE`?0Gm6v0f$M~<3KA|wm>^fH3#HI`n%)c^0N;vF zCE)}mU@L0o2=3Z#WS$;*0;=S$8kPC!R`BC&lo*knUR83bI&}EylfPeo`~OJD2Vak; z;SPsp+KtzkCu%0W8)xL9Tkpfmp`V?tH{szanG)sKE?Jf}CaifPO?@d$`7i^>jb-?E zph=nP**XVSEM{m)kOjDDwRyi294U!Oe78sIB);}~5LPsyNhP2B{dU$L&oo~cxtaX& z@Jo>^M4^uIsVOVyCmM36EFdYS`VxUJv%-|U;njqPK4A~dDDbesPVnrpZ|OZ!JK`2x zrNIqK)@c!latkI>NylLn>>9F>?GU?1;1Y*####IDfD` zjpm63nMB>W+2xd&ed4A25+hAB>c~);-S;7c>7pVbFp#68Lw%$ET7E-iWx9Sjc;7w| z2VFWmau@xsW@9K@EgJJe2oNUT!qO8_agb(pUxx~?8?W*03WO6g6ZC<8&vSw4X!TU^ zbEhXjDz)+d7I!_UQG5(De+urY+$+$ULe8Oeb+B3 z-;WccOT|m&MOo{-fHzN)DN`_!I0VoS{p&rvHXN|HUfc7vMuvV zov??Y*FcV-cQeHcRx|sA6r}O)0Ig}qVNlF%`LigOd<>Nvm&)H15;J1^!=i!B zc!KlIM>Hi}!;h6Ieexx*8wHaTS54sI>+VqV zs|TXNfpci9T@PAElx)BjEp&B%Ac#>QV9Vy-+Spl28$t$xeM>B~Yf_XpK4Nove7~(l zQ-NyPm%z86KrX6X!0Ds>lhAFXJzC!CjQqq-0>Y2ZJySuH)fTi-iQDQZN(3Zc5?Au~ zzYp7WKEyn3ChxUJ+9*9beL$_LZ_T$DnnyJ_bHqGXSaWL^&Q!PnN*nq20o=khurC+ zjvLQ4{XMp8?b@rPaaf)Cvsm^(J@O?=_w(1}kU%mK5Nl%bn`i z0P%vVsZgiH*P?%4e(%r)**iGQW9Z1*?>T-cy9|6Cr<2W9DJ)pVxp;;4-5}bjh>AUH zXt+xRc`@en?srpq zQn0zov_MWWEYd!5Dt}W18-Xk}hmNF;JRro7ucnalZh=mjWwZT$_@B`(5kBZNAON5n z>2@NulH^3BO1HNI4wuq2%a_9UouEMgztd!)vO~C#B;P8A{rjBbajJy4`O>3l2*~V{xJe#QGKTDtGDE z*|)yuO~_nM)YCu&oI*G>@aTwtd)@IyE4+2D7jiN`Ev)t@ztl3!9y}>}o|3%ju;1*E zk%73zd7dMuARN^^Tw}*^|F{BJRn>+)v9ewP<@Ml0N0jVqZcv>%yx0-Mio(nj()k{m zL7U$Mv-O?wB+6kfuykrbfun#Zn&vMGB8YTZO-KEcAYKPqNJW`6h7?|QUoQ~6N_{5iC;YfGu45lCjRHFa=bO$iYMp^S zktDlJwq_XOqE*=_gMsc)P%08h*T}xP{CwS=4nIW@grh(CY5w!o6t9{4lWCKGaut-m zrtMSL@;A@lN+P?u>N__#=T$ag0`n_L(px2I4^HO%fEur3K@Vik9_aPK@W}n6X;-o zd9!BNQ4v~=$81fVy<@D(o$_jQS|#PhCNK7D$F7x*xx053*@RCpv^{iyieu$J2C~}3&7e?jhOK3?nQ}GK$Y)w^=lIM`V*Lr7uqSAqn~@Y8(*oM1qgl} z)TGu|ORxS^h=1~De7pq_CF)hl{^~9K*F*id>ua{MzBKR(VX0MkH<9UVvwKWmhqSIY zZP-BoAe_HE!;&ZHe-Df<2u^_`3v}_jJry9Z)dHgB%{WUfFRHEz^tXFf4K8!AMhI#xJ1T7kfS(Qk^s{B2Nx1PASB3(s&zaxP`J+J-F^V-o_l`bm~aIWBi{DIV^ z%l?~i{yMIP@I)4KYV!0EoXdERnWMNo-oR?!g6%M66oqIRwE`VwQEfS#fua*a}QUtDLGDuOe%Q~eysnDpgyfCp`wKm>H-9&*^PyJx5TPzZ)*UoN)2@?3}A)_!A`~$r$$WyvU1PS11ruQbwN3@H{G0SkNN= z*Lfo>UwUN(P7BPzfBRGoASdKS~%fnY-k*&r?Oz3MB84sQ$1q4-U)U zDq!md=cQgr7o^EAMGRY9Zz$zAd-~Ep=x3DO0P}H9AUkMeVvkF9-G82aYkGhAj*K=g zrVOe#LJe1>+`3Eue;S_Y(mMXuJHMsL8fftE`WJ4s>t^JeMLx(f>Ds z@@zUBWTfS8}gQu~{ZNr@9{t}t%|J7(pps+G!$gSh^W_sJW4=kAZ%+?A@YEnlU3lGy9^D{ek+TY^+%xF$kua z-+|K7<)foN!LSsh;v3Wttexv_o+_liFY_lKI0L^!^gRJ0+Z%DJ;AJ#4mRy@dd5K0T z!!wYfw&F-w1vVJe$5zVQ^ZOi-n3CtZwLrcb;Iqcb>+RR;y1n!A$I6|XM|SNUN*bQv zv@~s&ia!#JVMmf{3lCSyPlpT8MExlX0_iJl=Vs&-3bf_H; zFzp};;TgGiY3knOo!TRxZ<|MW?yX04>GICiwU*MguyN+Ee(T$Mo&PKn-!8k|6H(ze zKEyk6J5A5)X;P>Z&1c5F&ApdTlOA1~mCG+1?;@}r&rf_2$yl6rb{!U=nR{!Z=jaSD6!q0@So@$-d&3RhP&yT>rvmK?rJbrQQ$#Z zeSUB)NtLA|7iyL$2VMW5!__|)>Z6m>2Lk-h%*x5J z{qQw-wY<=Ebooo)P{1(@c}|`w&UDK^S%Fo9^KMi0SgXZ`v_trmNae9~-Y!p`an)24 zpOeSm>>Y7bZuk#<&?zlpPHMQ+1-ii-4C6s{uAgE+ratCl5= zY&mA|=ksvk+v|Y*e|ahwsa^}&YJcQ7Eb1#0FiVj#yPpQ_PK?$5>vEA#`QhDM@{#hhMaIe#Z-NI_3zL&FqijC*OnGk z6`G-mxp*RfBzO!P)t>sy(juy=9>Uuc9yQXJL?_x&53fnLygb!lIBnf?+~S14GmT9y=}etb9d9aQ<(-weuG-TCO>Pm~dx+1CE-GX8z!opP1DbLzJ7QK8>2YThy6 zP{lm{@-M=@f6C;ATma-$LX_gy%+W0mrt`q ze$Gm~+`5o_$MKh5n$q7_QH`Ml)#_JnDPQg_onVb@Bm4U@%W0y!81_)7-H71IUy4(- ze_zGATFd7@Q2N3CT=es2X?-;D-nNrh@}gX-#>O)_W<_sz2IihR9b9La zg=iBy&Tc-L^EJQ1b2mcnYji#}edWy7tt-bQ^<9b%|bJfgOPMMb#r0zy^!4V4kfAMIdyENlC0Y|aI z^lGckg|1Woy^&}VNhVP6@ z{=HP4;5_N(%S-lqBezC>HFR+te8KWVf}Q2DOH-+biX%)kLJnT-Fd<#mD}U;?D_`~X zZS{Xsh^n@gmphmJgT43U=g;gXISvM0K7ge|dp0em`>BR|gwOx3AxFB*;N#CT{&Cjn z9H+?tK7F*~(OhWgY<*&t=jA=s|JE34GyfVI|HRGr?CplP|Hj3arNf+8bvOOR_ZQCX z7m`l=TLHuHlzSf+(!LJ(uKD%b_Nb>H-1=!l(&fFUT|?}NIp%xAt0hKglE3d@-?<0* zC@V+Gy&TdVa+LmW!J7}tYuoQBX1gvaP95wRR2b_7L3Om=b{mXU`@aX$8LXh5RCT}X z!)y}K4*BHoW$~H5C;qJq{f`odC-#_-)u)SDHI@i{DS{@ zVtAXR{=X-5VEe{9;2u_M{zp7uspi|u(toQ?e+XA|FLC!x@%M_&nuM1BVndzK(Mkdt zm73fBWi`&;p5KN4jqf~58eD2@J#}^9)2TmQ{0E~;m7sgHLn>;tocUL5fYHB){V7gK zwAmTc$NWd)?Loc&efaz*qRnu+sjxfQ8>0XFu>S`%Ud|wH z((G=#XwuT>e?#!_0XKU`x0TpSk!o9?rKx|n@-PxMQup#oW@^IqL;W+2?gzJc*8xYm zTq4ah^PGJE)8?u1{NVM|cOTfu?~U{r?<@x9UU+Nz?|wSTpaVb?vuAr*(G#vI}e`=AD&coYcmini~aMzhfT_&nhbd(DPkTQ=biCyC)yms^h_HJNbNOp9`QPV@W$J`chr-TvXXNBUcHO6 zC9)k8|HWA~P3qrj2Vs__kLbUk^yRRne7n%1)}L>`1W4yk9$ZF(cjs7#6rHP5)w!i9 zSpc+u|Ju~|NS7JeI<tDz`m&UH;LsqkMpn>Ys#g_m%wRsipsRTKc9KzV@-h zMo}=wiu3Z%;{RS3y^F?A{4dm+`HLJ}Y1t$b?Jjovy>Fe zy_ZRE_`I@t^1XC<4cSE3%|~|+-oWFECExF~|1w!wldbsi zZ&S@n6<_Gk`(Asxzrs7YN$lXmI;~SMm{&F@-`^VTsrmBXwYk&J;+@mt)(7eQ;O+mv|6y7hI;qF|yac5fgj`BZ<+5^~ I;*I Date: Mon, 22 Jan 2018 08:23:47 +0100 Subject: [PATCH 43/60] Update Daikin docs (Typo, logo, etc.) --- source/_components/climate.daikin.markdown | 31 +++---- source/_components/daikin.markdown | 19 ++--- source/_components/sensor.daikin.markdown | 25 +++--- source/images/supported_brands/daikin.svg | 95 ---------------------- 4 files changed, 35 insertions(+), 135 deletions(-) delete mode 100644 source/images/supported_brands/daikin.svg diff --git a/source/_components/climate.daikin.markdown b/source/_components/climate.daikin.markdown index 4c7b2176874..65ac8dba8b3 100644 --- a/source/_components/climate.daikin.markdown +++ b/source/_components/climate.daikin.markdown @@ -7,15 +7,15 @@ sidebar: true comments: false sharing: true footer: true -logo: daikin.svg +logo: daikin.png ha_category: Climate ha_release: 0.59 ha_iot_class: "Local Polling" --- -### Description ### -The climate component integrates Daikin air conditioning systems into Home Assistant, enabling control of setting the following parameters: +The `daikin` climate platform integrates Daikin air conditioning systems into Home Assistant, enabling control of setting the following parameters: + - **mode** (cool, heat, dry, fan only or auto) - **fan speed** (on supported models) - **target temperature** @@ -24,25 +24,28 @@ The climate component integrates Daikin air conditioning systems into Home Assis Current temperature is displayed.

- Please note, the `daikin` platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant. - BRP069A42 does not support setting of fan speed or fan swing mode. +Please note, the `daikin` platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant. BRP069A42 does not support setting of fan speed or fan swing mode.

-### Configuration ### - The component has been integrated with discovery so all your Daikin AC's climate devices can be automatically discovered. -Manual configuration and customization is also possible by using the sample configuration from below: + +To enable the platform, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry climate: - platform: daikin - host: 10.0.0.1 - name: optional name + host: 10.0.0.1 ``` -Configuration variables: - -- **host** (*Required*): IP or hostname of the device -- **name** (*Optional*): If the device has a name previously set by the user than that name will be used +{% configuration %} +host: + description: IP or hostname of the device. + required: true + type: string +name: + description: If the device has a name previously set by the user than that name will be used. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/daikin.markdown b/source/_components/daikin.markdown index c13983d65a4..9e783ed1c15 100644 --- a/source/_components/daikin.markdown +++ b/source/_components/daikin.markdown @@ -7,34 +7,34 @@ sidebar: true comments: false sharing: true footer: true -logo: daikin.svg +logo: daikin.png ha_category: Hub ha_release: 0.59 ha_iot_class: "Local Polling" --- -### Description ### -The component integrates Daikin air conditioning systems into Home Assistant. +The `daikin` component integrates Daikin air conditioning systems into Home Assistant. To automatically add all your Daikin devices (ACs and associated sensors) into your Home Assistant installation, add the following to your 'configuration.yaml' file: + ```yaml # Example configuration.yaml entry daikin: ```

- Please note, the Daikin platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant +Please note, the Daikin platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant

A full manual configuration example is give below: + ```yaml # Full manual example configuration.yaml entry daikin: hosts: - 192.168.4.161 - monitored_conditions: - inside_temperature - outside_temperature @@ -50,7 +50,7 @@ hosts: monitored_conditions: description: List of items you want to monitor for each device. required: false - detault: All conditions + default: All conditions type: list keys: inside_temperature: @@ -60,11 +60,6 @@ monitored_conditions: {% endconfiguration %}

- Please note that some AC devices may report outside temperature only when they are turned on. +Please note that some AC devices may report outside temperature only when they are turned on.

- -The Daikin Home Assistant platform currently supports the following Hive devices: - -- [Climate](/components/climate.daikin) -- [Sensor](/components/sensor.daikin) diff --git a/source/_components/sensor.daikin.markdown b/source/_components/sensor.daikin.markdown index 74337e223f1..986d882cb0b 100644 --- a/source/_components/sensor.daikin.markdown +++ b/source/_components/sensor.daikin.markdown @@ -7,37 +7,34 @@ sidebar: True comments: false sharing: true footer: true -logo: daikin.svg +logo: daikin.png ha_category: Sensor ha_release: 0.59 ha_iot_class: "Local Polling" --- -### Description ### -The sensor component integrates Daikin air conditioning systems into Home Assistant, enabling displaying the following parameters: +The `daikin` sensor platform integrates Daikin air conditioning systems into Home Assistant, enabling displaying the following parameters: + - **inside temperature** - **outside temperature**

- Please note, the `daikin` platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant +Please note, the `daikin` platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant

-### Configuration ### - The component has been integrated with discovery so all your Daikin AC's climate devices can be automatically discovered. -Manual configuration and customization is also possible by using the sample configuration from below: + +To enable the platform manually, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry sensor: - platform: daikin - host: 10.0.0.1 - name: optional name - monitored_conditions: - - inside_temperature - - outside_temperature - + host: 10.0.0.1 + monitored_conditions: + - inside_temperature + - outside_temperature ``` {% configuration %} @@ -48,7 +45,7 @@ host: monitored_conditions: description: List of items you want to monitor for each device. required: false - detault: All conditions + default: All conditions type: list keys: inside_temperature: diff --git a/source/images/supported_brands/daikin.svg b/source/images/supported_brands/daikin.svg deleted file mode 100644 index b6f36d99046..00000000000 --- a/source/images/supported_brands/daikin.svg +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 20c82d5d252e1c705e18f6e95e25837066025431 Mon Sep 17 00:00:00 2001 From: Marius Date: Mon, 22 Jan 2018 13:13:49 +0200 Subject: [PATCH 44/60] Updating documentation for #11805 (#4462) --- source/_components/climate.generic_thermostat.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/climate.generic_thermostat.markdown index d816c7ac5fe..19e1a1f1cd4 100644 --- a/source/_components/climate.generic_thermostat.markdown +++ b/source/_components/climate.generic_thermostat.markdown @@ -39,7 +39,7 @@ Configuration variables: - **hot_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched off. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will stop when the sensor equals or goes above 25.5. - **keep_alive** (*Optional*): Set a keep-alive interval. If set, the switch specified in the *heater* option will be triggered every time the interval elapses. Use with heaters and A/C units that shut off if they don't receive a signal from their remote for a while. Use also with switches that might lose state. The keep-alive call is done with the current valid climate component state (either on or off). - **initial_operation_mode** (*Optional*): Set the initial operation mode. Valid values are `off` or `auto`. Value has to be double quoted. If this parameter is not set, it is preferable to set a *keep_alive* value. This is helpful to align any discrepancies between *generic_thermostat* and *heater* state. -- **away_temp** (*Optional*): Set the temperature used by "away_mode" (default: 16). Please specify when using `ac_mode: True` to a higher value. +- **away_temp** (*Optional*): Set the temperature used by "away_mode". If this is not specified, away_mode feature will not get activated. A full configuration example looks like the one below. `min_cycle_duration` and `keep_alive` must contain at least one of the following entries: `days:`, `hours:`, `minutes:`, `seconds:` or `milliseconds:`. From 412869ff9390c8b1e6eda500048cb045d5a8f8b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20=C3=98stergaard=20Nielsen?= Date: Mon, 22 Jan 2018 12:23:25 +0100 Subject: [PATCH 45/60] New IHC platform (#4129) * New IHC platform * autosetup -> auto_setup * Moved auto setup to the IHC component * Removed by LK in logo * Changes from review. * Defaults in configurations. manualy setup" changed to "manual setup" (Anchors adjusted) * Relative links changed to absolute links --- source/_components/binary_sensor.ihc.markdown | 69 ++++++++++++++ source/_components/ihc.markdown | 90 ++++++++++++++++++ source/_components/light.ihc.markdown | 65 +++++++++++++ source/_components/sensor.ihc.markdown | 59 ++++++++++++ source/_components/switch.ihc.markdown | 56 +++++++++++ source/images/supported_brands/ihc.png | Bin 0 -> 4702 bytes 6 files changed, 339 insertions(+) create mode 100644 source/_components/binary_sensor.ihc.markdown create mode 100644 source/_components/ihc.markdown create mode 100644 source/_components/light.ihc.markdown create mode 100644 source/_components/sensor.ihc.markdown create mode 100644 source/_components/switch.ihc.markdown create mode 100644 source/images/supported_brands/ihc.png diff --git a/source/_components/binary_sensor.ihc.markdown b/source/_components/binary_sensor.ihc.markdown new file mode 100644 index 00000000000..5a3d7769dea --- /dev/null +++ b/source/_components/binary_sensor.ihc.markdown @@ -0,0 +1,69 @@ +--- +layout: page +title: "IHC Binary Sensor" +description: "Instructions how to integrate IHC Binary Sensors within Home Assistant." +date: 2017-11-27 13:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: ihc.png +ha_category: Binary Sensor +ha_release: 0.62 +ha_iot_class: "Local Push" +--- + +Before you can use the IHC Binary Sensor platform, you must setup the [IHC Component](/components/ihc/) + +When auto setup is enabled the following products will be found in the IHC project and setup as binary sensors: + +* Dataline magnet contacts +* Dataline Pir sensors +* Dataline Pir sensors with twilight detection +* Dataline Pir alarm sensor +* Dataline smoke detector +* Dataline gas detector +* Dataline light sensor + +To manually configure IHC Binary Sensors insert this section in your configuration: + +```yaml +binary_sensor: + - platform: ihc + binary_sensors: + - id: 12345 + name: mysensor + type: opening + inverting: True + - id: 12346 + ... +``` + +{% configuration %} +binary_sensors: + description: List of binary sensors to setup manually. + required: false + type: map + keys: + id: + description: The IHC resource id. + required: true + type: int + inverting: + description: If True the sensor will be inverted. + required: false + type: bool + default: false + name: + description: The name of the component + required: false + type: string + type: + description: The binary sensor type. See [Home Assistant binary sensor](/components/binary_sensor/) for available types. + required: false + type: string +{% endconfiguration %} + +The resource id should be an id of a boolean IHC resource. +For more information about IHC resource ids see [Manual Setup](/components/ihc/#manual-setup) + diff --git a/source/_components/ihc.markdown b/source/_components/ihc.markdown new file mode 100644 index 00000000000..7bffc484155 --- /dev/null +++ b/source/_components/ihc.markdown @@ -0,0 +1,90 @@ +--- +layout: page +title: "IHC" +description: "Instructions on how to integrate the IHC components with Home Assistant" +date: 2017-11-11 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ihc.png +ha_category: Hub +ha_release: "0.62" +ha_iot_class: "Local Push" +--- + +IHC Controller integration for Home Assistant allows you to connect the LK IHC controller to Home Assistant. +(The controller is sold under other names in different countries - "ELKO Living system" in Sweden and Norway) + +An `ihc` section must be present in the `configuration.yaml` file and contain the following options: + +```yaml +# Example configuration.yaml entry +ihc: + host: http://192.168.1.3 + username: admin + password: mysecret + auto_setup: True + info: True +``` + +{% configuration %} +auto_setup: + description: True to have IHC products auto setup. + required: false + type: bool +host: + description: The URL of the IHC Controller. + required: true + type: string +info: + description: If True additional IHC info will be shown on each component. + required: false + type: bool +password: + description: The password for the IHC Controller. + required: true + type: string +username: + description: The username for the IHC Controller. + required: true + type: string +{% endconfiguration %} + +The info option will show the IHC "name", "note" and "position" attributes. +This will make it easier to identify the IHC products within Home Assistant + +There is currently support for the following device types within Home Assistant: + +- [Binary Sensor](/components/binary_sensor.ihc/) +- [Sensor](/components/sensor.ihc/) +- [Light](/components/light.ihc/) +- [Switch](/components/switch.ihc/) + +### Auto setup of IHC products + +If auto setup is enabled, the `ihc` component will automatically find IHC products and insert these as devices in Home Assistant. +To disable this set auto_setup to False. (Auto setup is on by default) +See the individual device types for a list of IHC products to be recognized automatically. + +Components will get a default name that is a combination of the IHC group and IHC resource id. +If you want to change the display names use the [Customizing entities](/docs/configuration/customizing-devices/) + +### {% linkable_title Manual setup %} + +Each device is associated with an IHC resource id. +To manually setup components you specify resource ids from the IHC project. +(The IHC project is the file you edit/upload to the IHC Controller using LK IHC Visual - or similar program if your controller is not the LK brand). +The project file is an XML file and you can view it with any text/XML editor. +You can rename it to have the XML extension and use a browser like Chrome or Internet Explorer. +The resources are the \ or \ eleements. +Shown as inputs or outputs of products in the IHC application. +You can also use inputs and outputs from function blocks. +These are the \ and \ elements from the project file. + +The IHC resource id should be specified as an integer value. (In the project file the id will be specified as a hex number) + +If you want an easier way to get the IHC resource ids, you can download the [Alternative Service View application](https://www.dingus.dk/updated-ihc-alternative-service-view/). +The application will show the product tree. You can expand it, select inputs and outputs and when selected you can see the resource id. + +See each device type for the manual configuration options. diff --git a/source/_components/light.ihc.markdown b/source/_components/light.ihc.markdown new file mode 100644 index 00000000000..a289ea942f3 --- /dev/null +++ b/source/_components/light.ihc.markdown @@ -0,0 +1,65 @@ +--- +layout: page +title: "IHC Light" +description: "Instructions how to integrate IHC lights within Home Assistant." +date: 2017-11-27 13:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: ihc.png +ha_category: Light +ha_release: 0.62 +ha_iot_class: "Local Push" +--- + +Before you can use the IHC Light platform, you must setup the [IHC Component](/components/ihc/) + +When auto setup is enabled the following products will be found in the IHC project and setup as light devices: + +* Wireless lamp outlet dimmer +* Wireless dimmer +* Wireless combi dimmer 4 buttons +* Wireless lamp outlet relay +* Wireless combi relay 4 buttons +* Wireless mobile dimmer +* Dataline lamp outlet + +To manually configure IHC lights insert this section in your configuration: + +```yaml +light: + - platform: ihc + lights: + - id: 12345 + name: tablelight + dimmable: True + - id: 12346 + name: anotherlight + ... +``` + +{% configuration %} +lights: + description: List of lights to setup manually + required: false + type: map + keys: + dimmable: + description: Set to True if the IHC resource is a light level + required: false + type: bool + default: false + id: + description: The IHC resource id. + required: true + type: int + name: + description: The name of the component + required: false + type: string +{% endconfiguration %} + +In the example above 12345 is ihc resource id and "tablelight" is the name. +The IHC resource id can be a light level for dimmers or an boolean output of a relay. +For more information about IHC resource ids see [Manual Setup](/components/ihc/#manual-setup) diff --git a/source/_components/sensor.ihc.markdown b/source/_components/sensor.ihc.markdown new file mode 100644 index 00000000000..70ec6c11e2c --- /dev/null +++ b/source/_components/sensor.ihc.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "IHC Sensor" +description: "Instructions how to integrate IHC Sensors within Home Assistant." +date: 2017-11-27 13:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: ihc.png +ha_category: Sensor +ha_release: 0.62 +ha_iot_class: "Local Push" +--- + +Before you can use the IHC Sensor platform, you must setup the [IHC Component](/components/ihc/) + +When auto setup is enabled the following products will be found in the IHC project and setup as sensors: + +* Dataline temperature sensor - Will insert 2 temperature sensors +* Dataline Humidity - Will insert 1 humidity and 2 temperature sensors (calculated dewpoint) +* Dataline Lux - will insert 1 light and 1 temperature sensor + +To manually configure IHC sensors insert this section: + +```yaml +sensor: + - platform: ihc + sensors: + - id: 12345 + name: 'mysensor' + unit_of_measurement: '°C' + - id: 12346 + ... +``` + +{% configuration %} +sensors: + description: List of sensors to setup manually + required: false + type: map + keys: + id: + description: The IHC resource id. + required: true + type: int + name: + description: The name of the component + required: false + type: string + unit_of_measurement: + description: Defines the unit of measurement of the sensor, if any. + required: false + type: string +{% endconfiguration %} + +The resource id should be a IHC float resource. +For more information about IHC resource ids see [Manual Setup](/components/ihc/#manual-setup) + diff --git a/source/_components/switch.ihc.markdown b/source/_components/switch.ihc.markdown new file mode 100644 index 00000000000..011ef33a023 --- /dev/null +++ b/source/_components/switch.ihc.markdown @@ -0,0 +1,56 @@ +--- +layout: page +title: "IHC Switch" +description: "Instructions how to integrate IHC switches within Home Assistant." +date: 2017-11-27 13:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: ihc.png +ha_category: Switch +ha_release: 0.62 +ha_iot_class: "Local Push" +--- + +Before you can use the IHC Switch platform, you must setup the [IHC Component](/components/ihc/) + +When auto setup is enabled the following products will be found in the ihc project and setup as switch devices: + +* Wireless plug outlet +* Wireless relay +* Mobile wireless relay +* Dataline plug outlet + +To manually configure IHC switches insert this section in your configuration: + +```yaml +switch: + - platform: ihc + auto_setup: True + switches: + - id: 12345 + name: myswitch + - id: 12346 + .... +``` + +{% configuration %} +switches: + description: List of switches to setup manually + required: false + type: map + keys: + id: + description: The IHC resource id. + required: true + type: int + name: + description: The name of the component + required: false + type: string +{% endconfiguration %} + +The resource id should be a boolean resource. (On/Off) +For more information about IHC resource ids see [Manual Setup](/components/ihc/#manual-setup) + diff --git a/source/images/supported_brands/ihc.png b/source/images/supported_brands/ihc.png new file mode 100644 index 0000000000000000000000000000000000000000..36e60f58e106367b0719e361d6e3db0661d35e29 GIT binary patch literal 4702 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 Ixyv{I3yp6Cwg3PC literal 0 HcmV?d00001 From a8ecc882999f5860632e19ca6987ad9ac3929ae3 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Mon, 22 Jan 2018 23:01:02 +0100 Subject: [PATCH 46/60] Typo fixed: specfici -> specific. (#4495) --- source/_components/fan.xiaomi_miio.markdown | 48 ++++++++++----------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 23110f63028..4f59690ce94 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -68,62 +68,62 @@ Turn the buzzer on. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_buzzer_off Turn the buzzer off. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_led_on Turn the led on. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_led_off Turn the led off. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_child_lock_on Turn the child lock on. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_child_lock_off Turn the child lock off. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | ### Service fan/xiaomi_miio_set_led_brightness Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | -| `brightness` | no | Brightness, between 0 and 2. | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | +| `brightness` | no | Brightness, between 0 and 2. | ### Service fan/xiaomi_miio_set_favorite_level Set the favorite level of the operation mode "favorite". -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specfici air purifier. Else targets all. | -| `level` | no | Level, between 0 and 16. | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | +| `level` | no | Level, between 0 and 16. | From 65b833473a033e958006fd8b093e439e0210e007 Mon Sep 17 00:00:00 2001 From: arcsur Date: Tue, 23 Jan 2018 16:55:18 +0800 Subject: [PATCH 47/60] BME680 sensor component documentation (#4432) * Added documentation for BME680 sensor platform * Removed yr sensor from configuration.yaml example * Implemented pull request review comments. --- source/_components/sensor.bme680.markdown | 222 ++++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 source/_components/sensor.bme680.markdown diff --git a/source/_components/sensor.bme680.markdown b/source/_components/sensor.bme680.markdown new file mode 100644 index 00000000000..e6978a3f0f9 --- /dev/null +++ b/source/_components/sensor.bme680.markdown @@ -0,0 +1,222 @@ +--- +layout: page +title: "BME680 Sensor" +description: "Instructions on how to integrate a BME680 sensor into Home Assistant." +date: 2018-01-16 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: Sensor +ha_release: 0.62 +ha_iot_class: "Local Push" +--- + + +The `bme680` sensor platform allows you to read temperature, humidity, pressure and gas resistance values of a [Bosch BME680 Environmental sensor](https://cdn-shop.adafruit.com/product-files/3660/BME680.pdf) connected via an [I2C](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the operation modes of the sensor described in its datasheet. In addition, it includes a basic air quality calculation that uses gas resistance and humidity measurements to calculate a percentage based air quality measurement. + +Tested devices: + +- [Raspberry Pi](https://www.raspberrypi.org/) + +To use your BME680 sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: bme680 +``` + +{% configuration %} +name: + description: The name of the sensor + required: false + default: BME680 Sensor + type: string +i2c_bus: + description: I2C bus that the sensor is connected to. + required: false + default: 1 + type: int +i2c_address: + description: I2C address of the sensor. It is 0x76 or 0x77. + required: false + default: 0x77 + type: int +monitored_conditions: + description: Conditions to monitor. + required: false + default: + - temperature + - humidity + - pressure + - airquality + type: list + keys: + temperature: + description: Monitor temperature. + humidity: + description: Monitor relative humidity. + pressure: + description: Monitor pressure. + gas: + description: Monitor gas resistance values on the VOC sensor. + airquality: + description: Monitor air quality using the values of humidity and gas resistance and calculate a percentage based air quality measurement. +oversampling_temperature: + description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. + required: false + default: 8 + type: int +oversampling_pressure: + description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. + required: false + default: 2 + type: int +oversampling_humidity: + description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. + required: false + default: 4 + type: int +filter_size: + description: IIR filter size as described in the sensor datasheet. Can be 0 (off), 1, 3, 7, 15, 31, 63 or 127. + required: false + default: 3 + type: int +gas_heater_temperature: + description: The temperature to heat the hotplate to for gas resistance measurements as described in the sensor datasheet. Can be between 200-400°C. + required: false + default: 320 + type: int +gas_heater_duration: + description: The duration to heat the hotplate in milliseconds for gas resistance measurements as described in the sensor datasheet. Can be between 1-4032 ms. In reality, you will likely need between 80-100ms to reach a stable temperature. Using a duration greater than 1000ms is inadvisable as it will essentially result in the heater being continually on due to the 1-second update interval. + required: false + default: 150 + type: int +aq_burn_in_time: + description: The duration to perform gas resistance measurements to establish a stable baseline measurements for Air Quality calculations in seconds. The burn in time is only performed when the sensor component is first initialized. + required: false + default: 300 + type: int +aq_humidity_baseline: + description: The baseline *ideal* relative humidity value for the air quality calculations. + required: false + default: 40 + type: int +aq_humidity_bias: + description: The bias for humidity to the gas resistance measurement in the air quality calculations expressed as a percentage of the total calculation e.g. 25% hudidtity to 75% gas. + required: false + default: 25 + type: int +{% endconfiguration %} + +## {% linkable_title Full Examples %} + +If you want to specify the working mode of the digital sensor or need to change the default I2C address (which is 0x77), add more details to the `configuration.yaml` file: + +```yaml +# Example of customized configuration.yaml entry +sensor: + - platform: bme680 + name: BME680 Sensor + i2c_bus: 1 + i2c_address: 0x77 + monitored_conditions: + - temperature + - humidity + - pressure + - gas + - airquality + oversampling_temperature: 8 + oversampling_humidity: 2 + oversampling_pressure: 4 + filter_size: 3 + gas_heater_temperature: 320 + gas_heater_duration: 150 + aq_burn_in_time: 300 + aq_humidity_baseline: 40 + aq_humidity_bias: 25 +``` + +## {% linkable_title Customizing the sensor data %} + +Give the values friendly names and icons, add the following to your `customize:` section. + +```yaml +# Example configuration.yaml entry +customize: + sensor.bme680_sensor_temperature: + icon: mdi:thermometer + friendly_name: Temperature + sensor.bme680_sensor_humidity: + icon: mdi:water + friendly_name: Humidity + sensor.bme680_sensor_pressure: + icon: mdi:gauge + friendly_name: Pressure + sensor.bme680_sensor_air_quality: + icon: mdi:blur + friendly_name: Air Quality +``` + +To create a group, add the following to your `group` section. + +```yaml +# Example configuration.yaml entry +group: + climate: + name: Climate + entities: + - sensor.bme680_sensor_temperature + - sensor.bme680_sensor_humidity + - sensor.bme680_sensor_pressure + - sensor.bme680_sensor_air_quality +``` + +## {% linkable_title Directions for installing SMBus support on Raspberry Pi %} + +Enable I2C interface with the Raspberry Pi configuration utility: + +```bash +# pi user environment: Enable I2C interface +$ sudo raspi-config +``` + +Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. + +Install dependencies to use the `smbus-cffi` module and add your _homeassistant_ user to the _i2c_ group: + +```bash +# pi user environment: Install I2C dependencies and utilities +$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev + +# pi user environment: Add homeassistant user to the I2C group +$ sudo addgroup homeassistant i2c + +# pi user environment: Reboot Raspberry Pi to apply changes +$ sudo reboot +``` + +### {% linkable_title Check the I2C address of the sensor %} + +After installing `i2c-tools`, a new utility is available to scan the addresses of the connected sensors: + +```bash +$ /usr/sbin/i2cdetect -y 1 +``` + +It will output a table like this: +```text + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- -- +40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- 76 +``` + +So you can see the sensor address that you are looking for is **0x76** (there is another I2C device on that Raspberry Pi). From 026d747c4702cf4c64a63d916a06f9a7b02c9cd6 Mon Sep 17 00:00:00 2001 From: Phil Frost Date: Tue, 23 Jan 2018 18:46:10 +0000 Subject: [PATCH 48/60] Document new alexa smart_home option (#4493) --- source/_components/alexa.markdown | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index 6b1347a386e..e39048053cb 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -21,6 +21,7 @@ There are a few ways that you can use Amazon Echo and Home Assistant together. - [Build custom commands to use](#i-want-to-build-custom-commands-to-use-with-echo) - [Create a new Flash Briefing source](#flash-briefing-skills) +- [Use the Smart Home API to control lights, etc](#smart-home) - Alternative: use the [Emulated Hue component][emulated-hue-component] to trick Alexa to thinking Home Assistant is a Philips Hue hub. Amazon has released [Echosim], a website that simulates the Alexa service in your browser. That way it is easy to test your skills without having access to a physical Amazon Echo. @@ -332,6 +333,50 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf - Having passed all validations to reach this screen, you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. - To invoke your flash briefing, open the Alexa app on your phone or go to the [Alexa Settings Site][alexa-settings-site], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". + +## {% linkable_title Smart Home %} + +While the Skills API described above allows for arbitrary intents, all +utterances must begin with "Alexa, tell $invocation_name ..." + +The [Emulated Hue component][emulated-hue-component] provides a simpler +interface such as, "Alexa, turn on the kitchen light". However it has some +limitations since everything looks like a light bulb. + +Amazon provides a Smart Home API for richer home automation control. It takes +considerable effort to configure. The easy solution is to use +[Home Assistant Cloud](/components/cloud/). + +If you don't want to use Home Assistant Cloud and are willing to do the +integration work yourself, Home Assistant can expose an HTTP API which makes +the integration work easier. Example configuration: + +```yaml +alexa: + smart_home: + filter: + include_entities: + - light.kitchen + - light.kitchen_left + include_domains: + - switch + exclude_entities: + - switch.outside + entity_config: + light.kitchen: + name: Custom Name for Alexa + description: The light in the kitchen + switch.stairs: + display_categories: LIGHT +``` + +This exposes an HTTP POST endpoint at `http://your_hass_ip/api/alexa/smart_home` +which accepts and returns messages conforming to the +[Smart Home v3 payload](https://developer.amazon.com/docs/smarthome/smart-home-skill-api-message-reference.html). +You must then create an Amazon developer account with an Alexa skill and Lambda +function to integrate this endpoint. See +[Haaska](https://github.com/auchter/haaska) for an example. + [amazon-dev-console]: https://developer.amazon.com [flash-briefing-api]: https://developer.amazon.com/alexa-skills-kit/flash-briefing [flash-briefing-api-docs]: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/flash-briefing-skill-api-feed-reference From 48fbcd8e64480030b108924761bb0a6c51c1ffea Mon Sep 17 00:00:00 2001 From: Gregory Dosh Date: Wed, 24 Jan 2018 05:03:10 -0600 Subject: [PATCH 49/60] adding device_tracker.tomato https params (#4389) * adding device_tracker.tomato https params * converting to newer standard * removing extra space * Adding default values * fixing some misc quoting bugs * cleaning up optional params * updating default port param to match ssl choice * changing verbage --- .../device_tracker.tomato.markdown | 47 ++++++++++++++++--- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/source/_components/device_tracker.tomato.markdown b/source/_components/device_tracker.tomato.markdown index e7a105ea2fe..3c5eca66caa 100644 --- a/source/_components/device_tracker.tomato.markdown +++ b/source/_components/device_tracker.tomato.markdown @@ -29,14 +29,47 @@ device_tracker: http_id: YOUR_HTTP_ID ``` -Configuration variables: - -- **host** (*Required*): The IP address of your router, e.g. 192.168.1.1. -- **username** (*Required*: The username of an user with administrative privileges, usually *admin*. -- **password** (*Required*): The password for your given admin account. -- **http_id** (*Required*): The value can be obtained by logging in to the Tomato admin interface and search for `http_id` in the page source code. +{% configuration %} +host: + description: "The IP address or hostname of your router, e.g. `192.168.1.1` or `rt-ac68u`." + required: false + type: string +port: + description: "The port number of your router, e.g. `443`." + required: false + type: int + default: 80/443 (automatically detected) +ssl: + description: "Whether to connect via `https`." + required: false + type: bool + default: false +verify_ssl: + description: "If SSL verification for https resources needs to be turned off (for self-signed certs, etc.) this can take on boolean values `False` or `True` or you can pass a location on the device where a certificate can be used for verification e.g. `/mnt/NAS/router_cert.pem`." + required: false + type: [string, bool] + default: true +username: + description: "The username of an user with administrative privileges, usually *admin*." + required: true + type: string +password: + description: "The password for your given admin account." + required: true + type: string +http_id: + description: "The value can be obtained by logging in to the Tomato admin interface and search for `http_id` in the page source code." + required: true + type: string +{% endconfiguration %} See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. A description of the API s available in this [Tomato API](http://paulusschoutsen.nl/blog/2013/10/tomato-api-documentation/) blog post. - + +SSL Certificate: + +Gathering the SSL Certificate of your router can be accomplished with this (or a similar) command: +```bash +openssl s_client -showcerts -connect 172.10.10.1:443 /dev/null | openssl x509 -outform PEM > router_cert.pem +``` \ No newline at end of file From ed4b825f749ab3fae8543bc4631e961694d4a78e Mon Sep 17 00:00:00 2001 From: Raiford Date: Wed, 24 Jan 2018 03:05:00 -0800 Subject: [PATCH 50/60] Update git_pull doc with password support (#4300) This is a documentation update that corresponds to https://github.com/home-assistant/hassio-addons/pull/217 --- source/_addons/git_pull.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown index 8d42d8ab820..bf8324628ca 100644 --- a/source/_addons/git_pull.markdown +++ b/source/_addons/git_pull.markdown @@ -36,6 +36,8 @@ Load and update configuration files for Home Assistant from a GIT repository. - **auto_restart** (*Optional*): Make a restart of Home-Assistant if the config have change and is valid. - **repeat/active** (*Optional*): Pull periodic for GIT updates. - **repeat/interval** (*Optional*): Pull all x seconds and look for changes. +- **deployment_user** (*Optional*): Username to use when authenticating to a repo with a username and password. +- **deployment_password** (*Optional*): Password to use when authenticating to a repo. Ignored if deployment_user is not set. - **deployment_key** (*Optional*): A private SSH key that will be used for communication during git operations. This key is mandatory for ssh-accessed repositories, which are the ones with the following pattern: `@:`. - **deployment_key_protocol** (*Optional*): The key protocol. Default is "rsa". Valid protocols are: From a7aa9dae97b7cc6ddc93ad343d1b72c1e0fa416d Mon Sep 17 00:00:00 2001 From: Dan Cinnamon Date: Thu, 25 Jan 2018 11:35:11 -0600 Subject: [PATCH 51/60] New venstar climate platform (#4412) * New venstar climate platform * Update 'ha_release' and use new style --- source/_components/climate.venstar.markdown | 77 ++++++++++++++++++++ source/images/supported_brands/venstar.png | Bin 0 -> 5329 bytes 2 files changed, 77 insertions(+) create mode 100644 source/_components/climate.venstar.markdown create mode 100644 source/images/supported_brands/venstar.png diff --git a/source/_components/climate.venstar.markdown b/source/_components/climate.venstar.markdown new file mode 100644 index 00000000000..f054465f729 --- /dev/null +++ b/source/_components/climate.venstar.markdown @@ -0,0 +1,77 @@ +--- +layout: page +title: "Venstar Thermostat" +description: "Instructions for how to integrate Venstar WiFi thermostats within Home Assistant." +date: 2018-01-14 00:04 +sidebar: true +comments: false +sharing: true +footer: true +logo: venstar.png +ha_category: Climate +ha_release: 0.62 +ha_iot_class: "Local Polling" +--- + + +The `venstar` climate platform allows you to control [Venstar](http://www.venstar.com) thermostats from Home Assistant. +Venstar thermostats feature a local API that allows for automation without the need for a cloud service. + +Currently supported and tested thermostats: + +- Color Touch T7900 + +Currently supported functionality: +- Setting heat/cool temperature when the thermostat is in the appropriate mode. +- Changing the operation mode of the thermostat (heat/cool/off/auto) +- Turning the fan on/off +- Setting the humidity level + +Note - Please ensure you update your thermostat to the latest firmware. Currently tested on firmware 5.10. + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +climate: + - platform: venstar + host: IP_OR_HOSTNAME_OF_THERMOSTAT +``` + +{% configuration %} +host: + description: Address of your thermostat, e.g., 192.168.1.32. + required: true + type: string +username: + description: Username for the thermostat. + required: false + type: string +password: + description: Password for the thermostat. + required: false + type: string +ssl: + description: Whether to use SSL or not when communicating. + required: false + type: boolean + default: False +timeout: + description: Number of seconds for API timeout. + required: false + type: int + default: 5 +{% endconfiguration %} + +## {% linkable_title Full configuration sample %} + +```yaml +# Example configuration.yaml entry +climate: + - platform: venstar + host: IP_OR_HOSTNAME_OF_THERMOSTAT + ssl: True/False + username: OPTIONAL_AUTH_USER_HERE + password: OPTIONAL_AUTH_PASS_HERE + timeout: 5 +``` diff --git a/source/images/supported_brands/venstar.png b/source/images/supported_brands/venstar.png new file mode 100644 index 0000000000000000000000000000000000000000..9721b8d90f152e3bb0e51439075ec826e1975542 GIT binary patch literal 5329 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 Date: Thu, 25 Jan 2018 18:36:38 +0100 Subject: [PATCH 52/60] Version number of the Xiaomi Air Purifier removed from title and description. There are more versions are supported now. (#4511) --- source/_components/fan.xiaomi_miio.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 4f59690ce94..7f79d3f276b 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Xiaomi Air Purifier 2" -description: "Instructions how to integrate your Xiaomi Air Purifier 2 within Home Assistant." +title: "Xiaomi Air Purifier" +description: "Instructions how to integrate your Xiaomi Air Purifier within Home Assistant." date: 2017-10-13 12:35 sidebar: true comments: false @@ -50,7 +50,7 @@ To add a Xiaomi Air Purifier to your installation, add the following to your `co ```yaml fan: - platform: xiaomi_miio - name: Xiaomi Air Purifier 2 + name: Xiaomi Air Purifier host: 192.168.130.66 token: YOUR_TOKEN ``` From ae24893397f0884856138dea7697edd0cfc89760 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 25 Jan 2018 18:42:05 +0100 Subject: [PATCH 53/60] update style and remove refs to plug --- source/_components/fan.xiaomi_miio.markdown | 44 +++++++++++++-------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 7f79d3f276b..9ba659b87ca 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2, Air Purifier 2S and Air Purifier Pro. -Currently, the supported features are +Currently, the supported features are: * On, Off * Operation modes (auto, silent, favorite, idle) @@ -41,28 +41,37 @@ Currently, the supported features are - motor_speed -## {% linkable_title Setup %} - -Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. +Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token. To add a Xiaomi Air Purifier to your installation, add the following to your `configuration.yaml` file: ```yaml fan: +# Example configuration.yaml entry - platform: xiaomi_miio - name: Xiaomi Air Purifier host: 192.168.130.66 token: YOUR_TOKEN ``` -Configuration variables: -- **host** (*Required*): The IP of your plug. -- **token** (*Required*): The API token of your plug. -- **name** (*Optional*): The name of your plug. +{% configuration %} +host: + description: The IP address of your fan. + required: true + type: string +token: + description: The API token of your fan. + required: true + type: string +name: + description: The name of your fan. + required: false + type: string + default: Xiaomi Air Purifier +{% endconfiguration %} ## {% linkable_title Platform Services %} -### Service fan/xiaomi_miio_set_buzzer_on +### {% linkable_title Service fan/xiaomi_miio_set_buzzer_on %} Turn the buzzer on. @@ -70,7 +79,7 @@ Turn the buzzer on. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on a specific air purifier. Else targets all. | -### Service fan/xiaomi_miio_set_buzzer_off +### {% linkable_title Service fan/xiaomi_miio_set_buzzer_off %} Turn the buzzer off. @@ -78,7 +87,7 @@ Turn the buzzer off. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific air purifier. Else targets all. | -### Service fan/xiaomi_miio_set_led_on +### {% linkable_title Service fan/xiaomi_miio_set_led_on %} Turn the led on. @@ -86,7 +95,7 @@ Turn the led on. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific air purifier. Else targets all. | -### Service fan/xiaomi_miio_set_led_off +### {% linkable_title Service fan/xiaomi_miio_set_led_off %} Turn the led off. @@ -94,7 +103,7 @@ Turn the led off. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific air purifier. Else targets all. | -### Service fan/xiaomi_miio_set_child_lock_on +### {% linkable_title Service fan/xiaomi_miio_set_child_lock_on %} Turn the child lock on. @@ -102,7 +111,7 @@ Turn the child lock on. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific air purifier. Else targets all. | -### Service fan/xiaomi_miio_set_child_lock_off +### {% linkable_title Service fan/xiaomi_miio_set_child_lock_off %} Turn the child lock off. @@ -110,7 +119,7 @@ Turn the child lock off. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific air purifier. Else targets all. | -### Service fan/xiaomi_miio_set_led_brightness +### {% linkable_title Service fan/xiaomi_miio_set_led_brightness %} Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). @@ -119,7 +128,7 @@ Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). | `entity_id` | yes | Only act on a specific air purifier. Else targets all. | | `brightness` | no | Brightness, between 0 and 2. | -### Service fan/xiaomi_miio_set_favorite_level +### {% linkable_title Service fan/xiaomi_miio_set_favorite_level %} Set the favorite level of the operation mode "favorite". @@ -127,3 +136,4 @@ Set the favorite level of the operation mode "favorite". |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific air purifier. Else targets all. | | `level` | no | Level, between 0 and 16. | + From c21493d7c7d15398235dda7de0a2d4371d9b9ee5 Mon Sep 17 00:00:00 2001 From: Johannes Innerbichler Date: Thu, 25 Jan 2018 18:45:28 +0100 Subject: [PATCH 54/60] Iota wallet (#4314) * added iota documentation\ * removed ruby version file\ * changed logo * minor changes to documentation * re-added ruby version file * :pencil2: Minor grammar changes --- .ruby-version | 2 +- source/_components/iota.markdown | 62 ++++++++++++++++++++++++ source/images/supported_brands/iota.png | Bin 0 -> 21492 bytes 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 source/_components/iota.markdown create mode 100644 source/images/supported_brands/iota.png diff --git a/.ruby-version b/.ruby-version index 005119baaa0..58073ef8d7f 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.4.1 +2.4.1 \ No newline at end of file diff --git a/source/_components/iota.markdown b/source/_components/iota.markdown new file mode 100644 index 00000000000..8b04af34727 --- /dev/null +++ b/source/_components/iota.markdown @@ -0,0 +1,62 @@ +--- +layout: page +title: "IOTA" +description: "Instructions on how to integrate IOTA wallets with Home Assistant." +date: 2017-12-31 13:29 +sidebar: true +comments: false +sharing: true +footer: true +logo: iota.png +ha_category: Finance +ha_release: 0.61 +ha_iot_class: "Cloud Polling" +--- + +[IOTA](http://iota.org/) is a new blockless distributed ledger which is scalable, lightweight and makes it possible to transfer value without any fees. + +The `iota` component displays various details (e.g., the balance, node attributes) of IOTA wallets. + +```yaml +# configuration.yaml example +iota: + iri: https://testnet140.tangle.works:4434 + wallets: + - name: Default Wallet + seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +``` + +{% configuration %} +iri: + description: Url of the IRI node + required: true + type: string +testnet: + description: Flag for indicating testnet + required: false + default: No testnet (false) + type: bool +wallets: + description: List of IOTA wallets + required: true + type: list + keys: + name: + description: Name of the wallet + seed: + description: Seed of the wallet +{% endconfiguration %} + +A full configuration example could look the one below: + +```yaml +# Full example +iota: + iri: https://testnet140.tangle.works:4434 + testnet: true + wallets: + - name: Default Wallet + seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + - name: Exchange Wallet + seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +``` diff --git a/source/images/supported_brands/iota.png b/source/images/supported_brands/iota.png new file mode 100644 index 0000000000000000000000000000000000000000..e45414f2df2ab2438b4184e27c89533ce48c32fc GIT binary patch literal 21492 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 Date: Thu, 25 Jan 2018 19:21:47 +0100 Subject: [PATCH 55/60] Fix remaining issue from #4314 (#4514) --- source/_components/iota.markdown | 14 +++++++------- source/_components/sensor.iota.markdown | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 source/_components/sensor.iota.markdown diff --git a/source/_components/iota.markdown b/source/_components/iota.markdown index 8b04af34727..d50ad4f5452 100644 --- a/source/_components/iota.markdown +++ b/source/_components/iota.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: iota.png ha_category: Finance -ha_release: 0.61 +ha_release: 0.62 ha_iot_class: "Cloud Polling" --- @@ -28,23 +28,23 @@ iota: {% configuration %} iri: - description: Url of the IRI node + description: URL of the IRI node. required: true type: string testnet: - description: Flag for indicating testnet + description: Flag for indicating "testnet". required: false - default: No testnet (false) + default: false type: bool wallets: - description: List of IOTA wallets + description: List of IOTA wallets. required: true type: list keys: name: - description: Name of the wallet + description: Name of the wallet. seed: - description: Seed of the wallet + description: Seed of the wallet. {% endconfiguration %} A full configuration example could look the one below: diff --git a/source/_components/sensor.iota.markdown b/source/_components/sensor.iota.markdown new file mode 100644 index 00000000000..e907cb2795f --- /dev/null +++ b/source/_components/sensor.iota.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "IOTA sensor" +description: "Instructions on how to integrate IOTA wallets sensors with Home Assistant." +date: 2017-12-31 13:29 +sidebar: true +comments: false +sharing: true +footer: true +logo: iota.png +ha_category: Finance +ha_release: 0.62 +ha_iot_class: "Cloud Polling" +--- + +The sensors are automatically created if the [IOTA hub](/components/iota/) is present. + +Available sensors: + +- Wallet balance +- Node information + From 021f7ae3ce95549b8d37a0a7cf8641453d9d1c38 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Thu, 25 Jan 2018 21:56:41 +0100 Subject: [PATCH 56/60] Service description for setting a fixed scene of Xiaomi MIIO light added. (#4170) --- source/_components/light.xiaomi_miio.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown index 5f76deb341e..90e5d1359b0 100644 --- a/source/_components/light.xiaomi_miio.markdown +++ b/source/_components/light.xiaomi_miio.markdown @@ -34,3 +34,14 @@ Configuration variables: - **host** (*Required*): The IP of your light. - **token** (*Required*): The API token of your light. - **name** (*Optional*): The name of your light. + +## {% linkable_title Platform Services %} + +### Service fan/xiaomi_miio_set_scene + +Set one of the 4 available fixed scenes. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific light. Else targets all. | +| `scene` | no | Scene, between 1 and 4. | From 6496e3ef21e02d8c74cca9fdf7bb44c7bc26de33 Mon Sep 17 00:00:00 2001 From: Jerad Meisner Date: Thu, 25 Jan 2018 14:25:38 -0800 Subject: [PATCH 57/60] Added documentation for Xeoma camera platform (#4405) * Added documentation for Xeoma camera platform * :pencil2: Minor changes * Add periods --- source/_components/camera.xeoma.markdown | 89 +++++++++++++++++++++++ source/images/supported_brands/xeoma.png | Bin 0 -> 6530 bytes 2 files changed, 89 insertions(+) create mode 100644 source/_components/camera.xeoma.markdown create mode 100644 source/images/supported_brands/xeoma.png diff --git a/source/_components/camera.xeoma.markdown b/source/_components/camera.xeoma.markdown new file mode 100644 index 00000000000..66603dabb3c --- /dev/null +++ b/source/_components/camera.xeoma.markdown @@ -0,0 +1,89 @@ +--- +layout: page +title: "Xeoma Camera" +description: "Instructions on how to integrate camera video feeds from a Xeoma server in Home Assistant" +date: 2018-01-12 20:05 +sidebar: true +comments: false +sharing: true +footer: true +logo: xeoma.png +ha_category: Camera +ha_iot_class: "Local Polling" +ha_release: 0.62 +--- + + +The `Xeoma` camera platform allows you to view the video feeds from a [Xeoma](http://felenasoft.com/xeoma) video surveillance server. + +To enable Xeoma camera feeds, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +camera: + - platform: xeoma + host: http://localhost:10090 +``` + +{% configuration %} +host: + description: The URL of the Xeoma server's web interface. + required: true + type: string +username: + description: The username used to access the Xeoma server's web interface. + required: false + type: string +password: + description: The password used to access the Xeoma server's web interface. + required: false + type: string +new_version: + description: Set to false if the Xeoma server version is 17.5 or earlier. + required: false + default: true + type: boolean +cameras: + description: List of customizations for individual Xeoma cameras. + required: false + type: list + keys: + image_name: + description: The name of the JPEG image for this camera as configured in Xeoma (without .jpg extension). + required: true + type: string + name: + description: The name to display in the frontend for this camera. + required: false + default: The `image_name` for this camera. + type: string + hide: + description: Don't show this camera in Home Assistant. + required: false + default: false + type: boolean +{% endconfiguration %} + +## {% linkable_title Full examples %} + +```yaml +# Example configuration.yaml entry +camera: + - platform: xeoma + host: http://localhost:10090 + username: user + password: secretpassword + new_version: false + cameras: + - image_name: front_porch + name: Front Porch + - image_name: back_patio + hide: true +``` + +To use this platform, you must have the Xeoma Web Server module enabled in at least one of your camera chains. + +This platform will parse the Xeoma web interface to find all enabled cameras and add them all to Home Assistant. You can +hide individual cameras using the platform configuration. + +The `image_name` configuration value for each camera should match the name supplied to the Xeoma Web Server configuration (under _Path to access images_) with the _.jpg_ extension removed. diff --git a/source/images/supported_brands/xeoma.png b/source/images/supported_brands/xeoma.png new file mode 100644 index 0000000000000000000000000000000000000000..7311d88d972f8ca3d5f58e7543ef37b2d59e30b4 GIT binary patch literal 6530 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 aLB4DmxgwjmQct`sA<@5Kq*JbC8}(m;LCPWk literal 0 HcmV?d00001 From 3a068a85a5db9d6e391c462331d57c7a8f25b6e5 Mon Sep 17 00:00:00 2001 From: Nash Kaminski Date: Fri, 26 Jan 2018 02:34:54 -0600 Subject: [PATCH 58/60] Update documentation for SNMP switch component to reflect changes. (#4190) --- source/_components/switch.snmp.markdown | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/source/_components/switch.snmp.markdown b/source/_components/switch.snmp.markdown index 7dd158291c0..59d9b239044 100644 --- a/source/_components/switch.snmp.markdown +++ b/source/_components/switch.snmp.markdown @@ -29,13 +29,16 @@ switch: Configuration variables: -- **baseoid** (*Required*): The SNMP BaseOID which to poll for the state of the switch and which to set in order to turn the switch on and off. +- **baseoid** (*Required*): The SNMP BaseOID which to poll for the state of the switch. +- **command_oid** (*Optional*): The SNMP OID which to set in order to turn the switch on and off, if different from `baseoid`. - **host** (*Optional*): The IP/host which to control. Defaults to `localhost`. - **port** (*Optional*): The port on which to communicate. Defaults to `161`. - **community** (*Optional*): community string to use for authentication. Defaults to `private`. - **version** (*Optional*): SNMP version to use - either `1` or `2c`. Defaults to `1`. -- **payload_on** (*Optional*): What return value represents an `On` state for the switch. The same value is used in writes to turn on the switch. Defaults to `1`. -- **payload_off** (*Optional*): What return value represents an `Off` state for the switch. The same value is used in writes to turn off the switch. Defaults to `0`. +- **payload_on** (*Optional*): What return value represents an `On` state for the switch. The same value is used in writes to turn on the switch if `command_payload_on` is not set. Defaults to `1`. +- **payload_off** (*Optional*): What return value represents an `Off` state for the switch. The same value is used in writes to turn off the switch if `command_payload_off` is not set. Defaults to `0`. +- **command_payload_on** (*Optional*): The value to write to turn on the switch, if different from `payload_on`. +- **command_payload_off** (*Optional*): The value to write to turn off the switch, if different from `payload_off`. You should check with your device's vendor to find out the correct BaseOID and what values turn the switch on and off. From 6129ab31e9139d8275758fb849133efea621756c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 26 Jan 2018 00:50:45 -0800 Subject: [PATCH 59/60] Version bump to 0.62 --- _config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_config.yml b/_config.yml index fb491ec4791..673e9d8eacd 100644 --- a/_config.yml +++ b/_config.yml @@ -139,12 +139,12 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 61 -current_patch_version: 1 -date_released: 2018-01-16 +current_minor_version: 62 +current_patch_version: 0 +date_released: 2018-01-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. # Major release: -patch_version_notes: "#release-0611---january-16" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): From 8ffd8883addf5fe1e332ff45eda1ed2f214a8cf5 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 26 Jan 2018 21:07:25 -0800 Subject: [PATCH 60/60] Add release blog post for 0.62 --- source/_posts/2018-01-27-release-62.markdown | 480 ++++++++++++++++++ source/hassio/index.markdown | 1 + .../images/blog/2018-01-0.62/components.png | Bin 0 -> 23954 bytes 3 files changed, 481 insertions(+) create mode 100644 source/_posts/2018-01-27-release-62.markdown create mode 100644 source/images/blog/2018-01-0.62/components.png diff --git a/source/_posts/2018-01-27-release-62.markdown b/source/_posts/2018-01-27-release-62.markdown new file mode 100644 index 00000000000..60a7f006010 --- /dev/null +++ b/source/_posts/2018-01-27-release-62.markdown @@ -0,0 +1,480 @@ +--- +layout: post +title: "0.62: MyChevy, Iota and Venstar Thermostat" +description: "Keep track of your Chevy Bolt, monitor your IOTA wallets and control your Venstar Thermostats." +date: 2018-01-27 01:00:00 +date_formatted: "January 27, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-01-0.62/components.png +--- + +
+ +Second release of the year and it's buzzing on GitHub. This release we had 70 people contribute code. We've also managed to finally get our PR count below a 100 open PRs again. A lot of cool stuff still waiting to make it to a future Home Assistant release. + +I want to give a shout out to [@martinhjelmare] and [@frenck]. Martin is doing an amazing job at code reviews and Franck has been kicking ass with Hass.io add-ons and keeping track of our documentation PRs. Thanks for this amazing work! + +## MyChevy + +With this new integration by [@sdague] you are able to keep an eye on your Chevy Bolt EV. Keep track if your car is plugged in, the battery stats and the range it is currently capable of driving. Hip! + +## New Platforms + +- Adding support for Lutron covers ([@nickovs] - [#11602]) ([lutron docs]) ([cover.lutron docs]) (new-platform) +- Add basic mychevy component ([@sdague] - [#11409]) ([mychevy docs]) (new-platform) +- Added support for TekSavvy bandwidth sensor ([@jpjodoin] - [#11186]) ([sensor.teksavvy docs]) (new-platform) +- Ihc component and platforms ([@dingusdk] - [#10916]) ([ihc docs]) ([binary_sensor.ihc docs]) ([light.ihc docs]) ([sensor.ihc docs]) ([switch.ihc docs]) (new-platform) +- Iota wallet ([@jinnerbichler] - [#11398]) ([iota docs]) ([sensor.iota 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. + + + +## Breaking Changes + +- Tahoma platform will get new entity IDs ([@glpatcern] - [#11547]) ([tahoma docs]) ([cover.tahoma docs]) (breaking change) +- Mold indicator: attribute names no longer include spaces or periods ([@olskar] - [#11694]) ([sensor.mold_indicator docs]) (breaking change) +- Custom component devs only: `EntityComponent.add_entity(entity)` and `EntityComponent.async_add_entity(entity)` have been removed. Use `EntityComponent.add_entities([entity])` and `EntityComponent.async_add_entities([entity])` instead. ([@balloob] - [#11691]) (breaking change) + +## All changes + +- Upgrade keyring to 10.6.0 ([@fabaff] - [#11608]) +- Upgrad youtube_dl to 2017.12.31 ([@fabaff] - [#11610]) +- small sonos cleanup ([@pvizeli] - [#11607]) ([media_player.sonos docs]) +- Update Xiaomi Miio compontent broken URI ([@keesschollaart81] - [#11621]) ([light.xiaomi_miio docs]) +- light/mqqt_json: allow brightness scaling ([@jkoelker] - [#11613]) +- Adding support for Lutron covers ([@nickovs] - [#11602]) ([lutron docs]) ([cover.lutron docs]) (new-platform) +- Hyperion: Add brightness, HDMI and effect support ([@starkillerOG] - [#11543]) ([light.hyperion docs]) +- Fixes and enhancements for the Tahoma platform ([@glpatcern] - [#11547]) ([tahoma docs]) ([cover.tahoma docs]) (breaking change) +- upgrade xiaomi lib ([@danielhiversen] - [#11629]) +- Add templates to MQTT climate ([@tinloaf] - [#11623]) +- Upgrade coinmarketcap to 4.1.2 ([@fabaff] - [#11634]) +- Add Deconz support for Zigbee green power devices like Hue Tap ([@Kane610] - [#11455]) ([deconz docs]) ([sensor.deconz docs]) +- Bump dev to 0.62.0.dev0 ([@fabaff] - [#11652]) +- Add ability to specify a sender in the clicksend notification ([@heydonms] - [#11046]) ([notify.clicksend docs]) +- Round values to one decimal ([@covrig] - [#11673]) ([sensor.xiaomi_aqara docs]) +- Add basic mychevy component ([@sdague] - [#11409]) ([mychevy docs]) (new-platform) +- update mypy commandline arguments ([@benleb] - [#11638]) +- Add support for configuring jeelink RF parameters ([@hthiery] - [#11620]) +- Wemo Dimmer Support ([@angel12] - [#10882]) ([wemo docs]) ([light.wemo docs]) +- add temperature controls to eph-ember ([@ttroy50] - [#11400]) ([climate.ephember docs]) +- Upgrade youtube_dl to 2018.01.14 ([@fabaff] - [#11661]) +- Change line separator to LN ([@fabaff] - [#11662]) ([hive docs]) ([map docs]) ([binary_sensor.hive docs]) ([climate.hive docs]) ([light.hive docs]) ([notify.prowl docs]) ([sensor.hive docs]) ([switch.hive docs]) +- Upgrade sqlalchemy to 1.2.1 ([@fabaff] - [#11666]) +- Upgrade pylast to 2.1.0 ([@fabaff] - [#11668]) +- Added extra arguments to onvif platform config ([@karlkar] - [#11680]) ([camera.onvif docs]) +- Enable probot move ([@fabaff] - [#11690]) +- fixed not to include spaces or dots in attribute names ([@olskar] - [#11694]) ([sensor.mold_indicator docs]) (breaking change) +- Add attributes ([@fabaff] - [#11698]) ([sensor.random docs]) +- Feature/fritzdect errorhandling ([@BastianPoe] - [#11490]) ([switch.fritzdect docs]) +- Tesla bug fix #11598 ([@zabuldon] - [#11707]) +- Update mold_indicator.py ([@olskar] - [#11715]) ([sensor.mold_indicator docs]) +- Override default name for TP-Link devices ([@DanNixon] - [#11710]) ([light.tplink docs]) ([switch.tplink docs]) +- Don't use None inside header ([@pvizeli] - [#11725]) ([hassio docs]) +- Add enable_output service to Yamaha platform ([@postlund] - [#11103]) ([media_player.yamaha docs]) +- Fix effects not appearing in UI due to missing attribute ([@shortbloke] - [#11738]) ([light.flux_led docs]) +- Fix for None object access attempt ([@karlkar] - [#11748]) +- Fixed universal media player templated source_select bug (issue #10981) and corrected typo in test_universal ([@iliketoprogram14] - [#11746]) +- Fix Tahoma device class ([@bakedraccoon] - [#11745]) ([cover.tahoma docs]) +- Add deCONZ entities in a predicitive order ([@Kane610] - [#11712]) ([binary_sensor.deconz docs]) ([sensor.deconz docs]) +- Xbox sensor - Extend error handling ([@ReneNulschDE] - [#11637]) ([sensor.xbox_live docs]) +- Upgrade netdisco ([@balloob] - [#11752]) +- set default value for rfxtrx config ([@danielhiversen] - [#11767]) ([binary_sensor.rfxtrx docs]) +- Round off exchange rate ([@arsaboo] - [#11765]) ([sensor.alpha_vantage docs]) +- Update icon (fixes #11744) ([@fabaff] - [#11758]) ([sensor.fixer docs]) +- Use localized forecast for openweathermap ([@brainexe] - [#11770]) ([sensor.openweathermap docs]) +- Unit should be mph as that is what the metoffices datapoint API returns ([@ioangogo] - [#11760]) ([sensor.metoffice docs]) +- Owntracks: Use bluetooth_le as source_type if beacon was used for location change. ([@cnrd] - [#11615]) ([device_tracker.owntracks docs]) +- Add a 'last' mode and attribute to min_max sensor ([@markferry] - [#11037]) ([sensor.min_max docs]) +- Update header and make it less verbose ([@fabaff] - [#11774]) ([asterisk_mbox docs]) +- Added support for TekSavvy bandwidth sensor ([@jpjodoin] - [#11186]) ([sensor.teksavvy docs]) (new-platform) +- Fix for Neato D3 and D5 ([@karlkar] - [#11775]) +- Axis discovery fails to save conf ([@Kane610] - [#11769]) ([axis docs]) +- Limit service description loading to a single thread ([@amelchio] - [#11733]) +- Snips: (change) Removed unknown intent speech response ([@tschmidty69] - [#11776]) ([snips docs]) +- Implemented event_data_template (new) ([@tschmidty69] - [#11057]) +- Fix PEP8 and PEP257 issues ([@fabaff] - [#11780]) ([deconz docs]) ([scene docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) +- Fix typos ([@fabaff] - [#11781]) ([system_log docs]) +- Support for performance mode on Rheem water heaters. ([@w1ll1am23] - [#11786]) ([climate.econet docs]) +- Service for setting a fixed scene of Xiaomi MIIO lights ([@syssi] - [#10819]) ([light.xiaomi_miio docs]) +- Homematic ip tilt covers ([@steffenslavetinsky] - [#11650]) ([cover.homematic docs]) +- plant - check history for min_brightness ([@ChristianKuehnel] - [#9534]) ([plant docs]) +- add generic rollershutter agian, was missing in last merge ([@philklei] - [#11788]) ([tahoma docs]) +- Additional attributes and services of the Xiaomi Air Purifier introduced ([@syssi] - [#11249]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- flux led version 0.20 ([@danielhiversen] - [#11791]) +- Hyperion: fix ([@starkillerOG] - [#11793]) ([light.hyperion docs]) +- Fix sensibo function names ([@andrey-git] - [#11797]) ([climate.sensibo docs]) +- Always load yr picture from https ([@andrey-git] - [#11796]) ([sensor.yr docs]) +- Make Google TTS secure ([@PRabahy] - [#11031]) ([tts.google docs]) +- Correct inadvertent change to file permissions ([@shortbloke] - [#11755]) ([light.flux_led docs]) +- Fix recorder purge ([@tinloaf] - [#11802]) +- Disable installing Telldus in Docker ([@balloob] - [#11806]) +- Nad ([@robhuls] - [#11800]) +- bump roku version ([@soberstadt] - [#11816]) +- MiFlora - use bluepy on linux systems ([@ChristianKuehnel] - [#11284]) ([light.decora docs]) ([sensor.miflora docs]) +- Ihc component and platforms ([@dingusdk] - [#10916]) ([ihc docs]) ([binary_sensor.ihc docs]) ([light.ihc docs]) ([sensor.ihc docs]) ([switch.ihc docs]) (new-platform) +- Change telldus domain to download.telldus.com ([@michaelarnauts] - [#11825]) +- Add more workday sensor countries and update holidays library to version 0.9.3 ([@drndos] - [#11826]) ([binary_sensor.workday docs]) +- Add missing availability schema to MQTT alarm panel ([@DanNixon] - [#11829]) ([alarm_control_panel.mqtt docs]) +- python-miio version bumped. Fixes all xiaomi_miio components. (Closes: #11768) ([@syssi] - [#11837]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Add waterfurnace platform ([@sdague] - [#11732]) +- (Re)Enable Daikin autodiscovery ([@rofrantz] - [#11842]) +- Fixes for PEP257 ([@fabaff] - [#11810]) +- bump eq3bt version ([@rytilahti] - [#11834]) ([climate.eq3btsmart docs]) +- Fix Unifi direct errors caused by AP reboot. ([@w1ll1am23] - [#11835]) ([device_tracker.unifi_direct docs]) +- Change 'on' to 'heat' as fallback thermostat mode ([@andrewdolphin] - [#11377]) ([google_assistant docs]) +- Use strict timeout when polling Samsung TV (Fix for #6375) ([@kennedyshead] - [#11759]) ([media_player.samsungtv docs]) +- Fix issues with generic thermostat ([@ciotlosm] - [#11805]) +- maxcube: Set MAX! Window Sensor's class to 'window' ([@leppa] - [#11799]) ([binary_sensor.maxcube docs]) +- Fix new iframe panel url ([@pvizeli] - [#11850]) ([hassio docs]) +- Fix races on recorder test ([@sdague] - [#11857]) +- Clean up entity component ([@balloob] - [#11691]) (breaking change) +- Allow exposing sensors as temperature or humidity 'climate' devices to Google Assistant ([@rofrantz] - [#11095]) ([google_assistant docs]) +- BME680 Sensor Component ([@arcsur] - [#11695]) +- Respond to Alexa scene activation correctly ([@bitglue] - [#11869]) ([alexa docs]) +- Checking Xiaomi Aqara devices unavailability states ([@PaulAnnekov] - [#11631]) ([xiaomi_aqara docs]) ([binary_sensor.xiaomi_aqara docs]) ([cover.xiaomi_aqara docs]) ([light.xiaomi_aqara docs]) ([sensor.xiaomi_aqara docs]) ([switch.xiaomi_aqara docs]) +- Hass.io panel v2 ([@pvizeli] - [#11860]) ([hassio docs]) +- Add missing mock call for test_minimal_config ([@sdague] - [#11858]) +- Expose Alexa Smart Home via HTTP POST ([@bitglue] - [#11859]) ([alexa docs]) +- fixed async function called in a thread ([@PaulAnnekov] - [#11882]) ([xiaomi_aqara docs]) +- upgrade ecobee ([@nkgilley] - [#11878]) ([ecobee docs]) +- Fix for hive aux_heat target temperature display ([@Rendili] - [#11884]) ([hive docs]) +- Bump waterfurnace library to 0.3.0 ([@sdague] - [#11888]) ([waterfurnace docs]) +- Postpone "Z-wave not ready" warning ([@amelchio] - [#11807]) ([zwave docs]) +- [SMALL-PR] Don't make climate calls if feature is not supported ([@rofrantz] - [#11841]) ([climate docs]) +- Handle Daikin AC adapters without fan mode and swing mode support ([@rofrantz] - [#11840]) ([climate.daikin docs]) +- device tracker - tomato https support ([@GregoryDosh] - [#11566]) ([device_tracker.tomato docs]) +- Bme680 ([@arcsur] - [#11892]) ([sensor.bme680 docs]) +- Add android option for linux_battery.py ([@mu4yu3] - [#11852]) ([sensor.linux_battery docs]) +- Pushbullet (fix) invalid keyword, added unittests ([@tschmidty69] - [#11804]) +- Snips - (fix) removed endSession mqtt response on error and unknown intents ([@tschmidty69] - [#11908]) ([snips docs]) +- Clarify emulated hue warning ([@balloob] - [#11910]) ([emulated_hue docs]) +- Use API to discover Hue if no bridges specified ([@balloob] - [#11909]) ([hue docs]) +- Update python-wink version and multiple wink fixes/updates. ([@w1ll1am23] - [#11833]) ([wink docs]) ([binary_sensor.wink docs]) ([climate.wink docs]) ([cover.wink docs]) +- New venstar climate component ([@Cinntax] - [#11639]) +- Iota wallet ([@jinnerbichler] - [#11398]) ([iota docs]) ([sensor.iota docs]) (new-platform) +- Improve foscam library exception support ([@i-am-shodan] - [#11701]) ([camera.foscam docs]) +- Added Xeoma camera platform ([@jeradM] - [#11619]) +- Multi-Room Support for Greenwave Reality ([@dfiel] - [#11364]) ([light.greenwave docs]) +- Minor fix to configuration validation and related log line. ([@arcsur] - [#11898]) ([sensor.bme680 docs]) +- Report scripts and groups as scenes to Alexa ([@bitglue] - [#11900]) ([alexa docs]) +- Add ERC20 tokens to etherscan.io sensor ([@nkgilley] - [#11916]) ([sensor.etherscan docs]) +- Allow separate command and state OIDs and payloads in SNMP switch ([@nkaminski] - [#11075]) ([switch.snmp docs]) +- Add "write" service to system_log ([@andrey-git] - [#11901]) ([system_log docs]) +- fixes #11848 ([@kennedyshead] - [#11915]) ([device_tracker.asuswrt docs]) +- Allow setting climate devices to AUTO mode via Google Assistant ([@balloob] - [#11923]) ([google_assistant docs]) ([climate.nest docs]) +- Fixed rfxtrx binary_sensor KeyError on missing optional device_class ([@basschipper] - [#11925]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) +- Implement Alexa temperature sensors ([@bitglue] - [#11930]) ([alexa docs]) +- Update pyhomematic to 0.1.38 ([@danielperna84] - [#11936]) ([homematic docs]) + +[#10819]: https://github.com/home-assistant/home-assistant/pull/10819 +[#10882]: https://github.com/home-assistant/home-assistant/pull/10882 +[#10916]: https://github.com/home-assistant/home-assistant/pull/10916 +[#11031]: https://github.com/home-assistant/home-assistant/pull/11031 +[#11037]: https://github.com/home-assistant/home-assistant/pull/11037 +[#11046]: https://github.com/home-assistant/home-assistant/pull/11046 +[#11057]: https://github.com/home-assistant/home-assistant/pull/11057 +[#11075]: https://github.com/home-assistant/home-assistant/pull/11075 +[#11095]: https://github.com/home-assistant/home-assistant/pull/11095 +[#11103]: https://github.com/home-assistant/home-assistant/pull/11103 +[#11186]: https://github.com/home-assistant/home-assistant/pull/11186 +[#11249]: https://github.com/home-assistant/home-assistant/pull/11249 +[#11284]: https://github.com/home-assistant/home-assistant/pull/11284 +[#11364]: https://github.com/home-assistant/home-assistant/pull/11364 +[#11377]: https://github.com/home-assistant/home-assistant/pull/11377 +[#11398]: https://github.com/home-assistant/home-assistant/pull/11398 +[#11400]: https://github.com/home-assistant/home-assistant/pull/11400 +[#11409]: https://github.com/home-assistant/home-assistant/pull/11409 +[#11455]: https://github.com/home-assistant/home-assistant/pull/11455 +[#11490]: https://github.com/home-assistant/home-assistant/pull/11490 +[#11543]: https://github.com/home-assistant/home-assistant/pull/11543 +[#11547]: https://github.com/home-assistant/home-assistant/pull/11547 +[#11566]: https://github.com/home-assistant/home-assistant/pull/11566 +[#11602]: https://github.com/home-assistant/home-assistant/pull/11602 +[#11607]: https://github.com/home-assistant/home-assistant/pull/11607 +[#11608]: https://github.com/home-assistant/home-assistant/pull/11608 +[#11610]: https://github.com/home-assistant/home-assistant/pull/11610 +[#11613]: https://github.com/home-assistant/home-assistant/pull/11613 +[#11615]: https://github.com/home-assistant/home-assistant/pull/11615 +[#11619]: https://github.com/home-assistant/home-assistant/pull/11619 +[#11620]: https://github.com/home-assistant/home-assistant/pull/11620 +[#11621]: https://github.com/home-assistant/home-assistant/pull/11621 +[#11623]: https://github.com/home-assistant/home-assistant/pull/11623 +[#11629]: https://github.com/home-assistant/home-assistant/pull/11629 +[#11631]: https://github.com/home-assistant/home-assistant/pull/11631 +[#11634]: https://github.com/home-assistant/home-assistant/pull/11634 +[#11637]: https://github.com/home-assistant/home-assistant/pull/11637 +[#11638]: https://github.com/home-assistant/home-assistant/pull/11638 +[#11639]: https://github.com/home-assistant/home-assistant/pull/11639 +[#11650]: https://github.com/home-assistant/home-assistant/pull/11650 +[#11652]: https://github.com/home-assistant/home-assistant/pull/11652 +[#11661]: https://github.com/home-assistant/home-assistant/pull/11661 +[#11662]: https://github.com/home-assistant/home-assistant/pull/11662 +[#11666]: https://github.com/home-assistant/home-assistant/pull/11666 +[#11668]: https://github.com/home-assistant/home-assistant/pull/11668 +[#11673]: https://github.com/home-assistant/home-assistant/pull/11673 +[#11680]: https://github.com/home-assistant/home-assistant/pull/11680 +[#11690]: https://github.com/home-assistant/home-assistant/pull/11690 +[#11691]: https://github.com/home-assistant/home-assistant/pull/11691 +[#11694]: https://github.com/home-assistant/home-assistant/pull/11694 +[#11695]: https://github.com/home-assistant/home-assistant/pull/11695 +[#11698]: https://github.com/home-assistant/home-assistant/pull/11698 +[#11701]: https://github.com/home-assistant/home-assistant/pull/11701 +[#11707]: https://github.com/home-assistant/home-assistant/pull/11707 +[#11710]: https://github.com/home-assistant/home-assistant/pull/11710 +[#11712]: https://github.com/home-assistant/home-assistant/pull/11712 +[#11715]: https://github.com/home-assistant/home-assistant/pull/11715 +[#11725]: https://github.com/home-assistant/home-assistant/pull/11725 +[#11732]: https://github.com/home-assistant/home-assistant/pull/11732 +[#11733]: https://github.com/home-assistant/home-assistant/pull/11733 +[#11738]: https://github.com/home-assistant/home-assistant/pull/11738 +[#11745]: https://github.com/home-assistant/home-assistant/pull/11745 +[#11746]: https://github.com/home-assistant/home-assistant/pull/11746 +[#11748]: https://github.com/home-assistant/home-assistant/pull/11748 +[#11752]: https://github.com/home-assistant/home-assistant/pull/11752 +[#11755]: https://github.com/home-assistant/home-assistant/pull/11755 +[#11758]: https://github.com/home-assistant/home-assistant/pull/11758 +[#11759]: https://github.com/home-assistant/home-assistant/pull/11759 +[#11760]: https://github.com/home-assistant/home-assistant/pull/11760 +[#11765]: https://github.com/home-assistant/home-assistant/pull/11765 +[#11767]: https://github.com/home-assistant/home-assistant/pull/11767 +[#11769]: https://github.com/home-assistant/home-assistant/pull/11769 +[#11770]: https://github.com/home-assistant/home-assistant/pull/11770 +[#11774]: https://github.com/home-assistant/home-assistant/pull/11774 +[#11775]: https://github.com/home-assistant/home-assistant/pull/11775 +[#11776]: https://github.com/home-assistant/home-assistant/pull/11776 +[#11780]: https://github.com/home-assistant/home-assistant/pull/11780 +[#11781]: https://github.com/home-assistant/home-assistant/pull/11781 +[#11786]: https://github.com/home-assistant/home-assistant/pull/11786 +[#11788]: https://github.com/home-assistant/home-assistant/pull/11788 +[#11791]: https://github.com/home-assistant/home-assistant/pull/11791 +[#11793]: https://github.com/home-assistant/home-assistant/pull/11793 +[#11796]: https://github.com/home-assistant/home-assistant/pull/11796 +[#11797]: https://github.com/home-assistant/home-assistant/pull/11797 +[#11799]: https://github.com/home-assistant/home-assistant/pull/11799 +[#11800]: https://github.com/home-assistant/home-assistant/pull/11800 +[#11802]: https://github.com/home-assistant/home-assistant/pull/11802 +[#11804]: https://github.com/home-assistant/home-assistant/pull/11804 +[#11805]: https://github.com/home-assistant/home-assistant/pull/11805 +[#11806]: https://github.com/home-assistant/home-assistant/pull/11806 +[#11807]: https://github.com/home-assistant/home-assistant/pull/11807 +[#11810]: https://github.com/home-assistant/home-assistant/pull/11810 +[#11816]: https://github.com/home-assistant/home-assistant/pull/11816 +[#11825]: https://github.com/home-assistant/home-assistant/pull/11825 +[#11826]: https://github.com/home-assistant/home-assistant/pull/11826 +[#11829]: https://github.com/home-assistant/home-assistant/pull/11829 +[#11833]: https://github.com/home-assistant/home-assistant/pull/11833 +[#11834]: https://github.com/home-assistant/home-assistant/pull/11834 +[#11835]: https://github.com/home-assistant/home-assistant/pull/11835 +[#11837]: https://github.com/home-assistant/home-assistant/pull/11837 +[#11840]: https://github.com/home-assistant/home-assistant/pull/11840 +[#11841]: https://github.com/home-assistant/home-assistant/pull/11841 +[#11842]: https://github.com/home-assistant/home-assistant/pull/11842 +[#11850]: https://github.com/home-assistant/home-assistant/pull/11850 +[#11852]: https://github.com/home-assistant/home-assistant/pull/11852 +[#11857]: https://github.com/home-assistant/home-assistant/pull/11857 +[#11858]: https://github.com/home-assistant/home-assistant/pull/11858 +[#11859]: https://github.com/home-assistant/home-assistant/pull/11859 +[#11860]: https://github.com/home-assistant/home-assistant/pull/11860 +[#11869]: https://github.com/home-assistant/home-assistant/pull/11869 +[#11878]: https://github.com/home-assistant/home-assistant/pull/11878 +[#11882]: https://github.com/home-assistant/home-assistant/pull/11882 +[#11884]: https://github.com/home-assistant/home-assistant/pull/11884 +[#11888]: https://github.com/home-assistant/home-assistant/pull/11888 +[#11892]: https://github.com/home-assistant/home-assistant/pull/11892 +[#11898]: https://github.com/home-assistant/home-assistant/pull/11898 +[#11900]: https://github.com/home-assistant/home-assistant/pull/11900 +[#11901]: https://github.com/home-assistant/home-assistant/pull/11901 +[#11908]: https://github.com/home-assistant/home-assistant/pull/11908 +[#11909]: https://github.com/home-assistant/home-assistant/pull/11909 +[#11910]: https://github.com/home-assistant/home-assistant/pull/11910 +[#11915]: https://github.com/home-assistant/home-assistant/pull/11915 +[#11916]: https://github.com/home-assistant/home-assistant/pull/11916 +[#11923]: https://github.com/home-assistant/home-assistant/pull/11923 +[#11925]: https://github.com/home-assistant/home-assistant/pull/11925 +[#11930]: https://github.com/home-assistant/home-assistant/pull/11930 +[#11936]: https://github.com/home-assistant/home-assistant/pull/11936 +[#9534]: https://github.com/home-assistant/home-assistant/pull/9534 +[@BastianPoe]: https://github.com/BastianPoe +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@Cinntax]: https://github.com/Cinntax +[@DanNixon]: https://github.com/DanNixon +[@GregoryDosh]: https://github.com/GregoryDosh +[@Kane610]: https://github.com/Kane610 +[@PRabahy]: https://github.com/PRabahy +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@Rendili]: https://github.com/Rendili +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@amelchio]: https://github.com/amelchio +[@andrewdolphin]: https://github.com/andrewdolphin +[@andrey-git]: https://github.com/andrey-git +[@angel12]: https://github.com/angel12 +[@arcsur]: https://github.com/arcsur +[@arsaboo]: https://github.com/arsaboo +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@basschipper]: https://github.com/basschipper +[@benleb]: https://github.com/benleb +[@bitglue]: https://github.com/bitglue +[@brainexe]: https://github.com/brainexe +[@ciotlosm]: https://github.com/ciotlosm +[@cnrd]: https://github.com/cnrd +[@covrig]: https://github.com/covrig +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@dfiel]: https://github.com/dfiel +[@dingusdk]: https://github.com/dingusdk +[@drndos]: https://github.com/drndos +[@fabaff]: https://github.com/fabaff +[@glpatcern]: https://github.com/glpatcern +[@heydonms]: https://github.com/heydonms +[@hthiery]: https://github.com/hthiery +[@i-am-shodan]: https://github.com/i-am-shodan +[@iliketoprogram14]: https://github.com/iliketoprogram14 +[@ioangogo]: https://github.com/ioangogo +[@jeradM]: https://github.com/jeradM +[@jinnerbichler]: https://github.com/jinnerbichler +[@jkoelker]: https://github.com/jkoelker +[@jpjodoin]: https://github.com/jpjodoin +[@karlkar]: https://github.com/karlkar +[@keesschollaart81]: https://github.com/keesschollaart81 +[@kennedyshead]: https://github.com/kennedyshead +[@leppa]: https://github.com/leppa +[@markferry]: https://github.com/markferry +[@michaelarnauts]: https://github.com/michaelarnauts +[@mu4yu3]: https://github.com/mu4yu3 +[@nickovs]: https://github.com/nickovs +[@nkaminski]: https://github.com/nkaminski +[@nkgilley]: https://github.com/nkgilley +[@olskar]: https://github.com/olskar +[@philklei]: https://github.com/philklei +[@postlund]: https://github.com/postlund +[@pvizeli]: https://github.com/pvizeli +[@robhuls]: https://github.com/robhuls +[@rofrantz]: https://github.com/rofrantz +[@rytilahti]: https://github.com/rytilahti +[@sdague]: https://github.com/sdague +[@shortbloke]: https://github.com/shortbloke +[@soberstadt]: https://github.com/soberstadt +[@starkillerOG]: https://github.com/starkillerOG +[@steffenslavetinsky]: https://github.com/steffenslavetinsky +[@syssi]: https://github.com/syssi +[@tinloaf]: https://github.com/tinloaf +[@tschmidty69]: https://github.com/tschmidty69 +[@ttroy50]: https://github.com/ttroy50 +[@w1ll1am23]: https://github.com/w1ll1am23 +[@zabuldon]: https://github.com/zabuldon +[alarm_control_panel.mqtt docs]: https://home-assistant.io/components/alarm_control_panel.mqtt/ +[alexa docs]: https://home-assistant.io/components/alexa/ +[asterisk_mbox docs]: https://home-assistant.io/components/asterisk_mbox/ +[axis docs]: https://home-assistant.io/components/axis/ +[binary_sensor.deconz docs]: https://home-assistant.io/components/binary_sensor.deconz/ +[binary_sensor.hive docs]: https://home-assistant.io/components/binary_sensor.hive/ +[binary_sensor.ihc docs]: https://home-assistant.io/components/binary_sensor.ihc/ +[binary_sensor.maxcube docs]: https://home-assistant.io/components/binary_sensor.maxcube/ +[binary_sensor.rfxtrx docs]: https://home-assistant.io/components/binary_sensor.rfxtrx/ +[binary_sensor.wink docs]: https://home-assistant.io/components/binary_sensor.wink/ +[binary_sensor.workday docs]: https://home-assistant.io/components/binary_sensor.workday/ +[binary_sensor.xiaomi_aqara docs]: https://home-assistant.io/components/binary_sensor.xiaomi_aqara/ +[camera.foscam docs]: https://home-assistant.io/components/camera.foscam/ +[camera.onvif docs]: https://home-assistant.io/components/camera.onvif/ +[climate docs]: https://home-assistant.io/components/climate/ +[climate.daikin docs]: https://home-assistant.io/components/climate.daikin/ +[climate.econet docs]: https://home-assistant.io/components/climate.econet/ +[climate.ephember docs]: https://home-assistant.io/components/climate.ephember/ +[climate.eq3btsmart docs]: https://home-assistant.io/components/climate.eq3btsmart/ +[climate.hive docs]: https://home-assistant.io/components/climate.hive/ +[climate.nest docs]: https://home-assistant.io/components/climate.nest/ +[climate.sensibo docs]: https://home-assistant.io/components/climate.sensibo/ +[climate.wink docs]: https://home-assistant.io/components/climate.wink/ +[cover.homematic docs]: https://home-assistant.io/components/cover.homematic/ +[cover.lutron docs]: https://home-assistant.io/components/cover.lutron/ +[cover.tahoma docs]: https://home-assistant.io/components/cover.tahoma/ +[cover.wink docs]: https://home-assistant.io/components/cover.wink/ +[cover.xiaomi_aqara docs]: https://home-assistant.io/components/cover.xiaomi_aqara/ +[deconz docs]: https://home-assistant.io/components/deconz/ +[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.tomato docs]: https://home-assistant.io/components/device_tracker.tomato/ +[device_tracker.unifi_direct docs]: https://home-assistant.io/components/device_tracker.unifi_direct/ +[ecobee docs]: https://home-assistant.io/components/ecobee/ +[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/ +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[hassio docs]: https://home-assistant.io/components/hassio/ +[hive docs]: https://home-assistant.io/components/hive/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[hue docs]: https://home-assistant.io/components/hue/ +[ihc docs]: https://home-assistant.io/components/ihc/ +[ihc.const docs]: https://home-assistant.io/components/ihc.const/ +[ihc.ihcdevice docs]: https://home-assistant.io/components/ihc.ihcdevice/ +[iota docs]: https://home-assistant.io/components/iota/ +[light.deconz docs]: https://home-assistant.io/components/light.deconz/ +[light.decora docs]: https://home-assistant.io/components/light.decora/ +[light.flux_led docs]: https://home-assistant.io/components/light.flux_led/ +[light.greenwave docs]: https://home-assistant.io/components/light.greenwave/ +[light.hive docs]: https://home-assistant.io/components/light.hive/ +[light.hyperion docs]: https://home-assistant.io/components/light.hyperion/ +[light.ihc docs]: https://home-assistant.io/components/light.ihc/ +[light.tplink docs]: https://home-assistant.io/components/light.tplink/ +[light.wemo docs]: https://home-assistant.io/components/light.wemo/ +[light.xiaomi_aqara docs]: https://home-assistant.io/components/light.xiaomi_aqara/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[lutron docs]: https://home-assistant.io/components/lutron/ +[map docs]: https://home-assistant.io/components/map/ +[media_player.samsungtv docs]: https://home-assistant.io/components/media_player.samsungtv/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.yamaha docs]: https://home-assistant.io/components/media_player.yamaha/ +[notify.clicksend docs]: https://home-assistant.io/components/notify.clicksend/ +[notify.prowl docs]: https://home-assistant.io/components/notify.prowl/ +[plant docs]: https://home-assistant.io/components/plant/ +[rfxtrx docs]: https://home-assistant.io/components/rfxtrx/ +[scene docs]: https://home-assistant.io/components/scene/ +[sensor.alpha_vantage docs]: https://home-assistant.io/components/sensor.alpha_vantage/ +[sensor.linux_battery docs]: https://home-assistant.io/components/sensor.linux_battery/ +[sensor.bme680 docs]: https://home-assistant.io/components/sensor.bme680/ +[sensor.deconz docs]: https://home-assistant.io/components/sensor.deconz/ +[sensor.etherscan docs]: https://home-assistant.io/components/sensor.etherscan/ +[sensor.fixer docs]: https://home-assistant.io/components/sensor.fixer/ +[sensor.hive docs]: https://home-assistant.io/components/sensor.hive/ +[sensor.ihc docs]: https://home-assistant.io/components/sensor.ihc/ +[sensor.iota docs]: https://home-assistant.io/components/sensor.iota/ +[sensor.metoffice docs]: https://home-assistant.io/components/sensor.metoffice/ +[sensor.miflora docs]: https://home-assistant.io/components/sensor.miflora/ +[sensor.min_max docs]: https://home-assistant.io/components/sensor.min_max/ +[sensor.mold_indicator docs]: https://home-assistant.io/components/sensor.mold_indicator/ +[mychevy docs]: https://home-assistant.io/components/mychevy/ +[sensor.openweathermap docs]: https://home-assistant.io/components/sensor.openweathermap/ +[sensor.random docs]: https://home-assistant.io/components/sensor.random/ +[sensor.teksavvy docs]: https://home-assistant.io/components/sensor.teksavvy/ +[sensor.xbox_live docs]: https://home-assistant.io/components/sensor.xbox_live/ +[sensor.xiaomi_aqara docs]: https://home-assistant.io/components/sensor.xiaomi_aqara/ +[sensor.yr docs]: https://home-assistant.io/components/sensor.yr/ +[snips docs]: https://home-assistant.io/components/snips/ +[switch.fritzdect docs]: https://home-assistant.io/components/switch.fritzdect/ +[switch.hive docs]: https://home-assistant.io/components/switch.hive/ +[switch.ihc docs]: https://home-assistant.io/components/switch.ihc/ +[switch.snmp docs]: https://home-assistant.io/components/switch.snmp/ +[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/ +[switch.xiaomi_aqara docs]: https://home-assistant.io/components/switch.xiaomi_aqara/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[system_log docs]: https://home-assistant.io/components/system_log/ +[tahoma docs]: https://home-assistant.io/components/tahoma/ +[tts.google docs]: https://home-assistant.io/components/tts.google/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[waterfurnace docs]: https://home-assistant.io/components/waterfurnace/ +[wemo docs]: https://home-assistant.io/components/wemo/ +[wink docs]: https://home-assistant.io/components/wink/ +[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[@martinhjelmare]: https://github.com/martinhjelmare +[@frenck]: https://github.com/frenck \ No newline at end of file diff --git a/source/hassio/index.markdown b/source/hassio/index.markdown index 21b11a2e050..d1da527f06c 100644 --- a/source/hassio/index.markdown +++ b/source/hassio/index.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +redirect_from: /components/hassio/ --- Hass.io turns your Raspberry Pi (or another device) into the ultimate home automation hub powered by Home Assistant. With Hass.io you can focus on integrating your devices and writing automations. diff --git a/source/images/blog/2018-01-0.62/components.png b/source/images/blog/2018-01-0.62/components.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3ecb92c770ab7cbcc819dc248613878028d792 GIT binary patch literal 23954 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 Tva8SkN)1@cK(pqN