From 926f3d33b1790c64890dc7b617346c38cad5ebf0 Mon Sep 17 00:00:00 2001 From: Jack A <96800557+wasteofusername@users.noreply.github.com> Date: Wed, 16 Nov 2022 15:29:36 -0500 Subject: [PATCH 01/39] Small clarification in WeMo documentation (#24960) --- source/_integrations/wemo.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index adff0642314..0324093b5e2 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -28,7 +28,7 @@ The `wemo` integration is the main integration to integrate various [Belkin WeMo There is currently support for the following device types within Home Assistant: -- Binary Sensor +- Binary Sensor (Belkin WeMo Motion Sensor) - Fan (Belkin WeMo (Holmes) Smart Humidifier) - Light (Belkin WeMo LED lights and Smart Dimmer Switch) - Switch ([Belkin WeMo Switches](https://www.belkin.com/us/smart-home/c/wemo/) and includes support for WeMo enabled [Mr. Coffee](https://www.mrcoffee.com/) smart coffee makers.) From 0988ec5f980f4ff83c77844a00b8d392229a4681 Mon Sep 17 00:00:00 2001 From: Sven Serlier <85389871+wrt54g@users.noreply.github.com> Date: Wed, 16 Nov 2022 22:04:54 +0100 Subject: [PATCH 02/39] Update UniFi URLs (#24970) --- source/_integrations/unifi.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index b8eba69e80d..6dedac69f17 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -24,7 +24,7 @@ ha_platforms: ha_integration_type: hub --- -[UniFi Network](https://www.ui.com/software/) by [Ubiquiti Networks, inc.](https://www.ui.com/) is a software that binds gateways, switches and wireless access points together with one graphical front end. +[UniFi Network](https://www.ui.com/download-software/) by [Ubiquiti Networks, inc.](https://www.ui.com/) is a software that binds gateways, switches and wireless access points together with one graphical front end. There is currently support for the following device types within Home Assistant: @@ -57,7 +57,7 @@ It is recommended that you run the UniFi Network application in a dedicated virt ## Presence detection -This platform allows you to detect presence by looking at devices connected to a [Ubiquiti](https://ui.com/) [UniFi Network](https://unifi-network.ui.com/) application. By default devices are marked as away 300 seconds after they were last seen. +This platform allows you to detect presence by looking at devices connected to a [Ubiquiti](https://ui.com/) [UniFi Network](https://ui.com/consoles) application. By default devices are marked as away 300 seconds after they were last seen. ### Troubleshooting and Time Synchronization From 70bedc79689fe3dbb2a09a4426340d3e42217df6 Mon Sep 17 00:00:00 2001 From: Sven Serlier <85389871+wrt54g@users.noreply.github.com> Date: Wed, 16 Nov 2022 22:09:16 +0100 Subject: [PATCH 03/39] Update Huawei URL (#24971) --- source/_integrations/huawei_lte.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index ae7972b3e42..70332c549a0 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -25,7 +25,7 @@ ha_platforms: ha_integration_type: integration --- -The Huawei LTE router and modem integration for Home Assistant allows you to observe and control [Huawei LTE devices](https://consumer.huawei.com/en/smart-home/). +The Huawei LTE router and modem integration for Home Assistant allows you to observe and control [Huawei LTE devices](https://consumer.huawei.com/en/routers/). There is currently support for the following platforms within Home Assistant: From c22ce2a042add230a3aa55241c695423a2ab0043 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 16 Nov 2022 15:15:01 -0600 Subject: [PATCH 04/39] Update Bluetooth adapters (#24865) --- source/_integrations/bluetooth.markdown | 38 +++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown index f5e0ca2c2f9..db3286937d9 100644 --- a/source/_integrations/bluetooth.markdown +++ b/source/_integrations/bluetooth.markdown @@ -79,11 +79,28 @@ If you experience an unreliable Bluetooth connection, installing a short USB ext ### Known working high performance adapters -- ASUS USB-BT400 (BCM20702A1) +- ASUS USB-BT400 (BCM20702A0) +- Cable Matters 604002-BLK (BCM20702A0) +- Enbiawit BT403 (CSR8510A10) - Feasycom FSC-BP119 (CSR8510A10) 📶 -- Kinivo BTD-400 (BCM20702A1) +- GMYLE 3340 (BCM20702A0) +- HIDEEZ BT0015-01 (CSR8510A10) +- IOGEAR GBU521W6 (BCM20702A0) +- Kinivo BTD-400 (BCM20702A0) +- Nuu You BT40 (CSR8510A10) +- Panda Wireless PBU40 (CSR8510A10) +- Pluggable USB-BT4LE (BCM20702A0) +- QGOO BT-06A (CSR8510A10) - Raspberry Pi 3B+ (CYW43455) - Raspberry Pi 4B (CYW43455) +- SABRENT BT-UB40 (CSR8510A10) +- SoundBot SB342 (BCM20702A0) +- StarTech USBBT1EDR4 (CSR8510A10) +- StarTech USBBT2EDR4 (BCM20702A0) +- Techkey PBT06H (CSR8510A10) +- TRENDnet TBW-107UB (CSR8510A10) +- UGREEN CM109 (CSR8510A10) +- Warmstor WBT-AD01 (CSR8510A10) 📶 Denotes external antenna @@ -95,6 +112,7 @@ The following requirements must be met for an adapter to be labeled as High Perf - Process at least one advertisement per second from a device without dropping data - 95% of connection attempts are successful within two tries - Meets the above requirements with Home Assistant Core 2022.11.1 or later and Home Assistant Operating System 9.3 or later +- Must be able to hold five (5) connections at the same time Performance testing used the following hardware: @@ -102,10 +120,15 @@ Performance testing used the following hardware: - Advertisements from an Oral-B iO Series 8 - External Adapters only: Home Assistant Blue running Home Assistant Operating System 9.3 with a USB extension cable. +#### Slow startup of Broadcom adapters on the ODROID N2+ platform + +The BCM20702 based adapters may take an additional 120 seconds to initialize after boot with Home Assistant Operating System 9.3 when using an ODROID N2+; eventually, they come online. + ### Known working adapters - ASUS USB-BT500 (RTL8761BU) - Avantree DG45 (RTL8761BU) +- COMCAST CF-B05 (RTL8761BU) 📶 - EDUP LOVE EP-B3536 (RTL8761BU) 📶 - Maxuni BT-501 (RTL8761BU) - MPOW BH45A (RTL8761BU) @@ -119,11 +142,20 @@ Performance testing used the following hardware: 📶 Denotes external antenna +#### Realtek RTL8761BU adapters + +These adapters do not have a reset pin. If they stop responding, there is currently no way for the kernel to reset them automatically. A generic USB reset for these adapters has been introduced in Linux kernel 6.1 and later. + ### Unsupported adapters - Belkin F8T003 ver 2. - Fails to setup and add successfully -- tp-link UB400 (BCM20702A1) - Frequent connection failures with active connections +- EDIMAX EW-7611ULB (RTL8723BU) - Frequent connection failures and drop outs +- eppfun AK3040G (ATS2851) - No driver available yet for USB id 10d7:b012 +- QUMOX Bluetooth 5.0 (Barrot 8041A02) - No working driver +- UGREEEN CM591 (ATS2851) - No driver available yet for USB id 10d7:b012 +- tp-link UB400 (CSR4) - Frequent connection failures with active connections - tp-link UB500 (RTL8761BU) - Frequent connection failures with active connections +- Unbranded CSR 4.0 clones with USB id 0a12:0001 - Unrecoverable driver failure ## Multiple adapters From e11911e33fd5c2ca4d80a3fba1016b957bbeec8e Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Wed, 16 Nov 2022 22:30:46 +0100 Subject: [PATCH 05/39] Correct config descriptions for MQTT (binary) sensors (#24774) --- source/_integrations/binary_sensor.mqtt.markdown | 2 +- source/_integrations/sensor.mqtt.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index 348d2d8e7b3..1d75309d1bf 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -218,7 +218,7 @@ unique_id: required: false type: string value_template: - description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) that returns a string to be compared to `payload_on`/`payload_off` or an empty string, in which case the MQTT message will be removed. Available variables: `entity_id`. Remove this option when 'payload_on' and 'payload_off' are sufficient to match your payloads (i.e no pre-processing of original message is required)." + description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) that returns a string to be compared to `payload_on`/`payload_off` or an empty string, in which case the MQTT message will be removed. Remove this option when `payload_on` and `payload_off` are sufficient to match your payloads (i.e no pre-processing of original message is required)." required: false type: string {% endconfiguration %} diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index ed0fffb2d60..a43c8a969fa 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -210,7 +210,7 @@ unit_of_measurement: required: false type: string value_template: - description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the value. Available variables: `entity_id`. The `entity_id` can be used to reference the entity's attributes. If the template throws an error, the current state will be used instead." + description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the value. If the template throws an error, the current state will be used instead." required: false type: template {% endconfiguration %} From d902755736ac5998e3815233c288d8185ce53fcf Mon Sep 17 00:00:00 2001 From: Jean-Marc Collin Date: Wed, 16 Nov 2022 22:31:09 +0100 Subject: [PATCH 06/39] Add precision to the Doorbell integration through Netatmo dev account (#24835) Co-authored-by: Franck Nijhof --- source/_integrations/netatmo.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown index 29a13b07cca..6913c5869ed 100644 --- a/source/_integrations/netatmo.markdown +++ b/source/_integrations/netatmo.markdown @@ -55,7 +55,9 @@ To edit an existing area, enter its name and follow the dialog. ## Camera -The `netatmo` camera platform is consuming the information provided by a [Netatmo Smart Indoor](https://www.netatmo.com/en-gb/security/cam-indoor), [Outdoor](https://www.netatmo.com/en-gb/security/cam-outdoor) and [Netatmo Smart Video Doorbell](https://www.netatmo.com/en-gb/security/doorbell) camera. This integration allows you to view the current live stream created by the camera (exception: video doorbell). The doorbell is currently not supported with Home Assistant Cloud link, please use a [Netatmo dev account](#development--testing-with-your-own-client-id). +The `netatmo` camera platform is consuming the information provided by a [Netatmo Smart Indoor](https://www.netatmo.com/en-gb/security/cam-indoor), [Outdoor](https://www.netatmo.com/en-gb/security/cam-outdoor) and [Netatmo Smart Video Doorbell](https://www.netatmo.com/en-gb/security/doorbell) camera. This integration allows you to view the current live stream created by the camera (exception: video doorbell). + +The doorbell is currently not supported with the Home Assistant Cloud link mode (configured in the integration). Please use a [Netatmo dev account](#development--testing-with-your-own-client-id). Note that: if you have already created the Netatmo integration, you must remove it and configure it with the Netatmo dev account as explained in the previous link. Then you will see a Smart Doorbell device with a camera sensor. ## Climate From 4348cd19bf720137be0ea396256afaf1ffb4ea5c Mon Sep 17 00:00:00 2001 From: Danny Tsang <567982+dannytsang@users.noreply.github.com> Date: Wed, 16 Nov 2022 21:46:22 +0000 Subject: [PATCH 07/39] Updated NMap customization example image. (#24897) fixes undefined --- .../nmap/nmap_customization_example.png | Bin 36026 -> 41921 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source/images/integrations/nmap/nmap_customization_example.png b/source/images/integrations/nmap/nmap_customization_example.png index f6e59f68a775b8098c158922b87b854fac01918e..4518ae2b4da03d187ff2b6113c82cb6500b4e354 100644 GIT binary patch literal 41921 zcmc$`bx@U28!u|m-Q6WA-6bKRAP7o#Bb|bD2}p;8fP@Gt9ZG|AhoFRXgM@^1oo9dF znS1}abI;6~x%W8ZI2+k}zwcV>sb9R2>Q5B0F(@!@-MWRXtR$~->((7z_?wS*2Y%9+ z(li18+;-DYl)Y6tM70SokgR1?Wp3T7h{L=zMTXbt&Puv&w{GFIBmUm*cKT#->(&P? zWqFxrUPe1vs9waK6XEFe)gwO7U%j1c(D*nx!m3kl<}^u6yq$AEPxtT{5m6`|^&Ojy ztOpynbaCC5TGMtQ8sFr=- zptjs2iK)(YmEEYZwyey_lXR-ma=EakrshZojXrdbikFv{^u9sFn>S1MLc_ypMO{O) z$Cp$X8CHk$h#)K*A98@p0rmC!K-h|@GMqtUsQi(oFy>D2oQxOpnQM4BElT)XB;WaiTpFXm72xs}j zC=xFHZv&~^+0U8a4HilV>%;Ri5BUT+boF#TK6)$U@SEvS+ZORz(GLUf%-jVf-c3EtE=S>TxJ-z)*t&4_UnxxOMR*Bx* z`-Z>&`zsId_*Mq4gbioH_V&AJ)t+I(B|LiZIe?l-7R`k)Fq8hp+D)K{$DiZ|JlBN1 zzX^$tzu8amslAsNZ^DD$2uWgooN@;lV|%_uS}~SthJ;gR1dX2Q@`hB%b~OLlXN~a~ z#IIF3Z;a&rD$>>$)>c~JA7y|3MF}koPj)7m&iO6-^Ge53JZ;Rwm0q`LhZc^Gwx-vYXH^!xX8-+p;9hzQySZ(yza`=d?(!boU2uxfS0&twokI}Dh`gwuu7G1@keesksBj!#bReY`!@pUSO|c&mJ$4AR&m zWLzqdy;f9O0sF~vgF4r*b`$>VSucg0=C);K#a`~tU~)IAxA!Op?IKJ!Z`r>bQ z9IbE|;yx9=x9ipVoa}mRjeBg2&|hn>Xcz134~hSsskR;a{nbvjcXO=pZ^Pf_3FCmP zh1L+(k7wPT@X}|oEv%xV;u%kNtX7$k-}%4Ia9mo)`DRICIQ5p&Zw_18G9`UHS9%g0 zeplzRVEe;5qT*1MzpvXnIT4PrpKCmWiz!}O`lW6B(XXhB_?zSGIb1EQQpS0fn8*3q zdNv~iL$Nhnqz3BKmy_kDNNx~+5_z(h3z;NdI+((aGh{S0v3OlKHv&EQTfd6BkzH*b zVZjattRyI|4Q2UsQ@`9>I^LPi_B)tf?WT=PL6 zM;IpQx4G!<_mVy|0hjy!SLej+&o(}$8hv^Cp(`8q?)zO_PDmGDT*9*b&o_JTWlMN& zPfDK5Xyz*=KpZq54vF7WdtXgs-Pgf^D}A{)`th-TjpNmf+psCti>oe5r<{2$Y&dS8 zP5%7+oUazyn~N{Yu0F{A=&?j`*xKQ6rDgxSX%QkWy=s%zV0wD`T}E7N?1z|l@7}#Q z`5Wh+t0C&PM#W?DJ(gM=?^$y6O7V+dU(OCzw|;z3EHi5A87&sR!F0f(mGXr>HugLE zMGJSamf@7xdj%^>%59Vn+rX$LNy@r=G9RG!(p}8w*nV`3m_v(hWsR+O6)rhm{N*k> zA%NH&dNCq_+3oYvcmNE_}p^z2hbN>jUW_UxKb~-UvASCOTWeCx6ez zE3w}}h)pRZaFeOrHC5+kegB)o^xCU5HZigDnL0P7R8O2YQ#uc|-U&MyX)-_|5QLjp zhBFh*9lk58g#0D_Kw!20g=z5Rg|uk>l~e47=Hc4lkHReRmx-ggAA7(1N=(dV}T@het9_DOEKv54;FBb$Yq7cFcc3q{NWp-#r3%+pFsyISvfhiEV1W} zUi(|3ZFV0ldK25jakHUx=sPt%uXSF8+UdSKLmnjIwif+d4nF3db85RgzU*E($#}8u z*u;eJ5NhIUIP#i94`V0>SW{jLL8#DoJPiI-Vcv~HEf&w#e0k76Q-5=(a4|_us_taY2ZHhDe5=eY z$fEiDPth?g#b6>c=4T5puTv-l-?whxzFi=JBkH=cQ1a(jQOnKs#cab%S_s>!VX1y( zTPkLei7%;G?AoQ55SxyZ<++-LPn;U}QB)-ldKhW_{ypt{L(KdA3p6AQ9v%3yZ6f(m zRIiLM6Y3jw>+K-HLInPVOr=ibS`0}II)k&f+D0;y#jms*L8Ee(mT<2pJJR*eYX7){l?z9%=erKJUWFprmhqLBB;)T9SH zhox_d%ZvzQ(G+FgRag(d7m>9w=U`SIdd%Hq@wR~c{V*m}{)i&izfC83Zs-{FY1{D_ z&#K;x64)a4!#xKMK9esxMsASevz&Jx*(pkh-xtaHcX=X<=m8mX8vj$e6G$-VL!HG& z5kGvQsK*+L*S7iJU!_KT5LzMQe>w*Dd_-x>jQwxD|Ns3>YySOTeGc0@XEc$^1j^fULVZRhO-a(-uG}&czrm#hGw2F%_B2!wJopZZ}SD3 z%6QWrl^5|m4vmC}nAmT2*PZo$7$cm~&<1bMHBHwKC!@2qwdEtTiF$+(lG5&l5h`SlBJDE&v(?lFkF9V1SFeybp+keigf0w5%vDpXX}t?^y9*6wG?6~zIyKHZLu^>HN5;AfzOzj&5Y)vsZpd=0=*U7h&8Mq zt^XCWN;<_;k_Fk zhSny%W}uso-)g`MI)fe-M2Sqgr=~HKPP*St3bTcEG^b19Z975B{RlJlMcI5^NfHC)j`Obv#*Ne%t^t z-;ia>6UB0GE#K*PzVUXpl;63}-zICyI9idTv?|=faFOhDvw)M`S>-ZOBr;7~Yluy+ zw<*~^yP~p%pUK0^%gf7}&--*%9e189zPW0-Jb2vx8vFBDkv6x2bt=Ssdd-{g>=o#Uc>!BO~ft*BDkr)h7C#Tj;Mm#tKxA4W?JE z(kn1O4RG9?1l**i?e8XY8~Z~d!6e}<-@U;U@7$)KYH(YB@|sI2?dckB!VV9!$E?@Q<+)`;S>oJAjgvH$t;HA$s+#{g-wCfiYsbaP zEZEzrb6ZytRqrmw&`Oy7>LN%u$Ppb(pr_<4*)gwGAhGF(B$6%nx~V*=ijI&nSbSfY zC>J*bTF)n#r|Xc4KDKp6k$xVqGW|)WW_f8P6eS)RR?HNwY_Dkii{5J2tAC(V@b88Q zkEX=O*am+3>rqt}CTX2E{eYXR8kc2{?@4+Qe`9GRA0eF_9PlxRVGtvF(#J4>2nI!F zo&B~eTTCW3@>(pZnd75Cw;swg9YBhOxZ(*2mB!$B_K63YU1$TccJ^mq&ad_)v_BJ4 zhnemtl$4=#{(F#&dtC&?|D5hGbC!vD{3-Vob^rP4srhnOjCogdE_MC4KXo#sWW%Et zE>$DA)ME1VQHepx?9boKkZQu0^=_r9iZ&EM*@(8=TWI}h&BlYFVrhH4H8C6=tWfK} z93xzwo?Y#`@cs5!)*@WN)pDHl0RHEv9~6?E=}tEbvr%xUl=@%JxS%dxLq}LpDGoKu zo>G=cu01_dmQ`g)sdoXI&MBto2$%g*-2kOi=w!$kuY{o0R?ZQ8eFl@Ou*2_U*~|7Q zI6eG3Od@fwVb00e8$74svp}QIXoD%$IgyUtlrm+kS(Ia;0=Cl(S6cKLvxv@r&Ymfg zZvk}*)pUc`{!&4+IFw$_xBG6FUahQYj5LeKhwHg)mV39B-$X<#r2Kl~P4KwK&p3@BX9cRd_fq6Ny=og%C+oXKVb6JA{j*V# z<=mGj3U(zKE;nu0S=mm7R(r};7!`*^v`P&bDe}2P-)(JFRMaYz-TJNjj)Vrd=#Cuh z#vZh{G2a(@MWO(>G5BvvBY7cM#U5>!sW#Ww&rkR1sWXH;RiancSD6Qj5_53cQn>V? z!G4=t!MHu>`ka8DrGh$(D%{Iiv7uc*PVzWSl)BPjke;RWqun2C6^YMbPoF-$97y5H zs0-uNt^8T6oAf+_cCexvYCh4o7r)*t<1(`lR3wTNk#OlHKTB-tUK3DdMiCD^x`Gjh zKpsZ%L4~EZS1BSjbFb`%-%CPn?xnCCw+*#Vw0p8jE#_|0s(Un33r)`SSG(>AG{Q^y zO*RYNsz9aL5tHQQotk+oy3D)x4eLXvo)>9-9E3i&>V6avo7r!d@G5pym)C8$#VwHR zph50`m4Y|fi^0Nyeh;=Q!e+Cm#~y~{|CdB zdIXm9kQWTcT%t8~KepBKXiZ83x zT9CxuQY!DIE;GHS|IO!8kRZY&V)O);%JsHrclp|2hI!-XzfayvcpG`I5>rJP={?k5 z_;GbIpUrJ7rJz{Lv{7!biM+Fad@MxJHgFBCdPgl35_6iI2WuXs73BRD*&`2p)rMM} z-PYRq(V~6kzVCjQm1sY(B61HuJlUDHmTbNgHmR_&@@}!(VVZ;y-FbtYdAm736%S?l zqAi(6#)6&dMfyJxSu_jc2#l((Nf=Q{2?%5r(;i`2h8&VKn~4lWd{$Foa-o-5*O3#8 zby5{AHxVI8<luDzo~g_V&>c_NJ-1C3lrpz3Immao z%k)3mMu*=t@$jbIYa=YAtonM|tC!nRjHM7oYe;;<45Q7^IbrC>@96I&?Pu@dzN(n* z+sb^I<}nZm(HhNVO;gu?Ss^tb$U^P#Vu8h>U25@^;I#_% zOEj@!T+dCw4OCamDs`>Lt3pl6Gw*NynBfc6cdTP>jZ=O+d1P;>}UvZK0WtnG>&QMUV}1 zra4(ds!X~oL(YyEO4yzBEyOvfe4rTd+t!?%P82J9eWHw!$mtz;Gs^aIPiaM4 z*I7BvEht)dlyYWCQ3YwzxAK*LXQNX%KM(ivRBSLGW@EH$-0oQ6HhifxhA#C}aXFn^ zi*G98h;wH@pM;{Uj+QF^W#a&Q&F-wyp0A6fX;D&R)jBpbdZkBnVdbp@qo&G|XDdln zR)c)mb&Oo-??Xl=aHUQcU<`ZEFS>%5dqR1(bPtq1ZFI}= zsw5Fap3QnWN8hqO@Ys%uvILba99fRtr1*};Ck$eCo#9eQ;dKjuNTH+JUm!`-3E~-( zaYpge(FKORc*}x|Qz8(53TehBCV%{7^KAw zE(c1Kv-7-OobjA?Kts_=K&c=i{8`16f)^Cs>o8F|8;VXyV1NQC;RJs18JPU}DEtNy(rtm#ECj2kSkogv2PIuQ1iIp zlAaBfwO79qG}6&A(9uoln~#6n-9^P&K?-Mm$C!Jz&byG)Jz(abqeEux8(Z@%=X25f zBZ81F7m8Az8c)sW)aRk8DxzVLy~@GMVSwqmN!(*)I==l`72rjqSDVb$(yeMeNr82x zF#kd;68Up7J}qp3sQJ;gfAeyzxVoUm^AFF9ivR*C)2|tdEr~?d)uL_y*jZUcc-_x} zk%uSV*0SV4;OsG)%@?R@aF*!Utb!fs4Yz)O0z9Eg@7Qf<@usvsUESqk z{_Si9WrcEES_f9`7r9YK#pyC0jjsMDD%YcfB3>Gp39N~`0GbSB2*(W$FsxB&18R@+ z#XbX&GmY5oWun*}m;!P-eDB0-r2T;L<`N()6(Kie&CK9IMj@JR<-Q;6CkG;UC+Orz zGT&Ia{{5W~0RCaTs_1Eno}hx5!*2nSu>?lN*ErOD4@6K$mQ#)W>r7hjXrWYC-CSSU zoBXLN*3F5)w)Uh+4|sC#iOXR9N{YIr-Zy$yFCU)|m9+_l`P5h`F)~Ev>J6Sd41M~~ zXBX(Ct%s9R)P|yzd11e!&6kU6p_@yHE4O$MpYrSN2zQCKi_AH zWzMNWDSj0BpbEx(3Bpztm#7hjThR$IAyGDGfDj7LJ?QlABjNwjE7+eX7#Uqri1!T3 zBq%+OFsUWf9&HKI$|<6m>ec!|tdq&oNffRnAWr#!Z zgUpo4zsCPp_2b-@@IEj>H)5dUA=#2)VB$r3NieO>i6Vr2JKp}a`_!e7@!&hbbTszz zTX^UMwIa&WOk|abJS@C-OaH`IPyc{#X6&aFugK<1l6>1SI#>=zB-eJVfYV^c@Ph(2 z(VZXXd+oTos}f&~n#44ZrmVApnX-l68dh7Bd9B1Q(79KpYj`+r%2E}^p1EXxY(P+@ z#am#e45ew1zzHSDlTK%@_yB~`%s0DE3ZS7Sj9Vw?qmfwvst zr=G_;(6os@FCT2aKDRq8s&mPa(yDmAcZN#q`v5C%?+asR)C_lvYnA|{T_K2SwNjyE_THS7L;V_ z(hU-E592t{aYzWLxSbm+p* ziWKDDpM?F+wP&Y9q%mZ?46VcHOX{TtqAMfU-Sk@hfw%AO3EgK1V>XmqW3#3qmvZf7 z)J&QU<@nSkI2ImevWA~n7dq1#UQ6^fioY&S;s8ykd>epv+suL9_6^>G=F_F9&_=)r zcIKKg6bqyZ`~lN&e}t@IlxV9-lZ`YXXEy!k%SD8x$+hq;SHUm%v8*z8i@VViCZVD_ z%jGH$0PHjuWgX$fX%Z{Li5^P?006Pio2-ZZYPJ5{6E8L}5JTc+`a*2;7dg5ZPl3BP z(C}{T!omH1D+MWRGHC&EbX>&fa`aycARLL1Orw9p}&_rKucP2RC4 zHstQ95y2d7!1tic8+@_ zi)QNf;e}~94mE;@EKsH7+XsBE2@pgVDJs$-3qZaB6ZZZ0Ly`X!l@IvM&X{v@KvdBd z*&KiV2O8TW`d@-#ql%b}hV#*ftQ7aRlJC^ zoS!*u@asJlbUs+=l?g#fZ((6i#HGX-Hl8*Y?945i;xh>UrIy zr>E5~eqn?uZAZ!2qgfw|zHYw0TB_uj@jIEtB)y;Sr#Xi5co&$A))3T&ZkhA?FLca> zLmnu&xMVyzfJ3d71-^d$dI+jAjLCk`Z_EyRc2vT-<_&>_lEG{KdWTRVa9CHU%Mf5K ztNKC4mjres3=9mfacSo&EgzqZG3|^+&2BGsMiJT{?=7}-H=pL|$|CTZ;7SY54*M?^ zvd0EzOPG{c7ZB1a7utq@1Rf?&ezhZ=@M2_Q3LSi#<1lfny&IiV$*n)kj{G``_q`uc z3-`&xC}j}~0B*;tqGi}8$P$81zekhZOOvLf$xbfiWl3fGmSOov)tf5OW_<079p{b` zAs2!WoXh67eiAJHr^^yDPEb$~U|7y6oVscKaEQHNXa?%OvPHV{0TC=R*?!iQ=T=FL z|IsgPt0nI%h>oqfCUHuvrgS)F0Ll$=2q_C-LV9|53$F?gxXA$XXyVsx0Axg3=_)A2 zUQDo%B|46?u(EDI%CuzUb=h^(2Cg4wG?jM(Y!7q4jK6haT(>wmaClx?6WX9j@b#W$yzhz*27v$Fg_!2T>43%hNd8Jt=#-R-W-o+Rid%(V} z0~3e9nSqQop_yVD=j5@YYE)VR3KJ2gzXM)J#%_fDQmO(hy$hxd>K0uF&MG-hMrm{O zik_*qaem>Am)nyS0M3bX#2g(1dRA+F4@rLR#cci8)YOURspo*m2AnRUUid^zs{8x< z19GPAJ1v2{9ta|Va*C<9v-KYB#OVH!F-4mr;tv+%`vLg6 z|Z3?Coco|{tw*h}Lg-#{5m-YM=v%c&ejK-4g z8|o+c6r^r=2w+ktLhJL^wzTuYckB1wU70dAx8vZt6W;Bfk%*HwXklXR-SdquKMzQ#=uDEhf7S-kp5smlHqUm%g-7EUlJ z9$w)1JMOI-`g)g8V_>IqIgI^N7%Hs>A7yqDN4N)n=F#g^G$fq9$TTZv zJSx?c5T9Ax-$G==8^Aq$=XB1H4!Cw%?(&1I_v_1ZeqyZrSqqce;IFM1GPkS%49m&O z%Zs?vVUzN)rbbxPAWuH>bp9{metv(_E}P>hYix_^Lb+QRI#r;{&QrCYFj;gM zcsg6kh~dlGhyUEAv2ND@jJYxT5%Y2Cab$jNzhQl?717$XY@*R00YR$)vJ^A=n!mU2 z8#RiE5v^l(VhwQmOl|A>R|cqx3RP)|DlOg@M{Z>I0=oYg*jt@yn}p}dc-{vqrXHsB zI4dL>kwf`#%xBGAe){-#X?B5Kv}%R#*+Dmr zPqEF9JQaZ_IhZGS4z;fZyH>_OYlgp-qi17me)P0TNZZid_Rad&cysNcOwoO`q&|#q zkN7S1pxc-t*tdaos%;;-o5mE3BYvBhDX;Ua^s!aKQ7d`6O|wNW!4M`@=9DcbD+H@?H z=;^L*Q4(oRy%Fs|L*a293OAZue^!QrvD0(RZjP$qfUbr&7C4B>OM_&T28QY-GA|Upg9w zD)+A4K(Yx6*BG^8J!CQdqf9mQjm!e&auJ*9#Yq%V`pUGwn4uk1Pc(+|mK4dGE7Zv1`a95Nl@d za3X}AX*-fJVdN9jblHZ<9bYtcV>0X<91?<#xlzNmPgnbn+4Q3$l=_D|7NIPU`Zd-$CkznK1(VxycLT?ETMw5-h1ycagIuOmY?~BQn ztnBK+OA|qf^_I7-_mp0R8ye3lDy%Moq_?cXf3K6g- z+X2mx&OR>hKc(D~g2+~ee0*_YlNLNAhvz~jq6aEH{Kg7tR609eWUcM?!Q2TE#AdG+ zSL6>uw}9?`@S?4i>ScP(482`-_+S5(xR9%ezT;HRHUJ(5m#TMXBdUI)d$RTcN#PJs zlZTxVMQ(9V@8td-$|hQFNY`c)TmTvubMj$wXPj7~Lb;UcRgr9?f)u)DW?@NQ=yx9^ zswHvLApIxVATYVx8Xow>k%)l6?B?(c%J+1sp?Ds4R7^GttIL{|YT^dJ${PMnMqeb? z=2l}@E%Re@^|c0+Bsl`R=(M}`4C7=;{avQ1={2Q69pgHB%cfjRM$5&oOPv%z86Z(* z=YNAIeGnm6KjpL=!sJyE+nY1!km+Z0PluB;wq{u35G&@^!MB%xjTp6=E(SQ_bQ(B` zaM}c9zjQEIaruL2goUMYESem+$aLG#cb^1(7%LPEB=yN8t9F#J=IQ}b=;7NW%76sa zv&lWghEAFgN03Gk{V1~an?OTsm=TEWWbe{vxCZybOe1U6uBF@P#k*b!BA7I73C!_= zjp(lT>l-22y68Z#udl>jjaPZ`=t3WN5>GETS)-L;=fI<|_IrS|sy#a6%r$%cVB6_7N_*~=2vI2ZPg zAp})7=@eU1_%LUOeC5O)N9kXHu99)uGoT-B5rQ6XyXc!$NGP6)ax%ID()`8WmH=qp z)@bpSxD}$wTE#33EciM7j}yH6LqrnSx6?+|ne+uJ>7y+H0p_CA6(u?-5)4{& zp~t%EUoE;ZND6hcMbZV8t<3uz2=qrM++yfMp&7-b49ziZd`Fe2WA633TyBpZ=?BYV zM2^MW0U8x)bc4FVVZWAbQ21B84^v&7eA_HW9|ZD4){s(P>HI?@uCn`nvDWYNqYg-0 z$&2l(9^4-(b{M)jw7z?-kg8iX*5Z$V9ZOQIf7kmDfOUPB^;jxIRt{8)j!)C)^U{jKCqDjgMi)AEZz$jRqQ+x}o?+TCE=jJ|Tsp6k z3x$XxD}ujeKUFLeIqDFYCY3d(M zCKku!ckCFitpj`SwKDt7j*}6FcX1ok?g4^Y_osI*t7DvOK@Cgj#%L0Nf%CRs1-}LH z0%GvDDvPl53Xm4*9rJ$4Ua!lhjM_K2@A+pfROl0M~81!T0RYPLA2ubKTrgsb6 z+L<5!h|EAi%CrgOw|h*>q!$dnG0r-+`nyxz6nkpe8&69hLp+Z50 z8ipgyS9lTJFlnapDPzcyOz*@?;qA^9er}~ZgHpAIHzPsk8v=mq7rv@3r=lgee zJ?1BipDa@iw>_Qsm!?oY1}Nf3U>RNV_?VFxpABBxaqzHK`7g;89uE~#U^Ij{TWcLByt$z0-vTOTD0-#-a2+7&vd^MdyB50xw_mja=L!2 zfOwYSDNl_~r$M>yKuN3bY24IWN;`=o?^aM$d^}!K@HA8HPvs%!S?ZTFt-9&kZx+6* z-Eg!V2jA7L_pBC786>0N{gbeMfx_z- zeO@!~Zyr0q_U5Cd=ZA_$5Dbe@mASTZPLvsE^OMsozbmZ$1Rzc^?;k={n^66Wz(hI( z@0bRt0h6!uHA1SYT(0xjD-Bt0pz@DlkYIEG&uG0G!SB|c9vY6MG&>CR+pxfE(AjHr z9tD*B9$|5Fz?Q(g#4-(zAl_5p~ONG{6^cEKki}8V$q&i_cspsa# zJQjL%P7g|>w-B}UJWDJQD@G}1drhn7RE z#T>DpqEpSeYl_9zQajC`BzUFS`Cm`JDbgJ$BNe$ko_4xtw=&*w-m$>5zg;za4Z1w4 z=#g0j&N{`kWNrlF{{glRYERCJVX`EF(5FO8fPpgCmPZeYqU%sXP4d~U=pOieO9(Sb zX@tptiguC(g?v&DS5m%ejTCvx&MFY=Eb`ua6V8EI>ukTSg6~Pm4Z{5<(0j?H^f}bb zDqvQRfo!gi9>@<(TjQRW5`oc4 z%{=eNmE5InE)PXSZ7727rMq~NBm@N!vVy_j3Lp-`hDmqjLMfG^v;3^SZSLTV|D2t0 z!7e@73LSHKCVsZ>6bn!JLLQjeMaw=?*)#phgZEm_+x1-xVF7`G`P$QWaz7QiM~ z(>^_SMQYOv+eSdgt6_aXD^7jKdjRr5Mqj%)<(q#+pn}^EAUr}@{rOpw3LjW7Gcz+# zq{+&TH+s8m>9RYoQ8Y+-U7Vd6X5&&h-cb(*eZk+~U;Dee?|r;E@Lg`BcmG{&t0u7@ zdgX)#3ZF9Lmgb9=yXZXG1H+I)v5D77AIOi|&(O(}rZ6pEWVK_n|W7pA9 z@J6h#dtZ431gc;Dodcw42DkyZ{FA@)pt{uQOQ;8)Nkaqx+QAIr8i(m)KvWAW0kA^! z4L&E17a3`YFW-uT&j3JCq6{zy-AaqaJlLTPV~`M@9j=4s@Osibj+jeN0DJ<^B4T1B zy$_hmR)(?~V3pwR*KijRK8OigwHKy<9w3N-L+V|S5bJ-lCl}2-6IwyYd&!p1D;xT?q>q}N_mRKv-vFDuP>ehw)jrKRs#S)XpN`Yn`GVH{{grSqq9P+&7+Yg z7;!X`FB}mH(5>k8ujSAvfDlR-ejSbwDAl_WrVCsH+0%aR7Vr#wQ;efI&bCLKD)1O2 zU7M*OB%nKcjU*IG7c{Rn=!y1WxGz9@nhCf7tk*mwy{(hyop4DVzxMJ;No1;j%{lPZ_=S5x-AqBSw zy&Qm@yle;#8=?AzR&R11)sB#aBn1*3q<5FWDCn_3s=t;1FuV&jd@m?({z2k3EH{w> zas;6c@|OaZ-N?u&At8bA-jf+XEnw?(cQKScct;(8nEBnj)W z-o#FJxGDNlaX6*mq}qVt6A;1wI;kX;)DZGmdcHgVORnJmtbq2vm)G4tKR-V_JY4@+ z5X@ze&)>wveBFgpgr=4x>SjetOY7w1v?cY+i;r6#?L%H3Qz+cqC{ZX%os4_&#j|B) zE+)q6(*ML~S4bYbe5L?`;idXTnIAv?4uO{be^W>-+(Kg1>?_L2$@wwh+kHO112}`@ zF;Sn@O7*J885cu@@wB?fF*ccu|YSyB=bGcz=ByuhfiFDK0mRR|Lu z9k2~02pE_p0n#&{y%+aC%|ie4Gvx{taj*BMqUHG3|AB50j;a(mkAOHD&X#t1TMza& z9cacp#+1f!w-C;&8Tb4`5`~8k@i)=j){Y_Hg1JXk9TUKFpmUTV=f}S;)vYRU-yDTx zQSru+K|`PrCKoQ9a=JNZV@j%gFyg%OyQcEBx95Bm{Z)9iP9E*{9H8QWBG>F{C_cJN z_@874pdS$=G`JR+;}`xJe%AO{Wjzd*6PN^(!O9{aBH{&>C5ZI>qoar7|8ZJ0L24qt zZy*Bs6T-0%A{>Yz?NWnY!N_NzMTmHBz-io^DL>ZVzXh~e&5SE1`UYsSKopn_eXseg zdsmRtATeZIet`C}y2@$383t*5&(8)q4{pDT(`?&=TnN*mnTkBR-@dYv}wL(P+6h_J@(LTX;JTR znkw^HVv*mFVQ!|%{NN*o%Bgq(1W>hFT-qCLLP}%|!0k1vp6uPKBAK^ZOUb% z06)b3G^M{9C1U7{W;96)fBpQEdJz5c3$Z1xuF(o}#c>pCA_ddLO_2{KyCWt788spr zBixS$s=F%El|i3QE@!T*fo)tN;!Uk)mgr{y{#7K2k71ja4gB&(p$IRiJj3B_B5U6j zYdFNwJUwtI6W{utO4=TfgHWk3B$wG#>G_!yddMmr?B(vo-)4}Su)*b} z$XYvsJf?}tB_GXZ;U0}9&GX<@e&{9oA**oZi)+!C4K;dc^ewD(%;dCE?7yBsq`Zcx)#n4AQb6=tYh?2SvOiptE6!ua+~0 zL(Oy&=TH8KWYS>`54yfk=sGITrDF@Q{Z1V=Q?UPQmABY>o=YohFHC-_jA=)yM z!J&m_C=}^AV|M!*bZMG{)zSV9aTGuJNdMWCKje6Fe~595-8=r=M2N-E@YRW*~)u?I}K#i3R!a7X2B3mdX#LPZ#dKwwH8kWxE|7f9H62HY0PAz3Gk+x-vM zw|lacA1UumK*z^!M#6SS^!C%}%hz@Um|y56^0ihTgi0LHyW>AxL{n2)H*nGuq7z-g z{%Ks}n3W|!W)rTY`aSZnL*cN0 zgm!GDAeo<40O5ebdZVCZ;JG`aZ2XB&ZuyR+l}&!#3dgr+{78Qo&kXnlj8>4otFb2q zEpmwEx%@E~9nH`{uWq#(_+Z&+y~W`yfS9;#X~lxbt7)w@oH5fmq!tY`zt?(2MSjoL z>1<5%#G(=p42st_V}E&~kpRbLEkh<%rEBs^DRZUSvynCw>nnAwWeR@6eT%V52zd zrHg!P^Hy{=$p>Ez3TDfzqZe%gF*yqE_+(_Ypw_t`FIFF=DNFKjB%kfheWxF%FdGiE zyv##QBO)Ra@H=;>Z~~KUsX<+QDfnsNUxIsM++5)Q@qv)r;Fv<;GP%2xl!aGm_v=d- zd6!V8@;jxfWFD$UU@l!>Yl7bA#Zo=&06iI#Bxp&jexjkjeQHO9$*WLbPMGmITI&bt zP8z|#Tis^2jzpCgZpWfM`(V8M{5}~qPNsx6UtUzaCjU^rI(Ateb98L8-Z%Tmf&&K4 zzy}(#{c9(=JZZdn!r)dQvmd%oWEPpOX+=ez!DorV-bu8e@Y4?#7jp9gmqhfw7o&&> z8SN-v(=BekP{?!{+FpI~IU|sW_-@uPToi&nq={sHM{)`NtX=kAl%Ls#|LTAQCwHWp zCA23H52Lu~=i=($zj0K0FF%Jk+Z#qc3t3?#28*HUHh=p+oC#WgmyO6EIEjnWkb8X^{j4M0z81>d%HS^TfEZzAKt8Dx!iH}fdeDZ2Et|&t z;kxA*hJp!twosjkvc`9~PGNX$)T?2!bnO`Q2DJ2{A}!B3Lh)$+Uo38;x|m>(2L2G5 z1_T0q=_jkXVj{lW-S-_6w%aXB5GNk{?+ z8zX2RGFt4-9KiG}ImGecFSKpxQhs8;?%cUk zJbL2_g%oJoV?Yjojs#XH`ixR+7aBO@mx)peE zLqi;+ti~lzjDkfLSbutcUVqbM)t3+hQ9PI}-D2G0&x-m=S@h8{C=2I7_M03>3!~8f zGAJ5k4F~j5kdE4Mr46dARN)a1OP?qx+CRX^9YZ5|4xIvj*uN+-utQ*+!Bj~L=)_lO zeGYr9K=TGjxDi-J-QBB8`dmPUGXegW`Bz&dF_gkmfV_aoO72^Ub!iK&>IDdZmXDxQ zMQDmYD8zvK9-aB$u9WAC^NWkIi2vNd4%`8_G4%h=HT@_ABahC*`$}zq4_YWK5Fnk=%9wVnMY4nQWy$)oCP02EaN!XakEGNMXc5_|w3I zswCho>}F-R0FT{Zse|VvSdmP;WD~F*Mat!ivwtyB8siI6?T|Ixx6EiSR2iAV=H}*p za_d!ZK%kabr}I%u`I3o4v+>yYCou4K(B6Vv<2S%8)l`(lQ0$PAk?GgLU|)$CrSc_V zPJ{{d8%v!Wiozr7YrcEW!2Sf!?6|%-mhM+8dlj|IoSYe^+mg zK*#I6{ z1e>tXCv#;r>cnNt@N6N8P58+TaPGg1;57zkrC z%i&F%l+SVT*`E*)_X4f*_UD*y^BWwn;Jd*y5oEFfKAX*v31Mn(xMyqscxhuFM5W_p z#!yWR!O#|swhAIH8c~KCvi67H@pYbqxOk~JQtW#+~Fw{KhP`N!3q~gA@~I> z_`7GcXJhbr0C8ttI!!*nJY4NR0iO!sCX_pihOS>>3JDJj`$5#Z1g-3yyLZ9w2@m8j zXjHnD26YuOKgvMJZGaPn-aNy!MY`s?e0-{F$S$1}Hl<)R208ooLB(&raIH zX>uvKg@2Lw5eYY#(rzy!J0u)h)UWHulHl^&?iY~TuIa%IC* z=-Z?LfYLVhd#jS#n#c!6@djvelrxRP;L#ijBo;Gq%St8c$?%Mcx7jcXe=T*5i8-%jY&F036hKd2N)Q_!aYWgo z>8=4E$VyKHIOP9FR%tbV>oGuIOE~_6;BEdYO7(av2CfPOR2LH=#Rz-9_2rV>DydK>ZRqu;zq#Dg5Bq=`qd zg7O2voS1uGiKKTT;q}oTopYR7&@+Y3{{Hw_p=Qow8eT~{{RRx-t_nh ztEqYULxjFChYUJ3SI{?*tK&dp>btif0|Wt2HDIDhsHjli;h`8*OFfXW;bA1;9Yar4 zSWU(_21o)QWs8L#O+ZBpp4s3L5aI^y1wfOKHpI_j`Ks^;2-=Py*ddLU(pNG%snlP1 zDn;AvwoxDdh8mXSJ@-g+?+{R5Mn=Yxi%@4{a{vk8KeXSxj&quNzuTXNCZ~*o#mLYE zP@4tfSuN4TwzJlK@&bS|BVUYlcNcB>@tbg!96! zLV;3PECZPP;lW4F)*qWOvF3mTxlO9|w5!W6#zkjwB%OiFLKcC44GFIi;>@j@0fMzH zXkhvWEqr-reO1rekr6iEd{ z5v046R8qnO0Z~DvOBxhR5D*oEGC&c|wV!9^otfWn=A4;XYtB07tn>c!tXGk5?7ctt zeP4CUMo7QCAeQQ$yi%=k=(fFy&z?iKIO~zJ!Pn-`a0F2rC@zZEmMd^DAKx;=czFf3 zv+;p7S&u0k_?0>Q`m}stqApt!WnuuB-VRX<7fhF*#%`CBu-sV3fU#WcF_b9KYRA9 z6ze|s{QA@fm@m?8GsSGuYZ>xjt_~+%qTpZTt=uH;)6XM5sk_U6y=ed)eMvK$jGN>S z7+xhgUy28%H!>b_*d!+v=b&?;wnH<|aj8o-K~>he%$V&n+g@+Z_0C;JL0b!^MLd_b z2@P%4KXZ6eQfDkcKc8=`h;HHzLsh}^qSN+m=YjKCW_VFg3Qy-M1@5x!F3c8XraYNu z>ma;CWG44M1vRyRopbym152aUlq-9+eoR)P>Qc%87RR9nZ$_QUP=OY@+1{ z*h^{Gn@?u<7)!Yt3%)xp@kY)vF~R!GXZp{jbtpqQ;Z^L5ysE<#yC-f)*{`DC4UWG& z>QX+!)iFZb;VeGZ*skUznD@GGZHe)vH3M|5&6HM!a&KH8OVZcQFU8;Eb*!^KRLOt2 zF7@urt>GQD{%b3~cQx@`j|)V$<3{&i*h}+bbA+B`8QP=chuPoXM2q6cdV6sC zfU@ALK`V40u|}D6eb3*14mP5QlGWwnQ+tPQ{_gvf!Vd37Buvn0@$t+voR3uo>bKV| zTS*~&OzIx)Mv5(F9vO6T$LP4px&~v#sLS2@a#!O0Na*b7WaC)wWhs5zC*2%~>R-jE z=;%((%);BMvu*StMnKeWR}0CPcT>5cYa5UIV@=G}wVXTo7$VEjTJZ4#X6rrVHY$@E1=iEJHhtE3Huu;m43n_?ilC7k3I8JnjL$VeE! zyF~A}MKk{pYvF#9gF-v9y^qA7knQ)$)=b>HFQKSwGMvBD)V8ncO`cefLq?3xk#G3Bk15coWo!5P1A;yvU54w z166@hp{po$wWYOJ?O|2?`1uN!@4i%C7pN|g^ShcZZo2I(DL!eer^Ea8-K+D<)pTck zs3fkYGL*&XyYaQr#6L8%?5+#zouapHXj41I^Cb66^8=SXHUqab30j15k3C%!`6l2=%Uh>l9Dp7 zm*-SkeT<{^bE6ms?c7oWBg`-{_L&JqG=2fQDsXkWa#6;=*^FJs?r-7QilM<^P3eeP^!$u0Bg`0!UuU>vQHqhfBj!xAna^D&ziCl2Xhn}gF_3@30QVau_m;JjpK^TJX*+cxY<1nqYxULM zHMo#3Q_Q|Go2plGkCuyzfXO1?*uAWBYlE%!&Af?J)2nRdnjxj9J4`Qi3}4kZT391& zgVd$bVr1+tr&#G}q_-w!Dt&98a`D*z9w;lTtUKM4fwKiuj&E8RXi3LAw4A!7@_I!N zd+D+7WM=Iw16e&Hl(V}&piO65uZG4~EurtY1@~K*np@TaD(`B;Pd3*IahfW5@n*Lr z7&KoK}Ddjjk=pD*Ns=RMpWm%;XFmB0f`{#&-VpkZ^WVz z2lMJ~My>?M#$HzyzKl;J<=gumlY{7Q^2KKG^X>S$B_QlcHht&yQgh@@u-YbC(%SZp zl9nkydfuD$@cZX-Uv`~gG!M}5+{6{+Rkz})Ygx9^s3+usaepNKNFU8t?;T<^nS1lF z!Gq>d)h83V)4j3TJhT!(7g{KL9|be*RN`Zqf8DT`W{L5HeAKLHj488>O#cf>)0)>& zU(#DUiz4s;j;m`V&I(-g{p>=^Ip-GyhRxcnoRp77X%r9Pj!lJ{#*FNJ zzd(5^v+>uc35r;ukIx%}Ydm@)%O9TkX^~Mc(%Bz&#)x8<11s5HAY+rdCYh}F+Z{}Q zf>vy?3N<}F3I)y4h>^(J3=T&5LgooIdbEAg9AYCqmqfeQ%Y5;S*ywy?4;0`I-FA?lCaoiXGuO z=Ugf2!+djfFnzNVcT{%FGTV*sWmL>tf|t>u*hnfQUDPnS;lxnQTyrzzmdev_5eY#F z&w7jbbloWThmU=c>)5(OGMlnpfUHZ7#wq2x6xB1z_2&-)uPY`jYqjE2 z@FVWGnwj8d$GaaO!-mFZT=$?y4+y{)Xt#0X2~TC6ePc|m#Fr0`s1uq^vD zgl>^g0k#RaQ`!|~az3DBo8fG9RW*>C^}hy1Xx@a_CO($x^KG#e`^!zaiod{7id-Qx z-aiaZ9f@og{s{23=`3$^kgsMqMn+C9BS97+M!)y>_fPdOy}S{eO8v2wjLafQBIvSp zw{2TM3!U5Goo)qk8uqrL7#>|k#Wv8daEG0VC^@s1v}L}S4@1+8okUlvd%@EsMCc^% zRKLRTrv0RB!s6($+^L=AiRU&jiZ|+dwl7J(vwm5uOVuLcM)yrBong6)D@34~2(L`D zzZKUAeAI0y_rClF^MOhWL5r(sAn5)3Z0|+sD{N+Q+_B22R#XDC_P)N0UZgg1+YIO2 z#LB6Dv;eAr!#v(UTPN443p$RboLTY0G_)A$V#7jO5mCO4Mq5ptIre(HY~`~WKmPEe zlHX97;-bTjW4JhZQ7UnMmgG}rjBbUMz=z%TKSf@Qt0llNX0nfJm+qxdu?C`%s49^1 zdvdL5*|-_84hy{R%GiC9E`zJ&dgvg$t;fh&3oTa9ZmSN1Gf8hHE=@q7kbUqtkLw1` zJ@e-Z*JCSZcC4Mu*W<6)GoM?o)z_lncg3{4R2ytG z))cP$x=0mV_B#StMZM?Ct>!7ACd-1WuCZ{j`l|9e^B;S+V5H~1@+!BavqP=RR-2NIsAMSk@wZxlR)9PG}Zj{)VshM~+LVT>;RNx4y%cR8VUp z#t&HJCLl}8`YnIyuFOI_iCo)|pI?cnRq(-`|02Dyzoow8#A|3w=srf48sNVp|CcFr z8N9Vs$WDN)q8BhYfii0y(a&W09}K)}T>JCq&)V9JhEXY>NsUiNc$)@i0Oh;dU8Obi zB=Yop`HKe(02TfxRB`_vj`Ba5$@l*ab`_~ z#RWRz78*W8MfnXQ{PykJ_tt}WdI`jHZP2V6Ad8lk){Wmx3|x3%QSFZPTmS5y2HpR> z&MPZ$n(v(9;nviTQmq{$qp7`$x~7mHhT_x(^-*kbu#$?@15%DFPYq^xMMT`ug*-c} z<*WXru zHaJ!8zJvM@l5qrOR>e!R5-Oj4Pas@!>6!UgXo#$2Q50g`)cj@)7N^?dxCpo6nd>l+ z12*cOSzrHs(g;8eJ11u&AaE#GK_nGlM!41P$~QPXx3NeV-^h{kI*6ehN}~sU?~HC4 zmZIG0f17avZzYfm(gOsG+j0iP3W_pe0MC|Yq{vd^0Az&WAI*s{JOE74Z0oC@c|LU z@XV-*qH+{wA$GlM8$Z8Pp1 z-70smC~YOOHf77^OH~5d($R@wiBaF46uReZ!y7I6)6}H#qFmp&{kj{ILh487VWdSj zOHb0@-5>EMF^YHE_<=lak*gb>{t%1!!nWmiU%n*uQD4&URiJf*70)fNCn)8+#?jug z)m?J4zTlN{V+$*{QL;vFx7q#;ftS}5_GL1#mu_{tB-mUbl@b^wW5>U8=wNk@oZh_K zM{cEn*feQZl@{u`)F(@PH3dMMZaCEuc%SV9H}k{@`vvjJUEX__`?sDNegW9KDydF0 zIk`?u{n-y-=86}km95+F`COLLi=~d`lCd;I>p!(03RXC)rCrDKUolXO*G4`@E)1PT zT#ZStY|%TMhfgc^UkK84e+0b~$HhVI0G?As9ML}so=&M1$1W{OT=a67F1BN@2q z-M{`r>SX599F5LfT9%uhc{T2`jxA$m+)7X(Jm&7=8Ab}N@^7wc=4-g}Yk?-{B%>~K zjZm;76wU}DoC!=65L@~H=|7RlKwkwKGr&_VTwvBo8)F{rzYCKIr z{g7XAw3C~0C7a5WfynK-OTYM$8%Kt^;H0SV75+}wUsgw+TG#sqbx61h6IEewQb~#bVme?XNvXbAf z5e#~EQKhJ$-h8XQjv9!o4kpQ)D>P=xHU{vZUoIP#_XA0)9GVVblSbIEYx zXl-WbCk+}mCe3J1wGsc;J}Sc>G$6ar^7AKrkt0ke?$j=9dE-1ixtr6Jvc8w8-|rq`*D>1TUexjQy!FFcX=#g@%w@~-{Z)N*=|Iq`h5OVK=}S`!fL;?(1^H%iHUBKM zlBZ`HZz9$Ip`sb%qp?y*??e+G?PK;p`)u*1yc}CC26D%L)>+-b0iVJYvtp1~mbyt( zd9C!^8iTz+l%R%>iM*lTGF%%p+$!0rF}0TDH2llcE#ns!OKHcAHIDVu?K7PsGGEcb z4a!^@W|G#n*AnA@!}fBJ(&c>YfLu}1LcHm62>dOT7nu1vn532TB6qU#s9I>>@6%=YO$sh#l1dNujI8m`#SUnaC(I>>c-m|eS- zj5F$l3oDp9IesTS_ZSAH_U&!%Evk?B=-&s9Pz};{a{28!&Wbe1Ax?;_g!CQ%1C5mi zpzJVYiW*BTN9e;}|A zXU$vei0KKUd@pcM2R4f-Paz8ZA%&XRH%!qvjY+<|m#AsHY?i4n@$*c#yUig)GhnhQ zyi4(^dw!Wa^9PpgBcg1Q>!tiM^9Mgkyz3z2cHAUv8jwYG#6&U4`eLNdCPLJ8{E(K4 zRMuH{qb~XhjO$?S8C(sV5=q#`hpl9I6O;PxzX^5wU>Xo0d&1B097!JM)wd+{a)KJ8 zJeP)O&!Wjs>N`1BA9r+$)(kLW{AD7U7R;~q=gF!K$nkkMRZwhZd7|i>r~MPD+_B|t zQ(5*Qafeb{!RW@0$6WKJ?j#glc{Pf3{jc;-knahR9WUM?%fpt^SpLf61r3qCzp%%oAWT~dcPWn zAcW-M_sPfOrUoR=ae>nj#@{gLl=3VKJvP$A3MMqGmPD+-CdwzKFh# zqs4LInRgVR{~^+Un6emtZeCI{>b~>wdChxh$Obrb%1_lugdKT(lFZZoDL1e8LFu*) z%W$pK2|^9lU-Qpuuph$j5Bib(*cEf|mZ4Zh^g`-kda>9iGuj{ccxNF!XbYgdTjshY zUHgs3AAFbXlo7Ssr9yH=$}_1F6cVFFT!#~mIz61-wwH4O`556+v7BThv>qk~nDvQ$ zBb;lZ$IRVN0ZwFPO7cmaxbH7~wy1|XiRxQ+QQ9m+<%vo+ic$Tg`)=-yU6khwtc13- z9tzNz9_{oi{h6!HD(}oKKCNndG`yr6G5+1GgYvzFe-ttzYz=A_DCeh0JKAlHN!QzU z&9>J%PmXVXT_)(!QX0%TG%dNJ%p@cn3gh_mDc$Qy{t4&3;C#aG71FqNYqPz)wgCk6vv+CVLF`&;*C=YEh<|{@2bGd`^9yoKp8@+$W(JSPf z^Kb;~go#_{=7NNP@`e@8G@4*sW#==SyIOHX%oVMBx8@>?vZ1Eo`tOiOkm$`6<0pGn?Uw+!u+=$q@}uWE=$a&Wz!?^7tObd`?}bz@7MX`{Kl8#a$@o)2?w#%r|q&g6KJd5>91PBzA5gsKEg@ZeM=y zauWH;0}fqOnvp5gZ!eC1j{Qoc>mP&yvgHtMOqVA+p0d{O@X?e7|~dCv=@o_`boR#tC{cS=!!Vj@kML)nRa~9wTKh<~YuEPBTbW9%e2lRqP zW*-FKi9Cm2;Vky^>{mOtwgQ^K42ep~Z+I$@fBqJhD!-X7di|$A<|hXJ>%zB1%qLW3 zAlFVK<`GK4Zy=MB|?YM9iEDt6?YS?%XgBXFdG<^OPzqc2w^1!DD6-9X#k+<7>XVRnpNt{;4EpwA zzwB*Ljc9?-+K<(@ZIFg(56Bz-r%c2vO!AizkC_S)VNA_WEnL56Kb*3s&m!S<-n+DAU zA-hCQcI_2-zPg(JMTAyvlBajdAQ#6)MZ~S!9Ch3c>u-Ia62wXq)AhZ_3!`v&pMgS< zSgcfPK>vn@mX_GnfY?uyG%+lcfEQH~!#p_sXUd{3K%c>!{(%s(Tl)96k1{aO|2YFx z=M^1ZQQ**-k5{wca2dLGV0UR$L09&lG!Gq}HV`gQYmDK`n%StH{d{Xaw4Os0=|`2q z_sdq_s7Y%r&qoQI!nqTlm?-yw=Aa-Jsr9xX zp&8BumeIfG4uG((Y!`EJ(&0MdV}bcvJ3d&rSunN_R{)XizqdAHjBW&E_ZN z{#y4T%+Dztduey*(3k%&QZb1nb2S`s7&upd{o-?m-DEcJ9peS=k6A2zC%|72@N#in zrZ;v8=yz{W9D-m^DP6N}0bUf`uWO*)uHaLrsQv0%`}zSi(-snvj+C7#vV1bplarHO zT?Xm8wVkNZ5N8reY#4qp&_!n+gj^lcoJ1xZNPI-1<4yH$36}r8AzY?wfQyAy}?dv)I0dZO}GBWz(&>A1N z{$!8$x*!V;%8$iG#DCui{pNXb>Du+(z12efRqgv8he*>e=Dk4hw zzpjMI@D>L*6W5=wi9ksIdmBflkBB$=ylp{?-*>dOA$0Z5fsmVn2JY?^XOuJZQAt|Y z#ko_~xYYGd!?H)_ja6lBNroYwyq>Zs6p+}P;0}eb=hflu!&g3h_<%DRHkFTStINdp z7QdO;?~{iqsi=OVC-->v;Pge~0yR}>>EQP(rLwrLqqLM=(2`<6iI|>V*T*_krI38bZjj;ps&56;2U9l z3op}#WgS^dvFAVC7`$ax0Qt*1F5Oykz0)7ju705MqI?%{s8Ayu z0hft01fm3hjptFu(PCNrdO`j+(_S9R*7`=`2oi(IhN?r-8ujXMiI%zfAb|tK7%pDTVZM5;-C0issM%-rQKiG%2hocwbmUgme#&Rl)y>5}0JW{vS9uILb z&yFAYki0ZG=^&%`t0kuw?ZqG6*-mk@%9MnvBtNktn~c(_0`x$RywQ&0YRwN-N-DeRG zfL`?)RVB1V8QWk@n4zz9L0Q3B=jpPkTW6I3xzIK9>ppt)sLl6qS>)-s6;kslW#1Zn zFGosZ355zj(iFjtFCpB5$m*S;8=9hLnNf|+snnL;PD%N3yt*XryU0&q zLYm4NuD^heoj}QpTe(LPtevADfh=9qNYq1^I_?^hU zsEp!?icApNCdOL%K3brIXf+9i4O2o)LG zXEcx616LTUn_II_V_sqwjuTY^r$%~l4YXz+EJ6T!B0bv7#%pR~?+)|9@ z#WJK>QGxAu@O1)@&XsNUGu7f`H~y_fK|UoaZv1}YGVeN;fXow;gK(Y?GP_zt951(E z#$e#9aebl}Amqpw!=GD{8R<4>?tZwCb|_WE&}51~LbFM?X^>+|A*I4hZt5IR@BLI( zJ)wFm|mrMYCXg zyOuvQUXY3|CD(lL3sVOLyq+{xC9 z=vv)3Z*iwPY0miG!9QYyGr_+qhit!Qqi5)jaw_}Is{#qKv7^s(DwHXBZORrU<9L?z zc)u)oa~2h|%%ob4|2evC=+GOvQ%*7^Wn8-)Hf0znd8s%=Yy7q;ybLkwE6 zUW7J{=?fy#&LHeGZoTcO(=Sxr*pE!7fYJo%%a-N~M5pTO>Gldb`i<>k^fb|s9b2oN z<}Z3BAuAXcW!iupGrRLVMP6avM8$uF)*hM5gDQ98mYHt{U|vUOV{i_@{vfxdsqtgH zj$sHL+3%x6$AhR;`J?9GsL|hf)(YHf!>c20;eI1~)Ok(oNZ(C3ydh~Y%|A`goqjm~ zF_xjA0Tx=xt3EZKYOO3U+g_Xg)aK`**rPiuiDO(ja4vE};X}4o13TCA%iDN$JPnSC z%ckz8^Ev(Hg{u|^AN`IUx=Ol2I+Oelt?&B@Qd+|I(M4-WT6x@_G$1WAIZ_B}be+D? z(D=wfl1hemjot@L7>08ZHGs2qab)eV=yS?SN>R~n5xZCPB-opwW?-daOG=ij-vw zR&RK`F`_GtvJXl)Q%o`cqBCouj05~NUnocDAE_;5W@NW z2#ED)_0|5%Xb|6?=Oisj*H zk7E=bW;sQ25P5l_U8%gKHK7Rie;BWn2gNkX_28}t+HvI6 ztaMny`@?xtIjOyX*GxO9ZWmdg=F?x;@<`LMg;m3gh{GU430F4-cSw@@!O->N{neoD zY`&XXl)7L!-f2)akdK8`M1+kU~MqIx_yCXOWKW6Fq9~=7|R0+bk zrlfHp461p|Oa9H8t?L5I9Z_$27WUe#>pbITWBXW{QAjtXrypGO9-UYJ^pp^tmV?6H z3G%qo&kWe=*7@(#1%VZ5GrM4n!o=|Jm#lU)MdHEv9q1JNtE_n|Ejb{nsA?BMQP5g@`* zFkD0PJ^`~thx^3`=Q`o#x(E+U(+=3%dLf6tK|V(HY6*Em#W$WkxwzfB zv`$V*?n}gG3oi3-Xy?1f|491+Nu-1D$03+pKF`me94ksg9{%$`9jlfV#Fhi}a~Vq= zY+MHk9ZGG-%a?gd_!&rx%$zw+5<5=68CX)Y#Z2qv$0cM_G$?;wMbb-e zWA;~(nfH*bB$g14IVfRrduly|Pn|j%mqU&YXB!pOZu`cd_1!K5S1$Xx#V9(JefWu| zH%XlyZqDdDODf7rShtV;V~A}*!;uT*zFx!$ zh`Pc2)Y`~lI845%pPK83O5LMx?W5I;W=W&olIszykinPY8=+>FlE0u!O}B)G$+zk} z8kN-376z1Bx_-vnp4Ok7019%sbS;X-eg%)n0(aC`O4Z>O+dU1)WB$~<1G20uK~t2W z$*qh5EVi`GdFfS3{m7jBB~A2_#)?FrcAYM8xr_{H;1XDGNoBf zO^vdQ7KQaBKr4J`*bhwGq7RuLjJ$@!50KuSU3TFT*!TMzQs>mN!eclo&%o-*z^g{9 zN3pruc&LE4U4Gb7W*iT2`VZavk9Lu|wq!R-5aDRvqB^_GqfjxVXV8vIdWrTto`$uN zT!3>6-8JNN_$1sm!m2Dq2OM)&k`wOD-O*nw1|j%bwu=^sg#tYD*?o+LN#aO$ToWZqfb@5S2J8d|_+!tL@jLI==c71hOp3y- znykLQsJp%zB(B-z0ZZ8)EmkAv9e-GUo-+9T*=wZivY)S`&%;cSib8Sq04_#G?PT{C zwP7Z$V`F1h8YD=8*+9%fT9|qGk8q+8ap9Lrwjm8>_SxFe zi%bBFL(m<-6)JS%4?KEU|D92`v7v`)w`<_IjB$T1>^x%Caw|AP@D0_Dv@yj!!+koa zVrv9HU`_6S>9PSS5Eh;DMDvA31}&k_LJk-NR}M4<`vL`U z*G4~Ze%4QK(b9? zVJ+i^^V{ndAe>$lDEK<*=#Yv7NDqC}7_4v&#YvzK**d~8)6})N`aq7&cTx?Buf_Gj z>HlNCO~~zyc>Sx0`U@8>EOM07b-ctv=bbwXaEh*BZA)WvU#yhs8_uv=I|}-OJQFGz zY1}_ySV7vE$fo_mi0>(kSbp?Vx3jWXx~DMpeutr*?$i9e>15a~=b(p&@p2Z-IX7(A z3I%mSWIaDo+EJbB8)FR`krhXI&g|?G?>BX<89fs4<;4z}F6sMMtDu+3j&}nXGK0kg zo^UFlq*p{w;yi=>!`uDh_3({wQ~n$Q>$TeWbQ+r%=-*R>c+XiQyYmXFtflGvt4BD_ zUh$nH@NO7*Mc+$?bH2gm3Sz&`qq>agwqBW5He?B%`vhRUAF&L)djJj|fHNCt?y&%% zl`xLyriJph^~L=E_}~9YO2Yp`@jrh{4@V>s1YVR!p9~K54did=o#8PCnK1;a4Tq%{ zDqW@39dwD}b`QRRKSRTby;AxoWgy7g0X( zO#Qykw0EsI7zGs$@_3nX)c|Ut;Z0IKp6vUo%U~r

F8%MgamQ*fR#{<6fymo`v{AM{v2Xaq^=z#}?CX*Kq4o zQ4%8~VjtP%JR?Z~m7RnP6GGC{13dR74&GqBNUTE@zZ4lAox9xtklCpdcF2e5S_xYH z{TrdAHm56*wbJsprJLJN;M1bz$3*nMIhHO5JZnKzAGjgh)R33I#M`UJ z<_@g$L!)noBJy`Ui}`Pk0Bvn;B8Ri#$cBCip6yXYJO*LPMN9)JDd}Hv0l-~qmLgo%p(9-_+@#7pKg)0z9_YyjOM7kB>7@6Gxf@~^x=;sR}aAg1A|E0U4 z`9HI}Uifj12h?uQF5=^*{rEQb^a)@ZuvWx-(9Yw?>+$2q1qB6x zS)Mqlp|oJaN_lWzk#tvtaNFT-0xk3G?6pM~`&c?8TN)xtNvl+pg2wN{2kW1e9T|rW z^xW-;{8W!ba^231!xf1HB^uazp}1t?GAiqTGh@QrPdxFjD4NH($pQ;H245f8pe5-* zM65sH)Sf|)O~Wi=1}@IEG;%!Wu^1iad&xH*>BfcNkbm1T}g?JU5MSHN?{4* zz2YaKFOGAF!VNi_-&A{NQ~DK~x$}YiZAltXA#((wBSs(j;=X_Reu@Dtm2I@Nrc)=M z(d&U~JqyPClUg7V=YxYfl2QVOB=3t4u!OY@H`_g)zy*x=j;i;P>Dm!4Iw#tE4;U7Xa}x@U_k$|e zN4L_qQP^WqGdR18g8P^)ubd)KS72{rMJ1$*OG{2}V84*bu%(u6Rp5^8&%Lw;ghPB} zN-~SnU>nYB&@a~^(C0)M04euui}j>sf)6yay*1NZ1ecfK4LxQ$Zr%ns`{qj~+c zc!6@Iq2i;hf)`Q%=NlDV|CXh4e4;Po0*(RvK*+@tplu-K6f017f)GEA^?XjtIFrr* z6yzk#Q4ieu*mohxY5PSQ3JU1;c`xo4IyH;Ba;!I7lh$Y!QA$!yK4xMvX+8oEZ^Q9VWRVYEeqD+DUMKj}=los>78OQVSGP6B)CXWFCdFimn&gq+i2Y=5}r| zHt`e#>$rL9=j$PoPJDgobd#KJH*sy4(tq`WgUx>g>e_gx$y-lP(;Vq225-ZAIs9Z@ zbgWGEwT63w5*4qKjKn~tU0=~!k;4>v2V^LF=W)_Na3$zS+SaqPS!a{Sg6YHV2oQ_J z^pPs&s5Nx1xAi!?z~fT6Yt^+_nGSD8zh`q`;wUHWhhz`I=Buf{temH^a6n-*8&gXz!m9cULeW)`1jc9yTlo`SsZ z(fd3Kw2t(YR$a^S7RuFav5anwZ+{!$X+|oSqhQ}G9&`a*s7a`9x!As6u9w)D)Qn$X zIp0BL?UF3a+9T|YZG*k}cZBx;L>$?Lr^zRF?6Q(PS>5ZNp=&Ca*eu^;Q=8p(N9qZ~ z86SR@8>BUC9;CwNBgc<<=cp;wne8*?l+nryIxlyjuVYJMGIyVa?3wWIi5XPjfInGV zv0mV?X%ae;{VdX7vU>M-#9`%%w_Or4u6h<1a$NV60nj6Kuv`obTAxcIX+psz^5$e# zXy>5@MKJH`6&7>s7>c5k2YQaj$3^xcbX_ZVvz(=je6x3gQG|xN4 z@Eg=d)98@Wjv@DSatG~LB-!0d;e+RwhPcAxo*6ja7j#%W2vm*2{<9gM!X>&{!ayzr zeSybSql-tj^to8&-B7a@fd|| z0xk!tM3R^05$Kd1xAZwNNMCs8F8+QKEwlB$V9t$67bn4v$({C{ly0hT*`fzA-ap_; zpE~BG`i`3M;uMMgeghu<4>I(lNc5HI^D}BXY|Pi6TV=ZSS9@y(lgZn0jMF9C0s>}x z*>tAhd2s6p-s&aV#_&ov3Q0+q3p;{DkH5St{*Eb^cjWfsCNHvm)(o{57*ox}Tuuco zA|*jPgLUf;ibu0uEeVOazBw{<4g$ADk;dxN*Y;Lk0!6HOjN`jC%9+^mP&*yJ6;sh zv%4J5Ih$A{Bww@FBdLaI-7(uC_bN$^p@NfO&1RdR(KeY#67M*1oh>Q@(jDQAPkxkZ zeoHqjjf~Pc{aI}!*N0Z<)YU8B))F&)2C?UIih{!pSzDyurmymEgKt3YL4hx~&JK!D zu@IN@J;$lrsXA6C~L`m+9DannJ2p zPwovLX;sdbltzUXMyK&WQYSvDq~*+0bdn^U09~cB3nwd&GV}B^Oqdiq({^Q(jyF}X z&0=80M)G~%dO6i9E(o#?j2qJVvMcGBjIb|wN30h`o))d0^Oauu;Z~LZ&g6F+yJi0% zMJ@$dH5q;T)l9n1oDv{fPBUF;ItRGl?z~2Szn3)UG;)-knAQaJrX5S8s1sRW1=g`L z89X_DJY7a&#UnbA$x&rri;J_H;X(#;_7N40$ywnk&Dn2+5ra)S@<(vgEvar*^I?*b z->7|3+$Y>_+3c_q8fe;*IC||p$x$iUn$&Dx(_OXEj+`VPXk+p`eKm@Ems)o;>h3Y1 zFXt<}NR}owhfQ_-+)NfbmG8Gpc67yJvuJWwSJJD7$sL)6VH@jExw&%R9NviN74D=w zFBm{`#94rxpLu(r4~b0Fwp>rF0Df{_u*bBSBfGhuUBSlzO=>p(-O>XCf!j){YUC^8 z7_H;Q$o!RRcinfO8KGqppd#Z~>HgRjNiyuJ;xMf9U-Ut0c_Raq^|^BFcT587&# z=A&}|P|3SQ9qrF2Y?K_%#2`UfAh0|wa$J9xgXfF2yprJHMdqq&dx6l&#jkB}5ozbBJU zhk7nHvX$utH;_hQB+WkXB{-H_ky}d2FeP0OtQbE)o)DOgx z3}2GX$&~`aGI0q9y0`9m@OU5fS%@No(riGGW-XR}=iz0Q4j-Vt507Elpm!fP#Ygs` z3`WWn5dlN#FEXhLQe#z!H5jG%eFj_f)|Qwldl=1BG)sk+7@}^5NHF-boa8NzQ%$yzlG*ol1j zR$JtZ={sm`;Yb-b%AE0uZz|L)<(e%?ClvT}m2T&DGidU~@1Nj||B~W;d|W1fu~OT$ z|Nh%s8|4ucExcKmAtW@B_(H^glGS+H55s~VgS$WJC{*&SZRv&17_RTuLzFn*{CXwX# zBCq1D?~_I=C0uLgKi#kx^P$UwVX9;=^`(!6^hOl6N1Um@w#zq0=K6i&F4@n1L{m%S zwAHjICEY`rJ)F@#a%Ltb$*a^!p0m$1YQDKf8~-q*l+pEaGX#RQIiuoyv>c+vj$G1D zOuiZ+z`>OyBS-c?UZ%f0n!9hCV>f+gw;Y?ZlOdU2db2s>QOE6994j3*os;=u{e7Lv zOmXJ|b4kbBS~ERY)qND4UH7^+K14mQT~>cl9%;o|{#N^CAX$iG&LZE_^yx?i$#?|r zJq&#H2dBaG;{nCzz?eLK_+dDk1E@x%BTWt{J`Skam+6%XX(k_|Ed#L&} ze+o!?-o-89#A6&zxphr|X+dJou)?_xVanv#<|)Tdda;?QR}K^8Zt;5p7r(##Bi~T> z6;);RxT>R}i(B*JZB4@>`|(%AiXs8J$dBlzss+LNW3pHRCPC+UbM{pst!N8Q!MK3q zyX1Mpi6)a+0{{CO`ryp$TvD!6OK3yl?xSjFtB0*4v1_3J_Tjo+`v*oh3#7X5b9H8L zvoug}o+ebsmkqlLw_4_~&^t4TEuTD2cDPWwgeSsUS2TvlfOO+yc>%%ps*I~Xa6ZQv zsX+LBOIp=IN4$huTA~iP#8f*}5Gh>Bmt?m24n92FPp5Mg%a~JF-&%CUy3t(`$w6q9 zrMAFTQ44LcfRl`QIkYN?&T&qo0&h0^D|wEJ82MbTG|WT$;pk54WJ%K4Pa>&ZW@Fs4 zac@kF^2&>|`)_JRZR_G)ZeiL0kppjR$3APXUH4ig>BpdA2(QzjiX}fu{~QADu1$s- zua8Y|9i&~|=C++pS^$jjX1A>*`=)TDBr{IDE+R>w%OEKAwWGy4l%F)U1|8783`%}( z-ZeUw>3je>LeXOH=k=VMduk) zo}Z@nM3qeB(yh%(QpU;W^iKFxGCd#VKk(<#=AzyQ3~U@0EYQ zQ0lWuYxQe$?geAhm&5;2CYJ6g^4 zsl`g0>x&nDZYsAs_Hb-Va6{EsyRZQkET~{(WAg}$5ueNM-Qxzg25&kKzo#R(BjC#T znhAW6fd9$J;NU0RBw*~WA;1yyEs#sNjOCzL!1vV<7WIIDzG(0^1UAm#Cc?=#gsv5D zHJu)ye+E;k@nUr+cZn9{lnp48;3J{B$@?2U)SEa;tWeQww>+wnMZf$Pt`x#YES33h zLM;C=YSfuA@m%)*eX$h(2K4=R!LC{Yn|ivsY;L@oL$9{}_P%hG`eUKFBi|lJH4Ge; zkPaW%g9Y4JC;q0x`(ymHpr7U0HPkSyDy>aR)>7^@)ed>z& zV;+&VKg-sY*fWl$KTZBq@H#<1m5}A%+jiZw{ZZAdR{N`*vA`~=3h%p=#?&>&Cb9(mGkm#`| zEjcC^j)YmMUjIJMXaHVA>qyj>_fC5{+(I7S88{IvqkcgCiS2VwyYAg5EoF}n)Xit@#8=^3)WnA{=X(-uff9~#t@87Pa{t;JT zzAWfp=A_toqu4kn-eq~IJKtlyn)TM9f_PPYS(NqVV~jcrM+vok#C_04yi=Bn^;uyf zpI2)_R>d34gFILAKJ5|u5$wh(AKlKJ!+zzg(@Mp|p_2#u5A)A&NI%ZEX=G>aQu*Q& zV0FB#JEnN|`^9Ui%4cf{vjBnNPR+@Rqz1dbD`2)EQzu1 zpN|I&HoKlUB=+QmOtr~2*HarS-;|s^93c?@`^z1@FYg;@+USo^{iCQSA1Oq^TkG_fGn?KdXX%o4wwj}QFRY)3kqR+I=Y41A^LiHyX1(&M+5rA6KD0d z0rZz6u5zTm0vI-RadDNMVYR6O`@_!a;crVcR#Md^UY&b+?Dwg^+#Nof zz{p9mY>c!3Ae{@7C4MIzNK6zsS2WmB)z#G?O{%@|+Oc`LVEOq%XMcqqrht46N#*r_ z|9K|XAMpi0GvO3(L|2ExbAy98$%O>_-xqESX%WdnKtlii!!l=x17V25j;DKvDNwSd zHXh@lqVUZiIz&RaIJ=F~{Vft(A&EUVH!Av43q5-96)9s&eAi{=`rEfpVsAyS8Fqtx%E1r6RWyG@M71|ePJte!xb*$=;l)Je zZD}eJ^RI$@J%5PJTP@w)rn3YjomANLlTffb6;;|1Y1dz2*=g}--1lz?Z^Hi!bxn0{ IX*opv9|6-X&;S4c literal 36026 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 audHcUP_-5*(iE@5A46SJom*N?;r|2TvC0Vm From 5589cdb5e91197acfbd61ae2ef2d8e96b573e875 Mon Sep 17 00:00:00 2001 From: Daniel Gangl <31815106+killer0071234@users.noreply.github.com> Date: Wed, 16 Nov 2022 23:09:54 +0100 Subject: [PATCH 08/39] Update / Correct zamg integration description (#24931) Co-authored-by: Franck Nijhof --- source/_integrations/zamg.markdown | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/_integrations/zamg.markdown b/source/_integrations/zamg.markdown index 46f23227abc..7e0564adedd 100644 --- a/source/_integrations/zamg.markdown +++ b/source/_integrations/zamg.markdown @@ -18,7 +18,7 @@ ha_codeowners: The `zamg` platform uses meteorological details published by the Austrian weather service [Zentralanstalt für Meteorologie und Geodynamik (ZAMG)](https://www.zamg.ac.at). -Only observations for capital cities are publicly available. You can check the list of stations in [CSV format](https://www.zamg.ac.at/ogd). +With this integration, it is possible to get weather station data from up to 228 different ZAMG stations across Austria. The integration uses the [datahub-api](https://dataset.api.hub.zamg.ac.at/v1/docs/index.html). {% include integrations/config_flow.md %} @@ -34,18 +34,20 @@ This integration provides the following sensors: |Name|Description| |----|-----------| |Temperature|Temperature in °C| +|Temperature Average|Average Temperature in °C| |Humidity|Humidity in %| |Dew Point|Dew point in °C| +|Dew Point Average|Average Dew point in °C| |Pressure|Station pressure in hPa| |Pressure at Sea Level|Sea level pressure in hPa| |Wind Speed|Wind speed in km/h| |Top Wind Speed|Max wind speed in km/h| |Wind Bearing|Wind bearing in °| |Top Wind Bearing|Wind bearing at max speed in °| -|Sun Last Hour|Sunshine in the last hour in %| -|Precipitation|Precipitation in 1/m²| -|Station Name|Station name| -|Station Elevation|The station elevation in m| -|Update Date|Update date of last read data| -|Update Time|Update time of last read data| -|Station id|The station id| +|Sun Last 10 Minutes|Sunshine in the last 10 minutes in sec| +|Precipitation|Precipitation in mm| +|Snow|Snow in cm| + +

+Not every station supports every sensor. +
From 1f6f5b7de77b48dae8060d387b7730892f75369f Mon Sep 17 00:00:00 2001 From: Avi Miller Date: Thu, 17 Nov 2022 09:17:07 +1100 Subject: [PATCH 09/39] Update light.turn_on to use new color_temp_kelvin parameter name (#24809) --- source/_integrations/light.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index c3b8c33141b..2b836618c14 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -15,7 +15,7 @@ This integration allows you to track and control various light bulbs. Read the i ### Default turn-on values -To set the default color, brightness and transition values when the light is turned on, create a custom `light_profiles.csv`, normally located in the default configuration folder where you find `configuration.yaml`. +To set the default color, brightness and transition values when the light is turned on, create a custom `light_profiles.csv`, normally located in the default configuration folder where you find `configuration.yaml`. The `light_profiles.csv` has to have a header. The format of the header is: @@ -49,8 +49,8 @@ Most lights do not support all attributes. You can check the integration documen | `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets. | `rgbw_color` | yes | A list containing four integers between 0 and 255 representing the RGBW color you want the light to be. Four comma-separated integers that represent the color in RGBW (red, green, blue, white), within square brackets. This attribute will be ignored by lights which do not support RGBW colors. | `rgbww_color` | yes | A list containing five integers between 0 and 255 representing the RGBWW color you want the light to be. Five comma-separated integers that represent the color in RGBWW (red, green, blue, cold white, warm white), within square brackets. This attribute will be ignored by lights which do not support RGBWW colors. -| `color_temp` | yes | An integer in mireds representing the color temperature you want the light to be. -| `kelvin` | yes | Alternatively, you can specify the color temperature in Kelvin. +| `color_temp_kelvin` | yes | An integer in Kelvin representing the color temperature you want the light to be. +| `color_temp` | yes | Alternatively, you can specify the color temperature in Mireds. | `color_name` | yes | A human-readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/css-color-3/#svg-color) are supported. | `brightness` | yes | Integer between 0 and 255 for how bright the light should be, where 0 means the light is off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. | `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100), where 0 means the light is off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. From 2ade842222fbe62a77dfa7672170c6db6740da01 Mon Sep 17 00:00:00 2001 From: Hans Oischinger Date: Wed, 16 Nov 2022 23:18:48 +0100 Subject: [PATCH 10/39] vicare: Remove unsupported scan_interval from docs (#24832) fixes undefined --- source/_integrations/vicare.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown index 30e82e7d36d..40b6c8c27d4 100644 --- a/source/_integrations/vicare.markdown +++ b/source/_integrations/vicare.markdown @@ -54,7 +54,7 @@ The Viessmann API is rate-limited. If you exceed one of the limits below you wil - Limit 1: 120 calls for a time window of 10 minutes - Limit 2: 1450 calls for a time window of 24 hours -The default `scan_interval` of 60 seconds will work within these limits. Note however that any additional requests to the API, e.g., by setting the temperature via the integration but also by interacting with the ViCare app also counts into those limits. It is therefore advised to adjust the scan_interval to your usage scenario. +The integration polls the Viessmann API every 60 seconds and will work within these limits. Note however that any additional requests to the API, e.g., by setting the temperature via the integration but also by interacting with the ViCare app also counts into those limits. ## Climate From d875f33a1e86a55259b370747e92c637757e90bd Mon Sep 17 00:00:00 2001 From: balk77 Date: Thu, 17 Nov 2022 11:39:44 +0100 Subject: [PATCH 11/39] Update subviews section (#24738) Co-authored-by: Franck Nijhof --- source/dashboards/views.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/dashboards/views.markdown b/source/dashboards/views.markdown index b53cb439336..714eda6a42f 100644 --- a/source/dashboards/views.markdown +++ b/source/dashboards/views.markdown @@ -127,7 +127,9 @@ frontend: ## Subview -View can be marked as "Subview". Subviews won’t show up in the navigation bar. When on the subview, the navigation bar only show the name of the subview and a back button. +View can be marked as "Subview". Subviews won’t show up in the navigation bar on top of the sidebar. Subviews can, for instance, be used to show detailed information; you could link to this subview from a page with a clean look with only basic information (by using [cards that support the `navigate` action](/dashboards/actions)). Think of a view with a few thermostats and a subview with status information on the heating/cooling device. + +When on the subview, the navigation bar only show the name of the subview and a back button. By default, clicking on back button will navigate to the previous view but a custom back path (`back_path`) can be set. You can access subviews from other parts of your dashboard by using [cards that support the `navigate` action](/dashboards/actions). From f03e5dd585d8bc992316aea5b571a0420f5f0840 Mon Sep 17 00:00:00 2001 From: balk77 Date: Thu, 17 Nov 2022 11:46:48 +0100 Subject: [PATCH 12/39] Update trigger.markdown - sun offset (#24739) --- source/_docs/automation/trigger.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 895f474972d..91d3236313e 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -515,7 +515,7 @@ If for your use case this is undesired, you could consider using the automation Fires when the sun is setting or rising, i.e., when the sun elevation reaches 0°. -An optional time offset can be given to have it fire a set time before or after the sun event (e.g., 45 minutes before sunset). +An optional time offset can be given to have it fire a set time before or after the sun event (e.g., 45 minutes before sunset). A negative value makes it fire before sunrise or sunset, a positive value afterwards. The offset needs to be specified in a hh:mm:ss format.
From 5070d3469d8b88fa790faff084e7a0d770f615f6 Mon Sep 17 00:00:00 2001 From: Johannes Fahrenfort Date: Thu, 17 Nov 2022 11:53:02 +0100 Subject: [PATCH 13/39] Update calendar.markdown (#24743) Co-authored-by: Franck Nijhof --- source/_integrations/calendar.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown index dff15ca5397..8c9e56f2c71 100644 --- a/source/_integrations/calendar.markdown +++ b/source/_integrations/calendar.markdown @@ -37,7 +37,7 @@ automation: ``` Calendar triggers should should generally not use automation mode `single` to ensure the trigger -can fire when multiple events start at the same time (e.g. use `queued` or `parallel` instead) +can fire when multiple events start at the same time (e.g., use `queued` or `parallel` instead). Note that calendars are read once every 15 minutes. When testing, make sure you do not plan events less than 15 minutes away from the current time, or your trigger might not fire. See [Automation Trigger Variables: Calendar](/docs/automation/templating/#calendar) for additional trigger data available for conditions or actions. From c98a59f8cf067d2b73f443e74951f94b8f324758 Mon Sep 17 00:00:00 2001 From: Marius <33354141+Mariusthvdb@users.noreply.github.com> Date: Thu, 17 Nov 2022 15:05:50 +0100 Subject: [PATCH 14/39] some tweaks for Subview (#24976) Co-authored-by: Franck Nijhof --- source/dashboards/views.markdown | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/source/dashboards/views.markdown b/source/dashboards/views.markdown index 714eda6a42f..0b532d08dec 100644 --- a/source/dashboards/views.markdown +++ b/source/dashboards/views.markdown @@ -127,9 +127,9 @@ frontend: ## Subview -View can be marked as "Subview". Subviews won’t show up in the navigation bar on top of the sidebar. Subviews can, for instance, be used to show detailed information; you could link to this subview from a page with a clean look with only basic information (by using [cards that support the `navigate` action](/dashboards/actions)). Think of a view with a few thermostats and a subview with status information on the heating/cooling device. +A "View" can be marked as "Subview". Subviews won’t show up in the navigation bar on top of the sidebar. Subviews can, for instance, be used to show detailed information; you could link to this subview from a page with a clean look with only basic information (by using [cards that support the `navigate` action](/dashboards/actions)). Think of a view with a few thermostats and a subview with status information on the heating/cooling device. -When on the subview, the navigation bar only show the name of the subview and a back button. +When on the subview, the navigation bar only shows the name of the subview and a back button (no icon is shown). By default, clicking on back button will navigate to the previous view but a custom back path (`back_path`) can be set. You can access subviews from other parts of your dashboard by using [cards that support the `navigate` action](/dashboards/actions). @@ -176,20 +176,20 @@ views: type: list path: required: false - description: Paths are used in the URL, more info below. + description: Paths are used in the URL. type: string default: view index icon: required: false - description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](https://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](https://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. Only for "View", not for "Subview". type: string background: required: false - description: Style the background using CSS, more info below. + description: Style the background using CSS. type: string theme: required: false - description: Themes view and cards, more info below. + description: Themes view and cards. type: string visible: required: false @@ -198,12 +198,12 @@ views: default: true subview: required: false - description: Mark the view as "Subview", more info below. + description: Mark the view as "Subview". type: boolean default: false back_path: required: false - description: Only for subview. Path to navigate when clicking on back button, more info below. + description: Only for subview. Path to navigate when clicking on back button. type: string {% endconfiguration %} @@ -221,3 +221,17 @@ View configuration: - entity: switch.decorative_lights image: /local/lights.png ``` + +Subview configuration: + +```yaml +title: "Energieprijzen" +path: "energieprijzen" +subview: true +back_path: "/ui-data/climate" + +cards: + - type: entities + entities: + - sensor.today_avg_price +``` From 1b77097b4dac60920a17b7745c8e9d6b2971eb9b Mon Sep 17 00:00:00 2001 From: Eddie Webbinaro Date: Thu, 17 Nov 2022 09:25:50 -0500 Subject: [PATCH 15/39] DOCS: SmartThings (#24979) Co-authored-by: Franck Nijhof --- source/_integrations/smartthings.markdown | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 5d26886aec6..87cf2f40eb6 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -301,7 +301,16 @@ This error message occurs when you do not have an active Home Assistant Cloud (N The personal access token does not match the expected format. Make sure you are copying the entire token and that there are no extraneous characters (such as trailing whitespace) and try again. -#### Error: The token is invalid or no longer authorized +#### Error: `pysmartthings.errors.APIInvalidGrant: Invalid refresh token:` (after a restore) + +You can fix this by using the SmartThings App to re-grant authorization to the API token you created before. +1. Open SmartThings app on your mobile device (not HA) +2. Select `Automations` from bottom +3. Select your Home Assistant automation from the list +4. Click "Done", then click "Allow" +5. Reload your SmartThings integration from Home Assistant Devices panel + +#### Error: The token is invalid or no longer authorized (not solved by above) The personal access token entered is not valid or has been deleted. Create a new token per the instructions in the prerequisites and try again. From b983495c6864b904c4a13a92f2dc98d64588959d Mon Sep 17 00:00:00 2001 From: Sven Serlier <85389871+wrt54g@users.noreply.github.com> Date: Thu, 17 Nov 2022 23:51:53 +0100 Subject: [PATCH 16/39] Component to integration (#24721) --- source/_integrations/raincloud.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/raincloud.markdown b/source/_integrations/raincloud.markdown index c42b0fbb7a3..3e811b06b02 100644 --- a/source/_integrations/raincloud.markdown +++ b/source/_integrations/raincloud.markdown @@ -50,7 +50,7 @@ password: ## Binary Sensor -Once you have enabled the [Raincloud component](#configuration), add the following to your `configuration.yaml` file: +Once you have enabled the [Raincloud integration](#configuration), add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry From 2abc490af573b00e4cf99e39c72b705fe870b827 Mon Sep 17 00:00:00 2001 From: Rob <55458848+robloh@users.noreply.github.com> Date: Thu, 17 Nov 2022 14:53:33 -0800 Subject: [PATCH 17/39] MQTT Update: fix incorrect select in first example (#24705) --- source/_integrations/update.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown index 3b9afeab4cc..7c3b37bb56b 100644 --- a/source/_integrations/update.mqtt.markdown +++ b/source/_integrations/update.mqtt.markdown @@ -17,7 +17,7 @@ To enable MQTT Update in your installation, add the following to your `configura ```yaml # Example configuration.yaml entry mqtt: - select: + update: - state_topic: topic-installed latest_version_topic: topic-latest ``` From cc1cb20e72fb9984d2a6c3907ba60a1a88089895 Mon Sep 17 00:00:00 2001 From: Chris Jansen Date: Fri, 18 Nov 2022 00:02:26 +0100 Subject: [PATCH 18/39] Add Smart Meter Bridge (#24732) --- source/_integrations/dsmr.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown index 57a3a250f9f..c323a6627b2 100644 --- a/source/_integrations/dsmr.markdown +++ b/source/_integrations/dsmr.markdown @@ -84,6 +84,7 @@ $ docker run --device /dev/ttyUSB0:/dev/ttyUSB0 -d --name="home-assistant" -v /h #### Serial to network proxies: - [ser2net](https://ser2net.sourceforge.net) +- [Smart Meter bridge](https://github.com/legolasbo/smartmeterBridge) - [WIZnet WIZ110SR](https://www.wiznet.io/product-item/wiz110sr/) DIY solutions (ESP8266 based): @@ -122,6 +123,14 @@ connection: &con0096 115200n81,local ``` +Optional configuration example for Smart Meter Bridge: +```yml +serial_port: "/dev/ttyUSB0" +dsmr_version: "4" +server: + port: 9988 +``` + ### Technical overview DSMR is a standard to which Dutch smartmeters must comply. It specifies that the smartmeter must send out a 'telegram' every 10 seconds (every second for DSMR 5.0 devices) over a serial port. From 8eee2092847c96577bf78e50ee9c443b600aa3dd Mon Sep 17 00:00:00 2001 From: krazos Date: Thu, 17 Nov 2022 18:03:44 -0500 Subject: [PATCH 19/39] Fix errant references to "Solar.Forecast" in "Forecast.Solar" documentation (#24750) --- source/_integrations/forecast_solar.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/forecast_solar.markdown b/source/_integrations/forecast_solar.markdown index fa7194f4426..7ed1ae0581d 100644 --- a/source/_integrations/forecast_solar.markdown +++ b/source/_integrations/forecast_solar.markdown @@ -89,7 +89,7 @@ default. Enable those entities in the user interface if you like to use these: - Estimated Power Production - Next 12 Hours (in Watt) - Estimated Power Production - Next 24 Hours (in Watt) -## Using your Solar.Forecast account +## Using your Forecast.Solar account The [Forecast.Solar](https://forecast.solar/) public plan can be used for free, but the resolution of the data used is more limited and thus, there are less @@ -127,7 +127,7 @@ a more realistic forecast graph. [Read more about the damping factor in the Forecast.Solar documentation](https://doc.forecast.solar/doku.php?id=damping&s[]=damping). -To adjust the configuration settings for your Solar.Forecast integration +To adjust the configuration settings for your Forecast.Solar integration instance: - Browse to your Home Assistant instance. From 650b7a6ebd9e8264b5527ade1df43080876ea020 Mon Sep 17 00:00:00 2001 From: Jon Wood Date: Thu, 17 Nov 2022 23:15:39 +0000 Subject: [PATCH 20/39] Add details of shopping_list_updated events (#24080) Co-authored-by: Franck Nijhof --- source/_integrations/shopping_list.markdown | 29 ++++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/source/_integrations/shopping_list.markdown b/source/_integrations/shopping_list.markdown index d1585f94319..2dfbe8a8b5a 100644 --- a/source/_integrations/shopping_list.markdown +++ b/source/_integrations/shopping_list.markdown @@ -59,18 +59,33 @@ Clear completed items from the shopping list. ## Using in Automations -The simplest way to use the shopping list with automations (e.g., when entering a zone with shops) is to create a notification that can be clicked to open the shopping list. +A `shopping_list_updated` event is triggered when items in the list are modified, with the following data payload attached to it. This can be used to trigger automations such as sending a push notification when someone adds an item to the shopping list, which when clicked, will open the list. + +| Data payload attribute | Description | +|------------------------|--------------------------------------------------------------------------------------------------------------------| +| `action` | What action was taken on the item. Either `add` for a new item being added, or `update` for an item being updated. | +| `item` | A dictionary containing details of the item that was updated. | +| `item.id` | A unique ID for this item | +| `item.name` | The text attached to the item, for example `Milk` | +| `item.complete` | A boolean indicated whether the item has been marked as complete. | {% raw %} ```yaml -- service: notify.notify - data: - title: "Time to shop?" - message: "Click to open the shopping list" +alias: "Notify on new shopping list item" +trigger: + - platform: event + event_type: shopping_list_updated + event_data: + action: "add" +action: + - service: notify.notify data: - clickAction: "/shopping-list" - url: "/shopping-list" + message: "{{ trigger.event.data.item.name }} has been added to the shopping list" + data: + clickAction: "/shopping-list" + url: "/shopping-list" ``` {% endraw %} + From 90448d8570fb1c8bea0a204fd91b3a6c43ec28bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Martin?= Date: Fri, 18 Nov 2022 09:58:33 +0100 Subject: [PATCH 21/39] RESTful Sensor: add a note explaining either `resource` OR `resource_template` is required (#24667) --- source/_integrations/rest.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown index ff29cdb4bf0..d2002050fc3 100644 --- a/source/_integrations/rest.markdown +++ b/source/_integrations/rest.markdown @@ -171,3 +171,9 @@ binary_sensor: required: false type: list {% endconfiguration %} + +
+ +Use either `resource` or `resource_template`. + +
From fcc7a5f353795de098ccb1d72a33f6de25567c1e Mon Sep 17 00:00:00 2001 From: "@RubenKelevra" Date: Fri, 18 Nov 2022 10:03:09 +0100 Subject: [PATCH 22/39] AirVisual: Update deeplink to API-key creation site (#24992) --- source/_integrations/airvisual.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index b392719dbf6..4be019e3aae 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -19,7 +19,7 @@ The `airvisual` sensor platform queries the [AirVisual](https://www.iqair.com) c ## Using the AirVisual Cloud API -AirVisual API keys can be obtained [here](https://www.iqair.com/air-pollution-data-api). Note that the platform was designed using the "Community" package; the "Startup" and "Enterprise" package keys should continue to function, but actual results may vary (or not work at all). +AirVisual API keys can be obtained [here](https://www.iqair.com/dashboard/api). Note that the platform was designed using the "Community" package; the "Startup" and "Enterprise" package keys should continue to function, but actual results may vary (or not work at all). The Community API key is valid for 12 months after which it will expire. You must then go back to the AirVisual website, delete your old key, create a new one following the same steps and update your configuration with the new key. From 1a0d7e250be30a1397d780b1fb534e16ae2786cb Mon Sep 17 00:00:00 2001 From: Marius <33354141+Mariusthvdb@users.noreply.github.com> Date: Fri, 18 Nov 2022 12:38:45 +0100 Subject: [PATCH 23/39] add - in front of subview configuration example (#24981) --- source/dashboards/views.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/dashboards/views.markdown b/source/dashboards/views.markdown index 0b532d08dec..21285be28b5 100644 --- a/source/dashboards/views.markdown +++ b/source/dashboards/views.markdown @@ -203,7 +203,7 @@ views: default: false back_path: required: false - description: Only for subview. Path to navigate when clicking on back button. + description: Only for "Subview". Path to navigate when clicking on back button. type: string {% endconfiguration %} @@ -225,13 +225,13 @@ View configuration: Subview configuration: ```yaml -title: "Energieprijzen" -path: "energieprijzen" -subview: true -back_path: "/ui-data/climate" +- title: "Energieprijzen" + path: "energieprijzen" + subview: true + back_path: "/ui-data/climate" -cards: - - type: entities - entities: - - sensor.today_avg_price + cards: + - type: entities + entities: + - sensor.today_avg_price ``` From 9a2aa37609f3247be270d04178180d05b42dec9b Mon Sep 17 00:00:00 2001 From: rosetown-kelly <79489853+rosetown-kelly@users.noreply.github.com> Date: Fri, 18 Nov 2022 06:33:39 -0700 Subject: [PATCH 24/39] Add an example to detect doorbell button presses (#24740) Co-authored-by: Franck Nijhof --- source/_integrations/amcrest.markdown | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index 3e2e7e4131d..eb4913d7be4 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -424,4 +424,25 @@ amcrest: - ptz_preset ``` +## Example Automation to Detect Button Presses on AD110 and AD410 Doorbells + +Using this trigger in an automation will allow you to detect the press of the doorbell call button and create automations based upon it. + +```yaml +# Example automations.yaml entry +alias: Doorbell Pressed +description: "Trigger when Amcrest Button Press Event Fires" +trigger: + - platform: event + event_type: amcrest + event_data: + event: "CallNoAnswered" + payload: + action: "Start" +action: + - type: flash + entity_id: light.living_room + domain: light +``` + To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. From 099161da60da51e5ed4ccef320c8df4dc770e0bf Mon Sep 17 00:00:00 2001 From: Daniel <49846893+danielbrunt57@users.noreply.github.com> Date: Fri, 18 Nov 2022 08:49:10 -0800 Subject: [PATCH 25/39] Update google_sheets.markdown (#24538) Co-authored-by: Franck Nijhof --- source/_integrations/google_sheets.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_integrations/google_sheets.markdown b/source/_integrations/google_sheets.markdown index 07ec9a03648..2cf07b653ad 100644 --- a/source/_integrations/google_sheets.markdown +++ b/source/_integrations/google_sheets.markdown @@ -83,4 +83,20 @@ You can use the service `google_sheets.append_sheet` to add a row of data to the | `worksheet` | yes | Name of the worksheet. Defaults to the first one in the document. | Sheet1 | `data` | no | Data to be appended to the worksheet. This puts the data on a new row, one value per column. | {"hello": world, "cool": True, "count": 5} +{% raw %} + +```yaml +# Example service call +service: google_sheets.append_sheet +data: + config_entry: 1b4a46c6cba0677bbfb5a8c53e8618b0 + worksheet: "Car Charging" + data: + Date: "{{ now().strftime('%-d-%b-%y') }}" + KWh: "{{ states('input_number.car_charging_kwh')|float(0) }}" + Cost: "{{ states('input_number.car_charging_cost')|float(0) }}" +``` + +{% endraw %} + {% enddetails %} From 590bd8870b83bd986d27dcb1c69505e26b3e72f6 Mon Sep 17 00:00:00 2001 From: davidmankin Date: Sat, 19 Nov 2022 11:31:26 -0700 Subject: [PATCH 26/39] Update homekit_controller.markdown (#24999) --- source/_integrations/homekit_controller.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index dcf62044bde..8dffa6a9af4 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -113,7 +113,7 @@ Clicking on one will drop you in to the automation editor with a trigger pre-fil

-When you have filled in the rest of the form to create your migration it will show up against that device in the device registry. +When you have filled in the rest of the form to create your automation it will show up against that device in the device registry.

From eb8b45283e4df38592918e7b53d0590087f05777 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 21 Nov 2022 01:15:45 +0000 Subject: [PATCH 27/39] 2022.11.4 --- _config.yml | 4 +- .../_posts/2022-11-02-release-202211.markdown | 59 +++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 285aea32596..4d296e33886 100644 --- a/_config.yml +++ b/_config.yml @@ -110,8 +110,8 @@ social: # Home Assistant release details current_major_version: 2022 current_minor_version: 11 -current_patch_version: 3 -date_released: 2022-11-16 +current_patch_version: 4 +date_released: 2022-11-20 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2022-11-02-release-202211.markdown b/source/_posts/2022-11-02-release-202211.markdown index bf99374c895..ffc7f1f2c27 100644 --- a/source/_posts/2022-11-02-release-202211.markdown +++ b/source/_posts/2022-11-02-release-202211.markdown @@ -663,6 +663,65 @@ The following integrations are now available via the Home Assistant UI: [zha docs]: /integrations/zha/ [zwave_js docs]: /integrations/zwave_js/ +## Release 2022.11.4 - November 20 + +- Fix moving average for 0 values ([@daanbeverdam] - [#80476]) ([filter docs]) +- Solve Modbus reload issue ([@janiversen] - [#82253]) ([modbus docs]) +- Add kilo watts unit mapping for nibe_heatpump ([@elupus] - [#82284]) ([nibe_heatpump docs]) +- Bump `regenmaschine` to 2022.11.0 ([@bachya] - [#82337]) ([rainmachine docs]) +- Bump pysma to version 0.7.3 ([@rklomp] - [#82343]) ([sma docs]) +- Bump flux_led to 0.28.34 ([@bdraco] - [#82347]) ([flux_led docs]) +- Fix invalid configuration_url in Netatmo ([@mib1185] - [#82372]) ([netatmo docs]) +- Bump PyViCare to 2.19.0 ([@TheJulianJES] - [#82381]) ([vicare docs]) +- Bump bleak-retry-connector to 2.8.5 ([@bdraco] - [#82387]) ([bluetooth docs]) +- Update xknx to 1.2.1 ([@marvin-w] - [#82404]) ([knx docs]) +- Attempt to fix occasional Flo timeouts ([@dmulcahey] - [#82408]) ([flo docs]) +- Prevent powerwall from switching addresses if its online ([@bdraco] - [#82410]) ([powerwall docs]) + +[#80476]: https://github.com/home-assistant/core/pull/80476 +[#81423]: https://github.com/home-assistant/core/pull/81423 +[#81488]: https://github.com/home-assistant/core/pull/81488 +[#81780]: https://github.com/home-assistant/core/pull/81780 +[#82197]: https://github.com/home-assistant/core/pull/82197 +[#82253]: https://github.com/home-assistant/core/pull/82253 +[#82284]: https://github.com/home-assistant/core/pull/82284 +[#82337]: https://github.com/home-assistant/core/pull/82337 +[#82343]: https://github.com/home-assistant/core/pull/82343 +[#82347]: https://github.com/home-assistant/core/pull/82347 +[#82372]: https://github.com/home-assistant/core/pull/82372 +[#82381]: https://github.com/home-assistant/core/pull/82381 +[#82387]: https://github.com/home-assistant/core/pull/82387 +[#82404]: https://github.com/home-assistant/core/pull/82404 +[#82408]: https://github.com/home-assistant/core/pull/82408 +[#82410]: https://github.com/home-assistant/core/pull/82410 +[3_day_blinds docs]: /integrations/3_day_blinds/ +[@TheJulianJES]: https://github.com/TheJulianJES +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@daanbeverdam]: https://github.com/daanbeverdam +[@dmulcahey]: https://github.com/dmulcahey +[@elupus]: https://github.com/elupus +[@frenck]: https://github.com/frenck +[@janiversen]: https://github.com/janiversen +[@marvin-w]: https://github.com/marvin-w +[@mib1185]: https://github.com/mib1185 +[@rklomp]: https://github.com/rklomp +[abode docs]: /integrations/abode/ +[accuweather docs]: /integrations/accuweather/ +[bluetooth docs]: /integrations/bluetooth/ +[filter docs]: /integrations/filter/ +[flo docs]: /integrations/flo/ +[flux_led docs]: /integrations/flux_led/ +[knx docs]: /integrations/knx/ +[modbus docs]: /integrations/modbus/ +[netatmo docs]: /integrations/netatmo/ +[nibe_heatpump docs]: /integrations/nibe_heatpump/ +[powerwall docs]: /integrations/powerwall/ +[rainmachine docs]: /integrations/rainmachine/ +[sma docs]: /integrations/sma/ +[vicare docs]: /integrations/vicare/ + ## Need help? Join the community! Home Assistant has a great community of users who are all more than willing From 55a3d5156d4dc2f57ab8b52328c1a0284b40b381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Mon, 21 Nov 2022 10:06:27 +0100 Subject: [PATCH 28/39] Add 2022.11.4 to ToC (#25013) --- source/_posts/2022-11-02-release-202211.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_posts/2022-11-02-release-202211.markdown b/source/_posts/2022-11-02-release-202211.markdown index ffc7f1f2c27..b9fb4439e81 100644 --- a/source/_posts/2022-11-02-release-202211.markdown +++ b/source/_posts/2022-11-02-release-202211.markdown @@ -55,6 +55,7 @@ Sunday, November 13, 2022 (11:00 AM PST / 20:00 CET). - [Release 2022.11.1 - November 3](#release-2022111---november-3) - [Release 2022.11.2 - November 8](#release-2022112---november-8) - [Release 2022.11.3 - November 16](#release-2022113---november-16) +- [Release 2022.11.4 - November 20](#release-2022114---november-20) - [Need help? Join the community!](#need-help-join-the-community) - [Breaking Changes](#breaking-changes) - [All changes](#all-changes) From 8421302f0528d40d873b25f90cb11723c4b2d8d3 Mon Sep 17 00:00:00 2001 From: bigwoof Date: Mon, 21 Nov 2022 19:34:38 +1000 Subject: [PATCH 29/39] Update iotawatt.markdown (#25003) --- source/_integrations/iotawatt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/iotawatt.markdown b/source/_integrations/iotawatt.markdown index acca166b707..f77f27ae19b 100644 --- a/source/_integrations/iotawatt.markdown +++ b/source/_integrations/iotawatt.markdown @@ -25,7 +25,7 @@ and create them as sensors in Home Assistant. You can use the accumulated energy sensors directly with the Home Assistant energy dashboard. -If you have an energy production system such as solar panels, following these instructions: +If you have an energy production system such as solar panels, follow these instructions: ### Configure IoTaWatt From 94ae64d780c1f1e74fb7b59fc23f894052d5fabf Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 21 Nov 2022 04:07:04 -0600 Subject: [PATCH 30/39] Update bluetooth adapters with newly received devices (#24996) --- source/_integrations/bluetooth.markdown | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown index db3286937d9..c1bd96ea4f3 100644 --- a/source/_integrations/bluetooth.markdown +++ b/source/_integrations/bluetooth.markdown @@ -87,6 +87,7 @@ If you experience an unreliable Bluetooth connection, installing a short USB ext - HIDEEZ BT0015-01 (CSR8510A10) - IOGEAR GBU521W6 (BCM20702A0) - Kinivo BTD-400 (BCM20702A0) +- LM Technologies LM1010 (BCM20702A0) 📶 - Nuu You BT40 (CSR8510A10) - Panda Wireless PBU40 (CSR8510A10) - Pluggable USB-BT4LE (BCM20702A0) @@ -97,6 +98,7 @@ If you experience an unreliable Bluetooth connection, installing a short USB ext - SoundBot SB342 (BCM20702A0) - StarTech USBBT1EDR4 (CSR8510A10) - StarTech USBBT2EDR4 (BCM20702A0) +- Targus ACB10US1 (BCM20702A0) - Techkey PBT06H (CSR8510A10) - TRENDnet TBW-107UB (CSR8510A10) - UGREEN CM109 (CSR8510A10) @@ -120,9 +122,17 @@ Performance testing used the following hardware: - Advertisements from an Oral-B iO Series 8 - External Adapters only: Home Assistant Blue running Home Assistant Operating System 9.3 with a USB extension cable. -#### Slow startup of Broadcom adapters on the ODROID N2+ platform +#### Broadcom adapters (BCM20702A0) -The BCM20702 based adapters may take an additional 120 seconds to initialize after boot with Home Assistant Operating System 9.3 when using an ODROID N2+; eventually, they come online. +Most of these adapters can hold seven (7) connections at the same time. + +These adapters may take an additional 120 seconds to initialize after boot with Home Assistant Operating System 9.3 when using an ODROID N2+; eventually, they come online. + +#### Cambridge Silicon Radio adapters (CSR8510A10) + +Most of these adapters can hold five (5) connections at the same time. + +These adapters generally offer the fastest connect times. ### Known working adapters @@ -130,6 +140,7 @@ The BCM20702 based adapters may take an additional 120 seconds to initialize aft - Avantree DG45 (RTL8761BU) - COMCAST CF-B05 (RTL8761BU) 📶 - EDUP LOVE EP-B3536 (RTL8761BU) 📶 +- ISEKIE KW-B3519 (RTL8761BU) - Maxuni BT-501 (RTL8761BU) - MPOW BH45A (RTL8761BU) - StarTech USBA-BLUETOOTH-V5-C2 (RTL8761BU) @@ -148,8 +159,10 @@ These adapters do not have a reset pin. If they stop responding, there is curren ### Unsupported adapters +- Alfa AWUS036EACS (RTL8821CU) - Frequent connection failures and drop outs - Belkin F8T003 ver 2. - Fails to setup and add successfully - EDIMAX EW-7611ULB (RTL8723BU) - Frequent connection failures and drop outs +- EDUP EP-AC1661 (RTL8821CU) - Frequent connection failures and drop outs - eppfun AK3040G (ATS2851) - No driver available yet for USB id 10d7:b012 - QUMOX Bluetooth 5.0 (Barrot 8041A02) - No working driver - UGREEEN CM591 (ATS2851) - No driver available yet for USB id 10d7:b012 From 4b5dddaea8076c54eb742f43a688cd4acbb04bbe Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Mon, 21 Nov 2022 11:07:54 +0100 Subject: [PATCH 31/39] Improve readability MQTT setting `discovery_prefix` (#25009) fixes https://github.com/home-assistant/core/issues/82379 --- source/_integrations/mqtt.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index d85f6a56b25..2db306a0df0 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -104,8 +104,8 @@ To change the settings, click on "Configure" in the integration page in the UI, ### Discovery options -MQTT discovery is enabled by default. Discovery can be turned off. The prefix for the discovery topic (default `homeassistant`) can be changed. -See the [MQTT Discovery section](#mqtt-discovery) +MQTT discovery is enabled by default. Discovery can be turned off. The prefix for the discovery topic (default `homeassistant`) can be changed here as well. +See also [MQTT Discovery section](#mqtt-discovery) ### Birth and last will messages From 51830ae6ae08edf54585213d30abbec59c517d49 Mon Sep 17 00:00:00 2001 From: Tim Jacobs Date: Mon, 21 Nov 2022 12:35:03 +0100 Subject: [PATCH 32/39] Small clarification in documentation (#24652) Co-authored-by: Franck Nijhof --- source/_integrations/neato.markdown | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index 461fbc63683..399a2e89998 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -36,12 +36,15 @@ Visit [the Neato Developer Network](https://developers.neatorobotics.com/applica

-You will have to enter a name, a description and your redirect URL. +You will have to enter a name, a description, and the redirect URI: -Use `https://my.home-assistant.io/redirect/oauth` as the redirect URL. +- **Name**: can be anything you like, for example, "Home Assistant". +- **Description**: can be anything you like, for example, "Home Assistant integration for Neato" +- **Redirect URI**: `https://my.home-assistant.io/redirect/oauth` +- **Terms Of Service URL**: leave blank +- **Privacy Policy URL**: leave blank You have to select all three scopes (`public_profile`, `control_robots` and `maps`). -
{% details "I have manually disabled My Home Assistant" %} From 97f17db811195d619f60f8d48776b4b538effb57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Nov 2022 07:54:33 +0100 Subject: [PATCH 33/39] Bump actions/add-to-project from 0.3.0 to 0.4.0 (#25021) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/add_prs_to_project.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/add_prs_to_project.yml b/.github/workflows/add_prs_to_project.yml index 37bba0c1545..39df8a67801 100644 --- a/.github/workflows/add_prs_to_project.yml +++ b/.github/workflows/add_prs_to_project.yml @@ -18,7 +18,7 @@ jobs: app_id: ${{ secrets.PROJECTS_APP_ID }} private_key: ${{ secrets.PROJECTS_APP_PEM }} - name: Add to Project - uses: actions/add-to-project@v0.3.0 + uses: actions/add-to-project@v0.4.0 with: project-url: https://github.com/orgs/home-assistant/projects/10 github-token: ${{ steps.token.outputs.token }} From f5b5c150f1456d7200282b8b78d7b85cc4c997fe Mon Sep 17 00:00:00 2001 From: Rob Coleman Date: Tue, 22 Nov 2022 01:07:59 -0800 Subject: [PATCH 34/39] Correct the state attribute example (#25020) --- source/_docs/scripts/conditions.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index 2c20b2a2ad9..a51e0d891c2 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -306,8 +306,8 @@ The condition will pass if the attribute matches the given state. condition: condition: state entity_id: climate.living_room_thermostat - attribute: hvac_modes - state: "heat" + attribute: fan_mode + state: "auto" ``` Finally, the `state` option accepts helper entities (also known as `input_*` From c1422c5734e8d3aea364e521378d199a354fa3b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Tue, 22 Nov 2022 10:11:22 +0100 Subject: [PATCH 35/39] Add previous month example to history stats (#24997) --- source/_integrations/history_stats.markdown | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index daf1f0ddd30..83a8cdf604d 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -138,7 +138,7 @@ Here are some examples of periods you could work with, and what to write in your {% raw %} ```yaml - start: "{{ now().replace(hour=0, minute=0, second=0) }}" + start: "{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}" end: "{{ now() }}" ``` @@ -149,7 +149,7 @@ Here are some examples of periods you could work with, and what to write in your {% raw %} ```yaml - end: "{{ now().replace(hour=0, minute=0, second=0) }}" + end: "{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}" duration: hours: 24 ``` @@ -161,7 +161,7 @@ Here are some examples of periods you could work with, and what to write in your {% raw %} ```yaml - start: "{{ now().replace(hour=6, minute=0, second=0) }}" + start: "{{ now().replace(hour=6, minute=0, second=0, microsecond=0) }}" duration: hours: 5 ``` @@ -175,7 +175,7 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd {% raw %} ```yaml - start: "{{ as_timestamp( now().replace(hour=0, minute=0, second=0) ) - now().weekday() * 86400 }}" + start: "{{ as_timestamp( now().replace(hour=0, minute=0, second=0, microsecond=0) ) - now().weekday() * 86400 }}" end: "{{ now() }}" ``` @@ -190,6 +190,15 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd end: "{{ now() }}" ``` +**Previous month**: starts the first day of the previous month at 00:00, ends the first day of the current month. + +{% raw %} + +```yaml + start: "{{ now().replace(day=1, month=now().month-1, hour=0, minute=0, second=0, microsecond=0) }}" + end: "{{ now().replace(day=1, hour=0, minute=0, second=0, microsecond=0) }}" +``` + {% endraw %} **Next 4 pm**: 24 hours, from the last 4 pm till the next 4 pm. If it hasn't been 4 pm today, that would be 4 pm yesterday until 4 pm today. If it is already past 4 pm today, it will be 4 pm today until 4 pm tomorrow. When changing the start time, then add or subtract to the 8-hour buffer to match the next midnight. @@ -197,7 +206,7 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd {% raw %} ```yaml - end: "{{ (now().replace(minute=0,second=0) + timedelta(hours=8)).replace(hour=16) }}" + end: "{{ (now().replace(minute=0, second=0, microsecond=0) + timedelta(hours=8)).replace(hour=16) }}" duration: hours: 24 ``` @@ -209,7 +218,7 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd {% raw %} ```yaml - end: "{{ now().replace(hour=0, minute=0, second=0) }}" + end: "{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}" duration: days: 30 ``` From a4bd4a555f9806661a7fa339e9e3bfbbfff52a1a Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 22 Nov 2022 10:15:00 +0100 Subject: [PATCH 36/39] Add YLCT03YL as working Yeelight model (#24974) --- source/_integrations/yeelight.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index 6760a85b1ca..b4f87e2c4f2 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -22,7 +22,7 @@ ha_zeroconf: true ha_integration_type: integration --- -The `yeelight` integration allows you to control your Yeelight Wi-Fi bulbs with Home Assistant. +The Yeelight integration allows you to control your Yeelight Wi-Fi bulbs with Home Assistant. There is support for the following device types within Home Assistant: @@ -193,6 +193,7 @@ This integration is tested to work with the following models. If you have a diff | `RGBW` | MJDP02YL | Mi LED smart Lamp - white and color Wi-Fi Version| | `lamp` | MJTD02YL | Xiaomi Mijia Desk Lamp Pro | | `lamp1` | MJTD01YL | Xiaomi Mijia Smart LED Desk Lamp (autodiscovery isn't possible because the device doesn't support mDNS due to the small amount of RAM) | +| `lamp9` | YLCT03YL | Yeelight Staria Bedside Lamp Pro | | `lamp15` | YLTD003 | Yeelight LED Screen Light Bar Pro | | `ceiling1` | YLXD01YL | Yeelight Ceiling Light | | `ceiling2` | YLXD03YL | Yeelight Ceiling Light - Youth Version | From 80f2e66e8936d1d7f9f2b7931f29ca6ab34bf0eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Tue, 22 Nov 2022 11:15:42 +0100 Subject: [PATCH 37/39] Fix history stats (missing endraw) (#25023) --- source/_integrations/history_stats.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index 83a8cdf604d..ed398a281c5 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -190,6 +190,8 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd end: "{{ now() }}" ``` +{% endraw %} + **Previous month**: starts the first day of the previous month at 00:00, ends the first day of the current month. {% raw %} From 674ef79531d3811677a50c85ebb6c3bff1ae7ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Tue, 22 Nov 2022 11:29:52 +0100 Subject: [PATCH 38/39] Lazy load integration images (#25024) --- source/integrations/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/integrations/index.html b/source/integrations/index.html index 72946cbd431..1e319bbb292 100644 --- a/source/integrations/index.html +++ b/source/integrations/index.html @@ -161,9 +161,9 @@ allComponents.pop(); // remove placeholder element at the end components: [], image: function () { if (this.logo === '') { - return ''; + return ''; } else { - return ''; + return ''; } } }; From 4b073063024414ea86fbe14e1c1579fcf2052c6a Mon Sep 17 00:00:00 2001 From: Patrick Walker Date: Wed, 23 Nov 2022 17:44:12 -0500 Subject: [PATCH 39/39] Update local fulfillment debugging link (#25033) --- source/_integrations/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 449e53ef786..5e8eeda847b 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -147,7 +147,7 @@ For secure remote access, use a reverse proxy such as the {% my supervisor_addon 8. Restart Home Assistant Core. 9. With a Google Assistant device, try saying "OK Google, sync my devices." This can be helpful to avoid issues, especially if you are enabling local fulfillment sometime after adding cloud Google Assistant support. -You can debug the setup by following [these instructions](https://developers.google.com/assistant/smarthome/develop/local#debugging_from_chrome). +You can debug the setup by following [these instructions](https://developers.home.google.com/local-home/test#debugging_from_chrome). ### YAML Configuration