From 01fa2610f186576f4a13a9d696a6c7d89346ac13 Mon Sep 17 00:00:00 2001 From: Josh Shoemaker Date: Mon, 30 Jul 2018 23:01:27 -0400 Subject: [PATCH 01/38] Add documentation and logo for Aladdin Connect cover (#5903) * Add documentation and logo for Aladdin Connect cover * Add ha_iot_class to header --- .../cover.aladdin_connect.markdown | 41 ++++++++++++++++++ .../supported_brands/aladdin_connect.png | Bin 0 -> 7606 bytes 2 files changed, 41 insertions(+) create mode 100644 source/_components/cover.aladdin_connect.markdown create mode 100644 source/images/supported_brands/aladdin_connect.png diff --git a/source/_components/cover.aladdin_connect.markdown b/source/_components/cover.aladdin_connect.markdown new file mode 100644 index 00000000000..ca3576dce58 --- /dev/null +++ b/source/_components/cover.aladdin_connect.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "Genie Aladdin Connect Cover" +description: "Instructions how to integrate Genie Aladdin Connect garage door covers into Home Assistant." +date: 2018-07-26 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: aladdin_connect.png +ha_category: Cover +ha_release: 0.75 +ha_iot_class: "Cloud Polling" +--- + +The `aladdin_connect` cover platform lets you control Genie Aladdin Connect garage doors through Home Assistant. + +

+Only doors that are owned by your Aladdin Connect account will be available. Doors that your account has been granted shared access to are not yet supported. +

+ +To use your Aladdin Connect cover in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +cover: + - platform: aladdin_connect + username: user@email.com + password: password +``` + +{% configuration %} +username: + description: Your Aladdin Connect account username. + required: true + type: string +password: + description: Your Aladdin Connect account password. + required: true + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/aladdin_connect.png b/source/images/supported_brands/aladdin_connect.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b8dbc1fbb9c5a92f6ae3b29830571d6674c904 GIT binary patch literal 7606 zcmZ8`1yq|&({?EClu{@jiWPTvX-V-GDei8;DK5bZlu}x(c#BJ*NT9e=fkSm<<>wU?_ziSS0RZUPUMef-zBN0@ZXL1d_lWkvZ^BZc zmGV>%n=$2m9%f~cjPqy_fU$((gWK~W!KL#ZMmHd3E{qsk)Iyw};)%PeZ8S3toUU>= zd*{SeYdEl}yt#aIG)S)ll2NL2yIfozIx=*#zu4@jK!&9-Mx=*x|0FIWiU8t8(CAWQ zp_d{h$q&iN$vq`6SBuRF+9^ZWZ=SUnud-u^F5|b8|KaXE=8n1q;OGe|qK78ao8sTJ z;SzC_A$&p1H`2W~E|LHFk%VVDMaeNm-~ru4tzim3V@ICq3lIqOlW8+1SC-69f`k~> z%@FduD+mDLq-H{o7;>VGX(2+a)|pXd(Y;p5{=Bv?r81ia|Pc}q;v z|J}1gb#qjQsNuowLAX@B%83TSt^0q$B<)#zC@z}GYdbbxeZ!&LZ1P4-T&Gmx({ceB zDeDj}|Nm-O)BGzt=Fak5L_?eB>OA#Q=Dz6{RB>N1~4^&1~a-0D-FU=WqrM52ca@A(LT3-eGKI#PtH zqo5;&)snHdorJqS3mYwTg(9bZwLa>+)(JJv{*SXnQ?3#HSMnkCwpt)2qP9x6K*haX zq7`+dciLN3O)L_Q2DwwtzcxVsz4pUtaU~QI;zqb4ex?6l8r-xe?ySjT&U2eySNzv= zv$}3?DB9KL0)NOxH_u=Yp=8_jd`t~D%0D8RE?sl9u9g35-)z&5I|Ruv+pvAwhxMc^ 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 SF{0b5fS1oTm7$6j5&r{r0l9_% literal 0 HcmV?d00001 From 7e05f3f845888e7f8c564dec842a547778da9c1f Mon Sep 17 00:00:00 2001 From: Andrey Kupreychik Date: Tue, 31 Jul 2018 16:56:53 +0700 Subject: [PATCH 02/38] Changed documentation to comply with https://github.com/home-assistant/home-assistant/pull/15511 (#5933) --- source/_components/device_tracker.keenetic_ndms2.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/device_tracker.keenetic_ndms2.markdown b/source/_components/device_tracker.keenetic_ndms2.markdown index aec5ac8a522..d2d9fc506be 100644 --- a/source/_components/device_tracker.keenetic_ndms2.markdown +++ b/source/_components/device_tracker.keenetic_ndms2.markdown @@ -29,7 +29,8 @@ device_tracker: Configuration variables: - **host** (*Required*): The IP address of your router, e.g., 192.168.1.1. -- **username** (*Required*): The username to login into the router (user should have read access to web interface of the router). +- **port** (*Optional*): The Telnet port of your router. Default is 23. +- **username** (*Required*): The username to login into the router (user should have read access to telnet interface of the router). - **password** (*Required*): The password for the specified username. - **interface** (*Optional*): Ihe internal name of the interface to get devices connected to. Default is 'Home'. For expert users only. From 4392c3a01007108f3435da660414c7b04d817e4c Mon Sep 17 00:00:00 2001 From: Marius Date: Tue, 31 Jul 2018 19:54:53 +0300 Subject: [PATCH 03/38] Prepared beta changelog (#5928) --- source/lovelace/changelog.markdown | 86 +++++++++++++++++++----------- 1 file changed, 56 insertions(+), 30 deletions(-) diff --git a/source/lovelace/changelog.markdown b/source/lovelace/changelog.markdown index 729242721c2..037300e1464 100644 --- a/source/lovelace/changelog.markdown +++ b/source/lovelace/changelog.markdown @@ -9,6 +9,30 @@ sharing: true footer: true --- +## {% linkable_title Changes in 0.75.0b0 %} + +### Breaking changes +- 📣 [glance card]: `turn-on` replaced with `call-service` + +### All changes +- 📣 Add support for CSS imports ❤️ +- 📣 New card type: `conditional-card` ❤️ - Drop your [entities filter card] hacks +- 📣 [picture glance card]: Add support for custom icons +- 📣 [picture entity card]: Supports hiding name and/or state +- 📣 [glance card]: `turn-on` replaced with `call-service` +- 📣 [glance card]: Allow selectively empty names +- 📣 [picture elements card]: `state-label` now supports prefix and suffix +- 📣 [entities card]: Row dividers +- 📣 [entities card] and [glance card]: Custom icons support +- 📣 [entities card]: Add call service support to the rows +- 🔧 [entities card]: Climate entities row available again +- 🔧 [entities card]: Automation and vacuum are again toggleable +- 🔧 [entities card]: Weblinks now work +- 🔧 [entities card]: Groups as toggleable entities fix +- 🔧 [entities card]: Fixed toggleable state when entity unavailable +- 🔧 [entities card]: Fix header toggle for entity objects +- 🔧 [history graph card]: Fix cache of image between views + ## {% linkable_title Changes in 0.74.0 %} - ❤️ [Lovelace card gallery](https://home-assistant-lovelace-gallery.netlify.com/) - 🔧 Async communication improvements @@ -48,7 +72,7 @@ footer: true ### Cards - 📣 New card: `map` that allows showing `device_tracker` entities on a map card -- 📣 `entities` card now support `type: custom:state-card-custom` for the entities list +- 📣 [entities card] card now support `type: custom:state-card-custom` for the entities list ## {% linkable_title Changes in 0.73.0 %} @@ -64,12 +88,12 @@ footer: true ### Cards -- 📣 `picture-entity` allow hiding of infobar using `show_info: false` -- 📣 `picture-entity` now supports `tap_action` parameter allowing you to switch from `on`/`off` to `more-info-dialog` -- 📣 `picture-glance` now supports `navigation_path` -- `picture-entity` renamed `title` to `name` -- `picture-elements` renamed `path` to `navigation_path` -- ‼️ `camera-preview` card removed, features added to `picture-entity` and `picture-glance` +- 📣 [picture entity card] allow hiding of infobar using `show_info: false` +- 📣 [picture entity card] now supports `tap_action` parameter allowing you to switch from `on`/`off` to `more-info-dialog` +- 📣 [picture glance card] now supports `navigation_path` +- [picture entity card] renamed `title` to `name` +- [picture elements card] renamed `path` to `navigation_path` +- ‼️ `camera-preview` card removed, features added to [picture entity card] and [picture glance card] ## {% linkable_title Changes in 0.73.0b3 %} @@ -80,16 +104,16 @@ footer: true ### Cards - 📣 New card: `picture` for triggering navigation and services -- 📣 `picture-elements` now supports `navigation` type -- 📣 `picture-entity` now supports `camera_image` -- 📣 `picture-glance` now supports `camera_image` -- 📣 `picture-glance` now supports `state_image` and `entity` like `picture-entity` -- 📣 `entity-filter` now supports custom name for entities like `glance` and `entities` -- `entities` and `glance` custom titles now use `name` not `title` -- `entity-filter` now uses `entities` as a static list to filter state against -- `entity-filter` uses `state_filter` array instead of `filter` object -- 🔧 Fix wrapping and padding for `service-button` in `picture-elements` -- ‼️ `entity-filter` no longer allows to show all entities or a full domain +- 📣 [picture elements card] now supports `navigation` type +- 📣 [picture entity card] now supports `camera_image` +- 📣 [picture glance card] now supports `camera_image` +- 📣 [picture glance card] now supports `state_image` and `entity` like [picture entity card] +- 📣 [entity filter card] now supports custom name for entities like `glance` and [entities card] +- [entities card] and `glance` custom titles now use `name` not `title` +- [entity filter card] now uses [entities card] as a static list to filter state against +- [entity filter card] uses `state_filter` array instead of `filter` object +- 🔧 Fix wrapping and padding for `service-button` in [picture elements card] +- ‼️ [entity filter card] no longer allows to show all entities or a full domain ## {% linkable_title Changes in 0.73.0b2 %} @@ -101,14 +125,14 @@ footer: true - `column` renamed to `vertical-stack` - `row` renamed to `horizontal-stack` -- `picture-elements` new `state-badge` using `ha-state-label-badge` -- `picture-elements` renamed `state-badge` to `state-icon` -- `picture-elements` renamed `state-text` to `state-label` -- `picture-elements` moved/renamed `service.data` to `service_data` -- `picture-elements` combined `service.domain` and `service.server` into `service` -- 📣 `entities` allow custom title just like `glance` -- 📣 `entity-filter` allow auto-hide if empty using `show_empty: false` -- 🔧 Fix card size calculation `horizontal-stack`/`vertical-stack` +- [picture elements card] new `state-badge` using `ha-state-label-badge` +- [picture elements card] renamed `state-badge` to `state-icon` +- [picture elements card] renamed `state-text` to `state-label` +- [picture elements card] moved/renamed `service.data` to `service_data` +- [picture elements card] combined `service.domain` and `service.server` into `service` +- 📣 [entities card] allow custom title just like `glance` +- 📣 [entity filter card] allow auto-hide if empty using `show_empty: false` +- 🔧 Fix card size calculation `horizontal-stack`/`vertical-stack` ## {% linkable_title Changes in 0.73.0b0 %} @@ -122,14 +146,14 @@ footer: true ### Cards -- 📣 New card: `picture-elements` +- 📣 New card: [picture elements card] - 📣 New card: `column` - 📣 New card: `row` - 📣 `glance` allow custom title for entities - rename your entity only in this card -- 📣 `entities` toggle button in a header can now be hidden using `show_header_toggle: false` -- `entity-picture` renamed `picture-entity` to be consistent with `picture-glance` -- `entity-filter` removed `card_config` and made `card` property an object -- 🔧 Fix use of groups in `picture-entity` +- 📣 [entities card] toggle button in a header can now be hidden using `show_header_toggle: false` +- `entity-picture` renamed [picture entity card] to be consistent with [picture glance card] +- [entity filter card] removed `card_config` and made `card` property an object +- 🔧 Fix use of groups in [picture entity card] - 🔧 Fix the title in `glance` to avoid overlapping ## {% linkable_title Changes in 0.72.1 %} @@ -147,4 +171,6 @@ footer: true [history graph card]: /lovelace/history-graph/ [picture glance card]: /lovelace/picture-glance/ [picture elements card]: /lovelace/picture-elements/ +[picture entity card]: /lovelace/picture-entity/ [entity filter card]: /lovelace/entity-filter/ +[entities card]: /lovelace/entities/ From a90bd64f5f4e743b22345ce41c13fa21e0da5d7e Mon Sep 17 00:00:00 2001 From: Diogo Gomes Date: Tue, 31 Jul 2018 20:28:06 +0100 Subject: [PATCH 04/38] Remove notify.telstra #15757 (#5934) --- source/_components/notify.telstra.markdown | 39 --------------------- source/images/supported_brands/telstra.png | Bin 12094 -> 0 bytes 2 files changed, 39 deletions(-) delete mode 100644 source/_components/notify.telstra.markdown delete mode 100644 source/images/supported_brands/telstra.png diff --git a/source/_components/notify.telstra.markdown b/source/_components/notify.telstra.markdown deleted file mode 100644 index 4297cfc69f1..00000000000 --- a/source/_components/notify.telstra.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Telstra" -description: "Instructions on how to add Telstra API notifications to Home Assistant." -date: 2016-10-19 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: telstra.png -ha_category: Notifications -ha_release: 0.31 ---- - - -The `telstra` notification platform allows you to deliver Home Assistant notifications to Australian phone numbers over the [Telstra SMS API](https://dev.telstra.com/content/sms-api-0). - -To enable the Telstra notifications in your installation, you must first create an account and API app over at [dev.telstra.com](https://dev.telstra.com/). The free tier allows for a maximum of 1000 free messages. - -After your API app is approved, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - name: NOTIFIER_NAME - platform: telstra - consumer_key: TELSTRA_API_CONSUMER_KEY_HERE - consumer_secret: TELSTRA_API_CONSUMER_SECRET_HERE - phone_number: SMS_RECIPIENT_PHONE_NUMBER_HERE -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **consumer_key** (*Required*): The consumer key of your Telstra API app. -- **consumer_secret** (*Required*): The consumer secret of your Telstra API app. -- **phone_number** (*Required*): The phone number of where the notifications will be sent. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/images/supported_brands/telstra.png b/source/images/supported_brands/telstra.png deleted file mode 100644 index 89982d107e2bea640249fa7b9237468c8b46855f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12094 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 e7r@ru#L~?3{{|SGSIm3@0Mg Date: Wed, 1 Aug 2018 11:06:08 +0200 Subject: [PATCH 05/38] Documentation for deCONZ switch platform (#5937) --- source/_components/switch.deconz.markdown | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 source/_components/switch.deconz.markdown diff --git a/source/_components/switch.deconz.markdown b/source/_components/switch.deconz.markdown new file mode 100644 index 00000000000..e55a875cc8e --- /dev/null +++ b/source/_components/switch.deconz.markdown @@ -0,0 +1,25 @@ +--- +layout: page +title: "deCONZ Switches" +description: "Instructions on how to integrate Zigbee switches from deCONZ into Home Assistant." +date: 2018-07-31 23:32 +sidebar: true +comments: false +sharing: true +footer: true +logo: deconz.jpeg +ha_category: Switch +ha_release: "0.76" +ha_iot_class: "Local Push" +--- + +See the [deCONZ main component](/components/deconz/) for configuration instructions. + +The `Entity Id` names will be `switch.device_name`, where `device_name` is defined in deCONZ. + +Note that devices in the switch platform identify as lights, so there is a manually curated list that defines which "lights" are switches. + +#### {% linkable_title Verified supported switches %} + +- Innr SP120 +- Osram Outdoor plug From 453e9809d27eb562f777626b2bb6f29f0ef743cf Mon Sep 17 00:00:00 2001 From: Wim Haanstra Date: Thu, 2 Aug 2018 09:44:42 +0200 Subject: [PATCH 06/38] Add RitAssist support page (#5549) * RitAssist documentation added Added RitAssist device tracker documentation. * Add RitAssist logo image * :pencil2: Minor tweaks * :arrow_up: Upped ha_release to 0.73 * Added FleetGO.com and attribute descriptions * :arrow_up: ha_release to 0.74 * Add ha_iot_class and update version --- .../device_tracker.ritassist.markdown | 82 ++++++++++++++++++ source/images/supported_brands/ritassist.png | Bin 0 -> 32116 bytes 2 files changed, 82 insertions(+) create mode 100644 source/_components/device_tracker.ritassist.markdown create mode 100644 source/images/supported_brands/ritassist.png diff --git a/source/_components/device_tracker.ritassist.markdown b/source/_components/device_tracker.ritassist.markdown new file mode 100644 index 00000000000..e8f170f2026 --- /dev/null +++ b/source/_components/device_tracker.ritassist.markdown @@ -0,0 +1,82 @@ +--- +layout: page +title: "RitAssist" +description: "Instructions on how to use a RitAssist as a device tracker." +date: 2018-06-15 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ritassist.png +ha_category: Presence Detection +ha_iot_class: Cloud Polling +ha_release: 0.76 +--- + +This platform allows you to integrate your vehicles equipped with [RitAssist](https://ritassist.nl/) or [FleetGO](https://fleetgo.com) hardware into Home Assistant. It allows you to see certain details about your vehicle, but also shows your vehicle on the map. + +## API key +To use this component, you need an **API key** and **API secret**, which can be requested by contacting [info@fleetgo.com](mailto:info@fleetgo.com?subject=API%20Key). + +## Configuration +To use this device tracker in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: ritassist + client_id: YOUR_CLIENT_ID + client_secret: YOUR_CLIENT_SECRET + username: YOUR_RITASSIST_USERNAME + password: YOUR_RITASSIST_PASSWORD + include: + - LICENSE_PLATE +``` + +{% configuration %} +client_id: + description: The client ID used to connect to the RitAssist API. + required: true + type: string +client_secret: + description: The client secret used to connect to the RitAssist API. + required: true + type: string +username: + description: Your RitAssist username. + required: true + type: string +password: + description: Your RitAssist password. + required: true + type: string +include: + description: A list of license plates to include, if this is not specified, all vehicles will be added. + required: false + type: strings +{% endconfiguration %} + +See the [device tracker component page](/components/device_tracker/) for instructions on how to configure the people to be tracked. + +## Available Attributes + +| Attribute | Description | +|---|---| +| latitude | The latitude of your vehicle | +| longitude | The longitude of your vehicle | +| altitude | Altitude of your vehicle | +| id | Identifier used to identify your vehicle | +| make | The make of the vehicle | +| model | Model of your vehicle | +| license_plate | License plate number | +| active | If the engine is currently active or not | +| odo | The odometer in kilometers | +| speed | The current speed of your vehicle, in KM/h | +| last_seen | The date and time when your vehicle last communicated with the API | +| fuel_level | Fuel level of the vehicle [1] | +| malfunction_light | Are any malfunction lights burning [1] | +| coolant_temperature | Temperature of the coolant [1] | +| power_voltage | Power voltage measured by the hardware [1] | +| distance_from_home | How far is your vehicle located from your Home Assistant Home location | + +[1] Only available on certain cars and hardware revisions. diff --git a/source/images/supported_brands/ritassist.png b/source/images/supported_brands/ritassist.png new file mode 100644 index 0000000000000000000000000000000000000000..aa335bc2793718fc98515e3c66639145b4d2de1c GIT binary patch literal 32116 zcmeFZ_gj-)w=OEZ2ojn!X(3WXfq(?*EmUb@L6l}dP`W|s9Rxy8=+Y5sDpCXlq)G20 zD1@$5C4fkmwr6<1wa&NBUVESQ2b>?g%?vFb#BD^%9oPcj5l6W=LPm{vZyh2 zDG2%8UGd94xPRUMaqIcSw{&HDPylg4I%nl0%K#Eb_cPui`wf!If-Xs=cmOX%+us zByes*bo3ryo-L~tf1tbW>lo7ivBmn@qa6+f&WS*;i1oBh=x3-~=;ElTUQ>2jb7GE1rHJnD`fRdjgbnJfS zz34j=MdlmUh?_oal6F1V#PXCooDU67B(uu*;zXj9B=~p)Yd;~3RfvaXc(pd>vJWY~ zK%J>u+Ff6Zj(&&T-WePZg$TNHJnDnf5u1c`HHW=(zOI0_8hOu{A)O-OK{R+hWgEFb zFqChnXju5Iw@k-a0kz_m%pw#?O>upx5w~!Vc^$10Ae%nj@pPx?=2;12m@q2+oQ@5C zPRCiGH|tC_z7-}H4E1?4<*#@@d|ee;YPkvj=2(x@%m{`U=c}tw(<9I5g~P1`uW+$I ze(-;S{Ti`hsP91Zzfac~&Tbz%IN`j5vR!9dG*pgN#5u?ztr&=JR|RkPe?S@Pq?ack zEcvZR|D-*#KZP{NN5-OWF;^aw3;gVo2BFnJq0L4)W;vept#^cNRf1fMH1c)^(?Q zhw5DBgbm%)E2Q&FMWSOeaKcuiVz4P;JI7{}XcYoUT2F&q1Jl87$1b0=H{+gI}G z{6dXBV~wA~RVi@)TH=YMCbc})jF|;X%FX35-Sem_bLEa-bkhAMeLBVWzowqHeO71m zUe+!xXU28;KdHu&s$yd=#TXafkn6dolB8)WxpFyHc9woCNh(!(!Br0DKtLKHY1svk z$w!ybT&6qhcuKm6b2?AQT&I4;fjDtn{S_xMGOle1k13+$HlF1N|4iuSlOrIt&9?fVXyJLnzEVqb7QTD0!<|BK{Uj) zIvij}4EV_%S_=)MZ#5i~ z6G)His!Io7S%s%$GPa4!U9>H|w@>08tI(Xu)u??-$3>Pbp-YgN48_0*aG=HD0%G?e z-HzDoi2Agqz`3&U%rpEn5_}bF&>HMB5wcGR_ZXIVQucd~BV1|U(xE=B&0a02}4l%RWWxI`zDLE+?wCp{U)fN1WWD=J>aU>jMOHji+Cg7t ziNKXHyF){RW5GMV?^Lm&TSKyut zR?+F+5PAPLZ3kw>g{#53_A*!!0L53Uu}C9Tbo(O*s)hx+MS7mz;_#0#`#0lWy)@7d z)`dOb0u}^Lg%AO+6S)l{t=#?K*<|A})cNkwlgP0smWW&`fF>aFI(rbfc<3{GoZ0tV zZX>~#3(H5Aof$0x%i6`zP*UJL=@)>v>vSTl!bLFn!cWUgCnSBu`QnUkaR zVc-)sE<8{CigYKGFbEU#mky>9tH_<~9lC*Qhl&7fU?$|OW139(Hb6-9A5~*RopATt zKA&mLTxsfJSocxBAGR)7lwZi6@6HT9wl_-{z`~7-0$<%F^nOmo-DL0=?Okl5C4Xkm zbPGyD+|FI_K{NwnfhrNK>5c6TAVGp-*0hw3g3!tlLSYqzZd5ur50NVNx9;eX;L!@- zCO6Y-bGIDHG@1A+FdEJR>49|A@+4|Z0{w5zDu1b))&G5YYa2qQ=%!QJRpFnfh++4 zyzvtPeih`DmtW7>p1aT?+pFA`A)>{ouA2Fx?K59GJMj%Iz~5tvX)cY)*2P|TZU~f~ z@K>R`sIlD6F3*p-JTW>3_yIt}qF)crWgYnrnEfT8^j^dnKW729gJDB;CV-F?j`BAyiAN^uU#+Ie&AGj5`=Kf+;e5k$JKn!yDB+@;8b&Ha z6s}&6pXl1r0lurt%Fpt2vU*3&zwC$07~br9tRy2a2ujyAjZugMzZA4TzDm5cI{H?OJ&TvPJa=WwF{#kDwgQ%x2MyJ;)B%zpq9MJV8+wcuJuj zutL>+-|fX2o9%DCI;A2}B*yl@&w6=K=@8v}Um+sWrgA5&8C8e8E$`DHv=u@C#&+^0 zHC4cx@4rASYkzLP89TfJk|HCtR+GszSuw*2Femqz(z&i9|1_zT6EcluegKS#}juHHFBA^p-i~ zYwxrHVxHxC3J?w`;k)G<>1O3W8XPB|ojr;%9VvbetGMjr=*XAD?3!Z|R}@UoJOKZBp>T%Hm`}vAK(y1J?)* z8J@Egu+fM>SVdd+y3k?p*tR|=e~nS zfhV<3*W*zRBmUeu>f$3M^X`Z)B<84S3UH@nMOjDYTN0DwJwHqbm-fS(;zay50r2OL z>ewg~4}i@!{oF(-gx%TsJ6BD^bJle6S2YZ3u#4_uwX6D*_4`bJd(u)vK~^>0nFo+X{k|l#k4qu8GWm#1s_-)Z zs}~R`eo)I<;NUr48p8hAX^yL=>A8=LUuGkk62r+4e5HgV;_7SezHGFDxZE#hx}8-m zw7wCHi};O8wjnyy@uX}se>9!%2k;*)T)^EYdWat=p0KtJQO}1B76=QxwmBXMcT$j2 zIt`o!xMV=`c@a}uDVuu0~D>v8`c!&W55XbEkNmDCFcvJX%ClZU1bk#Xboo=caZk0OyAX2(J8QS2w9b?mvYYzQ5N29D$lK{>TxS@55Mu z!Aq9%l=bOt13(Xt=yui&(HhAQnV$pZRR6+3_9))N?MsVG?(I0EP#zfe=qY%}+Qw14 zG$ME2$D=8V=<<|4Z1HA9KAWsh2jVaSL}{nnIUjK$F>mH)CDf685U7t0@wsGUeQK=e znjgcA<;Ey+DP1B4;@fQWa;!#|@BN3{V~sVaDey0W_wppjRe^e!efHZaXbZc=vQCt9&%>(WHP)rKDEfF)j5&{Nj~N;vhBtM>QblyWy4did2q@`%g5 zf(UC;?705l-rA3U#>6Gwy6^+^1eOCwbWm(u@>4?E^5cfW+6(z2LgrI3vCp zET9xj-$ji*VgR1Qh!?D-2)pj=BUSUZDLyF6D}RI-6#53$82d7}E!EiRlV=LMznl1l z0bRim_`z1#JI;3l%HTQ?!nP43Kdom7*G7Y6csczrKR9=YKBM8V^+N4zicazKTYMNg z0NL5`M7vFdtuN)RSaz>1Qucg~0>=8rjm*&%0GxdOYiB^(afjotTg>X@bP>*iAiqRs zo~d+rO2%ffi*k>ClUtaoi6#Q(%DHNq$msXgaJwGH44=akP;jHTbe_tCopd@1@YM>2 z2A_TB$Kg3!#?yNhR|1vS7 zM@O$m-1{@33GJW~p2as0PrAPBix=wZM}E#p2V7eDP9d#GnSJl>-e9^V6*)?nBw$hxFS%~7dp9RoTU znT>tkh6wYw&#wMB)6I%owk7gsk_Zs0B|P8x1;cnq89{O4mqhYFFH=*3G8E<=`Iwv) zW->;jW5ZyVo)dhhAsxE4QCDcG8DM=*m61Pw8G+_9?;m^5A@aNRV0v)Zf|T0AZqTyQX|YksL&`+9 zpg{bnG{p~zpw_UCldBq2k8ni6Z5c!$EI-GT-oG&KuQF@;n_X)+*Dj1C#j^Wo7lShn z2V9i0$LsJ9#?m^+jz^G@ma)u0=KIUjW3KAf_oN);UNX9EQmd%UiHI<-BK1L&| z(gR6``hgEh-g8<=J(_9$8QySqLK~Z-QWHP1tX5s_peFobyCq;j*~MRR_<*6n{VabS z1|AfQwHMV`URtJT>Y<^sXtrASe>z5E9ZU+W*lWNp0A*6Hc0Z`{U5Qn;IU3+vcIczj zqXcZ%rt`PGg=?GEHTxC^xF$Jlh<+YXXQWF*^Wv+sQo!n2JiG#=nyEH+MhFT(e0$}< z{2p0AxQ0|V1?5cv4N%U%NoVK6iK2wTo)@QMW@aZmju?$q>FApQZL6uEPX&Tt)A1Is z5sPAeA~pYK;`<|U38M?@Fg9CN8B9<-c{V^HUd)yfxmVsQBEhkNL zDW0^08vBgbI#j!qCi3ZI{ZHe@CoAcXUrn);Ge}GgoPX;rMAh%jBd+*YYD^lQ2x_f_ zv`NjBvKW|g2~aS+ds%&d7K}38vWkY)1p(&v)|;L2+G@Oq>tWE6wU8dP2*@UFgD5>j zdBnMmO7J)+Uj@T(0D1S1BbycrsFd|BWtr`s1A#qta?@cmFB=BBF?=d-F-a*-|cby&lfZ zmF+zI>hhR$MeLn%{mQEJ*J~#}i1kML%h6Z>eE7!ZKnY594ytSJCzeZrX@#iKz6*Ch z@er$gD=rM8{FG-P(NWMH*Zqd|g%?S@`GpygPOv&0IK12Tf39~P$!`|$gir^@x7omI zhA50BY5CgN-YLf=O*EyNY!myZKb!)p_m^6;DpY8&R~I;G_f%@>+}lLA4a8;2Lq5&o-P{9KLXJX2f`!YaQx zzzm3%PW3>-`TRDTF$ie6A4Rk_UljUrTT5u8BykhVr0#08W|e=kflZro3R7c~AmCH< zjk=8-1PZVCQwi}N9-Pu=o*1WS8gT0VgY~s`t)r$jEB7dUc7%$^nF?BMm@$w%>-=%e z*PN*C47Li#WASp|CX=BDLNJmaL;1G^C=jc4nI|6on}FtPQx9d*oxjcbJ?;8&#vEIg zA+a*m(?oM6yeN;!ESmaJX_DDeIz&ZXP6glRU=}8-Io)sEJn`@owLDTPHR|YxK(zzK z8`9ZqQ>4`VC}2#fhk78C(;=$RmaT_5^F-klV{u;p%(Yrx>i zPAaJ{a=H|`#1@HY)Ucojcw`d@UqGeQ3VvBAQA7FRg)`|y z!jupWcnMAvsBS+MsoehNt}o8Y4uS$SShralbr}@KIA&1T%6#w`9{nl46#s}HSpyd| zuBfjKx_R!H*+6#Q5TGz%>UsdZ6YgeS%5Sdz&U(0{|IY5<_oc`&vefRu2%Py#h6>-~ z*Iq+6cwg%3=jp;Wv~kR;K||lpff^!na%;8_XhT1UQmf-1xF$6ONKeM?o5{ylw8XB( zCEBY+D7+w&J)6~?mHj{Z?_MQ^(U3!?x}mk*p!8^ZdYHmaFjqM}CgN8l0!JVx=0dmC z7YtHWcKlW8z=9*i8kVvlDLhBweLQy~fzlY)X23rD#(m?h{BdeM!WRp~RKNqe>O$a9 zD<+^NWYlhvU2tn&0hI_lt%^cMIX@6$aqp)7OiVVesexJ!&dOI81G2x>I$7)J}D;K2mlXu#l$aKbp2o^ClEPWp>LF5 zqIGRO|9Tp}iTnb!YG5j$d4l{xFICd_QeJ2GF6Pz?t1(!qJSCeLleQB(;0qt{V^jm- zJxwg5C(9NSd{+jPbDA<@bU+Ay^8*sg+~YUT5& zz4fO4=aoVrPAg zOw}Jpr}G}t@n4N!w(rKM%*uwJNcS!_M2@q2sM)YGT9du_m>5n8UO96 z{0MqMx!M>VqPv*)Kl7d2nR(d%O>|kL0A;W8lnQ9iV*%sc8MTCU4ubiah@9rTx2IrX zI8l>Bm&T?a4S?O}06tUU2vm4`r|ku!*RY{mE!OiJV4J;^Ik9w||-dMQeP+2alF7+ivsfCTU`k9ule-C&Eph z0POfa9}*B(!t*LZG5TTpd?dTBSksc?q3gnon+2i+NN%@~Mo zhi)kiEr=5-%f^kWtHaJJ+E1@cAf?9;AA@H+JHGaDE6{?vDy<9nHqFG-{E;7^d}$Ax zk^$Uns@15zePo)--3^subYKGn}Fc0-IT?5~M5r`BneZSPxVfc7n#yw@DoTp6BUpPaND z7I&glsCD#^U|poHG(S?wqu&(hRif}6em$9TW{BtXm!^f^wc@P?p%4zySD~;M+qYU0 z9{tBGfODhwFxTD6Bi+ccv#FPTVAUdO4EMv1Zsw8|gv;J7~BT7GsWkc1xuVdgz@4Y9`Un8}8X z*NM5jHg)FcJR@;CF+XL{U3_lNsMd{y)xd}FBShhVtL8|o=FQP%P-*MYM>s!FM<={I zf5{!^#&|JbkVg}v$4)PS^=V~@{u@ig0uDDp4 zY^vsYs}$TH6D+Yg=(;qZyeeqBBYr9jDR&dW;!ihkM&AzhYhpRCgz3&O2jsS5&+E98 zOMp88MMmNdT8$dk=(^f_w`NmL?GayHh6Y;0g_v}Xgv)OGK5mX4* zH(y+o%f6E>-R0aJVYR1c86SPCzh?6duMmJg_zA*WojNF7s+)$NXL3iN(S2n<`qo55 zE?+OtYfzyEJ}&&-Gbi3wiiKKp%-I06F53?GJ+5OLx!KZ`c%&1oR} zZtl!1bxKvTr?}u5|J1m?+}gMmpR`r2a=E)6EjH1KHi-M3Q zSX%cOh2|$`f#P_5M(cK*aT^bh&Ohfe>I>wU`oLnpv&A==K?lbAB2*pZ`0^RA47axM ze|o9Ww~6KPWYw{#?{>1x=lcVEwVHXa@dfTtj~mW<9d*wLU1SbEwKt!&gz`7QGs;Ed z+F_u0tP9scXe@unU!U%;*nh_-%gBNSS=m|$24)%pfL44G9Mqwp2f#9_B~_(GR?9au z#5U6atxtE+r&3=Ft&ybpVZK`C$zVqmz!MU{K}<96Z6#Iiy|QlV8aaL*agHB@QE|2o zE&;qnw-LR`b+`N{Q{-o=yk5}OPk-!pc0b0>Oao1nc;Cp~ZiC?E-Ul0={7y@JLMx1Y zIQLNR7Q;l?+Faj5UeH1wEF@Avn7^9245qwgVfXN&$;^o=XceeH&qiOZLC+sIeFD9a ztP*GAHp){|+i)cSj1~L1_KK*p$DnAf>M-=r?9p4tO+6gp4dFln?z&qI*NmwD7LfLC z`fvJHvJ_le%?AI$bmTFpvSMd1YWYQqG;C^%FsjXdkEZXqdS8C8X2qhf`ul+}ir1>{ zevaunYAx}l=XXZlhxY4gMts5&jKIfKKtoSG1kfa+&gs^Z$7_w;1!a-$6*13m=3q`B z9JnfYCtvO2P33DzAeDw1@l_C(to3qiI=k%sHxqf`K0T7ZZZWF22uUcv%?wgW)14@Z4g+%9=`BM2PghA= z)SE;->bw%Iy}cx%&n4mUP$u(%h+you^8-HPuYfw9jMTr?(r5tO37`Tzd9rCiQfc?4 zTk5n2r2A#yGUs{Bd7uDU`1dtQT3f+IzJjdOix9l=>PDmMR4=}4Q;@Tr1!Q6IK0(=y zHy79EmyZJI6R0DjA96`hg1$3NquZ`LXqlano-!bJuR);K$}Me&-q>M{!7M;qqn@)h zX*qrB_iuNI@Tc%$)t;EwoFC}rx5N&8RoIO8K==Gm&O2pXAkTn)=q#~+Sy6wIp$Vt3 z259vIq@$`N*$}PG*Ft{jr{=(p6ay)os>Zz4?w$X+n+NA|4D?|`U+JpSL1EA#&V6z* z@^h4v8a1I8fMq-pvq9IXOG`{Sqp`!0zzOh@@zK{-g{88l#V(3>pi32oE05MG*61XP zR-?+lpA>8nw9scEraPY6r2xh^4_jwCRVxiTQ%@aVTI4pdLpc{lrKA%ed-f*qtQNuA zMGu4eOwFMSVYygGi zItSIMps&aijk$z}e+;|H;3W@4efJXYM0QSq<#jw4J9tWKPt*@b&0Rpykc>D(kusGr znVua#YS5oPZ31{c6XBNxuo8!(QT5%56nJz8%m$GoP2eNN-Q`q=f`ev%>|mp95R!5k zYvU43?(B3-it7;lI}`{(+9&>P+ey6qr*NOKk9<&Iq)6v&O72nk0pz>^$D$Tt? z7Y_uT=%fsyUX~P4zjMJo#+ffvJ6UlWkZ*?j;cE+%bB%4d+9hJ4bdgCpwEKH0rf%A7_Ex&x`5u)+4|tGq0_X>LvGN(P#kf-5z4c38-y?N^a$Tg{RPb; zAAYhJeCmresOIa{kH`6eC+FuKwu@I;cj(R0r04c`4C*p%r`XcmYWM9-`i1ev;AWVO_FFU$Y)`X)hrM#nskNsUa05Ct3=3|r(k zhfI_%;wEPLKm!0J{8O-+k@PrVXO?_mt)guAWa&Vm$<0$?gwJ_UZ;&qRJyRi}X|!cBjw0iTwdwDC%DceThvtqw|{qGp>lq;d;z38T0n+}zgf zVe^!o>$?WA%D=gzapVzpQk3a8JdO#HjYqS*H=+{GRQfREFHW`787TglBPgz3Bj{06 zyw!HjqrX+GN+hau{&@C0r5fQ}G^V7|X&G)H`$PS5>ZYKp=B4;Hx7)?A zj$mGey`{tX4MWhhivPLH?r@tkx5mLm?4Gw2u*ZfQn#io#@m-zH3NO~iuU0VQ#>_!O zTnxdW)aG#BAG`0<5SFNmx_oBHeqQiihEoMIoMp1^Sitw-SUJDO$Au6%6-I)&M8Ems zxuw-wG#k!Mhgv$T7lFsH)0TdmQ{Wlj(ii+{hhhSo?w!vl?(EL+9-&>_;*QI_K~25k zSWPlqM7cK*67b2-(C_)Zp|hz|X~OKnGEe^Sug|5{vOSQ5@?q`>$PE1;ekn-aS?{Kv zoSO&_(4>3TOb|ob6b%hxeVT$yE*yIVf)dlSG!ZDtp7|#ezH?bK(0U|TxIQ?7F4}QE zUeRE#?|F8iE`8+PrTzR{Ox7_}2(xzOlldyWY+veb0qXJzNgKPmC?$)gy?fsEyMjx4 z)Iq0f<3vfZLN(JpOV0lAn?Pn;V$vaq1=CV$A}TyjYBq7|#~GJmjM~Jq43jw9jOG@# zl-p`}_tgJ-pM!ak^UKL~WN0if+HPIw6OG#wvfbjL1>oqmkb$)-8yc+gI1w~-Y)HG8 zO4maujiy0Tat;1oeC3cT_gL9gGx9xWE#|x}R{{;K!j}{7#=0HHx~QKjw!8d2SDW8- zYq<{OIZ&7IQ@~!dHC492kh5t)RD0vA@9bbs6ro71PO%4iw=$j7SG*RmCvCy9E_u52 zs3L(4x00)BjP)Om8?WE3JQmPfO}p++2B{alpRdsMI<7IA%&vh&UVsMj7U`V#d?AB| z-{{qY(hu7#)pUw#M)a5|T><)v_4mwPQ%@`})o!T-tyV?`x;yBtLg=6 z5wWr68pyEMS1!n{&{-&*G(2S;4pgBITI!JvvYINmJ?VPFYqY2u46T<*KzDCtd1V{~ zy9m%E09h0&GxW(ZB zrRSzj4T&Hb$&fDa>{KTh{Mwg6J7+lzfzsHf=0TUiNR-9&$1V3@QiO2C5*k5^D%zmq zt=|v^G9M{8Q+LIoBKNYbK#$7#z?u+JHSHgGM{7EpHBUn2;qUKFs6?2%ooou&wAUPN zC3R9douFrwlhmdEz6{J{&igPN8akig3q??D^(oD+RnLcG_pXH#yyRYjsg=Q`O!n>7 zgXw-nu12E0V`HCy`6=k{YBpsRqh>t#oF05AUypr!z~Qm#$PXI`b$LBgP%c`EYS90p z-Q~RtB1wSkVeaq)I}%;D*I730n0wbq+?%9QzD%E5+MQ0hUIQ@I;koiyq1K6hJC9AGo{W*h(ecNJT9@z7H;+Tvy#Xo0 zwN<_{V`8aY!HDintDi8#LYJ4>E%R=yS`CVv^=if4hM6E)4;2#J1Vg(zoIL*gOiz}4 z%W^av<_x^eI^>yorED)XdkEZ&?+J=10Cz`!}cm*QsKE`L2ah?WoVTRac!N6iNA zddd#_>~vD)!y!P*1CKPf}I7n&BwAo$BzMxct_;qA%1Mgdh6=@)=hE=w|PIYiR1+(%IDJ zQH_|2qbaF;wg>lLojvKtP&FnHcgA*Vg;xq{Mw#mhzdPTUo-hI&gVv)w_@HDl`WNat ze`b`=R-V2PSQf28C%rcD`&py=fvjHk)wp>^;t>P{Njlj%&qT>C{APd`JDleWCLK(2 z0}XXU=h`HPb$?OyhsyjTXDa1sOUnJ`X)L_EEGukIYHlttMt;_K9iRT_hKNi=?tll6 zCqqr?iI(?@4^D@0&RFbcY5%ND>^|+VP=70!xNNJ$b3njHnKkVABIqae0iHj7`kr*6 z&B*%TbHc}+F>xuE9g%!9rd#Silq+_Fx z;S9194z!T9v|dB7Efv|!I{|D$7xoOm>@A7NZ!?h;at;5(-&7wKh64D)I3uQ#;T4{% z<(3Zzi_dn0ZbLpRi0B-UA>TZi2@|cgUqyS@FUCLSYeU-cy?Wrk8h?`g+$~v3msTMK zJ{GvwQr9#u6z7-7UWZ*?ek1~B3+SY)T{m=UB;VR86GB{3r^Ap7?BbzaS$);6Ovc`sis+)eZftc*QoI_OuR;Q}g3b_RXVo4NxJ&!Uri z!S>pOAlw@pF2pWuvaQL!d_XTHaJ?uDPEtWbU+tRsCA8P$#F6KIR$ZA|1xBBfRN7V zJLk2Jafp;z?};?JuDoV1MKH6d>OF#f)|O9|TJ=osKjFJszpFv3eVWU10y_PCH`i(^ z9_|qXKugPk`C(Ovz>dG-yK9GJz<F*FCw1>y~g+XWG`<*y*Zk z_wuE;MhZa7AX)~TtF@4kRd2K5{(PK8bN*jFNg95^OV)Yzj$GauY}|*1z|*I0Jr0Gs zZ}=M9L##8?dG>u84`zK*#~Z}E=|S*5x{bCf8t+rBv}iFsD=xHvE8>jEP5{p0MM&eS zMX!3b-R%V3O^>+@Ro5X*&6k_mK_Kx>g9I22&Ly47zsJtmn}7QnhmBxe2J=+a&kThV z0gbU$*PkHr*6NqC*V~OkBIc&@blp?jaaQ0dyvr_-#^s>D!kqd zYZ#x7+VX|MjxA5Wt)xC6+$ZZVQ&nC{Q81X>cBewz@`@m{{g^1lW})d06_zBPtF|CB zb@X3CoMqd$?^>AL0i+EO9>ciO)4o+Izms3n1@H`|5dq*}omUY9ULDx zZ_Qhv7c%k#Rv`+5Z(uYzt-j5-%C1w$!~+yM^;T3gm2)~Y{4*2<`~dh<$N3n zI;&4QJ`KX(9-INB0(){9+`1YX8sed&);YAp+a|(z{Qe&JZcfkG=1=NfF@PpOP$=ey zoHlpXzh~6XdjllL{$nsk)JWvlD8L(_;N=*nVEgD>_m@|cBHYef>KpnA;xReY?4X$9 zK1n$(OB~0%sZ6H5#K7PXst63>F{cO*^GOK}E=^t>wU+$XOTqZ_#GAb#R2b(GNHlq6 z`gGD^y>Inarn4*A-rAr?v*yhh)j&*u58l{xOvnUXf9&zPTfezWFa%2i55j0lHxop( zT-R_bI-o%s{9nG59k0!}qDS6APODk+R`2I{$|(2lvx4ouiwih*d(e2)(&`i^Qu)Zk zM^gu;M_mW0x6*ac7?_~ojRI9$J*8+jHcJLl&_u`r2N&T4yK$%0cd_6VU6LWQdJIN2 ze=?^K5e42U{nvX3#5TMA)2B}lm+)x>qndu4-= zJ*~d`)l&HPb7J;SB&`H_$S6SW?_4{uwQwKv>8^!^$${HkdCzavsxtmM<>KR8^mPt? zsd^JqHYNn=XN*lxfaB6I#yH<_7^Hcl{~p#w}LX0%w=Znk)8G zaOe>BU(rGUvTnH(?NZ)=nbTarUcWoZEGlm@Tha26d4 zUD6TpEQNS?YHUo%zn|bQ(w^>};vi#C^xVmrQ{eW* zr9a{qNdb|$Fup)Mc8{U(?)R?~bp@aGFTSC$wCR}l8WRjv0Y_wDqwNe)&sNOp0id@TMNO)|R_l7dRv2y}o&EA)-lWfl^f(2DkWc zU8w{cmOABg&Be@@I}LeD6@21=39%e_(%KNvW$0fWtYcnTCaR)GZfpe#$?)}kWzVlS zPLS>t=fJGDI59T=-zT&K10`PC%|*9q99I`8sDP`xHxhk5Ytk2((vL*ov8XBq^YaM0 zq(RqZf{EMTU_)FcghVHr?Z5TQk}nbmh9}Yk3X5n!HGhJ$-bW*ttTy-WTMS5rFc?Px zrc6EGO9cf_Me3*I6k| zUw$puLXWZ!$p>u()nVE*&O-4$7I!dJ+7b2Nc{evmqGAf)1qD4;|AAgO0>>QG{IDjg zZ&-fq<#{0zTPOs~PDq9K$;Aw_`O?aRONetC0D1m52aH7zXuJL=#Q-r99YZX)EAAT< z1avllWY(-l4wW=>T8uX>d;;wCz)l5l0>E+O6R)F+%F(OnZ`<$k>X%z>#<5P#W>0^- z-5Rm8BC@lIL$1wU%njV~nBUmqOsb^;C}2IWmquLLJM0&K88EB#iwKdVj2xv1x2`wC z*Zf)v%cS`JPu|jnuoAPV3tJn13PvzCtfC=!fRb(Rp!I4<*bw{)z5^Ca>(5#ZPa|H8 ziw-C5A*pUu-_fz~bx?!r}f6Dz4A zZcr0HI$^lGxfc%ZlI}GjleDfm##P?^u#T>a;s9|&pk<6F1$eD>P#FUwM0b<3<|}+M z+NV=CJrUvY{cBJAjAU^JuX*XN!fp-TW$`SaS5Y@WwZy9Z34t3+B1E(7{atmjIg*-r zDeQeliZP#Qt;iM-h{AZ+k!fWp**WIJx zUE`>RG1ew+FpfUn@vcGS_kYX+&av}Cx+S}pdnCuP#mf`_?R!JJ~(06B%G;-9UW z+D(k;hk!YgpOM2|rF$Cr!IG<1KZ63gzy(Cxcg3CY#K0lgyKB-C$^2$>ho}fjhWR-Q z`vtET0=r&h?-YLUYS$to$tnI%KK$>Nb^v3Fn4AcDAnCgKx=fwee(-(Ky{!nRfi$Hu z1_3GsrUt%{&GhHhHnr!Ma@YugJD02C@{BA%i*0jSQSSMrbsScTx&)Yb0?9@c2P4NL z$NYLkX3B-br3(#%wR}W8Xbv1>1$Mq$e++Jc6$a?iQSb?pib#Gw1?oSM`zgk+DB<5A z|3^C$PF>@)1So$E?4=%ag}C=}|IOWq@+j!j1T>k>p(LnLbDE9j9@`o!MJ6nr&>w7F z;a{Q^fns8JfGEeP)-s5gY1`hlR6A*I0I?D*1#%^L3X^M)6s}!7-^?N8)`R8Et4GiS z_H9xwWo$Lo;j$6qGp$AquBiwsoVGcRXpCt-Eh}rYPuxyrO5p=_km~sCvgdfUs!5zNs)WC6=4;P|KN0m zm{E(oUwFeQ*MiPjzTFiEnIud+f8Ti1t>iT`a=z*#VXVj($iHZ3i zFo{kZp@Na6KVj`N`4%hf2pqcu!UiO=Ir-hDaOt>!P@O7M;%%J6Uv$)rkMc=&ekq2z zC7VS#Y3f|X#JXEK9w)(+0)~4%y?^@yAQ2>^YEn;xYhueDx2K;O|?HHuwHmxFi4WmJ&d5ohX&{g_xKyt zMWn&ywp@S(WqnUjz6WSN$Z`KOs&v43o6{CZO`hAqgMi2oKdM6NB_(G%k)&}|&lq^X zGxabK`RfC$!mi`kY@3rbaY{WSRjrlYT2jpRpl>#C0Eo4k@R(^d4GW#g{V}&5I8ou! zD_w697LiB>;QAdc1@shf2}zLje?qn%vkyDdx*g#TR7mFg z&I^C;8y0{Dim@{vCbK=YNNyrLdzL6^zM?uJ5s{%T5f}p6br-RAWEee?e$DGI-eB&N zUK(cR96I@vvs@kx zG2z+!=QWl|(lQP671S&TRWtmz3YS-8A@a;>`7fU>WEfF9a(Jc^iJQ|r992YSTUc52 z2eN6K+4GKfgCA97t!HHQ2JE|a!S>D@3-bSu6K(W4$wnVAXXl;wd87rEz*W0#O)qWy zX+7o?A!bfi5cm0$16s}s(avqp8&u7?t4@~ zX=1ErCz4%a(cLfqZDV0#&?bM}fR18SlbrK0RrvZdMDIBtWqu^^i*j5h4bwze)@;Rn z3(X#SwTNg|piysa{-VfU_^fCkAkR;VTYjWSOu=18TzAm@nQTBVd9DK*v&j<8qGj!q}0RATfka89kT)x$%#zC!q0W*!gs94DKejcrpA~ zR@*AR?JfYu*@0~H77yM-YcTfE5qW`KXX0+z;QmKKS(6&=yrUX~`)wy)SjBxY40Hy} z4J`~54M-k>#R+ZK8T@#)R^1RFd7WDO!(<;QoX>#C7;xW7Z*@BEci;-}Yz#VufD})Lp6?nG}{L z1$xAH_e>-6sOU}&qY6&7BgMr}`o1QQU??Zb@pf^`lY_?RY}|i%0KeoA1>x*ko5uQ@ z4S?{f;nflnTSHl#TZ)+$u?GB40RcEzpOrN;eB_Y~ain!&?`XRHONcm-A;5Rwm~UWR zruW^~W}aTG%A=C7F7BbU*9HRxLf#AmQU`iq8 zt$N%O(3-qvwRl}e3{x^RREN7BY_ITlt7iYpi{Z3!sg%U)u<}YgWwg`u-#nk9b{;f> zKcXDmt)ojxH!b&OEGw?75H5F+e;q@-&vHwdY;GJj zgn>6&T?QoJKf(FE{KOch^1OeLUtx9xIM)9Zupj~bC1}#1B*=`i@FZL@uH{ssC0Yp3SYZoVMguvzX%Hx-yL3~l~ z=L_`$lpXQY>8HAn?IFk4lgzI6wwvKSjl=G#e9blpTa(BAnL_ zf5_lE>F>h75Sat86!&jA16kiYK>cJ0BQtz68{9Sem-ZbGy-&%zIIMh6w*f&RFEE6N z)_$DYP;jBsA@&GbH5LMX@f$%8XsW-(cMrvO9rvJMHUsFQ81dAl}4F1q!90QGAQg?CK*QHOP3;;<&H*S<{oWl zde5)$Ys`R;JXX^RFf#bVas9Kjnf{y4dcn72!Z?GL)E{S2+s%va1>aHA$EQyn%oL-+qo`3CIAf=du@JqO+cE$Tf~h)q8N7N)of_kPGGd~6hEi5 z79f=A$1P(6DaHt3YaP=9;Qh!x?U~Bo9g~MLmY3Drh&O+~CIvxTFs8i82V#mLrQt!_ z+1*=%ewFjf@rKcZf1L=3X%&W&z3g@%t02SjI8nxWp7C;cpV}S2jU&wZCA3f>BtPf- zBS~(sLeh`i18L7cgUm~t;!1hfGcFp>ohCF_sxowfwM_OMBWd9FL?=v0c7#3i*2gN? zr9`g_3{SyLhv3t#MMlfXca%fg;MDb}A#P!FUv!auO*NqzuZ8|cE*=`*SDo0WHTL|T z^-oYPCD@VK+y2{sIQ)fuECM3GHI)LCX3KYjHFNgq46FdnR6*Nh>yiNk4(e(>``x|1 z51PeuO8@{3+B)0=z)nt_%LPop$2xTg8rEC7htKZyK5pSbt?(x;^>fLw#4L=9%O|Ow z&P~aw^$!WpR`-L!`=SQ#SvAUkyl8kVMA!Io^k8Y#0*vtWyejzI{{=`cV$ z8HJ(dSf~j(^CMf+xa*SlgKhTRc!*BIAG(P8=*tye*g zx~GPb${C1fs{m%ARapx@?k9)`rDgX+f}I7-7^2A+^#Um10^b3VL0*(3%-;|NGIF94 zSaRu$lnrQFT|9&y`3JOeZN}h77a-$7EjDPQgDDCLJa_<(W46x?;rMC3i4Rx3DR`m zxNd7)dVC)v1E?0oP3r2$3sIZ|()9Oi+M%aRrdL=Liz#(KMbj>PNrFa#=Egq>Ijl zV6mL!8`Kb5>5ka;05=j7A$tKbTTC1C=OMF&_h>#lQk^JVzO+&|)buH!lkXY$;D=cm zkbT>C!t(teBP7k>EItm8hM-WgNEd;7{$hcfqIhUNW{COnon>GFXC9urk zT6i{wwxyZpkV{dA9A?uP0C+YMU7p=&IN%PrQ)u~pK410R@DqjM;3UPb!6hH!R5JimaoLANdeN0K9*8; zX@z}WP{@=Pu8z~ezJvg}&2%A>1!DbOVR58`PqAsD=)>DH{g0>s^L={|ld=R!QL3${ z!KXm7m`uER`Ioc~Xw3sQGSFajt33S9CGI!vHFVsKOOEFr4ndHM1mjUxrnh&3a^wQn zo$mfFsg3joz>MsA;LNaC&|*n5WTxaHc}gM!F|9?Ly|J2!o?$5LJa#f_!TMAI`yYYz zw6X{!vWI}aO;UXjrKwz~9-fYCg0hiqj#Txkm!4q&b|I1|0^z>Hgdi`-p8_W^>U)zF zYbYw0T?@&|@mN!w_H0ETD7VrcM$Vf$2w7+mgZYtkxpNc5v(g6fhAL_6wvaj^oWDB7 zJQRmwVf-g2&CY?WcdCirvQ;-eFyZbTd73wPf)Y}mbD7aHzWc)l&(Kl55Q>LC=&4Ob zzTsXG<^J=}$#*xqMOeDB5%(V8!jT{GyPErtVyH?P;E}bD@q$C69dMiWlCHT2({C}N z>e|NEO?I=DO*_l{X^sbfG3uZ5eQpqj?Wx>&@unE?;`~2znvgu_+LEgi1}SW;so(uD zvKc6{2qcYd46$1a%7z+GIA7N`7CqsDdfgeU4x#2h&*R12djudtasv6A<2A66$EwDX zH4j2K_t)N}8G)x+$}>QQ__q^dkPWD~#RdL@lO$Zg4q2Nt$hgefIY_ON_77RGKF`}l z7kbl$-T$F@d}ZdAU$(}hQ%poWtUt)IBNBzxTdc^@JGdi2_$}T71&82*dMh*i@q&O^vBdV_d@765GptCCW%gJMdCoXw zZ}L?^Aowr|wwG59$`-!+T(3XM`X;}i2ZBW8(PFeqpTdUfJa#^i3oHfohcU}2bcS~9 z)EwL%+z=1X9FXWX?9VSf=4$B3tu>(^cbtlZlz+rY^f~|A#YQ{hVTH|*6W_=$_g>NO zQCB*?csKW6n6l|nL8dg%-yvlp3I)@7S@ucxNol^>JJoLvcI1mM8>v%#{UzUNK75V} zXg}6J5E;2%+CNaLxOx0`x<(XLR}SeFh4!?7^%||(cobjemY4ke`vaYB zqk0nv)|(~=Y=Dyb_F_!0dfT7l{5tJ}s7I;lHDZkd9(}&wB7|EycqmT49F?Ext5CtIAR_zBF1+EB5C7|73578D!sc znsK-yUia=q{Iq7y9dcfD1lP&4mC=gUtYn;(3r!W%OT+s2xVM4z^0assW$&HVwmbXx z55llC2{q`U;Ddy;aGLk9?`v_~OjD$?s;0+T-cZLmPA!a^riC zq3H3$%{k_K@~stYB749a_we&=y5*Hi=ceZf!cXz+xzu?_FtF%7HF%OP(sHZ6w2z~= z+z?#n+@iKKr@$$%oslCMJDoAyxlPE95>*K~{JVMIP^uG-J1YCP{Eu^&qAYUX;C_^j zUA*qmGWp7)I+FK08F^kX(8$@bfUT*Z`x~Ve{Vr`>?MHQ}AH8LR<1AB>Gp_56%h5*s z`_W>kVEfp@AMwwG!Pl*>SS;Thv#4pgMLb2AVJ=I=-u8-l;z@h%-O`3>&{xB^wNO`y zFs>Cp`;6fR8Y5krv-X8*{%g)k9eeaakzG9k62K?2S9Ei#!fH@%FhX(~Q6@vAE#aEncYeGO*)Q z*20@;zFyLoodjb;-jjy+wItz~%uMR=Fx@_r0?l}^%{P1ZuL=BU`Bvpkap*-$|&9|TDgm+64^E`4UBiXG!||8zPw0< zC)HY%P&K2bdy}ya6%^1GG=DBd`bb?lC)RUSX@uk~Jw(_~UhDoVg4pn9W8YoT zqt4m%!yMaP9cxr%GqEGg{7!!%vc*r`&NC4;Y7(kuF7e8eO!fQiCls!K2;?5(8}d(wpe?C)L>~#E`C@s&x>F}xX#Yg@z$hmWeHr$S z#W7tfC3EYVu-szJSCAsCPgj${O)73r$0<7Rc=sEo&g=-clEc3q=?gGemKO5t{_J+M z?fW8dNPD9P;*sj=LU>-W(o^o)u7KPR0i1F0jPbu7ZYkn?dvV|&@jIg$HBI`&P!8=i zMo`&5@}Q=jm(D-+jN7j1g=@~*ZV5AH|9Y^5Ufu^M!yOhUuIO#bOcwjJe(-Y^J; z>_9K={5F-b|K4=P?3YJ0CklhrYZwyyZbs?a4D^-xG9$mVeZs<{-np=R_VZu7k^e^w z`-rzQzdvOKwAbp%Gb1RmuHRRf%j(rOjj?73tBYth-xFcQ-=#bFO?xmfY6F!?>vn$Pr^tH;0T zW?<>M;^Fu*MKN;}IPZ9+khI_2ts>N^fjDf*cczTSvJ%%-;s3a0gX3nYzjUAi9j^6b z3%wGXS(!pjX)EBRQoRI~nn{s+e!X%;LNTTRN1^%HQ0a3^+qnt8>@_D5Ei{?x8f#@V z$qo4Nm7Sr6l*PN!qBPvwgnzv(%mdyl^1tS?c1J4Rv6bBXU*Aj!Q-o?CQ$<}7Z}NL1 zAAgnYbfpTz-UW60LIJ5*SBHTq3kj$_OuBC$gHot!Di`Ta1EL0(w-L%!+4fC69#`Yt zKH{}P?k59T+iAv~jkiA5e0HKy+BBpC!N&x*DhmR#Fw~hbq!ziHEfzFX1F820Zw)F0 zH5a%CG8SIw$k%4ab?K?wmZe*F_j;Gj-aKA*S0L zvgU80h^8u?b@Fy$cla|y0k*V>Bf=OYMhv3&}ti>F~p%e95#0SO-%i}_vinIk_PX+S&h+6&5 z*F}d{{EizQ^D5sHgM~ivpagsA-=5zLB+or*s4MYV&D5=_C3FPx=)Oe!nH<<#luag0 z>eH;F{+s=rqf0-t;F+}g?-)__uXNL^bij=>zAx>3LD~xFTleq_)<>QhF{;*D4(@VR z-ZtO=z9y|4eV%khAFozO#NbjM7Tae)T5mPZ*O}~_u5tNwdN!vo3WHR@ECG)>3jY?t{ zBEaOBwp`*6mY)yThGK3j{bmaqemN5Bvbz!V{=cAvoI>CW{l6axGJjj&#;_~hIiZ0W zm4O=wGT$S?uF9V(^ENzw_-)uD9*3?xsU(xn|9Y$%AP9RPb7$`4^}Tw%TMPZui9b#&-^KNHU2zJU1{+eV3;O|DRfUsvvup zyhlim`EVn%1f%pl_dalrAm&_RPfO~9KmfJVjh4OiwodV=@g+j#G!3>g`ZVym-H`VG z)!`#vy_hBB{Q8;pi6j%3e@1+lQhfNdU9LZgJftp&IxhLH_K#VYS{S#~t+aXiYHT*J zIFcTJjhJPCT`exBWdtTZ;+X}4Y09!=f~ke{%b!<+9`U^jVn^s?DH4A+Fo4`Jr4@2a zbruC4Gb||=VKPp7jC#L=8if8we9gsRu)CG%FIpY395t74qpsAn0M8vU5(6nK=3WvK%XPCishY!H_gvmF746 z@KD3Hq+T7qUSF(vLO2;U0M+RFE6c2b56n1r`RgXNm90fZfg!LvZDNagmtHDopE1t} zZ4-U}TOP1|pPS!V^xsIw_IP^HBXC%+)7zK3G8s-m!^Ev*P#$z{ZXrug3wG6pB4PkOM0IoUSWRn zn^W9#Zs0=$+OvUgFLYVLD-TBBtQ-VvrMzPV=(y5RL zh|ItwxIiY|a(0ien{QmaN|S>poY%7UIA+v-xy+(8W3}f)LN@Ph6DrZtnXTRVnnvTr zz;kLIm zc#GQt$49eY)Qon#==A(v?NjXUNJ9XsPF8tDeqR^JOy@axbveBm`$@1=F2qbGUX^rR zkl%DFdOvS0E9N8p+L{Fjg`yvchBUj}PNn5j3Qtj72;x2wp&XB+$O3VHWS~Zs*!LTi zV!0}s+wui2rQOjKIh66H$4Cby7%Ri1QpSQg@;t&O3Xv&Eh66@ z`P0_~?HAnlnhm&ph&UEAi5F^UGk>Sys?E9A?)FgHPkXzIBsnBmkMe>AEh3I^pJnG3x6(56>Ak zq5%|m1{yiCBvw1P^4G`kt%)C&O#s^Ew2qaZC?p_xoyP6!v*5De7xCl=Ilrg?rG z@P{O!un0MMnS|sE?DL7qlwE;>H~p%>k;Nor=gHi6V5fYDQ)R1Jj?@9o4>rzP8sXo5 z)*xlT^(@L*X_*>t>cNeOG31jxySRYekt_R!6j3&8&M#W|56hYKoO+f^ZCOb!7TgygL0HHXm(FOJX zKbP^>%Mv-O*E}z@{++6>kK5rz#(~&aI{;M49 zvj-?FK!EGIuya1P850y$W8%_#*dN0OB%n%EK$XB(DpoY=e?PFMcALZiKV|*tXQK?OG=hmjCnU{m7?{BUpYcd2tZ3 z-OLyigeG;y;B=5r>KqTTf#%{@N`1V~t@6cN@`)*{W6?f@pIrBtnyVFH6D)0GP%X3u z^)E(OoGohu=;OuBUvXbXq;jtzRXNXsbM%#D%5rhjfk4s`9`cXD&HDoIRh4~=p&Avr z<}}@{Ey;7^TGJe@A{RZOlYr1HJzTqA<38x*j|NaMAiy z3>vn&0g@h3Ay4Oz%KLT8^?LTqB3edkeUJdB>QLrnpaE)TzszzxdS|F*Wz=B*2U6Mo9r)k&ahM0ttVRjWb)z=;EtF<*dm=zl^iCiF=14FT_IE*VxP+_dIz#?ycZ)r(^Y z=4iEO=f$CR=7mjnoM4oQ>LJCt91-B-Q$N1_5$gQ8DJ5)iAP&ak^T(PDeH(fUSigGE zi`WMz%jK7*&3$*?h$#3d)lCZib2acZ!0q_;MFC4x;hjd`nosu&4ybN-gQ`ht#+bDj+ALL1 zHGQ0)EvWJ1yw6Sv7!=4VuK%55JN(U(_+IitZX+~WYXcdA8c?{*l{=LqrN+x@%+)E6 zNevl|tdt|>>fsztLYJRRDl(M++Pj>Qo^ZulEnfx|a`5zEvT{HcEMlL($Hknp&ba$! zYWTD)2`_(=LNQ!3au5t4wY#^8m?g0gvhxmzxN08q0-mP6atEEqk1sY+Jv8^<)?4`; z>)rq)!OH8+FdWB;G7=tgI=0H>_~9jSHrHXm8o zNZs8V-Ys)2GX@eyGvQFdBIGn^YZoY zPNXdHqy$Ecg2O6_J!}o+H_>8Y8_xjUsak*t8@bl!+_z6J$ZR^P@>2;S-2=?t(U2uM zzr34Vf`1po?7n~WLF)-bB$OH8xjL@4fHh+RXk`W-R?V&GjQz8!^r^W zkauZMuDlxgHC>$+jSo73O>m@&vW=&!jCKL``8jn@$Rzipk6k6s21No?v|M%du{ z9)tOUt9)|Po<;cTa?~Xym^pKzK^Rj4LI(W_Ih$k1j8BM`%AEHJUX~lGjiua&O~%ul zJrqS&BY-~goceJ$IlNZrm)BN@KD8!_JEqfdKh*k!;V#w;|EW>N{|w?jdDH!V-m8@Z zL-5kpP2OZch}u396RD?ut3@=g3g3}t&RV}If|G{k2PY|E)?J6~OBQ4$I(}>%i2fMf zAOQ(hBLn0+(QdCJRT+1~UXI>l`Il0QM!|>lKhD{z1i+M`iH$r+hDLiTko)m#7j3QS z9)y^2YzqJWj$Z#EPb5Z;1n#=+1jj3uw@eVYF?dVZuGk(BLM7 z%&^IA+Hm-e!Uo&6{Fw)xc~ISrZQH)@ns+4iSLI%2)w<Cc;gHyKc8?#f6Q2x&LH0Dgj(l^ejU(+A%V=m4? z3b<`_3XCd^#BaFC?{dg^DsWcq^QFC@V_*^(6Y)L@I;qSArmjK`>Wk3->Xd8-`0PZt zhK4nqG#SG4?y?Ma(RP%mYH#EOc&q*2(Qdv=Hva29<@(QTz~+3*czB&OGoX$b_4zM4 zF@sm5Y11{at3OUDU{ag?gw0d5MYIPgnv62eKX!Iuu>H@*hn%a#%&WxE z320t2ciBci0uXfE4|D&1y<075Z|nwJqiYi!p~wds`$8(9-F!`b()5LKJH_J{-4tPY}$Y+JRLYC*2zf z3;84QV|XX9sM3eIsh^TR8XYBa@uI5`3fqR4fX)mrH40=e5T-B!dWQklvkm}l5Hopi zCty|3@V{pfl^raq3mjv4(-3!5^y<#Ib8DLdjQqyd(UP~Uhtk9s1)Gv^=gzut&)MP6 z>0PT3zBwQ~@jR`7fa17WNnXnqw0sJ#?T+!+b_1 z1WS`>jwqkL8i=?hP^W)u#Q*jCsf*%#Q^m}haY|a8R_j_}>JhF9ZsSsnmd0S6#Ht=rKm2avi;U%moq(TSGpnDkQkshTQ?y8070+>sp{SxDVwqw$ zc^-+U>B&QmWu^TY1&X-`kF}(F;k-^aVQ3o3$nUxZED`3EJS8oEZr~rZNkaYwnp+2I z)|!*)Z0-dg!Bjobc717|T%b6mM0DF~ke_MUTSAuGF!Xy?Mk zyPV|;f00worGr*yax{RZA+-)VMv+-F5}L=LR~B>T_C=1MMrVxK)}6bcj>to?eP6LY ziFOtO-@*1Lwwni})>LmPc{#4r@fNs0UT15&R$wiiN&)RSYI(2*6DHF~G%)t_#nC2J z{*0YNo2;c#m+wNG79hJqF2i|P+T6jR9@>u^{arQO6!Oct(&Hcp)F-%g!AA(R3|->J zN;=)2iCb%&4lWI+&F@ZiGN_KoRFOd2mt^6}XrUcVm#~j`D!A9MJJfXY{5-jw1}6 zeVh26qKbq^Y7W6%m9=;{8{}Y$IglyFK?tB1;+o2A(h7b`mKEbQqGs$9-~d_W2S#+Q z;2;U0suowQnL`E5RAd_=q^Lzq29?_iz8%pi47H!+&$H*W154XU*WKY)|OvuOTGB*j|MVBi=STY`^p-vb;V`(@g*n{ggJ=?=Gs z-Z8&@FQ3(vy)G74(k{&ct%r&i)fcdB)qIe3m*fn~&vUrDa71%z!5V=$9#stk-}$(d z?#l#HJGRsO)-i)eD8QVAr`!m{OJ7xVtR15!(^4|D(!2Bt!5`sp3v!n z6yYsT4vr^1C*wzD}f24KC&1&kv@?=KKEb(vQi}LSnrJWx!XQBS9x-y!)!w} zPP`FMMKUG>N+}Y#Pscw6zt!~wVqyj+*#(mw6^LJlVuyPVRCqah)xaMDw|nY$c%r(V zz6whU+UN)cS?UCZNOT5ORIrS2W$sOTNNO;XQk%T_AnM9m#K-#u)k(+k0pzjH03CpJ z+3ErPaY@x7S+aO85eMVNGk`c+0UPVeYZqm%y7~}$@#T+{$DZ5|PU}$9;rM{WEgzHG zK;oad_BWBF&8v-8BF97kBon(w#f2I(W9iP5^7?)w<`>)t#%CIh`_B5$Hqwe>$v-Am$D69h3VIv`jbH!@ zYLn$t2p{daxG!5qvbuqEf9wJu-YznL>R;R?x0oz?Nk z3s9ous0Ku=rcq~F1y9+8VE`0((I^UYD%C Date: Thu, 2 Aug 2018 10:41:32 -0600 Subject: [PATCH 07/38] Adds docs for OpenUV (#5940) * Adds docs for OpenUV * Member-requested changes --- .../_components/binary_sensor.openuv.markdown | 23 ++++ source/_components/openuv.markdown | 126 ++++++++++++++++++ source/_components/sensor.openuv.markdown | 23 ++++ source/images/supported_brands/openuv.jpg | Bin 0 -> 3542 bytes 4 files changed, 172 insertions(+) create mode 100644 source/_components/binary_sensor.openuv.markdown create mode 100644 source/_components/openuv.markdown create mode 100644 source/_components/sensor.openuv.markdown create mode 100644 source/images/supported_brands/openuv.jpg diff --git a/source/_components/binary_sensor.openuv.markdown b/source/_components/binary_sensor.openuv.markdown new file mode 100644 index 00000000000..21cd0cb2bc0 --- /dev/null +++ b/source/_components/binary_sensor.openuv.markdown @@ -0,0 +1,23 @@ +--- +layout: page +title: "OpenUV Binary Sensor" +description: "Instructions on how to integrate OpenUV binary sensors within Home Assistant." +date: 2018-07-31 22:01 +sidebar: true +comments: false +sharing: true +footer: true +logo: openuv.jpg +ha_category: Binary Sensor +ha_release: 0.76 +ha_iot_class: "Cloud Polling" +--- + +The `openuv` binary sensor platform allows you to view binary sensor data from +[OpenUV](http://openuv.io). + +

+You must have the [OpenUV component](/components/openuv/) configured to use +this platform. After configuring that component, binary sensors will +automatically appear. +

diff --git a/source/_components/openuv.markdown b/source/_components/openuv.markdown new file mode 100644 index 00000000000..e157ee396dc --- /dev/null +++ b/source/_components/openuv.markdown @@ -0,0 +1,126 @@ +--- +layout: page +title: "OpenUV" +description: "Instructions on how to integrate OpenUV within Home Assistant." +date: 2018-07-31 22:01 +sidebar: true +comments: false +sharing: true +footer: true +logo: openuv.jpg +ha_category: Hub +ha_release: 0.76 +ha_iot_class: "Cloud Polling" +--- + +The `openuv` component displays UV and Ozone data from +[openuv.io](http://openuv.io). + +## {% linkable_title Generating an API Key %} + +To generate an API key, [simply log in to the OpenUV website](https://www.openuv.io/auth/google). + +

+The "Limited" plan (which is what new users are given by default) is limited to +500 API requests per day. In order to leave a buffer, the `openuv` component +queries the API every 30 minutes by default. This value can be modifed (via the +`scan_interval` key), but please note that over-running the API will require +you to upgrade to a paid plan (and may disable your access in the meantime). +

+ +## {% linkable_title Base Configuration %} + +To retrieve data from OpenUV, add the following to your `configuration.yaml` +file: + +```yaml +openuv: + api_key: YOUR_OPENUV_API_KEY +``` + +To configure additional functionality, add configuration options beneath +a `binary_sensor` and/or `sensor` key within the `openuv` section of +`configuration.yaml` as below: + +```yaml +openuv: + api_key: YOUR_OPENUV_API_KEY + binary_sensors: + # binary sensor configuration options... + sensors: + # sensor configuration options... +``` + +{% configuration %} +api_key: + description: your OpenUV API key + required: true + type: string +scan_interval: + description: the frequency (in seconds) between data updates + required: false + type: int + default: 1800 +binary_sensors: + description: binary sensor-related configuration options + required: false + type: map + keys: + monitored_conditions: + description: the conditions to create sensors from + required: false + type: list + default: all (`uv_protection_window`) +sensors: + description: sensor-related configuration options + required: false + type: map + keys: + monitored_conditions: + description: the conditions to create sensors from + required: false + type: list + default: all ( `current_ozone_index`, `current_uv_index`, `max_uv_index`, `safe_exposure_time_type_1`, `safe_exposure_time_type_2`, `safe_exposure_time_type_3`, `safe_exposure_time_type_4`, `safe_exposure_time_type_5`, `safe_exposure_time_type_6` ) +{% endconfiguration %} + +## {% linkable_title Binary Sensor Types %} + +### {% linkable_title `uv_protection_window` %} + +This sensor displays `true` if UV protection (sunscreen, etc.) is recommended +at the current date and time; displays `false` otherwise. + +## {% linkable_title Sensor Types %} + +### {% linkable_title `current_ozone_level` %} + +This sensor displays the current ozone level in du (Dobson Units). + +### {% linkable_title `current_uv_index` %} + +This sensor displays the current UV index. + +### {% linkable_title `max_uv_index` %} + +This sensor displays the maximum UV index that will be encountered that day (at +solar noon). + +### {% linkable_title `safe_exposure_time_type_X` %} + +These sensors display the approximate number of minutes a particular skin type +can be exposed to the sun before burning/tanning starts. Each sensor depicts +a skin type based on the +[Fitzpatrick scale](https://en.wikipedia.org/wiki/Fitzpatrick_scale): + +* Skin Type I +* Skin Type II +* Skin Type III +* Skin Type IV +* Skin Type V +* Skin Type VI + +

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

diff --git a/source/_components/sensor.openuv.markdown b/source/_components/sensor.openuv.markdown new file mode 100644 index 00000000000..f777be94262 --- /dev/null +++ b/source/_components/sensor.openuv.markdown @@ -0,0 +1,23 @@ +--- +layout: page +title: "OpenUV Sensor" +description: "Instructions on how to integrate OpenUV sensors within Home Assistant." +date: 2018-07-31 22:01 +sidebar: true +comments: false +sharing: true +footer: true +logo: openuv.jpg +ha_category: Sensor +ha_release: 0.76 +ha_iot_class: "Cloud Polling" +--- + +The `openuv` sensor platform allows you to view sensor data from +[OpenUV](http://openuv.io). + +

+You must have the [OpenUV component](/components/openuv/) configured to use +this platform. After configuring that component, sensors will automatically +appear. +

diff --git a/source/images/supported_brands/openuv.jpg b/source/images/supported_brands/openuv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a15741c381c189ec382c4b97cc4a5459b9341f62 GIT binary patch literal 3542 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 F@?R5DJ!Sv^ literal 0 HcmV?d00001 From 2d23eb2fca017d66cf7f605fc5b7b6200608171b Mon Sep 17 00:00:00 2001 From: Jesse Rizzo <32472573+jesserizzo@users.noreply.github.com> Date: Thu, 2 Aug 2018 18:45:11 -0500 Subject: [PATCH 08/38] Add documentation for new Enphase Envoy platform (#5638) * Create documentation for Enphase Envoy component * Add list of available conditions * Upload Enphase logo * Add second example configuration.yaml * Fix minor formatting errors * Fix configuration variables section * Fix minor typo * :pencil2: Removed duplicate header * Changed ip to ip_address * Minor fixes Change title to sensor.enphase_envoy. Update version number. Fix typo in enphase logo file name. * Remove name key from configuration --- .../_components/sensor.enphase_envoy.markdown | 55 +++++++++++++++++++ .../images/supported_brands/enphase-logo.svg | 1 + 2 files changed, 56 insertions(+) create mode 100644 source/_components/sensor.enphase_envoy.markdown create mode 100644 source/images/supported_brands/enphase-logo.svg diff --git a/source/_components/sensor.enphase_envoy.markdown b/source/_components/sensor.enphase_envoy.markdown new file mode 100644 index 00000000000..fb04d906ed4 --- /dev/null +++ b/source/_components/sensor.enphase_envoy.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Enphase Envoy" +description: "Instructions on how to setup Enphase Envoy with Home Assistant." +date: 2018-06-30 12:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: enphase-logo.svg +ha_category: Energy +ha_release: 0.76 +ha_iot_class: "Local Polling" +--- + +A sensor platform for the [Enphase Envoy](https://enphase.com/en-us/products-and-services/envoy) solar energy monitor. + +### {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: enphase_envoy + ip_address: ENVOY_LOCAL_IP_ADDRESS +``` + +{% configuration %} +ip_address: + description: The local IP Address of your Envoy + required: true + type: string +monitored_conditions: + description: The list of conditions to monitor + required: false + type: list + keys: + production: + description: The power in W being produced by the solar panels + daily_production: + description: The energy in Wh produced that day + 7_days_production: + description: The energy in Wh produced the last 7 days + lifetime_production: + description: The energy in Wh produced in the lifetime of the Envoy + consumption: + description: The power in W being consumed in the whole house + daily_consumption: + description: The energy in Wh consumed that day + 7_days_consumption: + description: The energy in Wh consumed the last 7 days + lifetime_consumption: + description: The energy in Wh consumed in the lifetime of the Envoy +{% endconfiguration %} diff --git a/source/images/supported_brands/enphase-logo.svg b/source/images/supported_brands/enphase-logo.svg new file mode 100644 index 00000000000..3f8f7b3de38 --- /dev/null +++ b/source/images/supported_brands/enphase-logo.svg @@ -0,0 +1 @@ +Artboard 1 \ No newline at end of file From 6d36841231d480bfbf0c6d81ade44626a4d887a9 Mon Sep 17 00:00:00 2001 From: Conrad Juhl Andersen Date: Fri, 3 Aug 2018 11:23:49 +0200 Subject: [PATCH 09/38] Vacuum component: Update to reflect new start and pause service calls (#5941) --- source/_components/vacuum.markdown | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/_components/vacuum.markdown b/source/_components/vacuum.markdown index bcbf2b1ccaa..3df2abbca45 100644 --- a/source/_components/vacuum.markdown +++ b/source/_components/vacuum.markdown @@ -23,7 +23,7 @@ vacuum: ### {% linkable_title Component services %} -Available services: `turn_on`, `turn_off`, `start_pause`, `stop`, `return_to_home`, `locate`, `clean_spot`, `set_fanspeed` and `send_command`. +Available services: `turn_on`, `turn_off`, `start_pause`, `start`, `pause`, `stop`, `return_to_home`, `locate`, `clean_spot`, `set_fanspeed` and `send_command`. Before calling one of these services, make sure your vacuum platform supports it. @@ -51,6 +51,22 @@ Start, pause or resume a cleaning task. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific vacuum. Else targets all. | +#### {% linkable_title Service `vacuum.start` %} + +Start or resume a cleaning task. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific vacuum. Else targets all. | + +#### {% linkable_title Service `vacuum.pause` %} + +Pause a cleaning task. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific vacuum. Else targets all. | + #### {% linkable_title Service `vacuum.stop` %} Stop the current activity of the vacuum. From 42130b674e15a508ea412c324b294f7dde4aee98 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Fri, 3 Aug 2018 14:30:25 +0200 Subject: [PATCH 10/38] Update control-panel.markdown (#5927) Adds information about the new protection card in Z-Wave panel --- source/_docs/z-wave/control-panel.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 81ae4b9918b..4e607555042 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -142,6 +142,12 @@ You can set the *wakeup* interval (in seconds) of the device, this is shown for Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake. +### {% linkable_title Node protection %} + +If your node has the protection commandclass, you can change the protection level of the node. +Check your device manual on how to use this setting, as it is different between manufacturers. +Set the new selection by pressing the **Set Protection** button. + ## {% linkable_title Node user codes %} If your node has user codes, you can set and delete them. The format is raw hex Ascii code. Below the input you will see your actual code. For normal nodes this is as follows: From ac0bb71aad08c9700c7d406bf16819bf63429465 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 3 Aug 2018 18:17:25 +0200 Subject: [PATCH 11/38] Update blog date --- source/_posts/2018-08-03-release-75.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2018-08-03-release-75.markdown b/source/_posts/2018-08-03-release-75.markdown index 5ee1b8012d9..c14ba06f2cd 100644 --- a/source/_posts/2018-08-03-release-75.markdown +++ b/source/_posts/2018-08-03-release-75.markdown @@ -2,7 +2,7 @@ layout: post title: "0.75: Spider, Tuya, Brunt, Magicseaweed API" description: "You're now able to change entity IDs on the fly." -date: 2018-07-31 00:01:00 +date: 2018-08-03 00:01:00 date_formatted: "August 3, 2018" author: Paulus Schoutsen author_twitter: balloob From c726c4e258cfdcc178fb3ee3042e7ae9228e4d50 Mon Sep 17 00:00:00 2001 From: Mahasri Kalavala Date: Fri, 3 Aug 2018 21:20:19 -0400 Subject: [PATCH 12/38] fixed typo. --- source/_lovelace/entities.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index 6cc85912674..a025b721e38 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -59,7 +59,7 @@ secondary_info: type: string {% endconfiguration %} -## {% linkable_title Secial Row Elements %} +## {% linkable_title Special Row Elements %} ### {% linkable_title Call Service %} From 74649966f918ed550ddd00cc5b1450eb34f03368 Mon Sep 17 00:00:00 2001 From: Marius Date: Sat, 4 Aug 2018 14:18:25 +0300 Subject: [PATCH 13/38] Lovelace changelog updates - Removed b0 as it's also final - Fixed link for entity filter card Maybe someone to merge this in current as well --- source/lovelace/changelog.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/lovelace/changelog.markdown b/source/lovelace/changelog.markdown index 037300e1464..e32dbaf0bcf 100644 --- a/source/lovelace/changelog.markdown +++ b/source/lovelace/changelog.markdown @@ -9,14 +9,14 @@ sharing: true footer: true --- -## {% linkable_title Changes in 0.75.0b0 %} +## {% linkable_title Changes in 0.75.0 %} ### Breaking changes - 📣 [glance card]: `turn-on` replaced with `call-service` ### All changes - 📣 Add support for CSS imports ❤️ -- 📣 New card type: `conditional-card` ❤️ - Drop your [entities filter card] hacks +- 📣 New card type: `conditional-card` ❤️ - Drop your [entity filter card] hacks - 📣 [picture glance card]: Add support for custom icons - 📣 [picture entity card]: Supports hiding name and/or state - 📣 [glance card]: `turn-on` replaced with `call-service` From 64c0101a9d26ff73875aaa80c9bbe435cd0f0fac Mon Sep 17 00:00:00 2001 From: Thomas Delaet Date: Sun, 5 Aug 2018 12:12:48 +0300 Subject: [PATCH 14/38] Add velbus auto-discovery (#5132) --- .../_components/binary_sensor.velbus.markdown | 45 +------------- source/_components/fan.velbus.markdown | 62 ------------------- source/_components/light.velbus.markdown | 55 ---------------- source/_components/switch.velbus.markdown | 45 -------------- 4 files changed, 1 insertion(+), 206 deletions(-) delete mode 100644 source/_components/fan.velbus.markdown delete mode 100644 source/_components/light.velbus.markdown diff --git a/source/_components/binary_sensor.velbus.markdown b/source/_components/binary_sensor.velbus.markdown index dc476b53f12..bdbba5f7075 100644 --- a/source/_components/binary_sensor.velbus.markdown +++ b/source/_components/binary_sensor.velbus.markdown @@ -13,49 +13,6 @@ ha_iot_class: "Local Push" ha_release: "0.50" --- -The `velbus` binary_sensor allows you to control [Velbus](http://www.velbus.eu) connected wall switches. - -## {% linkable_title Configuration %} - -To use your Velbus wall switches in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: velbus - devices: - - name: Wall Switch 1 - module: 0xda - channel: 4 - - name: Wall Switch 2 - module: 0xbc - channel: 1 - is_pushbutton: true -``` - -{% configuration %} -devices: - description: The list contains the binary sensors to configure. - required: true - type: map - keys: - name: - description: Name to use in the frontend. - required: true - type: string - module: - description: The hexadecimal module address. - required: true - type: string - channel: - description: The channel number in the module. - required: true - type: string - is_pushbutton: - description: Set to indicate if a wall switch is a push button or not. - required: false - type: boolean - default: false -{% endconfiguration %} +The `velbus` binary_sensor allows you to control [Velbus](http://www.velbus.eu) connected input devices. For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/fan.velbus.markdown b/source/_components/fan.velbus.markdown deleted file mode 100644 index e1686e65642..00000000000 --- a/source/_components/fan.velbus.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "Velbus Fans" -description: "Access and control your Velbus fans." -date: 2017-06-17 16.58 -sidebar: true -comments: false -sharing: true -footer: true -logo: velbus.png -ha_category: Fan -ha_iot_class: "Local Push" -ha_release: "0.50" ---- - -The `velbus` fan allows you to control [Velbus](http://www.velbus.eu) connected fans. - -## {% linkable_title Configuration %} - -To use your Velbus fans in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -fan: - - platform: velbus - devices: - - name: Fan 1 - module: 0xda - channel_low: 4 - channel_medium: 3 - channel_high: 2 -``` - -{% configuration %} -devices: - description: The list contains the fans to configure. - required: true - type: map - keys: - name: - description: Name to use in the frontend. - required: true - type: string - module: - description: The hexadecimal module address. - required: true - type: string - channel_low: - description: The channel number in the module for low-speed. - required: true - type: string - channel_medium: - description: The channel number in the module for medium-speed. - required: true - type: string - channel_high: - description: The channel number in the module for high-speed. - required: true - type: string -{% endconfiguration %} - -For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/light.velbus.markdown b/source/_components/light.velbus.markdown deleted file mode 100644 index ddafbaa7eb5..00000000000 --- a/source/_components/light.velbus.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Velbus lights" -description: "Access and control your Velbus lights." -date: 2017-06-17 16.58 -sidebar: true -comments: false -sharing: true -footer: true -logo: velbus.png -ha_category: Light -ha_iot_class: "Local Push" -ha_release: "0.50" ---- - -The `velbus` light allows you to control [Velbus](http://www.velbus.eu) lights. - -## {% linkable_title Configuration %} - -To use your Velbus lights in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: velbus - devices: - - name: Light 1 - module: 0xda - channel: 4 - - name: Light 2 - module: 0xbc - channel: 1 -``` - -{% configuration %} -devices: - description: The list contains the lights to configure. - required: true - type: map - keys: - name: - description: Name to use in the frontend. - required: true - type: string - module: - description: The hexadecimal module address. - required: true - type: string - channel: - description: The channel number in the module. - required: true - type: string -{% endconfiguration %} - -For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/switch.velbus.markdown b/source/_components/switch.velbus.markdown index 6cd0303fde6..10062bddfc1 100644 --- a/source/_components/switch.velbus.markdown +++ b/source/_components/switch.velbus.markdown @@ -15,49 +15,4 @@ ha_release: "0.50" The `velbus` switch allows you to control [Velbus](http://www.velbus.eu) connected switches. -## {% linkable_title Configuration %} - -To use your Velbus switches in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry - -light: - - platform: velbus - devices: - - name: Switch 1 - type: single - module: 0xda - channel: 4 - - name: Switch 2 - type: double - module: 0xbc - open_channel: 1 - close_channel: 2 -``` - -{% configuration %} -devices: - description: The list contains the switches to configure. - required: true - type: map - keys: - name: - description: Name to use in the frontend. - required: true - type: string - module: - description: The hexadecimal module address. - required: true - type: string - channel: - description: The channel number in the module. - required: true - type: string - type: - description: "Either `single` or `double`. If single, only `channel` attribute is required. If `double`, both `open_channel:` and `close_channel:` keys are required." - required: true - type: string -{% endconfiguration %} - For hub configuration, see [the Velbus component](/components/velbus/). From 6c4cbb798963fa30a6cc11e69e6e5a04ab452788 Mon Sep 17 00:00:00 2001 From: Steven Looman Date: Sun, 5 Aug 2018 17:35:12 +0200 Subject: [PATCH 15/38] Add dlna_dmr component (#5474) * Add dlna_dmr component * Remove no longer supported features * Add warning about picky devices * Add UDN to configuration; requested changes from review * :pencil2: Tweaks * :arrow_up: ha_release to 0.74 * Update media_player.dlna_dmr.markdown * Changes after review by @MartinHjelmare * Update media_player.dlna_dmr.markdown --- source/_components/discovery.markdown | 2 + .../media_player.dlna_dmr.markdown | 50 ++++++++++++++++++ source/images/supported_brands/dlna.png | Bin 0 -> 4520 bytes 3 files changed, 52 insertions(+) create mode 100644 source/_components/media_player.dlna_dmr.markdown create mode 100644 source/images/supported_brands/dlna.png diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index e148bfdac29..f923c0ddb3f 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -21,6 +21,7 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * [Bose Soundtouch speakers](/components/media_player.soundtouch/) * [Denon network receivers](/components/media_player.denonavr/) * [DirecTV receivers](/components/media_player.directv/) + * [DLNA DMR enabled devices](/components/media_player.dlna_dmr/) * [Frontier Silicon internet radios](/components/media_player.frontier_silicon/) * [Google Cast](/components/media_player.cast/) * [HomeKit](/components/homekit_controller/) @@ -79,6 +80,7 @@ Valid values for ignore are: * `bose_soundtouch`: Bose Soundtouch speakers * `denonavr`: Denon network receivers * `directv`: DirecTV receivers + * `dlna`: DLNA DMR enabled devices * `frontier_silicon`: Frontier Silicon internet radios * `google_cast`: Google Cast * `harmony`: Logitech Harmony Hub diff --git a/source/_components/media_player.dlna_dmr.markdown b/source/_components/media_player.dlna_dmr.markdown new file mode 100644 index 00000000000..1713a1c212c --- /dev/null +++ b/source/_components/media_player.dlna_dmr.markdown @@ -0,0 +1,50 @@ +--- +layout: page +title: "DLNA DMR" +description: "Instructions on how to integrate a DLNA DMR device into Home Assistant." +date: 2018-06-01 14:27 +sidebar: true +comments: false +sharing: true +footer: true +logo: dlna.png +ha_category: Media Player +featured: false +ha_release: 0.76 +ha_iot_class: "Local Push" +--- + +The `dlna_dmr` platform allows you to control a [DLNA Digital Media Renderer](https://www.dlna.org/), such as DLNA enabled TVs or radios. + +Please note that some devices, such as Samsung TVs, are rather picky about the source used to play from. The TTS service might not work in combination with these devices. If the play_media service does not work, please try playing from a DLNA/DMS (such as [MiniDLNA](https://sourceforge.net/projects/minidlna/)). + +## {% linkable_title Configuration %} + +To add a DLNA DMR device to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: dlna_dmr + url: http://192.168.0.10:9197/dmr +``` + +{% configuration %} +url: + description: The URL to the device description, e.g., `http://192.168.0.10:9197/dmr`. + required: true + type: string +listen_ip: + description: IP to listen on for events from the device. Only set this when the IP is not detected properly. + required: false + type: string +listen_port: + description: Port to listen on for events from the device. + required: false + default: 8301 + type: int +name: + description: The name you would like to give to the device, e.g., `TV living room`. + required: false + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/dlna.png b/source/images/supported_brands/dlna.png new file mode 100644 index 0000000000000000000000000000000000000000..1f99239894782e5b1b23b82c066ca941e8af7c37 GIT binary patch literal 4520 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 Date: Sun, 5 Aug 2018 19:55:26 -0400 Subject: [PATCH 16/38] added new lovelace config generator A new Jinja2 based script to help migrate to lovelace. --- source/lovelace/tips.markdown | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/lovelace/tips.markdown b/source/lovelace/tips.markdown index 32ea7b697f4..f4cf41ec3c2 100644 --- a/source/lovelace/tips.markdown +++ b/source/lovelace/tips.markdown @@ -31,6 +31,10 @@ this tool is to help give you something to start playing with right away. The [Lovelace Config Generator][config-generator] by [@thomasloven] provides you with the ability to split your Lovelace configuration into multiple files. +### {% linkable_title Lovelace Config Generator (Jinja2 Script) %} + +The [Lovelace Jinja2 Script][lovelace-jinja] by [@skalavala] is a simple Jinja2 script that you run in the template editor to generate lovelace configuration based on the entities that are already setup. +

Split configuration is currently possible directly in Lovelace, but it is expected to be removed in the near future due to fact that Home Assistant @@ -54,10 +58,11 @@ mobile browser. (@Toast) [@dale3h]: https://github.com/dale3h [@thomasloven]: https://github.com/thomasloven - +[@skalavala]: https://github.com/skalavala [config-generator]: https://github.com/thomasloven/homeassistant-lovelace-gen [header-stacks]: https://gist.github.com/dale3h/37b34aebb0c336ffd5fb877c2651097a [horizontal-stack]: /lovelace/horizontal-stack/ [migration-script]: https://github.com/dale3h/python-lovelace [picture-elements]: /lovelace/picture-elements/ [vertical-stack]: /lovelace/vertical-stack/ +[lovelace-jinja]: https://sharethelove.io/tools/jinja-magic-scripts From da2ac726195324de4fd9d35eb5747d5bea813853 Mon Sep 17 00:00:00 2001 From: Ryan Davies Date: Mon, 6 Aug 2018 19:34:38 +1200 Subject: [PATCH 17/38] Add gps_max_accuracy option (#5953) * Google Maps: Add gps_max_accuracy option * :pencil2: Tweaks --- source/_components/device_tracker.google_maps.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_components/device_tracker.google_maps.markdown b/source/_components/device_tracker.google_maps.markdown index 206c2cc9bec..6289ba26332 100644 --- a/source/_components/device_tracker.google_maps.markdown +++ b/source/_components/device_tracker.google_maps.markdown @@ -13,7 +13,7 @@ ha_category: Presence Detection ha_iot_class: "Cloud Polling" --- -The `google_maps` platform allows you to detect presence using the unofficial API of [Google Maps Location Sharing](https://myaccount.google.com/locationsharing). +The `google_maps` platform allows you to detect presence using the unofficial API of [Google Maps Location Sharing](https://myaccount.google.com/locationsharing). ## {% linkable_title Configuration %} @@ -45,4 +45,8 @@ password: description: The password for your given username. required: true type: string +max_gps_accuracy: + description: Sometimes Google Maps can report GPS locations with a very low accuracy (few kilometers). That can trigger false zoning. Using this parameter, you can filter these false GPS reports. The number has to be in meters. For example, if you put 200 only GPS reports with an accuracy under 200 will be taken into account - Defaults to 100km if not specified. + required: false + type: float {% endconfiguration %} From a4063901cc261f82b245a67257529231bc551e40 Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 8 Aug 2018 06:05:55 +0100 Subject: [PATCH 18/38] Add Facebox auth (#5789) * Adds auth Adds auth and removes teach events * Update image_processing.facebox.markdown * Update image_processing.facebox.markdown * Remove whitespace around ` --- .../image_processing.facebox.markdown | 28 ++++++------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/source/_components/image_processing.facebox.markdown b/source/_components/image_processing.facebox.markdown index ebb9892aad8..a53e8d44c88 100644 --- a/source/_components/image_processing.facebox.markdown +++ b/source/_components/image_processing.facebox.markdown @@ -24,6 +24,7 @@ MB_KEY="INSERT-YOUR-KEY-HERE" sudo docker run --name=facebox --restart=always -p 8080:8080 -e "MB_KEY=$MB_KEY" machinebox/facebox ``` +You can run Facebox with a username and password by adding `-e "MB_BASICAUTH_USER=my_username" -e "MB_BASICAUTH_PASS=my_password"` but bare in mind that the component does not encrypt these credentials and this approach does not guarantee security on an unsecured network. If you only require face detection (number of faces) you can disable face recognition by adding `-e "MB_FACEBOX_DISABLE_RECOGNITION=true"` to the `docker run` command. @@ -51,6 +52,14 @@ port: description: The port which Facebox is exposed on. required: true type: string +username: + description: The Facebox username if you have set one. + required: false + type: string +password: + description: The Facebox password if you have set one. + required: false + type: string source: description: The list of image sources. required: true @@ -109,25 +118,6 @@ A valid service data example: ``` {% endraw %} -An `image_processing.teach_classifier` event is fired for each service call, providing feedback on whether teaching has been successful or unsuccessful. In the unsuccessful case, the `message` field of the `event_data` will contain information on the cause of failure, and a warning is also published in the logs. An automation can be used to receive alerts on teaching, for example, the following automation will send a notification with the teaching image and a message describing the status of the teaching: - -```yaml -- id: '11200961111' - alias: Send facebox teaching result - trigger: - platform: event - event_type: image_processing.teach_classifier - event_data: - classifier: facebox - action: - service: notify.platform - data_template: - title: Facebox teaching - message: Name {{ trigger.event.data.name }} teaching was successful? {{ trigger.event.data.success }} - data: - file: ' {{trigger.event.data.file_path}} ' -``` - ## {% linkable_title Optimising resources %} [Image processing components](https://www.home-assistant.io/components/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your config `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. From df56aaa2f627d1cc5356326bbc9a8f05789a0548 Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 8 Aug 2018 19:42:20 +0100 Subject: [PATCH 19/38] Add info on teaching automations (#5975) * Add info on teaching automations * tidy raw tags --- .../image_processing.facebox.markdown | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/source/_components/image_processing.facebox.markdown b/source/_components/image_processing.facebox.markdown index a53e8d44c88..5723f5abaa8 100644 --- a/source/_components/image_processing.facebox.markdown +++ b/source/_components/image_processing.facebox.markdown @@ -118,6 +118,54 @@ A valid service data example: ``` {% endraw %} +You can use an automation to receive a notification when you train a face: + +{% raw %} +```yaml +- id: '1533703568569' + alias: Face taught + trigger: + - event_data: + service: facebox_teach_face + event_type: call_service + platform: event + condition: [] + action: + - service: notify.pushbullet + data_template: + message: '{{ trigger.event.data.service_data.name }} taught + with file {{ trigger.event.data.service_data.file_path }}' + title: Face taught notification +``` +{% endraw %} + +Any errors on teaching will be reported in the logs. If you enable [system_log](https://www.home-assistant.io/components/system_log/) events: + +```yaml +system_log: + fire_event: true +``` + +you can create an automation to receive notifications on Facebox errors: + +{% raw %} +```yaml +- id: '1533703568577' + alias: Facebox error + trigger: + platform: event + event_type: system_log_event + condition: + condition: template + value_template: '{{ "facebox" in trigger.event.data.message }}' + action: + - service: notify.pushbullet + data_template: + message: '{{ trigger.event.data.message }}' + title: Facebox error +``` +{% endraw %} + ## {% linkable_title Optimising resources %} [Image processing components](https://www.home-assistant.io/components/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your config `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. From 0532df1e710294f2d24733dc018b20ec4a7031ba Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Thu, 9 Aug 2018 12:45:44 +0200 Subject: [PATCH 20/38] Remove rename functions from control panel (#5976) --- source/_docs/z-wave/control-panel.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 4e607555042..d3169a41c9f 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -41,8 +41,6 @@ Since 0.63 and the new experimental [entity registry](/docs/configuration/entity * **Replace Failed Node** will replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. * **Print Node** prints all state of Z-Wave node to the console log -* **Rename Node** sets the name of the `zwave` entity - this won't happen immediately, and requires you to restart Home Assistant (not reboot) to set the new name. Other entities of a device are renamed using the [entity registry](/docs/configuration/entity-registry/). - * **Heal Node** starts healing of the node.(Update neighbor list and update return routes) * **Test Node** sends no_op test messages to the node. This could in theory bring back a dead node. @@ -116,7 +114,7 @@ This will display the Z-Wave related information about the node: ### {% linkable_title Node Values %} -Allows you to rename the entities of the node. For example, maybe for the sensor `front_door`, you want to rename the value `seismic_intensity` to `shake`. The `entity_id` for that sensor will then change from `sensor.front_door_seismic_intensity` to `sensor.front_door_shake`. +Contains a list of available values of the selected node, and it's instances. ### {% linkable_title Node group associations %} From cb4a971b316013577601d857d03f88975199f77d Mon Sep 17 00:00:00 2001 From: ahobsonsayers <32173585+ahobsonsayers@users.noreply.github.com> Date: Thu, 9 Aug 2018 12:04:11 +0100 Subject: [PATCH 21/38] Updated BT Home Hub 5 Device Tracker Documentation (#5964) * Changed host to optional to fit an impending pull request that is about to be closed Pull Request: https://github.com/home-assistant/home-assistant/pull/15096 * Made Optional Italic --- source/_components/device_tracker.bt_home_hub_5.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.bt_home_hub_5.markdown b/source/_components/device_tracker.bt_home_hub_5.markdown index 106ba06083d..ce8890a0ed7 100644 --- a/source/_components/device_tracker.bt_home_hub_5.markdown +++ b/source/_components/device_tracker.bt_home_hub_5.markdown @@ -25,6 +25,6 @@ device_tracker: Configuration variables: -- **host** (*Required*): The IP address of your router, e.g., 192.168.1.254. +- **host** (*Optional*): The IP address of your router, Default: 192.168.1.254. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. From 4650303a387a1c88a513d1f0dc0ce3bb0c235a10 Mon Sep 17 00:00:00 2001 From: Ioan Loosley Date: Thu, 9 Aug 2018 13:05:30 +0100 Subject: [PATCH 22/38] Updated docs to add altitude changes (#5652) * Updated docs to add altitude changes relating to home-asssistant commit #15273 * Update sensor.opensky.markdown --- source/_components/sensor.opensky.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/sensor.opensky.markdown b/source/_components/sensor.opensky.markdown index 552de4c420a..cf16befa77e 100644 --- a/source/_components/sensor.opensky.markdown +++ b/source/_components/sensor.opensky.markdown @@ -31,6 +31,7 @@ Configuration options for the OpenSky Network sensor: - **radius** (*Required*): Radius of region to monitor, in kilometers - **latitude** (*Optional*): Region latitude (defaults to home zone latitude) - **longitude** (*Optional*): Region longitude (defaults to home zone longitude) +- **altitude** (*Optional*): The maximum altitude(in meters) for planes to be detected in, 0 sets it to unlimited (defaults to 0) - **name** (*Optional*): Sensor name (defaults to `opensky`) ## Events @@ -42,6 +43,7 @@ Both events have two attributes: - **sensor**: Name of `opensky` sensor that fired the event - **callsign**: Callsign of the flight +- **altitude**: Altitude of the flight in meters To receive notifications of the entering flights, add the following lines to your `configuration.yaml`. From f18a85e79ef085a2c8eb9c21e45aee2178249e8c Mon Sep 17 00:00:00 2001 From: mountainsandcode Date: Thu, 9 Aug 2018 16:27:38 +0200 Subject: [PATCH 23/38] Add Waze realtime documentation (#5634) * Add Waze realtime documentation * :pencil2: Tweaks --- source/_components/sensor.waze_travel_time.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/sensor.waze_travel_time.markdown b/source/_components/sensor.waze_travel_time.markdown index 484785a1a07..b7398d5217c 100644 --- a/source/_components/sensor.waze_travel_time.markdown +++ b/source/_components/sensor.waze_travel_time.markdown @@ -56,4 +56,8 @@ excl_filter: description: A substring that has to be NOT present in the description of the selected route (a simple case-insensitive matching). required: false type: string +realtime: + description: If this is set to false, Waze returns the time estimate, not including current conditions, but rather the average travel time for the current time of day. The parameter defaults to true, meaning Waze will return real-time travel time. + required: false + type: boolean {% endconfiguration %} From 05342fe1479d33dfbf4eb8ebf8d22dbc57f6cb06 Mon Sep 17 00:00:00 2001 From: Mattias Welponer Date: Thu, 9 Aug 2018 17:44:08 +0200 Subject: [PATCH 24/38] Update HomematicIP Next (#5966) * Update HomematicIP * :pencil2: Rewrite, layout, spelling, grammar * :pencil2: Restructured the introduction text --- source/_components/homematicip_cloud.markdown | 74 +++++++++++++++---- 1 file changed, 59 insertions(+), 15 deletions(-) diff --git a/source/_components/homematicip_cloud.markdown b/source/_components/homematicip_cloud.markdown index 70f90d77af9..2a4c981e2e0 100644 --- a/source/_components/homematicip_cloud.markdown +++ b/source/_components/homematicip_cloud.markdown @@ -14,31 +14,75 @@ ha_release: 0.66 featured: false --- -The [HomematicIP](http://www.homematic-ip.com) component platform is used as an interface to the cloud server. -For for communication [homematicip-rest-api](https://github.com/coreGreenberet/homematicip-rest-api) is used. +The [HomematicIP](http://www.homematic-ip.com) component platform is used as an interface to the cloud server. Since there is no official documentation about this API, everything was done via reverse engineering. The [homematicip-rest-api](https://github.com/coreGreenberet/homematicip-rest-api) is used for communicating. Use at your own risk. -To set up the component: +## {% linkable_title Setup the component via the frontend %} -- generate the authentication token: -```yaml -generate_auth_token.py -``` +Menu: *Configuration* -> *Integrations* + +Fill the form: +* Your **access point ID** (SGTIN) +* Optional a **name** to identify your access point, this will be used to prefix your device names. + +The authentification token will be generated and stored internally. + +## {% linkable_title Setup the component using the configuration files %} + +Generate the authentication token: + +`generate_auth_token.py` + +Add the information to your `configuration.yaml` file: -- add the information to your `configuration.yaml` file: ```yaml homematicip_cloud: - accesspoint: IDENTIFIER authtoken: AUTHTOKEN - name: Location2 accesspoint: IDENTIFIER2 - authtoken: AUTHTOKEN2 + authtoken: AUTHTOKEN2 ``` -Configuration variables (global): +{% configuration %} +name: + required: false + description: Name to identify your access point, this will be used to prefix your device names. + type: string +accesspoint: + required: true + description: This is the access point ID (SGTIN). + type: string +authtoken: + required: true + description: "Authentication token generated with `generate_auth_token.py`." + type: string +{% endconfiguration %} -- **name** (*Optional*): Name to identify your access point, this will be - used to prefix your device names. -- **accesspoint** (*Required*): This is the access point id (SGTIN) -- **authtoken** (*Required*): Authentification token generated with -`generate_auth_token.py`. +## {% linkable_title Implemented and tested devices %} +- homematicip_cloud.alarm_control_panel + - Security zones (*HmIP-SecurityZone*) + +- homematicip_cloud.binary_sensor + - Window and door contact (*HmIP-SWDO*) + - Smoke sensor and alarm (*HmIP-SWSD*) + - Motion detectors (*HmIP-SMI*) + - Motion detectors and push button (*HmIP-SMI55*) + +- homematicip_cloud.climate + - Radiator thermostat (*HmIP-eTRV,-2*) + - Climate group (*HmIP-HeatingGroup*) + +- homematicip_cloud.light + - Switch actuator and meter for brand switches (*HmIP-BSM*) + - Dimming actuator for brand switches (*HmIP-BDT*) + +- homematicip_cloud.sensor + - Accesspoint duty-cycle (*HmIP-HAP*) + - Wall-mounted thermostat (*HmIP-WTH*) + - Temperature and humidity sensor (*HmIP-STH*) + - Temperature and humidity Sensor with display (*HmIP-STHD*) + - Illuminance sensor (*HmIP-SMI, 55*) + +- homematicip_cloud.switch + - Pluggable Switch and Meter (*HmIP-PSM*) From cf45d6180dd5409dbfb10f3e26e39e44e06b1da7 Mon Sep 17 00:00:00 2001 From: Benoit Louy Date: Thu, 9 Aug 2018 15:18:48 -0400 Subject: [PATCH 25/38] Add documentation for pjlink media player component (#5585) * add documentation for pjlink media player component * Remove optional parameters from configuration sample. Update version to 0.73 Add logo * :arrow_up: ha_release 0.76 --- .../_components/media_player.pjlink.markdown | 53 ++++++++++++++++++ source/images/supported_brands/pjlink.png | Bin 0 -> 9149 bytes 2 files changed, 53 insertions(+) create mode 100644 source/_components/media_player.pjlink.markdown create mode 100644 source/images/supported_brands/pjlink.png diff --git a/source/_components/media_player.pjlink.markdown b/source/_components/media_player.pjlink.markdown new file mode 100644 index 00000000000..785f7cf2d1d --- /dev/null +++ b/source/_components/media_player.pjlink.markdown @@ -0,0 +1,53 @@ +--- +layout: page +title: "PJLink" +description: "Instructions on how to integrate PJLink enabled projectors into Home Assistant." +date: 2018-06-21 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: pjlink.png +ha_category: Media Player +ha_release: 0.76 +ha_iot_class: "Local Polling" +--- + +The `pjlink` platform allows you to control from Home Assistant, projectors with support for the [PJLink protocol](http://pjlink.jbmia.or.jp/english/index.html). + +## {% linkable_title Configuration %} + +To add a PJLink projector to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: pjlink + host: 192.168.1.2 +``` + +{% configuration %} +host: + description: IP address or hostname of the device. Example:`192.168.1.2`. + required: true + type: string +port: + description: port on which the PJLink service runs on the device. + required: false + type: int + default: 4352 +name: + description: Name of the device. + required: false + type: string + default: name of the device as returned by PJLink. +encoding: + description: Character encoding to use to communicate with the device. + required: false + type: string + default: utf-8 +password: + description: Password to authenticate with the projector. + required: false + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/pjlink.png b/source/images/supported_brands/pjlink.png new file mode 100644 index 0000000000000000000000000000000000000000..8942b38c6ed97903a7629b2fe2eae3ca2c1bd8e0 GIT binary patch literal 9149 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 MrSz>*!Z7H607ljsDgXcg literal 0 HcmV?d00001 From 366911691a9fe3d159843da8d9ed589d53c0527b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 11 Aug 2018 09:04:43 +0200 Subject: [PATCH 26/38] Add initila rc blogpost --- _config.yml | 8 +- source/_posts/2018-08-17-release-76.markdown | 286 +++++++++++++++++++ 2 files changed, 290 insertions(+), 4 deletions(-) create mode 100644 source/_posts/2018-08-17-release-76.markdown diff --git a/_config.yml b/_config.yml index 41f8bb5eacb..905f48a3a53 100644 --- a/_config.yml +++ b/_config.yml @@ -141,14 +141,14 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 75 -current_patch_version: 3 -date_released: 2018-08-09 +current_minor_version: 76 +current_patch_version: 0 +date_released: 2018-08-17 # 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-0753---august-9" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown new file mode 100644 index 00000000000..90c7cf44afb --- /dev/null +++ b/source/_posts/2018-08-17-release-76.markdown @@ -0,0 +1,286 @@ +--- +layout: post +title: "0.76: TBD - UPDATE DATE" +description: "TBD" +date: 2018-08-11 00:01:00 +date_formatted: "August 17, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-08-0.76/components.png +--- + + + +### This release has a migration, initial startup will take some time. + +## {% linkable_title New Platforms %} + +- deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) +- RitAssist / FleetGO support ([@depl0y] - [#15780]) ([device_tracker docs]) (new-platform) +- Add support for OpenUV binary sensors and sensors ([@bachya] - [#15769]) ([openuv docs]) ([binary_sensor.openuv docs]) ([sensor.openuv docs]) (new-platform) +- Add Enphase Envoy component ([@jesserizzo] - [#15081]) ([sensor.enphase_envoy docs]) (new-platform) +- Add media_player.dlna_dmr component ([@StevenLooman] - [#14749]) ([media_player.dlna_dmr docs]) (new-platform) +- Add PJLink media player platform ([@benoitlouy] - [#15083]) ([media_player.pjlink docs]) (new-platform) +- Add RMV public transport sensor ([@cgtobi] - [#15814]) ([sensor.rmvtransport docs]) (new-platform) + +## {% linkable_title New Features %} + +- Add and restore context in recorder ([@balloob] - [#15859]) (new-feature) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Fixed NDMS for latest firmware ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) +- Convert wind speed to km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) +- This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) +- Make sure use_x_forward_for and trusted_proxies must config together ([@awarecan] - [#15804]) ([http docs]) (breaking change) +- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([fan.velbus docs]) ([light.velbus docs]) ([switch.velbus docs]) (breaking change) +- Add facebox auth ([@robmarkcole] - [#15439]) ([image_processing.facebox docs]) (breaking change) +- Fix for multiple camera switches naming of entity ([@rafale77] - [#14028]) ([switch.amcrest docs]) (breaking change) + +## {% linkable_title All changes %} + +- Add kodi unique id based on discovery ([@rytilahti] - [#15093]) ([media_player.kodi docs]) +- Better handling of Yi camera being disconnected ([@bachya] - [#15754]) ([camera.yi docs]) +- Decouple login flow view and data entry flow view ([@awarecan] - [#15715]) ([auth docs]) (new-platform) +- Fixed NDMS for latest firmware ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) +- Add disallow_untyped_calls to mypy check. ([@andrey-git] - [#15661]) ([persistent_notification docs]) +- Update pyozw to 0.4.9 ([@turbokongen] - [#15758]) ([zwave docs]) +- Convert wind speed to km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) +- Round precipitation forecast to 1 decimal place ([@priiduonu] - [#15759]) ([weather.openweathermap docs]) +- Add a "Reviewed by Hound" badge ([@salbertson] - [#15767]) +- Upgrade Mastodon.py to 1.3.1 ([@fabaff] - [#15766]) ([notify docs]) +- This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- Fix docstrings ([@fabaff] - [#15770]) ([onboarding docs]) +- Update pynetgear to 0.4.1 (bugfixes) ([@MatMaul] - [#15768]) ([device_tracker docs]) +- Opensky altitude ([@ioangogo] - [#15273]) ([sensor.opensky docs]) +- Expose internal states and fixed on/off state of Dyson Fans ([@soraxas] - [#15716]) ([fan.dyson docs]) +- deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) +- Add support for STATES of vacuums ([@cnrd] - [#15573]) ([vacuum docs]) ([vacuum.xiaomi_miio docs]) +- Add support for STATE_AUTO of generic_thermostat ([@niklaswa] - [#15678]) ([climate.generic_thermostat docs]) +- Revert "Add support for STATE_AUTO of generic_thermostat (#15678)" ([@awarecan] - [#15783]) ([climate.generic_thermostat docs]) +- RitAssist / FleetGO support ([@depl0y] - [#15780]) ([device_tracker docs]) (new-platform) +- Add support for OpenUV binary sensors and sensors ([@bachya] - [#15769]) ([openuv docs]) ([binary_sensor.openuv docs]) ([sensor.openuv docs]) (new-platform) +- Update pymediaroom to 0.6.4 ([@dgomes] - [#15786]) ([media_player.mediaroom docs]) +- Add Enphase Envoy component ([@jesserizzo] - [#15081]) ([sensor.enphase_envoy docs]) (new-platform) +- Vacuum component: start_pause to individual start and pause commands. ([@cnrd] - [#15751]) ([vacuum docs]) ([vacuum.demo docs]) +- Make sure use_x_forward_for and trusted_proxies must config together ([@awarecan] - [#15804]) ([http docs]) (breaking change) +- Upgrade voluptuous-serialize to 2.0.0 ([@awarecan] - [#15763]) ([config docs]) +- Upgrade pylint to 2.1.0 ([@scop] - [#15811]) ([binary_sensor.bayesian docs]) ([binary_sensor.threshold docs]) ([calendar.todoist docs]) ([light.group docs]) ([sensor.min_max docs]) ([sensor.statistics docs]) +- Upgrade pytest to 3.7.1 and pytest-timeout to 1.3.1 ([@scop] - [#15809]) +- Add support for 2 Tahoma IO awning covers ([@fucm] - [#15660]) ([tahoma docs]) ([cover.tahoma docs]) +- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([fan.velbus docs]) ([light.velbus docs]) ([switch.velbus docs]) (breaking change) +- Upgrade youtube_dl to 2018.08.04 ([@fabaff] - [#15837]) ([media_extractor docs]) +- Add media_player.dlna_dmr component ([@StevenLooman] - [#14749]) ([media_player.dlna_dmr docs]) (new-platform) +- Remove 'volume' from return dict ([@mattwing] - [#15842]) ([sensor.alpha_vantage docs]) +- Upgrade shodan to 1.9.0 ([@fabaff] - [#15839]) ([sensor.shodan docs]) +- Add max_gps_accuracy option to Google Maps ([@PrimusNZ] - [#15833]) ([device_tracker docs]) +- Fix bt_home_hub_5 device tracker ([@ahobsonsayers] - [#15096]) ([device_tracker docs]) +- Change to call_service async_stop non-blocking to allow service call finish ([@awarecan] - [#15803]) +- Try to fix coveralls unstable result ([@awarecan] - [#15800]) +- Add different pop 012501 ID ([@turbokongen] - [#15838]) ([zwave docs]) +- Fix error when Series missing 'episodeFileCount' or 'episodeCount' ([@psike] - [#15824]) ([sensor.sonarr docs]) +- Add facebox auth ([@robmarkcole] - [#15439]) ([image_processing.facebox docs]) (breaking change) +- Upgrade holidays to 0.9.6 ([@fabaff] - [#15831]) ([binary_sensor.workday docs]) +- Upgrade pysnmp to 4.4.5 ([@fabaff] - [#15854]) ([device_tracker docs]) ([sensor.snmp docs]) ([switch.snmp docs]) +- Fix HomeKit test ([@cdce8p] - [#15860]) +- Do not make internet connection during tests ([@balloob] - [#15858]) +- Upgrade pylint to 2.1.1 ([@scop] - [#15872]) +- Upgrade asynctest to 0.12.2 ([@fabaff] - [#15869]) +- Upgrade Sphinx to 1.7.6 ([@fabaff] - [#15868]) +- Upgrade requests_mock to 1.5.2 ([@fabaff] - [#15867]) +- Update based upon forum post ([@DubhAd] - [#15876]) ([device_tracker docs]) +- Upgrade netdisco to 2.0.0 ([@fabaff] - [#15885]) +- Follow changes to netdisco, separating DLNA into DLNA_DMS and DLNA_DMR ([@StevenLooman] - [#15877]) ([media_player.dlna_dmr docs]) +- Upgrade pylast to 2.4.0 ([@fabaff] - [#15886]) ([sensor.lastfm docs]) +- Add auth/authorize endpoint ([@balloob] - [#15887]) +- Upgrade locationsharinglib to 2.0.11 ([@fabaff] - [#15902]) ([device_tracker docs]) +- Refactor data entry flow ([@awarecan] - [#15883]) +- Add HomematicIP Cloud smoke detector device ([@mxworm] - [#15621]) ([binary_sensor.homematicip_cloud docs]) +- Fix for multiple camera switches naming of entity ([@rafale77] - [#14028]) ([switch.amcrest docs]) (breaking change) +- Add realtime true/false switch for Waze ([@mountainsandcode] - [#15228]) ([sensor.waze_travel_time docs]) +- Add PJLink media player platform ([@benoitlouy] - [#15083]) ([media_player.pjlink docs]) (new-platform) +- Some typing related fixes ([@scop] - [#15899]) +- Misc cleanups ([@scop] - [#15907]) ([device_tracker docs]) ([sensor.irish_rail_transport docs]) +- Update radiotherm to 1.4.1 ([@craftyguy] - [#15910]) ([climate.radiotherm docs]) +- Fix bug in translations upload script ([@armills] - [#15922]) +- Add and restore context in recorder ([@balloob] - [#15859]) (new-feature) +- Add IndieAuth 4.2.2 redirect uri at client id ([@balloob] - [#15911]) ([auth docs]) +- deCONZ - Add support for sirens ([@Kane610] - [#15896]) ([deconz docs]) ([switch.deconz docs]) +- Add RMV public transport sensor ([@cgtobi] - [#15814]) ([sensor.rmvtransport docs]) (new-platform) +- :pencil2: Corrects typo in code comments ([@frenck] - [#15923]) ([binary_sensor.homematicip_cloud docs]) + +[#13742]: https://github.com/home-assistant/home-assistant/pull/13742 +[#14028]: https://github.com/home-assistant/home-assistant/pull/14028 +[#14749]: https://github.com/home-assistant/home-assistant/pull/14749 +[#15081]: https://github.com/home-assistant/home-assistant/pull/15081 +[#15083]: https://github.com/home-assistant/home-assistant/pull/15083 +[#15093]: https://github.com/home-assistant/home-assistant/pull/15093 +[#15096]: https://github.com/home-assistant/home-assistant/pull/15096 +[#15228]: https://github.com/home-assistant/home-assistant/pull/15228 +[#15273]: https://github.com/home-assistant/home-assistant/pull/15273 +[#15439]: https://github.com/home-assistant/home-assistant/pull/15439 +[#15511]: https://github.com/home-assistant/home-assistant/pull/15511 +[#15573]: https://github.com/home-assistant/home-assistant/pull/15573 +[#15621]: https://github.com/home-assistant/home-assistant/pull/15621 +[#15660]: https://github.com/home-assistant/home-assistant/pull/15660 +[#15661]: https://github.com/home-assistant/home-assistant/pull/15661 +[#15678]: https://github.com/home-assistant/home-assistant/pull/15678 +[#15715]: https://github.com/home-assistant/home-assistant/pull/15715 +[#15716]: https://github.com/home-assistant/home-assistant/pull/15716 +[#15740]: https://github.com/home-assistant/home-assistant/pull/15740 +[#15751]: https://github.com/home-assistant/home-assistant/pull/15751 +[#15752]: https://github.com/home-assistant/home-assistant/pull/15752 +[#15754]: https://github.com/home-assistant/home-assistant/pull/15754 +[#15757]: https://github.com/home-assistant/home-assistant/pull/15757 +[#15758]: https://github.com/home-assistant/home-assistant/pull/15758 +[#15759]: https://github.com/home-assistant/home-assistant/pull/15759 +[#15763]: https://github.com/home-assistant/home-assistant/pull/15763 +[#15766]: https://github.com/home-assistant/home-assistant/pull/15766 +[#15767]: https://github.com/home-assistant/home-assistant/pull/15767 +[#15768]: https://github.com/home-assistant/home-assistant/pull/15768 +[#15769]: https://github.com/home-assistant/home-assistant/pull/15769 +[#15770]: https://github.com/home-assistant/home-assistant/pull/15770 +[#15780]: https://github.com/home-assistant/home-assistant/pull/15780 +[#15783]: https://github.com/home-assistant/home-assistant/pull/15783 +[#15786]: https://github.com/home-assistant/home-assistant/pull/15786 +[#15800]: https://github.com/home-assistant/home-assistant/pull/15800 +[#15803]: https://github.com/home-assistant/home-assistant/pull/15803 +[#15804]: https://github.com/home-assistant/home-assistant/pull/15804 +[#15809]: https://github.com/home-assistant/home-assistant/pull/15809 +[#15811]: https://github.com/home-assistant/home-assistant/pull/15811 +[#15814]: https://github.com/home-assistant/home-assistant/pull/15814 +[#15824]: https://github.com/home-assistant/home-assistant/pull/15824 +[#15831]: https://github.com/home-assistant/home-assistant/pull/15831 +[#15833]: https://github.com/home-assistant/home-assistant/pull/15833 +[#15837]: https://github.com/home-assistant/home-assistant/pull/15837 +[#15838]: https://github.com/home-assistant/home-assistant/pull/15838 +[#15839]: https://github.com/home-assistant/home-assistant/pull/15839 +[#15842]: https://github.com/home-assistant/home-assistant/pull/15842 +[#15854]: https://github.com/home-assistant/home-assistant/pull/15854 +[#15858]: https://github.com/home-assistant/home-assistant/pull/15858 +[#15859]: https://github.com/home-assistant/home-assistant/pull/15859 +[#15860]: https://github.com/home-assistant/home-assistant/pull/15860 +[#15867]: https://github.com/home-assistant/home-assistant/pull/15867 +[#15868]: https://github.com/home-assistant/home-assistant/pull/15868 +[#15869]: https://github.com/home-assistant/home-assistant/pull/15869 +[#15872]: https://github.com/home-assistant/home-assistant/pull/15872 +[#15876]: https://github.com/home-assistant/home-assistant/pull/15876 +[#15877]: https://github.com/home-assistant/home-assistant/pull/15877 +[#15883]: https://github.com/home-assistant/home-assistant/pull/15883 +[#15885]: https://github.com/home-assistant/home-assistant/pull/15885 +[#15886]: https://github.com/home-assistant/home-assistant/pull/15886 +[#15887]: https://github.com/home-assistant/home-assistant/pull/15887 +[#15896]: https://github.com/home-assistant/home-assistant/pull/15896 +[#15899]: https://github.com/home-assistant/home-assistant/pull/15899 +[#15902]: https://github.com/home-assistant/home-assistant/pull/15902 +[#15907]: https://github.com/home-assistant/home-assistant/pull/15907 +[#15910]: https://github.com/home-assistant/home-assistant/pull/15910 +[#15911]: https://github.com/home-assistant/home-assistant/pull/15911 +[#15922]: https://github.com/home-assistant/home-assistant/pull/15922 +[#15923]: https://github.com/home-assistant/home-assistant/pull/15923 +[@DubhAd]: https://github.com/DubhAd +[@Kane610]: https://github.com/Kane610 +[@MatMaul]: https://github.com/MatMaul +[@PrimusNZ]: https://github.com/PrimusNZ +[@StevenLooman]: https://github.com/StevenLooman +[@ahobsonsayers]: https://github.com/ahobsonsayers +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@benoitlouy]: https://github.com/benoitlouy +[@cdce8p]: https://github.com/cdce8p +[@cgtobi]: https://github.com/cgtobi +[@cnrd]: https://github.com/cnrd +[@craftyguy]: https://github.com/craftyguy +[@depl0y]: https://github.com/depl0y +[@dgomes]: https://github.com/dgomes +[@fabaff]: https://github.com/fabaff +[@foxel]: https://github.com/foxel +[@frenck]: https://github.com/frenck +[@fucm]: https://github.com/fucm +[@ioangogo]: https://github.com/ioangogo +[@jesserizzo]: https://github.com/jesserizzo +[@mattwing]: https://github.com/mattwing +[@mountainsandcode]: https://github.com/mountainsandcode +[@mxworm]: https://github.com/mxworm +[@niklaswa]: https://github.com/niklaswa +[@priiduonu]: https://github.com/priiduonu +[@psike]: https://github.com/psike +[@rafale77]: https://github.com/rafale77 +[@robmarkcole]: https://github.com/robmarkcole +[@rytilahti]: https://github.com/rytilahti +[@salbertson]: https://github.com/salbertson +[@scop]: https://github.com/scop +[@soraxas]: https://github.com/soraxas +[@thomasdelaet]: https://github.com/thomasdelaet +[@turbokongen]: https://github.com/turbokongen +[auth docs]: /components/auth/ +[binary_sensor.bayesian docs]: /components/binary_sensor.bayesian/ +[binary_sensor.homematicip_cloud docs]: /components/binary_sensor.homematicip_cloud/ +[binary_sensor.openuv docs]: /components/binary_sensor.openuv/ +[binary_sensor.threshold docs]: /components/binary_sensor.threshold/ +[binary_sensor.velbus docs]: /components/binary_sensor.velbus/ +[binary_sensor.workday docs]: /components/binary_sensor.workday/ +[calendar.todoist docs]: /components/calendar.todoist/ +[camera.yi docs]: /components/camera.yi/ +[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ +[climate.radiotherm docs]: /components/climate.radiotherm/ +[config docs]: /components/config/ +[cover.tahoma docs]: /components/cover.tahoma/ +[deconz docs]: /components/deconz/ +[device_tracker docs]: /components/device_tracker/ +[fan.dyson docs]: /components/fan.dyson/ +[fan.velbus docs]: /components/fan.velbus/ +[http docs]: /components/http/ +[image_processing.facebox docs]: /components/image_processing.facebox/ +[light.deconz docs]: /components/light.deconz/ +[light.group docs]: /components/light.group/ +[light.velbus docs]: /components/light.velbus/ +[media_extractor docs]: /components/media_extractor/ +[media_player.dlna_dmr docs]: /components/media_player.dlna_dmr/ +[media_player.kodi docs]: /components/media_player.kodi/ +[media_player.mediaroom docs]: /components/media_player.mediaroom/ +[media_player.pjlink docs]: /components/media_player.pjlink/ +[notify docs]: /components/notify/ +[onboarding docs]: /components/onboarding/ +[openuv docs]: /components/openuv/ +[persistent_notification docs]: /components/persistent_notification/ +[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ +[sensor.enphase_envoy docs]: /components/sensor.enphase_envoy/ +[sensor.irish_rail_transport docs]: /components/sensor.irish_rail_transport/ +[sensor.lastfm docs]: /components/sensor.lastfm/ +[sensor.min_max docs]: /components/sensor.min_max/ +[sensor.opensky docs]: /components/sensor.opensky/ +[sensor.openuv docs]: /components/sensor.openuv/ +[sensor.rmvtransport docs]: /components/sensor.rmvtransport/ +[sensor.shodan docs]: /components/sensor.shodan/ +[sensor.snmp docs]: /components/sensor.snmp/ +[sensor.sonarr docs]: /components/sensor.sonarr/ +[sensor.statistics docs]: /components/sensor.statistics/ +[sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/ +[switch.amcrest docs]: /components/switch.amcrest/ +[switch.deconz docs]: /components/switch.deconz/ +[switch.snmp docs]: /components/switch.snmp/ +[switch.velbus docs]: /components/switch.velbus/ +[tahoma docs]: /components/tahoma/ +[vacuum docs]: /components/vacuum/ +[vacuum.demo docs]: /components/vacuum.demo/ +[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ +[velbus docs]: /components/velbus/ +[weather.openweathermap docs]: /components/weather.openweathermap/ +[zwave docs]: /components/zwave/ From 1e59ae039f8096018a16f9e7956170b81ec01092 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Aug 2018 14:15:33 +0200 Subject: [PATCH 27/38] Update 2018-08-17-release-76.markdown --- source/_posts/2018-08-17-release-76.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index 90c7cf44afb..e65745d3398 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -15,6 +15,8 @@ og_image: /images/blog/2018-08-0.76/components.png ### This release has a migration, initial startup will take some time. +Report 1: Migration took 15 minutes for 30 days history. (DB: Postgres; Raspberry Pi 3; Ubuntu 16.04; venv installation) + ## {% linkable_title New Platforms %} - deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) From fd2cce0370fbbbaefa970d585a6807859e126d6b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Aug 2018 14:15:51 +0200 Subject: [PATCH 28/38] Update 2018-08-17-release-76.markdown --- source/_posts/2018-08-17-release-76.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index e65745d3398..223a3865794 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -17,6 +17,8 @@ og_image: /images/blog/2018-08-0.76/components.png Report 1: Migration took 15 minutes for 30 days history. (DB: Postgres; Raspberry Pi 3; Ubuntu 16.04; venv installation) +Please report your migration time in the #beta channel on discord. + ## {% linkable_title New Platforms %} - deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) From f3b2e9082dc8c0b15be328c83dd6e448a02ff713 Mon Sep 17 00:00:00 2001 From: rafale77 Date: Tue, 14 Aug 2018 01:55:08 +0800 Subject: [PATCH 29/38] Update amcrest.markdown (#5216) * Update amcrest.markdown * :pencil2: Minor tweaks --- source/_components/amcrest.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/amcrest.markdown b/source/_components/amcrest.markdown index 9c0aad4929e..220ab96d17f 100644 --- a/source/_components/amcrest.markdown +++ b/source/_components/amcrest.markdown @@ -46,7 +46,7 @@ Configuration variables: - **host** (*Required*): The IP address or hostname of your camera. If using a hostname, make sure the DNS works as expected. - **username** (*Required*): The username for accessing your camera. - **password** (*Required*): The password for accessing your camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". +- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". In the case of multi-camera setups, this is highly recommended as camera id number will be randomly changed at each reboot if a name is not allocated. - **port** (*Optional*): The port that the camera is running on. The default is 80. - **resolution** (*Optional*): This parameter allows you to specify the camera resolution. For a high resolution (1080/720p), specify the option `high`. For VGA resolution (640x480p), specify the option `low`. If omitted, it defaults to *high*. - **stream_source** (*Optional*): The data source for the live stream. `mjpeg` will use the camera's native MJPEG stream, whereas `snapshot` will use the camera's snapshot API to create a stream from still images. You can also set the `rtsp` option to generate the streaming via RTSP protocol. If omitted, it defaults to *snapshot*. From 574111a72054950ce7de640b01c60b458d35201d Mon Sep 17 00:00:00 2001 From: rafale77 Date: Tue, 14 Aug 2018 02:03:46 +0800 Subject: [PATCH 30/38] Update to reflect new pull under review (#5217) * Update to reflect new pull under review Addresses multi-camera setups with naming issues * Update switch.amcrest.markdown * Update switch.amcrest.markdown * :rocket: Trigger rebuild * :pencil2: Tweaks * :pencil2: Rewording --- source/_components/switch.amcrest.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/switch.amcrest.markdown b/source/_components/switch.amcrest.markdown index d9ed4564b22..d494df7b02b 100644 --- a/source/_components/switch.amcrest.markdown +++ b/source/_components/switch.amcrest.markdown @@ -16,3 +16,7 @@ ha_iot_class: "Local Polling" The `amcrest` switch platform lets you control settings of [Amcrest IP Camera](https://home-assistant.io/components/camera.amcrest/) through Home Assistant. Switches will be configured automatically. Please refer to the [component](/components/amcrest/) configuration on how to setup. + +

+In previous versions, switch devices in setups with multiple cameras, would not have specific entity ID causing them to change randomly after each Home Assistant restart. The current version adds the name of the camera at the end of the switch entity ID, making it more specific and consistent and causes the name option to be required in a multi-camera system. This behavior matches the sensor behavior of the Amcrest component. Because of this, older automations may require updates to the entity ID. +

From 002833d557b22aac5ce3ce4368a2400aa2016cd0 Mon Sep 17 00:00:00 2001 From: Oscar Tin Yiu Lai Date: Tue, 14 Aug 2018 08:53:58 +1000 Subject: [PATCH 31/38] added docs for added attributes for dyson fan (#5938) --- source/_components/fan.dyson.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/fan.dyson.markdown b/source/_components/fan.dyson.markdown index d1ae60c6381..c3480135efb 100644 --- a/source/_components/fan.dyson.markdown +++ b/source/_components/fan.dyson.markdown @@ -22,3 +22,12 @@ You have first to setup the [Dyson component](/components/dyson/) - Pure Cool link (desk and tower) - Pure Hot+cool link (but heating is not yet supported) + +### {% linkable_title Attributes %} + +The are several attributes that can be useful for automations and templates. + +| Attribute | Description | +| --------- | ----------- | +| `is_night_mode` | A boolean that indicates if the night mode of the fan device is on. +| `is_auto_mode` | A boolean that indicates if the auto mode of the fan device is on. From c315ed2f8088ad517b22cc9c989472e59e9c4fd1 Mon Sep 17 00:00:00 2001 From: cgtobi Date: Mon, 13 Aug 2018 20:51:16 +0200 Subject: [PATCH 32/38] Add documentation for new RMV public transport sensor (#5947) * Initial documentation for the rmvtransport sensor. * Fix name * Fix typo * Added missing variable description for max number of journeys. * Minor wording fix * Fix setting names after code change. * Use configuration tag syntax. * Add logo. * Update logo file name. * Fix liquid syntax error. * Fix config setting name. * :pencil2: Markdown tweaks --- .../_components/sensor.rmvtransport.markdown | 101 ++++++++++++++++++ source/images/supported_brands/RMV.png | Bin 0 -> 12964 bytes 2 files changed, 101 insertions(+) create mode 100644 source/_components/sensor.rmvtransport.markdown create mode 100644 source/images/supported_brands/RMV.png diff --git a/source/_components/sensor.rmvtransport.markdown b/source/_components/sensor.rmvtransport.markdown new file mode 100644 index 00000000000..e6584282bda --- /dev/null +++ b/source/_components/sensor.rmvtransport.markdown @@ -0,0 +1,101 @@ +--- +layout: page +title: "RMV" +description: "Instructions on how to integrate Rhein-Main public transport departure times into Home Assistant." +date: 2018-08-02 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: RMV.png +ha_category: Transport +ha_release: 0.76 +ha_iot_class: "Cloud Polling" +--- + +The `rvmtransport` sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Rhein-Main area public transport network. Additional details such as the line number and destination are present in the attributes. + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: rmvtransport + next_departure: + - station: STATION_OR_STOP_ID +``` + +{% configuration %} +name: + description: Name to use in the frontend. + required: false + default: The default is the station name. + type: string +stationId: + description: ID of the stop or station, e.g. 3000010. Visit [the RMV OpenData web site](https://opendata.rmv.de) to find a list of valid IDs. + required: true + type: string +destinations: + description: "One or multiple final stop names, e.g., 'Frankfurt (Main) Hauptbahnhof' or ['Frankfurt (Main) Hauptbahnhof','Frankfurt (Main) Stadion']. This can be used to only consider a particular direction of travel." + required: false + type: [string] +lines: + description: "One or more line numbers, e.g., `'S8'` or `['S8', 'RB33', '41']`" + required: false + default: The default is the station name. + type: [string, int] +products: + description: "One or more modes of transport `['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE']`." + required: false + default: Defaults to all. + type: [string] +time_offset: + description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. + required: false + default: The defaults is 0. + type: int +max_journeys: + description: Specify the maximal number of journeys. + required: false + default: The default is 5. + type: string +{% endconfiguration %} + +## {% linkable_title Examples %} + +### {% linkable_title Full configuration %} + +The example below shows a full configuration with three sensors that showcase the various configuration options. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: rmvtransport + next_departure: + - station: 3000010 + time_offset: 5 + destinations: + - 'Frankfurt (Main) Flughafen Regionalbahnhof' + - 'Frankfurt (Main) Stadion' + products: + - 'RB' + - 'RE' + - 'Bus' + - 'S' + - station: 3006907 + products: 'Bus' + destinations: ['Wiesbaden Dernsches Gelände', 'Mainz Hauptbahnhof'] + name: Destination + - station: 3006904 + lines: 'S8' + max_journeys: 5 + products: 'S' +``` + +The first sensor will return S-Bahn, bus, RB and RE trains departures from Frankfurt Hauptbahnhof to Frankfurt Airport or Stadium that are at least 5 minutes away. + +The second sensor returns bus departures from Wiesbaden Hauptbahnhof going to Dernsches Gelände and Mainz Hauptbahnhof. To retrieve the time of the second departure, you would use states.sensor.ENTITY_NAME.attributes.departures[1].time. + +The third sensor returns all S-Bahn trains from Mainz Hauptbahnhof for line S8. diff --git a/source/images/supported_brands/RMV.png b/source/images/supported_brands/RMV.png new file mode 100644 index 0000000000000000000000000000000000000000..250e90e4d4b2970aff5fa85df4cb15e947a2e674 GIT binary patch literal 12964 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 literal 0 HcmV?d00001 From dcd8f5526d3b28804c492949b771500b3d57e645 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Mon, 13 Aug 2018 21:15:29 +0200 Subject: [PATCH 33/38] Improve deCONZ switch platform documentation (#5986) --- source/_components/switch.deconz.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/switch.deconz.markdown b/source/_components/switch.deconz.markdown index e55a875cc8e..1b7a1b3e3f8 100644 --- a/source/_components/switch.deconz.markdown +++ b/source/_components/switch.deconz.markdown @@ -15,10 +15,12 @@ ha_iot_class: "Local Push" See the [deCONZ main component](/components/deconz/) for configuration instructions. -The `Entity Id` names will be `switch.device_name`, where `device_name` is defined in deCONZ. +Switches are devices like power plugs and sirens. Note that devices in the switch platform identify as lights, so there is a manually curated list that defines which "lights" are switches. +The `Entity Id` names will be `switch.device_name`, where `device_name` is defined in deCONZ. + #### {% linkable_title Verified supported switches %} - Innr SP120 From 5f473bd7bba79061503f37cb1ee7ba8c8fd71c82 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 14 Aug 2018 08:22:14 +0200 Subject: [PATCH 34/38] Add Mozilla SSL docs (#6013) * Add Mozilla SSL docs * Update http.markdown --- source/_components/http.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/http.markdown b/source/_components/http.markdown index 0616476bf07..557c87681dd 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -42,6 +42,7 @@ Configuration variables: - **trusted_networks** (*Optional*): List of trusted networks, consisting of IP addresses or networks, that are allowed to bypass password protection when accessing Home Assistant. If using a reverse proxy with the `use_x_forwarded_for` option enabled, requests proxied to Home Assistant with a trusted `X-Forwarded-For` header will appear to come from the IP given in that header instead of the proxy IP. - **ip_ban_enabled** (*Optional*): Flag indicating whether additional IP filtering is enabled. Defaults to False. - **login_attempts_threshold** (*Optional*): Number of failed login attempt from single IP after which it will be automatically banned if `ip_ban_enabled` is True. Defaults to -1, meaning that no new automatic bans will be added. +- **ssl_profile** (*Optional*): The [Mozilla SSL profile](https://wiki.mozilla.org/Security/Server_Side_TLS) to use. Either `modern` or `intermediate`. Default is `modern`. Only lower if you are experiencing integrations causing SSL handshake errors. The sample below shows a configuration entry with possible values: From d8aaf57988b6cf7dfa613b376cc56a91c6676ec2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 14 Aug 2018 22:14:54 +0200 Subject: [PATCH 35/38] Update post --- source/_posts/2018-08-17-release-76.markdown | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index 223a3865794..c5a27912a32 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -13,9 +13,18 @@ og_image: /images/blog/2018-08-0.76/components.png -### This release has a migration, initial startup will take some time. +The auth system is entering release candidate status 🎉. It will be enabled by default starting the next release (0.76) but you can already easily enable it now: -Report 1: Migration took 15 minutes for 30 days history. (DB: Postgres; Raspberry Pi 3; Ubuntu 16.04; venv installation) +```yaml +homeassistant: + # add this part + auth_providers: + - type: homeassistant + # uncomment this to enable API password + # - type: legacy_api_password +``` + +### This release has a migration, initial startup can take ~20 minutes (depends on size DB) Please report your migration time in the #beta channel on discord. From 642552c64aea0284ed935e027529eb178b9af9bf Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 16 Aug 2018 15:47:03 +0200 Subject: [PATCH 36/38] Update breaking changes --- source/_posts/2018-08-17-release-76.markdown | 89 +++++++++++++++++--- 1 file changed, 77 insertions(+), 12 deletions(-) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index c5a27912a32..8d2fd33d224 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -54,20 +54,40 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- Fixed NDMS for latest firmware ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) -- Convert wind speed to km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) -- This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) -- deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) -- Make sure use_x_forward_for and trusted_proxies must config together ([@awarecan] - [#15804]) ([http docs]) (breaking change) -- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([fan.velbus docs]) ([light.velbus docs]) ([switch.velbus docs]) (breaking change) -- Add facebox auth ([@robmarkcole] - [#15439]) ([image_processing.facebox docs]) (breaking change) -- Fix for multiple camera switches naming of entity ([@rafale77] - [#14028]) ([switch.amcrest docs]) (breaking change) +- Keenetic NDMS: user needs to have access to the TelNet interface ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) +- openweathermap: wind speed is now correctly in km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) +- Remove Telstra notifiy component: This API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- deCONZ - support for power plugs. Power plugs that are of type "On/Off plug-in unit" and "Smart plug" (Osram and Innr among others) will now be switches instead of lights. Entities will be found as switch.entity_id instead of light.entity_id. ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) +- HTTP: Make sure use_x_forward_for and trusted_proxies must be configured together ([@awarecan] - [#15804]) ([http docs]) (breaking change) +- Velbus: Breaking changes include auto-discovery support so that you don't need to specify modules manually anymore in the configuration file, but just load the velbus component which will automatically load the switch and binary_sensor platforms. In addition, the fan and light platforms are removed since these should be modeled with template platform based on velbus switches. ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([switch.velbus docs]) (breaking change) +- Facebox: Events are no longer fired when a face is taught, as these are unnecessary and the info they convey is already in the logs. ([@robmarkcole] - [#15439]) ([image_processing.facebox docs]) (breaking change) +- AMCrest switch: Fix for multiple camera switches naming of entity. May change switch entity_id. Please check your automation and update the identity-id if you have previously assigned a name to your camera as it appends the name of the camera to the switch id. ([@rafale77] - [#14028]) ([switch.amcrest docs]) (breaking change) +- MQTT embedded broker will no longer rely on HTTP API password to automatically configure itself. You need to set own password. ([@awarecan] - [#15929]) ([mqtt docs]) (breaking change) (beta fix) +- Remove remote.API from core.Config. Might break custom components if they rely on hass.config.api ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) + +## {% linkable_title Beta Fixes %} + +- Upgrade pymysensors to 0.17.0 ([@MartinHjelmare] - [#15942]) ([mysensors docs]) (beta fix) +- Deprecate remote.api ([@balloob] - [#15955]) (beta fix) +- Added error handling for sense API timeouts ([@kbickar] - [#15789]) ([sensor.sense docs]) (beta fix) +- Add context to login flow ([@awarecan] - [#15914]) ([auth docs]) (beta fix) +- MQTT embedded broker has to set its own password. ([@awarecan] - [#15929]) ([mqtt docs]) (breaking change) (beta fix) +- Fix issue when reading worxlandroid pin code ([@GotoCode] - [#15930]) ([sensor.worxlandroid docs]) (beta fix) +- remove-phantomjs-from-docker ([@vrih] - [#15936]) (beta fix) +- Remove remote.API from core.Config ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) +- Switch to intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) +- Use JWT for access tokens ([@balloob] - [#15972]) ([auth docs]) ([http docs]) ([websocket_api docs]) (beta fix) +- Pin crypto ([@balloob] - [#15978]) (beta fix) +- Teak mqtt error message for 0.76 release ([@awarecan] - [#15983]) ([mqtt docs]) (beta fix) +- Fix 0.76 beta2 hassio token issue ([@awarecan] - [#15987]) ([hassio docs]) (beta fix) +- Fix mysensors connection task blocking setup ([@MartinHjelmare] - [#15938]) ([mysensors docs]) (beta fix) +- Fix Nest async from sync ([@balloob] - [#15997]) ([nest docs]) (beta fix) ## {% linkable_title All changes %} - Add kodi unique id based on discovery ([@rytilahti] - [#15093]) ([media_player.kodi docs]) - Better handling of Yi camera being disconnected ([@bachya] - [#15754]) ([camera.yi docs]) -- Decouple login flow view and data entry flow view ([@awarecan] - [#15715]) ([auth docs]) (new-platform) +- Decouple login flow view and data entry flow view ([@awarecan] - [#15715]) ([auth docs]) - Fixed NDMS for latest firmware ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) - Add disallow_untyped_calls to mypy check. ([@andrey-git] - [#15661]) ([persistent_notification docs]) - Update pyozw to 0.4.9 ([@turbokongen] - [#15758]) ([zwave docs]) @@ -76,7 +96,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add a "Reviewed by Hound" badge ([@salbertson] - [#15767]) - Upgrade Mastodon.py to 1.3.1 ([@fabaff] - [#15766]) ([notify docs]) - This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) -- Fix docstrings ([@fabaff] - [#15770]) ([onboarding docs]) +- Fix docstrings ([@fabaff] - [#15770]) - Update pynetgear to 0.4.1 (bugfixes) ([@MatMaul] - [#15768]) ([device_tracker docs]) - Opensky altitude ([@ioangogo] - [#15273]) ([sensor.opensky docs]) - Expose internal states and fixed on/off state of Dyson Fans ([@soraxas] - [#15716]) ([fan.dyson docs]) @@ -88,13 +108,13 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add support for OpenUV binary sensors and sensors ([@bachya] - [#15769]) ([openuv docs]) ([binary_sensor.openuv docs]) ([sensor.openuv docs]) (new-platform) - Update pymediaroom to 0.6.4 ([@dgomes] - [#15786]) ([media_player.mediaroom docs]) - Add Enphase Envoy component ([@jesserizzo] - [#15081]) ([sensor.enphase_envoy docs]) (new-platform) -- Vacuum component: start_pause to individual start and pause commands. ([@cnrd] - [#15751]) ([vacuum docs]) ([vacuum.demo docs]) +- Vacuum component: start_pause to individual start and pause commands. ([@cnrd] - [#15751]) ([vacuum docs]) - Make sure use_x_forward_for and trusted_proxies must config together ([@awarecan] - [#15804]) ([http docs]) (breaking change) - Upgrade voluptuous-serialize to 2.0.0 ([@awarecan] - [#15763]) ([config docs]) - Upgrade pylint to 2.1.0 ([@scop] - [#15811]) ([binary_sensor.bayesian docs]) ([binary_sensor.threshold docs]) ([calendar.todoist docs]) ([light.group docs]) ([sensor.min_max docs]) ([sensor.statistics docs]) - Upgrade pytest to 3.7.1 and pytest-timeout to 1.3.1 ([@scop] - [#15809]) - Add support for 2 Tahoma IO awning covers ([@fucm] - [#15660]) ([tahoma docs]) ([cover.tahoma docs]) -- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([fan.velbus docs]) ([light.velbus docs]) ([switch.velbus docs]) (breaking change) +- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([switch.velbus docs]) (breaking change) - Upgrade youtube_dl to 2018.08.04 ([@fabaff] - [#15837]) ([media_extractor docs]) - Add media_player.dlna_dmr component ([@StevenLooman] - [#14749]) ([media_player.dlna_dmr docs]) (new-platform) - Remove 'volume' from return dict ([@mattwing] - [#15842]) ([sensor.alpha_vantage docs]) @@ -126,6 +146,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add realtime true/false switch for Waze ([@mountainsandcode] - [#15228]) ([sensor.waze_travel_time docs]) - Add PJLink media player platform ([@benoitlouy] - [#15083]) ([media_player.pjlink docs]) (new-platform) - Some typing related fixes ([@scop] - [#15899]) +- Update August component to use py-august:0.6.0 ([@snjoetw] - [#15916]) ([august docs]) - Misc cleanups ([@scop] - [#15907]) ([device_tracker docs]) ([sensor.irish_rail_transport docs]) - Update radiotherm to 1.4.1 ([@craftyguy] - [#15910]) ([climate.radiotherm docs]) - Fix bug in translations upload script ([@armills] - [#15922]) @@ -134,6 +155,21 @@ Experiencing issues introduced by this release? Please report them in our [issue - deCONZ - Add support for sirens ([@Kane610] - [#15896]) ([deconz docs]) ([switch.deconz docs]) - Add RMV public transport sensor ([@cgtobi] - [#15814]) ([sensor.rmvtransport docs]) (new-platform) - :pencil2: Corrects typo in code comments ([@frenck] - [#15923]) ([binary_sensor.homematicip_cloud docs]) +- Upgrade pymysensors to 0.17.0 ([@MartinHjelmare] - [#15942]) ([mysensors docs]) (beta fix) +- Deprecate remote.api ([@balloob] - [#15955]) (beta fix) +- Added error handling for sense API timeouts ([@kbickar] - [#15789]) ([sensor.sense docs]) (beta fix) +- Add context to login flow ([@awarecan] - [#15914]) ([auth docs]) (beta fix) +- MQTT embedded broker has to set its own password. ([@awarecan] - [#15929]) ([mqtt docs]) (breaking change) (beta fix) +- Fix issue when reading worxlandroid pin code ([@GotoCode] - [#15930]) ([sensor.worxlandroid docs]) (beta fix) +- remove-phantomjs-from-docker ([@vrih] - [#15936]) (beta fix) +- Remove remote.API from core.Config ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) +- Switch to intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) +- Use JWT for access tokens ([@balloob] - [#15972]) ([auth docs]) ([http docs]) ([websocket_api docs]) (beta fix) +- Pin crypto ([@balloob] - [#15978]) (beta fix) +- Teak mqtt error message for 0.76 release ([@awarecan] - [#15983]) ([mqtt docs]) (beta fix) +- Fix 0.76 beta2 hassio token issue ([@awarecan] - [#15987]) ([hassio docs]) (beta fix) +- Fix mysensors connection task blocking setup ([@MartinHjelmare] - [#15938]) ([mysensors docs]) (beta fix) +- Fix Nest async from sync ([@balloob] - [#15997]) ([nest docs]) (beta fix) [#13742]: https://github.com/home-assistant/home-assistant/pull/13742 [#14028]: https://github.com/home-assistant/home-assistant/pull/14028 @@ -169,6 +205,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#15780]: https://github.com/home-assistant/home-assistant/pull/15780 [#15783]: https://github.com/home-assistant/home-assistant/pull/15783 [#15786]: https://github.com/home-assistant/home-assistant/pull/15786 +[#15789]: https://github.com/home-assistant/home-assistant/pull/15789 [#15800]: https://github.com/home-assistant/home-assistant/pull/15800 [#15803]: https://github.com/home-assistant/home-assistant/pull/15803 [#15804]: https://github.com/home-assistant/home-assistant/pull/15804 @@ -202,10 +239,27 @@ Experiencing issues introduced by this release? Please report them in our [issue [#15907]: https://github.com/home-assistant/home-assistant/pull/15907 [#15910]: https://github.com/home-assistant/home-assistant/pull/15910 [#15911]: https://github.com/home-assistant/home-assistant/pull/15911 +[#15914]: https://github.com/home-assistant/home-assistant/pull/15914 +[#15916]: https://github.com/home-assistant/home-assistant/pull/15916 [#15922]: https://github.com/home-assistant/home-assistant/pull/15922 [#15923]: https://github.com/home-assistant/home-assistant/pull/15923 +[#15929]: https://github.com/home-assistant/home-assistant/pull/15929 +[#15930]: https://github.com/home-assistant/home-assistant/pull/15930 +[#15936]: https://github.com/home-assistant/home-assistant/pull/15936 +[#15938]: https://github.com/home-assistant/home-assistant/pull/15938 +[#15942]: https://github.com/home-assistant/home-assistant/pull/15942 +[#15951]: https://github.com/home-assistant/home-assistant/pull/15951 +[#15955]: https://github.com/home-assistant/home-assistant/pull/15955 +[#15957]: https://github.com/home-assistant/home-assistant/pull/15957 +[#15972]: https://github.com/home-assistant/home-assistant/pull/15972 +[#15978]: https://github.com/home-assistant/home-assistant/pull/15978 +[#15983]: https://github.com/home-assistant/home-assistant/pull/15983 +[#15987]: https://github.com/home-assistant/home-assistant/pull/15987 +[#15997]: https://github.com/home-assistant/home-assistant/pull/15997 [@DubhAd]: https://github.com/DubhAd +[@GotoCode]: https://github.com/GotoCode [@Kane610]: https://github.com/Kane610 +[@MartinHjelmare]: https://github.com/MartinHjelmare [@MatMaul]: https://github.com/MatMaul [@PrimusNZ]: https://github.com/PrimusNZ [@StevenLooman]: https://github.com/StevenLooman @@ -228,6 +282,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@fucm]: https://github.com/fucm [@ioangogo]: https://github.com/ioangogo [@jesserizzo]: https://github.com/jesserizzo +[@kbickar]: https://github.com/kbickar [@mattwing]: https://github.com/mattwing [@mountainsandcode]: https://github.com/mountainsandcode [@mxworm]: https://github.com/mxworm @@ -239,9 +294,12 @@ Experiencing issues introduced by this release? Please report them in our [issue [@rytilahti]: https://github.com/rytilahti [@salbertson]: https://github.com/salbertson [@scop]: https://github.com/scop +[@snjoetw]: https://github.com/snjoetw [@soraxas]: https://github.com/soraxas [@thomasdelaet]: https://github.com/thomasdelaet [@turbokongen]: https://github.com/turbokongen +[@vrih]: https://github.com/vrih +[august docs]: /components/august/ [auth docs]: /components/auth/ [binary_sensor.bayesian docs]: /components/binary_sensor.bayesian/ [binary_sensor.homematicip_cloud docs]: /components/binary_sensor.homematicip_cloud/ @@ -259,6 +317,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [device_tracker docs]: /components/device_tracker/ [fan.dyson docs]: /components/fan.dyson/ [fan.velbus docs]: /components/fan.velbus/ +[hassio docs]: /components/hassio/ [http docs]: /components/http/ [image_processing.facebox docs]: /components/image_processing.facebox/ [light.deconz docs]: /components/light.deconz/ @@ -269,6 +328,9 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.kodi docs]: /components/media_player.kodi/ [media_player.mediaroom docs]: /components/media_player.mediaroom/ [media_player.pjlink docs]: /components/media_player.pjlink/ +[mqtt docs]: /components/mqtt/ +[mysensors docs]: /components/mysensors/ +[nest docs]: /components/nest/ [notify docs]: /components/notify/ [onboarding docs]: /components/onboarding/ [openuv docs]: /components/openuv/ @@ -281,11 +343,13 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.opensky docs]: /components/sensor.opensky/ [sensor.openuv docs]: /components/sensor.openuv/ [sensor.rmvtransport docs]: /components/sensor.rmvtransport/ +[sensor.sense docs]: /components/sensor.sense/ [sensor.shodan docs]: /components/sensor.shodan/ [sensor.snmp docs]: /components/sensor.snmp/ [sensor.sonarr docs]: /components/sensor.sonarr/ [sensor.statistics docs]: /components/sensor.statistics/ [sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/ +[sensor.worxlandroid docs]: /components/sensor.worxlandroid/ [switch.amcrest docs]: /components/switch.amcrest/ [switch.deconz docs]: /components/switch.deconz/ [switch.snmp docs]: /components/switch.snmp/ @@ -296,4 +360,5 @@ Experiencing issues introduced by this release? Please report them in our [issue [vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ [velbus docs]: /components/velbus/ [weather.openweathermap docs]: /components/weather.openweathermap/ +[websocket_api docs]: /components/websocket_api/ [zwave docs]: /components/zwave/ From 2d463f391c424481af1adb738288e015471c36e8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 16 Aug 2018 15:49:59 +0200 Subject: [PATCH 37/38] Add components pic --- source/images/blog/2018-08-0.76/components.png | Bin 0 -> 41345 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/images/blog/2018-08-0.76/components.png diff --git a/source/images/blog/2018-08-0.76/components.png b/source/images/blog/2018-08-0.76/components.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cbdd138aed40a751e8b3d6e96e11d82a1371a8 GIT binary patch literal 41345 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 F{0C-siCq8y literal 0 HcmV?d00001 From b4b79072edc4603b5ace5d191a6d5ff62cc5d449 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 17 Aug 2018 17:36:23 +0200 Subject: [PATCH 38/38] Finish blog post --- source/_posts/2018-08-17-release-76.markdown | 24 ++++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index 8d2fd33d224..ed224b333f1 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -1,8 +1,8 @@ --- layout: post -title: "0.76: TBD - UPDATE DATE" -description: "TBD" -date: 2018-08-11 00:01:00 +title: "0.76: Auth almost done, FleetGo, PJLink, RMV public transport" +description: "The boys and girls in our virtual HQ have been working hard on creating yet another great release." +date: 2018-08-17 00:01:00 date_formatted: "August 17, 2018" author: Paulus Schoutsen author_twitter: balloob @@ -11,22 +11,26 @@ categories: Release-Notes og_image: /images/blog/2018-08-0.76/components.png --- +

+This release has a migration, initial startup can take ~20 minutes (depends on size DB) +

+ +This release includes a database migration to allow us to store context in the database. This will make it possible in the future to introduce attribution. For example, we'll be able to say which user opened the garage door or which automation triggered the party mode at 3am. + -The auth system is entering release candidate status 🎉. It will be enabled by default starting the next release (0.76) but you can already easily enable it now: +The auth system is entering release candidate status 🎉. If nothing major is found, it will be enabled by default starting the next release (0.77) with backwards compatability modus turned on. If you want to get ahead of the pack, you can already easily enable it now: ```yaml homeassistant: # add this part auth_providers: - type: homeassistant - # uncomment this to enable API password + # uncomment this to enable backwards compatible API password support # - type: legacy_api_password ``` -### This release has a migration, initial startup can take ~20 minutes (depends on size DB) - -Please report your migration time in the #beta channel on discord. +For iOS users, your frontend should be a lot faster. We had an issue that forced us to serve the frontend in compatability mode, which is slower. We haven't been able to solve [the issue](https://bugs.webkit.org/show_bug.cgi?id=174629), but found a workaround. Race on 🏎. ## {% linkable_title New Platforms %} @@ -75,7 +79,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix issue when reading worxlandroid pin code ([@GotoCode] - [#15930]) ([sensor.worxlandroid docs]) (beta fix) - remove-phantomjs-from-docker ([@vrih] - [#15936]) (beta fix) - Remove remote.API from core.Config ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) -- Switch to intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) +- Allow picking intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) - Use JWT for access tokens ([@balloob] - [#15972]) ([auth docs]) ([http docs]) ([websocket_api docs]) (beta fix) - Pin crypto ([@balloob] - [#15978]) (beta fix) - Teak mqtt error message for 0.76 release ([@awarecan] - [#15983]) ([mqtt docs]) (beta fix) @@ -163,7 +167,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix issue when reading worxlandroid pin code ([@GotoCode] - [#15930]) ([sensor.worxlandroid docs]) (beta fix) - remove-phantomjs-from-docker ([@vrih] - [#15936]) (beta fix) - Remove remote.API from core.Config ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) -- Switch to intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) +- Allow picking intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) - Use JWT for access tokens ([@balloob] - [#15972]) ([auth docs]) ([http docs]) ([websocket_api docs]) (beta fix) - Pin crypto ([@balloob] - [#15978]) (beta fix) - Teak mqtt error message for 0.76 release ([@awarecan] - [#15983]) ([mqtt docs]) (beta fix)