From ceb96a2cb439007dc0afd17cce7e43fd21fe5a73 Mon Sep 17 00:00:00 2001
From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>
Date: Thu, 14 Feb 2019 03:26:34 -0600
Subject: [PATCH 01/64] Add SmartThings Lock platform docs (#8493)
---
source/_components/smartthings.markdown | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown
index 33ae99bb977..2df31934330 100644
--- a/source/_components/smartthings.markdown
+++ b/source/_components/smartthings.markdown
@@ -15,6 +15,7 @@ ha_category:
- Climate
- Fan
- Light
+ - Lock
- Sensor
- Switch
ha_release: "0.87"
@@ -28,6 +29,8 @@ redirect_from:
- /components/fan.smartthings/
- /components/smartthings.light/
- /components/light.smartthings/
+ - /components/smartthings.lock/
+ - /components/lock.smartthings/
- /components/smartthings.sensor/
- /components/sensor.smartthings/
- /components/smartthings.switch/
@@ -113,6 +116,7 @@ SmartThings represents devices as a set of [capabilities](https://smartthings.de
- [Climate](#climate)
- [Fan](#fan)
- [Light](#light)
+- [Lock](#lock)
- [Sensor](#sensor)
- [Switch](#switch)
@@ -166,6 +170,10 @@ The SmartThings Light platform lets you control devices that have light-related
| [`colorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Control) | `color`
| [`colorTemperature`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Temperature) | `color_temp`
+### {% linkable_title Lock %}
+
+The SmartThings Lock platform lets you control devices that have the [`lock`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Lock) capability, showing current lock status and supporting lock and unlock commands.
+
### {% linkable_title Sensor %}
The SmartThings Sensor platform lets your view devices that have sensor-related capabilities. A Sensor entity is created for each attribute (below) supported by the device.
From cf2817c78299ccd429434f960733fe9824e394c9 Mon Sep 17 00:00:00 2001
From: Victor Cerutti
+ The 1 hour rain forecast is supported for more than 75 % of metropolitan France.
- The 1 hour rain forecast is supported for more than 75% of metropolitan France.
+ You can check if your city is covered on the [Météo-France website](http://www.meteofrance.com/previsions-meteo-france/previsions-pluie).
+
- You can check if your city is covered on the [Météo-France website](http://www.meteofrance.com/previsions-meteo-france/previsions-pluie)
-
+To get your Danfoss Air sensors working with Home Assistant, follow the instructions for the general [Danfoss Air component](/components/danfoss_air/). +
+ + +The following switches. +* **Boost:** Switch to manually activate boost. From e9344e150f9591e4732792be3ee216cff6826eb2 Mon Sep 17 00:00:00 2001 From: Phil ColeqE9 z7VAZt4k0CgsPkv!==mSm)wHc#3KB1_h@*I*X+l9Qu8!d)kAk5eP9}d%-scw*Fa$w6 zolKcrtJ+*-!jbtFDtEvfNQwuQM**$sRN*4=DtxM?@h-K%NVSMgE4etRspHpQnL0hq zm0y~?U+Agn2L;02EtlM(XP)&v^CB|0T|3&!D*2AbilT43071Y>HZ}6V(?AYXG(9XbGawa$^q93Okv}eDV=}fmFF}n#;DB_?X9Jk z!!k?ylErI{25T$PVN@SzDavR~x;vWwOo#9InkV+klwO^Gz<;a%La0QxaWR`A_4+V- zHs-cvz~9=xtw}OO#O i}-K(bM2L%2aGCn1GlP}4iN7D01-j% zzSpR;silpEE&!3Fe9DEnZA&+OB&Y=Q)|rJ;j`JqPd$Cx8=lf`EYM$-2wzhVb%Z-W3 zIw(1q?Hi(0cvoPE7XvY6dI>6XqB?myIVZ9GfK*b%s`#ij$DTB&CNmEznX>5^6bzp# zIWY-IBuJP_DitXxlT*8hPyE!W`<*%_le`&+Crqy1)f8~))Com=en_{raQ{zIX6O&o zc@&8_dSn^CX+wlP+R{dEqnU#`>HAcMKb);0R3_bp?c^uL(A3DAi!izM#-zT^WPDox zA4)%c>bj_myE{ODj6ndIyia9OtvFhlG}UM&__-VaLdUe}v%RhvvpVzng7wUVM3?bG z<>nYFNoz8BIDycA=n(ep+v`xMk@|Zgy}xemy!mKsYO)8i{h$r^QZapDm?BI}jAQGT z%@9J^!kY+~Idc}eXLsuwo`9jDA-wX+%jsIde1 zAC*eQDfZ#?Y{=F%smCX$uVdch+ DN{A@{C*7;l42d|sfRZUC8r@iBC>0Bu^q4Vh%0>{S>?sc@jE;;NBBOI; zWs2@Xv51_Xn}lMisZukgP??xO7)5Tlh3ESy6-!3+nlcWjQgr?#rBhIbAszQy;zFM> z2F^Xqojb4F>*<->>F0a|k(v_yfK*T{b0Uzkr^=*IPQdf)p1~(R{;^ajOw|MCq*=LY z6+ZvPFQI47Tyt^BIgB(_os@zkVEeZ1xb)B7YP-5IIQ7}jeID<4`#Us25I}ElFD||0 zQj=*>DylvF@WUuKHcsj Xh*eH!&zsZfq{VmAlr*F&!5ZXaK`Cp;4lCBud!g^qRIUamu_QD z(a(SG)42QYyHk&K?s@0p|9 E1>B zV&guE#UJ8OP8nd=dAmZ2WIn|Ffs_(=|NL%z^rIia=;*kunaC|_;zBzG-envzPA431 z34_pn@NTeAH!$>z85kVICqDTJ3=Iw^DJpdFI)*XxbbA3sc=3f7aKsTyaru>RgOtg2 zmCA7rO2gV=7@~h*07_~en=Xu9RDw{e)^P7VzrfzTdvM)%Z$wK=Yub@*J(z$dm5GXW z1WF+9YNZ0- %|Brj)dABr;Ax?$l6wqm0Td-s+uGG7ulS1E3 z=AGg(J}nf0d+xgz-?;W0`k@blj3lwd>7Q7mB@0y} ( zG5V=6Cz@QrPSyNGOofl JmeyWGzK}8NYh<)tDF`v!B1+ zVIO} WprmtNseR1)V%-cP+&$Jf64RR@}-On2RU2rAQ8 zagOH{i6VZDaik*0P@y?P*I#!Xq*N(z!orX7L8F{{O;Ng_%_KG1QCmIXD4h>Ic1~D+ z(?q3;>%RS+lyhbqjRciyeD?MA;koCYOPtR-zO;{@JYUj;v9FtybI?! 8xmA<;KrzEs_4%gRM`_n86%NOrg&d*PeeHf2xlG`XKkME`>k$e&*C8% zr4cHr6j%n9Q;<-K*_t7hGdmrq1f6mkfy}{VP2Mp&I*OZaydMAX@lSz!+^xTCIA@I6 z6N6G`t3j`_X@z@X;_$A_*r!3hcJ1DcZQHh`VD|XLTeD^j=FOWsiGSsyKa}keq=6rF zbWBTO`~!Xc`1#N8whu%O@VsQnVk}#>O!u6oYUC>?uDGa?<0K8`hJ@^wW#Brm?}g{r z;pLY%nFAqlHQ)C!Z{B=VDihedcdtDRVo>DPn{URNH79DCe8S;PHEUDRKilJ?bavnt z?m`G$d(FS#nrp5#Oz|nWSI)shj`I<7Bd>#qsw4u%gIuYVf2qi-#SQfcgaY?G_ x6TMo28W|Du zlHw#i@Dk_$!g^gYR1+8Nu#VzblMB^3C`&G%#|Qu7ugtimN)ycp*tT^Ge*B}`tOFu7 zgyWX3NEc#AJFlgwPob)l90EF}NKPE27`#9H;lJad2Oq?`b?dNw`*s{U)Q6Gb5mYJ_ zL{VfX6tlAoQp$AbHX_|ZI shllLkz7X+;=6rZU+94zve@UG~ z3nA^_2x|z^K8{if_ug}l{p={_J1K>?z3nPY@9eVI=%kZRwv-`Dtta4y8*aeC1N)(r zOc5rf#g>(s+~ZSF{`FyX%BiQ~ob%32fj9~p3>q99!gb&N7V;iXABaw0&V_DWHn?u~ zIreC3KWR`a3obZ-g;EB+GO3j?b0 PBmOD@w%%l*^51YHmiUSVEy#1ou5aCR{A(rh{&yRw)b)4&cTcuA7tw5)|He z{sm43r!cE~Hs1W^x8lb?z9UKN%(Z;z!C&E$%igBBdsFIlC4*)%-FP=X;o(Cc{ww_I zfnOpBf`ry@{_wju-iUMF_(mML>R3efIVeLFN-U358d#Cp$e#f$k|?4Zrpb(mwAlrj znJ15#yj2>!no)8Rv-rVDfe}HGCV40+^#>s}Ns+09rV=-H6ehE2;}hVL%ie~2esMQ; z?AY!UyvEptz_nk$8eh5kUr;O*ZDFTF-eK5tu_LntcC{fbriGBoFifGfylfB0=_@Eq z;_KEbRqWWg6FYY7NYW$635WaTzOUvR;N7lZkQDaL (rs8Ki}zaRlMd&|frW`wqKfGB24-~4#Dy1L zXuGtwBp@B7lJ0Ptv7en9i5<7Mw->kG@&jCP`6c-NP2WQhhN+sTsks$zyXtKT`l6h{ zttrTTq|zu*e2bzG+qZ1P&wu(;eEO3g$Gfh&4EO)XJto(N!#~o|UMhuJwTkcEc!LE- z+?4W)E3N`J;|y^xNhyUDN3Fu_*|QVG$h^${zCJwl)UWjcpwelLl1Y!rUQ~)xp>(h9 z{0rZVrOTG5JM-oP+^}gAessre$a&m(Pe~yjXBKe-B u zG&d5--^3S)DW$cngosBFmCeble2WvBgzG3$*C%nIDr8c$yL@0bkBmd!@h6;&3opLN zp(iB$4Fci+e(8(YyLV4&NG3U?RMOF=1bMT43reS1NsdOAwHZTxfAhB=!HN|tl48+y zS_i{VN(ORrZKPAF7>< zqghznX__89Z~*`KKR<#EFRq2>G)_fquu@^&y0zH4`IV&pFy9NMB91xkg!JKO=1ubX z0^afN_a?}4%tj!>H?F-FN`~n%R%@6>A1v;)X9J1(OdA>-@wXrOm`#x=!|wgU7ydW) z?AmT4sAUN_9eZ*z6*)yJrE4?SNt7wf%^bUke{cR)YG;Wbm ~HDF|P6yLky+qxi55zmrb)rByX zQ^-LfHLjW%ld{EF{Q5g*cH`UMxd9*jhrh>?#Y+yOY7h%PsN}T}(lnGbZ4(5-O*h^E zMkbt_52>YX8vglf*WeSM{1lFU-RqL+N>g9C4MZ2JO!hn`$B)ZCR!ZVuzi};mPUg9i zd|E^iesuc}E!ol?{CeN}KZvH*)Ls36T*>Va M?SjR^5POcLCav@MPfv5Zq>jbE7E zH0HiY3p+%SFtS9#*mi6iu+3aA3L}JJ1mYe5EvX|(LJ~pPj-Iq5wB#6uzKqNw9g1WM zvQw_K4Us{3B*^gDXUyusM?U)Z`21%-lbpa#aewEJ?!f71z8-5%K5YsrwBrDnJhGXl z-N!I*s+C~Vy5_cay!$ |588+v>9q3_Tk3=Iuo&z?OP8XCm-*cf*2*@J@z4xq2E zAGK;#@9vHZM8_G)A!I%M^wT(W=pY(fI#Sf`Qn?v#x#UWmcfrLN92mgCgS{9Z8$(~; zA?)9`50%OU`uh8DV1F+T9z1~2(NRQ(XOxUGW0K6!lTSX0g9rAb*w|s10s1+&ZQqJt z-G9HGEwPjm06`ewf&1=FVDm{MmI~9ScVd6 !8UHZ>)!9=}aJW&X|dh{QW2JnNR$KL)%Hx zu}^>c)A-Syt57JnCo~A@gMa#oq@kh t-;;gSXIsjaX1X=j{;6HYwIi8e{n+SlKY8?O5f z@}5Re(-V`4GJhx}qDUaLx>x4kB0?zi_bAdOMHm@-b(|?hTGZ5(5k|nMl&-Psnj%KF zq>%PQ4b6ucf4472NFy~V%s^92BS~i0 NU_xMT(1|L1?69!GVkBiCQ| zEj;n~qmyK1Vzy_hz|0PIsf5R*Y_96g0HlAGsV=!r6=EdBij 0}kM<1M~u~f=9Lu{MIIl{<(53Ri>(L*2j`npFV`7D%_AVT1UQ5XpkX?_EQ zy%0QZ6mruKVLFYHQbBU9XfC+|V+ukUF*(T-+PX^U0CA5YG%p}w_v*B0yb|E@E3U$i zesl*0`UjHSI!=$I!gb%eHYJf0=h2h+Hnx&Wn4R{-Gli?kS}`&_gr}eSwN1~aoa!;R zq{%mV0DRBxovE1-I9x04aR{MbUr?`O_pTiVU2&ytl!Jy%AsClYbm-l`$B-_QS=3l3 zxS^qpPzW#rCMG8E{Tr`OMw?aA7b42aH RFROUJ^T(T5zfA{-v(+%HorBrMx_T?{s(RS$5b%=JjC=xbu+S)^E zM-ft(^&C3ol9^1#RXb5qArhJ`;YDFMC?e4X7TM4i7qiUL1{5UMPQ#c!AtYB2l4+$y z$sxD|Ckdsil1WlM1TxZ(BCU&M*qDVv6F&W^Pvfuu>aUPB5d!JaO_lCLkg^+}3^ZqI z45#^)HF*)|zC_r!Z$CcvKmTqj8I(kU#YxZ|3B07>b(B|P!%|LTt)ZdO5C|3a?AeX? zzUvB0p|>cMGt+NLe@Misv&v`*O - z5nPB77DdsZQaW7{Mif|wC^uhoLsWz)iV&Flqrm(w&}di?M2^US!wWZx-|^$bDO#K- zPSgUdKJiqXea<;H+}rsKXTmV8Jm3`n4)kncQA=t}in^o`sx02EGLurN?nF$LC&y?= zrGiYl!%y}UKL7kTp|QCYQ5?SG29!$BCzp#BODHMIPQt}SxOqR6C5z}MKjVxu(A?UF zNC?#Gb^P>4x7k!rIa*_vU3MAfFJ20-)CRxQ3cu6_zo89&xed97cI3+K@Eh9A&uz$; z+fZum#A#=qGf53oL1Ev%eOUkeT62(@`qe1n!%?h^oj^#XQ|-8kXPS1A6liR2#rr?> zx043=mDBl8NATEzC4x|D`wC-Q)b<)i0>acEsrpX}?HEEYev(2Mo>p8NMs*eh!2m&f zpEcSjvW^f&5yCLEPa1{s?_y(*5QO@xZvLHO;X36&{9^UvBzbvU_z#VR_~3{BLhr}O z3<42L2B0!(W~LrcmNMfuap6)(KsL1Mi=i@3k;=SNYACLN15`$}&>3cmksi|~tT(?CcGiNh-#a?Wf+NJwYDhBG?rD)%MnOk!lI z5qnCqb8-sw NiGd^oCkf&VOt56l7uOA&u9;o9^2#eAm4xT{;AU+?Yil!tAWT*p#QQyr zFg9aA|L_FPe$$)LIb#N1-n3Cm;;6J-O#Hb^06jfDrXbT4lkS;axcX~fvyn_MfFbyv zhxYak4334?XgWID@!t2nXVPkbtaAF{Zn2>-&QK~fV8)Ct%$vUeJ#*)w9x?O}k0* W|gAR=L0xTHfvLzy;X7C!r>uVdTB=P*7xj4%q5 z>lUkgn(YGf7c9_-Xc*a4J2gUUi*RWfBTC3gs~0rUQE#jwC=3k`?xmjj3;y=cKkzqS z-Fs*hO)af K(6w18AmPl|7#O*&sRWPHBw=dh%(0}jpeCsf8pRFLpNS9> z6V(8fT3|L<={MY5E}~q_+xM *!A^pZ7kSpM8s^-%!pyM zQbV;K!RLggav{aTiUEni(TZ7oGu57v^z|qgd=&D&MVOLnmmDrcgubCMjE&bUgI9k~ z&?%LvQ?tS(P>I7-Dix^OFz&zar=Ru)2L}#HDG=0ahK9}U3nVC`=FT9EMz1gi9XkkT z3=~Ow9~Xq3d;6`XZ@jWO9tlk?$cdNZnAOh22%H!qMhHWJk@2dg;2TFG6J@l6XyI%E zz@T^c!8k!R2*F$-21jwlU6Bw8fqIZu22oR}w&{yVw(FiWKNA+I C;2Zik($sEGL+z3EP- z7VKCFA3gGD8S0S9itrf7(Zf>7avy1&s$Q=m58%LoeTTeyt+qF)*HEw55QP!A!S5L} zySAo0BtrlIAOJ~3K~$Ay!!lx!l9_affpG~*+Hr_8yGSQu%o@LrLWwiPQAY0@aW_XX z8&RU{b}3V5B#siVU2|72FuUqt@(Kp$-!1|}$Sl{HBB64OHoeP2r5q)m=a< Gq{eTJ<1V*OZPJD=mjKn%`KfMBr^&=It`XWpjxTG%SjCM_aE>8 z+NKw@hmayPOCP1#W-1}2Hh9UTQF%9O*p$(EXAC5@Q6~ `@<~JQCXE>N{dcU zu}Mlzk_C0pM0e4S>ljEDvRbDwL^mlDnW!Xk%VZ|qiB51nFE~yogg|9{9QiUw6h(VI zD7C* %jRsBR65o@>2r&MMY zf&;qS>m(D0Fik<_K>YU5k WM727BmQoo2wtHc{rpCv| zHa9giA6u>0kuMa@Zfuo6^?DQ!ipWljQM_V+Nf4OByOKuqn82j25aL{z5woYcuzL;N zh~h*OO72SxojG|m(oT>Oj!trFX9F#RjXpNrvc^Hlk_5`uAQ@VSYwQ_08Kp95KqgAK z>Ve2QUe+;GW<|hnh$WPv;UMKGl#)@(Mv~P3qtqU=Ns9exxhvP$GZ7;r2Ct@8 K5xzQ#eBG9MVbI;0Vdp>s2Tz5Crv+uvQ!N0ATy}tuG$C z`s8ExZ`%!zbL0vIaPB#aIuiqBaY$xlieu-*X3l0=Eqka}@4`)ikV%P5p>2L QV9|SsYl{6n{bhc;7zfNIi)l{mEsCqX;#;9FnJ+J zb{h&Ih4H8SgEISvK&h$6sm6XM!?jK`F|#*>GFpf601}z~ElxWKE}oZ&=Q-1&a9F^E z-z2%2Sr0+>u(dTGGuM;H2M9T-se!B&O_s>D2M|v?Mk+ls3p|YcsI-%X5rUwO!M;N% zmkJmk8`}T?9soS|+%u0HxBA5Q95~R6(a}*9iUqAIXVyD&v(}k=9z5om)of f!RHW$@=Hyi*x5^rk955`?WK27Q@NVQHmvd3{$x^kU^@Fw9Mw`EWLe~ zC~Y`!H}Yn*=#kx?npqZ^-H!*S08h(?Vp8){{l>EQaO-q2Wjd8!W{Szh_M{D6IP7NL z-?rov84$sZ4ygq=&cT7HQcfvTwVPDV;L;?qh1j4e8JSfA%2@#|<8cBhAw^`GgOTa* zM}|VBo8BS{Z8JO!>Zn$0n3x#DF)LT#;b$Isz&gm-*yugO!vmG>8SSMFFK-6-eB^RD z6p95D^E#Tq!h=q&;jCzj7kz4@*UrLuyd#|(jUjHFN;{e7>HGAWY3+!f$IZ&=*b&Va zGmjJZT`YVY?{7~R{73--CfeDZ7jX)g-l>l43Tvdd=&C7-WBi7G#pDG_%Hdq7-*(JS z*$Y87{lgRq|6vw-y8WGOx|m*unMK&rX^hOC+)nK!ReGd3o~@Aa@RFh2$Q0dQcf6%D zXA~L!lyJKIB8u#H;ZT&4@eGk}3@SaU3neUx63&bgff HG)@H`*+d;z( OkofZW78xsV|!@I_MZu(P^qaLK^>ci{2?uT{=u$n6&W{nYC^%{asnwjQeku5&O0X zk<(05DlJa!riD b+r8<1F=e>oI{2I%FGl=3C;;Y zy$+x2Lof*Idb$s~`!19~6zNC<6=(*zj35NSNB~{|KF=YS*DMdt00|Bt0H++J(li_0 zx(L8IN3l>wV^bp-ARc+-SD)VS;`3ifeSG ^iHtrDbVDLwOpA zqgtt8cz6UuBLk?1H9&fhB=mAGp{eLCt?f8=^%{Wrh(rX&^bkxjpGUr-8HKzD;vOa{ zHSF8H69b11qPwRD-80(o#FI~>uYVXV&25-HZ$6rungPb_AdApN6DBG(3=SN`_|P!I zunHAP2o(Z~gAgXFir`?eh8GkVJP;x?u_yuZ?MwuNfI`9?0C5l^NJuc^7UrdthA)F6 z0Z7lx(Ml*LoyCwY;$w1R7U|lDaZ@Wv5c4#j$>`h~HD9y8(X(VqR}(BAFV#r822P+P z2wsfaTJ2$X7K6cEpvTODA`iqQm;@w*UAH46VT_o8$dEe8gMyxm7fP9}$HLSE9wb62 z32+WXkpkdZT`=x@@Vp{QO-*QRn+D4J@Zcc`BQPeQBoGBvOpFX7tX0w4ISZFwcqZoe z%)sc_1g`n^P1v?|BZ44=6ahE@?w0^n0b~wB28d(;5fM}rB9aQ8S3*9YM=s~X QL=<9dvZ4rAe> zrI&m;^2Y(80hQ8#OMH`FocXEkd#my00g*_AYKAz3e59BN;?Mg08_+3 z38`x*MNmFLMG_1Qinu JJpJLbc*Adex)MOdK`H>F zg5E yT;+nN!rnI#aAlbfZ5jEpPj4|kCY77iYJF^O%ikWNu0C-R`(EKPF zLBTTshMCn-LhrU?br5_=6@i4O1v*&V^D(F-2RH?g@BrySkN`6oLA*8q@E|3JiXucR zfD#cxK~O@E4U-HFOM=5IG^44p73KCe6iZr3r8YhUQgu{DharVP*R1(iaKsUK`^BfD zxv>P!IKKR^w_@$nk6?Uk9QB}rC;~tpIO-rU_&ElTH~ Y;W(rhj;GW{!Fzpu>*wRuvVW`40=;JNKmOL0E2^lhX$YO zJG2(SH~oA*@8|N Q=^c=Qq-higI>0n*~!^49Z zAMHoIGKL_iBdS*bscQ}}fH4k_0I&d@c>rTzOgjh|fibQ-|5AZ5Pn)H=pimr&$9a1d zh(ZX-5UCn~JU9qSX>Jt(;F3VTo}A<)5JjGDj4B0?ut*DWz*i9j>QL|v=`ROK0#G?{ z89=c}OJFcSDgu`ZfDgv&Q1FZj0t4d_q$(tASkwV%ei9?5)np_C;{rm((ufRDp_#4r z!I%OBK#&kt=Zk|;1V$W6F-S-VCgDkLQdixFf(if?ffR>C0D=!8JxEc7Qa%&{Jw_`c zNI_=&paLnF5xAC6lEBy)MvD8 #5$}{TrevIuzDwwf_WuKDC2PbqnkDdRVXT-Mnez-p!jf-VXq|VsU17PtVS! zuRFyb9-BZd6t?L?hLI|iUW3d?7u)$_38m%^j1C^e%UgD0+1weZR%$qA`FyN<=5cTq zp{;#7hDS!QY5iIh%T1_^k70Cl5Wz$hk%)})h5?f~2T2Y_fez`!^~HnK=@MspWSD#~ z4`7M`v0*C17vKyG1Sy4HHzy1YnxsCdr2shBNE!)%`FfYUm1X6+-vb3u03shy%%pTa zBt`M8rl}>kNvk4A$-p_FgtB9=#67*>SZY?aU3JDx1S8+%{vjY42*RX>CJIUkFlN5T z2LXdn5=0>&xvA^|Fc1V0z&M!HPOO*$H)){WX6%C_GH`1Er5J<}yirU`(hDg8rXU4} zG7Cv%6zM6?s18XcEhi70A40y6M@#E0G`F^*+|&W65K$l@@(S~2PlsX*4S64rKD{2p zg9lI#Lqt-)58?nLuBTavgZTw;<|D@lK3Cwrk0X~Kg`t7{!{7hGjjMucbrk;}ZytV! zTTrd;f9lC69zFW_Q_mzK$VdSc*`XL1fglh;neMso gX~8n`9S|cAQl74XP&DWrHyT>{{lraLx0woq z0w${mltlwmFgrtfELLTwFAeI+I0}UVa)lx`ZrK74(=n~9jQI-|VE*jssD}!KIv#uC zS&R-3AP52oL4b@vJO__6Fpne0d~lD!V>xgp!F?YMjb+T8HwQO8aMxYGi*x+W4gvtb ze&Vq^F1_-=nYm&M0wMJWFG+K`NDEtshSvqf;rR;1ViCDw0sHrC!*eff!KueC$L8(3 z@rF}R#vOOwi3oL6C&n-_J^`Znc>3u_zga34e?mkh5G#5fCr?Aq4aBJEnVt-Qf|9Dy z@V-bFw{gdwQ5MA#LQGFIOp~55xt(T5gu!lqG6o}sY$c+c0&@(>2RF-v5~E;gpm+*} zLzUU3p89{O6%H~Z?2zf(sKb&{9DQT593^EBGi}VA^FA|bV-6OT47y5-Tq)1<`lXaI zOy(?<`I4OTfp}~+j3P)WN2Cy8JqVN(VoWI+L{XGqw*1K3!!XK6L4aZ@kEYgkES}$u za=8gP-^03%Td-rxW=vE9gh7NzMPQ19@d!$JV8|J!h184=&jV+K&bBTDwQ)TC^sjIK zUG4jKc92SC;*Ry}p848|ufHHSQ4gUcv+aIUerkDsNGQ^M@?5?F#d14F1_trq!%t%M z$|Jyt 0kN!natxCLh`)_e;Y47;>teHLe zM<0I_tsT?R(b0vD_GTDpjz#F`l(<4LI!pCj6um**@J0#6Unj`FbQIM zNU7Y|f_y_0w!QKqo_u~2dS-W`9)@`RX(xcVk3zYO#-=jXZ`gnZ3l^>PeE*`?%<8|# zEmtgdtXXsN-wg~7B3EcY`?Tq3o!*H>b7x~(M+fpg$Fu8S!TJ~1VSKEj$Cjgb{JV-! z1PEmS$U3A70AW&lDNt@`K}%Bu9)IkSTY_pe_%C-509d>B>FaiFdl`j%-l0z$oh?YS zNX0abJdOY78ye8u+KC`g_{BXBAc!Q!Dglmr-H|AiTTm*L(A?IFv1%RT;}x8A;;CQA z6^q_$=Jlt4o8CF&6Wu*?+c$3BhUS(Q%$PA3(`L-VQA>JI4J9}cZol&$^z|M@5QYdv z9bptA3 _skjSJGf7+TetScSL3z5Dh?v0y#M*NPwmZf z31UhYt!4sG8bNH%7&s9~aWLOUF`q|sTPvDc+Oc`VOL+M4wV2=2g|YDp&OPfC5arNN zETFNWglE>S#k~0omzK+o?|IF<{=}n4skr>46Hocz&Ye4uFL-F5)`_-hGq7UOTuf_k zM=|H&v8UJJrRSbRJq!?qRmd=e3?xWSK#D3v5Ne)PC?Ql8fvQ1B0gnXc&FjJQ&prF7 zQgZztjf2!HmGF^AANuY{{~_c(?yypgh#b=eJ2(Sz2JSKVIS-AEjcDtfiCi& zBV#pGf)J~YT7jl%)8TnVG&Yn`t4BC+;2_RC^9`TN6$`Denc1J_txzu0vZX7&*3#OM zf8~|!Xlw4kocT*JYfcZ2S~3UKP%|dJf6MI{8y|;=OdcX4y eo+L&+X_QOL4=^L z`BZJwIzTeSJ@@?l8&fs?{>vN$01h7Lz5c~@PX* +diU?fkMI5^7R{TDJ^K&gE$5vEaE`p6L$R@h=U#dVot?8fmn>QKh1X2& zPxIz^{*`OioO0HNS2m;2P{fiWk4D$*Ias;42jy}Z#hizq-t!Q)yu1PRNFa*pn#@SC z$e)B{5l9GxO6Xc7l2D=!B@|XHUxrsUy|}x-@6b ~g?s@c)2X74~M&SEg z(=QB7gDY4%doB<7+)(LrJ{nsaF>Tgdv~_mjXFvThw(i`EQbPgV-Lui%GY{}Q6bl~O zrgdTcE1R+A#8cj1C^ww`nz{YSrB>5kf7aPw4Fpl4c?RaqTZChdKLOL)J8;Cp*{Ie- z?CU* VZ9C!R1islFz^6D075YG0O9EdtPC}6Mhb|qj+W+Tv^F*2o_l`&?XX@C z{^%S805)yf@Wq#2cqVMfYoZ#Nxen%OIUt{V@VF1=>qz3~Jd{dhOlxbwtez#{#BkkB z-$(b%E^OJc7k_raIVd(ZLrIS2##WSDXCaJ~clO!mea9~r8(%ZKKb_R-h$YLuF@M1k z)2k? C z;ejLr1H;NAmt*Jl&BGfvZ1~oz`P%ub`CuZ7280v~S08`UO389iX1IwNQ8{LmO*jWQ zX(!^I2cFY|R$&xj(+lfRYHY;nV^(2kM9bvt+dqJ@kv^ (BmZ9RvUl_4jRD zylC sE&={=_jAUDJP$Zf#C{{T)GJB z*1dqS;UToPPsf}Ei?C($D_C{pilevf+`6$cKECla6Z|7it%}8?-tv}9ZzEpLw{`U( zs8@0PNhjc7-yxiE l zj&tO5IplK$-_s(`IiI7k+<+NfJ(#ob2ym9izkcg`IBNL l`g-obmcwJ36}?Rj~ N`QV&svKjZZ^Kb^w_mJ~F@LU05 z7+~W|Pk>ksr=ENQM#rmYYVfgp*DeJ05X+8Qg}uGKXlf`HXU?2?#@20HZk16~d(9;O zcy9SpgLmYSD{npVq|;B{KUl{RM=VFJK7x4*7GlrNt+?ooXMk}Jci;O<-1KiZVZ1s9 z8C0MIhmcw+M=8Cth78wJ+YP{32@C{3$8qB7lQ1zpIDG4^Ke$3h(ZrvGgUBcv86Fua zu0C${seZ8p#(fayVB81iq!m* %a1-5jZH1sxM>4c9kpU{y;hsvKQwT+2*cN`^S}5ut*h(9mt1ny=lX`LG-KWp zw6(XP)R2cz3QK$1F>_WoL|DVeKl4Rw-MR(!`WQq#jF%Tes!)@wV+9-taLU2+7(6aO z+(+Io;EdDGK=0n2+wc0>o$nA)6#Yp#h>W6O-~N5Qt5zQUXH9J#V9W>eOvBJ4c+7*( z89YvU%8zky4tU%{E|*6xpMz8kySHz`*6rKz);C{>m$&S|8K)eNCw~1bMu$eRWcg9x zejZykZ^p4luX^3!KwqKn;DHBTGtvJ-#Hyv`(km{1$9HO>@*3J^qNk@DwOSP|t?l69 z7*0H4H5e&e{V(6fFCV-g^|4{7AOs{qiU4{AogNn^QXr4RBTp;Ycnpj@_#9X;rw2 &_w|1G@AF~>VYo@j=)|K}u3A9(l9BoG;Cntik2w-ROgo6Dq2HYE zBcJz?%X __ejn{C*!Z~>AspmitSg>$0LP^-SXD1zZ?6GTxM+Srb zLx&!F%~b#Jw}$5Ci>|!loj)M2m`9-r^A{{cEvTWha|ZhN@504zdIN|t-2S7V;>PdY zgv!VOL{K-X?gC0iTK K}-C52Fb zk`5xHNbTOY=c&0pbKcW4cR`MM1>`)foy9!{pK~(}#=*H>ZNLoL<@+4Dd=Y-GgrHi* z!w)@x+1)*u)jbof?QJOJ7=HcqGiYvV!mQbIP^s3@yMG@$_LyVN7#Qpi2K)P8bCN&c zt=QOj@nx4@bxW>LF4d)v1&fwIL; Y?tyXBb@w<5`8*2668u~PCMx6jk9+UMvB#`J zq&Su?U4qe}emwd3lbA7U4ra~j!su8P{e8V`^>N3aF*-KNN5{t>7Gdz3_5Pl3jjb(j zz3j5L-&`y;m&QYe#YZfMBtpmZPVCve2baF-ba?q9c5UB+fB5+4aA40a1l3`^t3!ll z8aY;W(KGbKwGs;Vd?05U%;ce~YdTIl`9$3HvmbwI%gdX7_WOQs{10&fN5@8=Z7i2h zU%2RqIr(B)M-5LG?3{b>J*HI`Jr7>2{?4`1Vj-VLu}}ifl`!0Q0Ka x(eOrJgj!=p9y9ool^JLb4khKC1RM@C0}DZ=ozNyOjNt+~DZ z1D9X+_UpWSLt(5AELgM*%oAv6Y(#(mL7aE`v1n>-$H-tGKKhTJ#MX@)5C&tABGS|m zM`e;R4-yeL_q6n^5o6$7f>RES 343kQ)=BzN!G{lwha z-S6z`o|7*W3TAg9gYS`+A!SS#?Vf>wnWhzRpQBjJqf~B$pDSSh-o1F}p@(qpxo2b7 zzCN7&`qS~shE3SM{S|a}&BC;49T=+wIIw>otzNzQgeVLb9_l-EuZW`8;H_8jRw$QQ zXIIy!FTd;^UkW11RYStUMN7bZhJ2v`!vjM&bIp 6sa!)vMfmUeZ&jz6ZvEoZo;oC!Bzu?ykyBH{Ed2@Zi9{Kg9dwf2a#ut5yaE z2L}e0ELwO$bNh7UiUs(lP|q=f&q&iw7=at*3(grlM#$xI#z~rx%a^co`(`}#)KfU` z+&5syo&z}doHt HF7^fU3mFYo!p+NYoV@gM5F z@;~H-9U2~bUP-ZN(Sk)smRs78&*gL!VP>HwX$SGleVmy2HzAkvP--Zlp|KUYTmxQS z{{q&oU5huo;VkUlcL?X5eFoOAe*xRJZ%13l3{0Cg9mE)3+42gOFI^ol#vA|uAOJ~3 zK~y$(R(JPB+qQ3gA_~La*G&9(a*lb&AAjPH&wBm2=kM6lONFK;^vqiXDJ9BHEf^l| z!|AJ+W8tF37#khK=lX&kj !(a_j{hNfl|ijCO#(hGRuh3EcXd*>Y_=Xu}v&-1)(>+N2@!vTj*6ao;5 zLIR*n3KRqqtN 08n-&_9P+*?sw*}JG%#9-}2pG|9!b_%dPaE8{>}K zZl&k&VGbTVNTE=qt+fN!_c?N;huK}Tn^&$_`QZ71^8=F; y8 z G=;8zg0^Wm$5O?nVju5=u&k zl*EG6$^wgobS%Auw6JuDv~)f5`xl-!a~$(>=9szf>%Ok@JU=o&+ %xw?!vfFO zFJ@;k$60v=r?02AjIZ_1_P$JwAD!&wEh@FKGPalw(75w<>aLf-yn7%ldJ}(gy_v-3 zh@<*wK-uc@fgUU^*xw_ix(ev*PSJ+ovlqm 1VPHum`7QR^z#6Ee h;(N&218W@`PUc0Rj8Te0?#b-;n6xABxj8Zn#CMwg* zv%Ahn7|v5DK#m) -MROnAVqxlyTO ~1=9tLv7>Rxq^OAGe>L^KDZ)rrG#L zmNh1_{vc`Sts{?Q%IM4S_uF!oK^xTWcmIINPo?Ycz( MVT)tVRPWgG^ZTop?SqKSe23;e4Z^L}%^~{R9lM7whcyqH^aw?y z+Tyt7OsX3bF(K|R6oN0Wt!~G)h3|GWylzG{{8rIuG^w6W{K8zGMGk}c!T|hM$|e2V zZ)vvaXwTA!Gt~kWt?(@Z9MhB`2S-;Yb}Prid)24H!3VFVt6P}`p@=4XQJ-eW<%+() zL8Y2F^+|n0eR1{5*oq~P`S9a^NcEKg?{X2*S4Yt%6_z4R;@asWr8yAuu-m(9=9|<@ zqKx6N`(<*mCcI5SaO7I}1ZmVXO|)L#vgzGYgxv{lB9q+U_uCuu``Q zpLXL?fQGj5WxX+G}pq792cpT!hf74`I zJ-wL6WHBRwLZu$1#=c{7XW!W9Nm?y3X=cae)lb2c@HW)Hadd|{ZsTBNPdVafg-ga} zbtJJp(WsfDz8nu= %C57wFf+bTy-4MHC z;!%wt)_73E_k)Xbcnzby-$)Mj*Duw<&)lSN&B&J<8-IReR?JF^Avv-?Y)(rO3R*-? z@#)JS35t~y$05vyjix+jrgi`2NevvWp~sU;fydQ0Oa_&!Vvv@bz9UX%?V)R=JJK_x z#H4>GwGu+v7R!C#jUQ7NT-~}Y$lo8BFW8T~J6L92c_$D2bR3zO7ZS!rO)wf2cJ|*j zwn72Fk<@TOjO?vN+m(5H=kiWy$?iy_@${E$YuSOlK0|nn%SIq`BI7avy~5Rh8MZ_+ z{<0rH2KNQ`mj&)j3{nb*2Kkg*#cezg-l_NX=kIy3EvQ!5Sykz#Iu0gA@Z(RO0!hIw z0pUsY_(frC`ue22uApwc?{MGA@y~z1>vH9%Fn^|IM8z%b*ZNM^>zpjZPTVTeKlu(8 zqTuN|4dI4mdN0Jq{z88^pT=$snFcpOE2#ig{h1S-uYk CBPxbSGdE-267vTaRN z#Y{N%{+n>oxB&YWc{w?(KIO$t+~wAm15q&$x? r!)06OUA^jfRjM} Z1vh#kQo#&0!AtnLlK8EBNzZAdgVaLaVs;CU@eidb^8S-_U%+gY}>blJ&7w5P4 z`-?XhXkn!DhL&gWy#0u6cY=$Qr}fiE-R!D13D81Cn9mEmf$=5gB(_GI#VdVbNaF=< zw7SN`RLxmiB0{g|BKzOpQN*kE(DTKGyTFkzr#T-r)FYN)8cwdx4tfDE!w+7V@l8rQ zkZ*WrZ^kd1wjHZ^M{$v|$o6=Ioc;)0Y0(dl@yvaIKBBasOYP_AStFqpjLCA6_q`?7 zTV?uC_@>|M++rbHuBG^R`^UZa!u#v<)= J;40+Fsvn=3>d zNdH|7$l|G3A E8tt|b! 4%90-(+nldd->QelL%LiFt7m|6oH0&5aX}OqZpZFQeH4+*{+K zh_*iJ%U{ku@@PMrk24)?@ S0}#J=40;=AE6Z6`DW-< zTN(w{k7pfceqq6};6 slZ0QaZME$ zL`b5hj@EeP|L<|Ot7Jeo$*zZ4gX<+$a?rzoGfky!ns&UYYX zJBGXMBz-3Icn$r%<9^`;|82WEjk2J(H3!p-5mF9SGiIb9C3fyw*9}gSKl&5L%u1``id`Z&F zfV_ t0vC51-rjn&Ud5VHROa*vr&1M*UPP)|M4$SM` zEw<{8RM!>pq;OwdWeH?D3W!gF1(HVX3D_gZ=#Q)Sbo7W*PnTEl_u p?p_5L8a&0SRHwEUcgdk z5$?&5Ou@TVmcLiy+F?QPJQXjv7b`_Hz)cBffsR=2rFdd^F!fDm3xuU*yjV3 zFcO;*dOG0~B@YFUpT`U>p@%q${DIra8d*O)pA_OKY)qbXhK61o4@s$$mB`l4iRZ7q zsWhQ0$g=kJeT?-3*I3I(1wYz2{xy3 #>5WCSSGKWqq-E!&dd5 zL~8$r1w0M=_c3g^ZP8 wz*eGv8#AcHuksvA|BApR6ZBR81s2ONose}W4T2-^> zpXX6EMT-Y`w5B%sv -L8B5k>ru13{yH~5Zs5F&svpfSZvnoH2*DU@9-Etz#+H&7FECN#?TA&b2><$lk zKX-d(&O@EzA0kHo6r1{O3{;^b^2(sdh@mXW10cra81d;+O>1>`t6ZP|4Y@|&a$j5G zE)nvlCl{#U5rP+&=7QEvD@{CH54NF 1`+Rwo|{O9hCUJ_AI!1!`J6Z-BwuYpjTh%OaeycnKTT=p?=D^KobeIxUg@1ceJ z@0w)6AK2GE+C&>)x{`%}cI)4uYu!>VuGes=SpM^LtrY^LCX-TG(N3dsttJo~Q_0Ss zFKULcheTWz#@dvrlo~+7X7l~nO2k2?wxL{y*G}{8)WE Q>mws@jae-u5=sfQQPV1(8V(>MtMQ9nF=&%x;S$Zl#P+@rp|(X_p=TCyqy3jVq>^ zJV*odV4oj6X;?&M 9iRCgR=7~JmBaHuW^Q%Ia;ub34JvH zG)4G2)chQvg>2~zKP7M!2gyWPF(>A1@0_h>3m9vT?_Hno1?_6J-6I13dvF0T*ycul zgsiOy-*qX>)$h ZTk|A4K=Xvnz2AbZd*%G-|+ zPQ3H{D;%D!T=)?CR7BnUp@f?bT@;EH{>z#!nmrwOze1T@#XPaQIEgt!cD20Nli1Lt z!Is2@^-D`Y_K1P(YNNg4k;sLYlAUAQ1RLI*1_`GCv(N4YJt+GbVvE&Nl&z~@ye(7R zse5_sfs3i&%8P=w 1hlEwn0T|LgN^G2R h;+xH_d8ISQf)2Ngof zK{3vb)#RGbc2@C8L&=i#;F^~Ym89cn8v~UHixv5CEn~+T!H?I9X&v1LYcIDXYwYI4 zYUgCvQaRrxJ_8^H`5PMt_XO qIhWuV})@B aeBrPyq=$l7;Qrss&)p&CNY;Mw3<0a7 zIZW7Hr-xhn{apiR+$Lq F%1;IUXr{U*e^O1EJ5}*7q&4_lpj%0>6FKK`6Gd zY9x(5SNo98YC>N>rAlrsFgR`7 *DeAB`cYg8 zOvSTtdf=N8Cd#*gwSxn7-Opry4c)aKcptXP#gi7;Z}_=@+wXt~nXQT6zt!!C)1A|g z*QvPma+hbvExF2^zg9}+>n}@R0ITxr6 of6op1 @5ye<9DBPz*+&JT2;zrPy#} z_Uxk^WyzvTmBSYl&dqAGfBlNXhOL f-IV53W-7enR+e^=MT?iQ 1KKXZdler2n$y&H2yPQ3PGt&w> zscF!ZnrO5aM_13Ec4bJs7x@HW)|rUG2M)85tf~!KMsc1|s(~3zb<$=(t%VlrWPqR@ z&b*Q3MtQ>x!ZJ+mnvs>TN826O!QUm_CK`}{Wa`k%BvLT~;fz5Q!YVNy>cUdpN>T&$ z!s 88GC-`(Mx*BR@Q^bnXis@`L`+l7=1L$*`cW z|H8DBI07??XoQyh@3&ZP4g!9AnQk4! dgQu1 92y zbF05(;&C>y6PC4BL|%R%s*p7rA73hP`_WljYff9+WMe*usVhg0Fh$A9g?rT`TZt-f z0*bJjq>G{6;0R}D*7d7SBsEu}T791=jf*OXzzA%U)TQJSfs|Kv77Oo=W}FrY+n2pQ zTkyF1o~N&HBn&uOG~^NIv*<6+Cwasr0zBqwPXmCn!$RxJ#rovYhRy5;cN4`_ENp#n z+`jBtyS@~tZ)?0L5A2)Tmw^g<;9puEBPi2<3b6Xn*>|wqKMDi=9cHDaT2w^zo1^AE z|G6Lv>*`XWD#uR2=`V3qz6qp%DTN4% zN{VS!o4{;+KTVeDkH23R2|<4r6PJ$u_hQ}0%sbnD;!?aVr|Set#;i^kKmJu f7JI7R+U3K1M$?=G);md4ujdNJ2w;{xu-x$g2>giGPZX6f zP?n}q&`cfO)O7H^Pzu+P?l^k%4BO4=E`tWg8}U3c;jMb;OEtu=aa8MAO)?lwKom_@ z$=TPVoQ?O;q)^nFsY=xP0l94vc(m*3avy3pYiiu~d~e};)(21&Vem0|av>7GO-)IZ zN)24yciQ|WH@{;WPWSOWuKuZumR07Z9o*{PG&+J(h-cvY8M?m(Q*MD0g8IkzZ;?F7 z;m&sDk+C4o66lj`x&k{}@7SXwFLe!c)-x8EcSX;y9)hXk$LX -J zl6kr+NpQ7+`f?WEJWstJc~LZyre2v{$vi&3<3qa8bR=02*j$MqVXZXlMP<4~!4(xP z9{%UH!>;qtko)j}0QIRq#>JD~Q{<03h(Mz^xI_nyduK9j$en3HZBs;Z#^`iu$%_ly zB%x1lc`j;(-U{0{4vQ< a82JlxLAcKqQ_Q;L7N&z0x^s9MAAUXfwI@^ z$2(52#Zv3_9`>^HspU=I?BQ6?l)vyRQ+B0z6aT<%Wz5~}bz9Kt#rSwk%)oB4WuHD= z6OOa46KpH|gX_$8 ;mT_cYp1$M%0 EFg+)mZVQpM<8Ol6s3TArB78@=}5y!{U<#0OKxO6!;U6ce4jEd`QokEZ}0)^v( z+t(MS(dRMRqX>@Z`0y!7ih$9BFd2{RHElSRrnrgKDj7Jg_jOfaLfKiB-f*cZnTM2b zNjz G-cO$_vQl9QJ0nFExR_`u1Sb|{}UCX$| z-z_& xV%FXaUueq#e z$kR_@r4a#dvx2P57y}08!R5xg9Ah&yIkL_!V|^dSMOWgLaw27W+$r=xQdC^8AEB{# zuhSxdt)(X!FYb}Fkl269;P6lQj bpzQA}! z= WOIFMtKh0AuDy`Sz3=@%7HYegrbgGJ3BjcwaD#h&wFQ;hBn^$c(*jCyIfFO!i z98o&cf1fKkmV8 wWhw#u^gEOVyH?0f@0WLob(lBcg>PBfy68~ifgr(o1_ z&dIw+IyFW{4T=`wFcVAwdC5d45^FiJQ3sInGZiUEfe5LiBee?aOKGBc+{SH4s$Eo* zzm}4y)5lNK6(gsut5qp%MZO9$#OPJ!x`@wLG)nY3#>Z5rOR&ysMo#g-S82%CSl>RW zv`9k|80A)XEjMRO_u=^1`@N|&*4B9cS@vwOvL*Cj7Fm3aC>=J+dmg53M-)|>&Tk^u z=(SeXF6ME!x+~Mt@)n8AK0D(&ZhDr_E<9w(%b&W+$^)a=B_qP}Q#&N5#Xc#j=b9j7 zaxyYf I^qD zsJ2%aI9Jbmp4p)f|7m7XH}l>6eK&ihyx;9vL*i(Lvf;;mDkAZhk|~%ipk4QPp3Iq& zcCNk)*d?@jziZ&Z+0$Yd1*v(BsQOIQ8PjU%jM-zw)m@yEJO3~w$H;{FQLzg0bT|@q zeTbQPW>(qR7p{;Ae(6HRrDd6l=fYtUsaYN4`#auIAh02N7uVOXA%!H^oKH8ANg>pC zYuDrF* XkqQ(YXN zn>zOB<7(2QS=C+Y#Z;xaRK)k3%OR^KPHCdRT_ngrhk+XZPjW1oR&QtP1f9#ORR1=| zR}(r$53YJqb`hScWXED9a6Dd>mUQYGVIvuXjku#@zf3) l@6n>PP` zAUol+j&GQn3M=q+G2rgUCJXH7l!|!l- F1tn9g zNf;u?kPEmB@rvegROIU65o~)w;u2+tcCj@ku|`x(`+IvqP6tbi!b}QYtLffO&J}vG z(n@y)Z0RFcc}#gTg3!i`4C8{UUl f&QQW(t5AS>ddQ!3^F`-t+}E zCK3kK5MwPS`H; ah^8)YSHEp~ue8^dNi0FsQ%Sv6+tPsfKEr5G z7Wk}FKbiDdFs7HBhFT3$*-z&JIa6tS@ZiDFYgHv9^?Hz8F|7FG*#Y*v^U`PQtbj!- zY`JTB+0Ll4;wrs@a$SopfeQ3)WTbj8p?CG>?Ck6^L3hOBWOL*|h=$NDe+%_kY3y+k zE-*<+dnswT`L~%=8QcXC7kn-0UXRe^jV|J0n1K9GgPpf~pb+G4XLs=z@a7(^tR$yK y(Bk14l^7Xa+m+hxek)Ft{`3F1tWiealc*3S$w(?HssWGn;I*2bDni-%zyAZGTBJh& literal 0 HcmV?d00001 From 8e019dd2517cb702d432007700fddec2b2531616 Mon Sep 17 00:00:00 2001 From: Klaudiusz Staniek Date: Fri, 15 Feb 2019 14:00:42 +0100 Subject: [PATCH 09/64] Create binary_sensor.tod.markdown (#8172) * Create binary_sensor.tod.markdown * Update binary_sensor.tod.markdown * Update source/_components/binary_sensor.tod.markdown Co-Authored-By: kstaniek * Update source/_components/binary_sensor.tod.markdown Co-Authored-By: kstaniek * Update source/_components/binary_sensor.tod.markdown Co-Authored-By: kstaniek * Update source/_components/binary_sensor.tod.markdown Co-Authored-By: kstaniek * Update source/_components/binary_sensor.tod.markdown Co-Authored-By: kstaniek * Update source/_components/binary_sensor.tod.markdown Co-Authored-By: kstaniek * Update source/_components/binary_sensor.tod.markdown Co-Authored-By: kstaniek * Update binary_sensor.tod.markdown * :pencil2: Tweaks * Updated to follow latest configuration change * Minor changes --- source/_components/binary_sensor.tod.markdown | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 source/_components/binary_sensor.tod.markdown diff --git a/source/_components/binary_sensor.tod.markdown b/source/_components/binary_sensor.tod.markdown new file mode 100644 index 00000000000..fafbd195876 --- /dev/null +++ b/source/_components/binary_sensor.tod.markdown @@ -0,0 +1,76 @@ +--- +layout: page +title: "Times of the Day Binary Sensor" +description: "Instructions on how to integrate Times of the Day binary sensors within Home Assistant." +date: 2019-01-14 23:35 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Binary Sensor +ha_release: 0.88 +ha_iot_class: "Local Push" +logo: home-assistant.png +ha_qa_scale: internal +--- + +The `tod` platform supports binary sensors which get their values by checking if the current time is within defined time ranges. + +The time ranges can be provided as absolute local time or using the `sunrise` or `sunset` keyword calculated based on the sun position for location. The location must be provided in the configuration. + +In addition for sun position based ranges, the negative or positive offset can be configured. + +## {% linkable_title Configuration %} + +Here is an example of adding a sensor to the `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: tod + name: Early Morning + after: sunrise + after_offset: '-02:00' + before: '07:00' +``` + +{% configuration %} +name: + description: Name of the sensor. + required: true + type: string +before: + description: The absolute local time value or sun event for beginning of the time range. + required: true + type: string or time +before_offset: + description: The time offset of the beginning time range. + required: false + type: time +after: + description: The absolute local time value or sun event for ending of the time range. + required: true + type: string or time +after_offset: + description: The time offset of the beginning time range. + type: time + required: false +{% endconfiguration %} + +## {% linkable_title Considerations %} + +The primary purpose of this sensor is to use a simple time range definition instead of creating a complex template with references to `sun.sun` component attributes. + +The sensor state is ON when this condition `after` + `after_offset` <= `current time` < `before` + `before_offset`. + +If `after` time is later than `before` then the next day is considered, i.e.: + +```yaml +binary_sensor: + - platform: tod + name: Night + after: sunset + before: sunrise +``` + +In the above example, the next day `sunrise` is calculated as a time range end. From cebb49b6e9217c0e3a5039412355f1d51de34870 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 15 Feb 2019 15:01:07 +0100 Subject: [PATCH 10/64] Update 'ha_release' --- source/_components/binary_sensor.tod.markdown | 2 +- source/_components/nissan_leaf.markdown | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/binary_sensor.tod.markdown b/source/_components/binary_sensor.tod.markdown index fafbd195876..4971fbf8015 100644 --- a/source/_components/binary_sensor.tod.markdown +++ b/source/_components/binary_sensor.tod.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true ha_category: Binary Sensor -ha_release: 0.88 +ha_release: 0.89 ha_iot_class: "Local Push" logo: home-assistant.png ha_qa_scale: internal diff --git a/source/_components/nissan_leaf.markdown b/source/_components/nissan_leaf.markdown index 19357efa985..3efd61cc4f6 100644 --- a/source/_components/nissan_leaf.markdown +++ b/source/_components/nissan_leaf.markdown @@ -9,14 +9,14 @@ sharing: true footer: true logo: nissan.png ha_category: Car -ha_release: 0.88 +ha_release: 0.89 ha_iot_class: "Cloud Polling" --- The `nissan_leaf` component offers integration with the [NissanConnect EV](http://youplus.nissan.co.uk/GB/en/YouPlus/ConnectedServices.html) cloud service. NissanConnect EV was previously known as Nissan Carwings. It offers: * sensors for the battery status and range -* a switch to start and stop the climate control +* a switch to start and stop the climate control * a switch to start the car charging (cannot be stopped remotely - API limitation) * a device tracker to locate the car (only on later Leaf models) From 0d39edaac5d9bf96f5d780526815278b4d509a0f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 15 Feb 2019 15:19:53 +0100 Subject: [PATCH 11/64] Update 'ha_release' --- source/_components/switch.danfoss_air.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/switch.danfoss_air.markdown b/source/_components/switch.danfoss_air.markdown index d0242c052c3..6203a9a1041 100644 --- a/source/_components/switch.danfoss_air.markdown +++ b/source/_components/switch.danfoss_air.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: danfoss_air.png ha_category: Switch -ha_release: "0.88" +ha_release: 0.89 ha_iot_class: "Local Polling" --- From 8e561c6530fb133af5c4e7d950d1eecdb85c8238 Mon Sep 17 00:00:00 2001 From: Fredrik Erlandsson Date: Fri, 15 Feb 2019 16:40:16 +0100 Subject: [PATCH 12/64] Add documentation for Point alarm_control_panel (#8477) * add documentation for Point alarm_control_panel * ha_config_flow: true * Point reaches gold standard * Apply suggestions from code review Co-Authored-By: fredrike * merged documentation * updated merged documentation * updated automation examples --- .../_components/binary_sensor.point.markdown | 35 ------ source/_components/point.markdown | 108 +++++++++++++++++- source/_components/sensor.point.markdown | 29 ----- 3 files changed, 102 insertions(+), 70 deletions(-) delete mode 100644 source/_components/binary_sensor.point.markdown delete mode 100644 source/_components/sensor.point.markdown diff --git a/source/_components/binary_sensor.point.markdown b/source/_components/binary_sensor.point.markdown deleted file mode 100644 index f12d9275172..00000000000 --- a/source/_components/binary_sensor.point.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Minut Point Binary Sensor" -description: "Access your Minut Point Events as binary sensors." -date: 2018-11-19 -sidebar: true -comments: false -sharing: true -footer: true -logo: minut.svg -ha_category: Binary Sensor -ha_release: "0.83" -ha_iot_class: "Cloud Push" -ha_qa_scale: silver ---- - -Each Point exposes the following binary sensors: - -- **battery**: `On` means low, `Off` means normal -- **button_press**: `On` means the button was pressed, `Off` means normal -- **cold**: `On` means cold, `Off` means normal -- **connectivity**: `On` means connected, `Off` means disconnected -- **dry**: `On` means too dry, `Off` means normal -- **heat**: `On` means hot, `Off` means normal -- **light**: `On` means light detected, `Off` means no light -- **moisture**: `On` means moisture detected (wet), `Off` means no moisture (dry) -- **motion**: `On` means motion detected, `Off` means no motion (clear) -- **sound**: `On` means sound detected, `Off` means no sound (clear) -- **tamper**: `On` means the point was removed or attached - -For installation instructions, see [the Point component](/components/point/). - - -The events sent from the Point is also sent as a webhook back to Home Assistant with `event_type` as `point_webhook_received`, please consider the documentation for the [IFTT](/components/ifttt/) component on how to write automations for webhooks. -
diff --git a/source/_components/point.markdown b/source/_components/point.markdown index 36d790aca80..705e94f2376 100644 --- a/source/_components/point.markdown +++ b/source/_components/point.markdown @@ -8,16 +8,24 @@ comments: false sharing: true footer: true logo: minut.svg -ha_category: Hub +ha_category: + - Hub + - Alarm + - Binary Sensor + - Sensor featured: false ha_release: "0.83" +ha_config_flow: true ha_iot_class: "Cloud Polling" -ha_qa_scale: silver +ha_qa_scale: gold +redirect_from: + - /components/binary_sensor.point/ + - /components/sensor.point/ --- -The Point component is the main component to integrate the [Minut Point](https://minut.com/). To connect Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` using the `callback url` as `base_url` + `/api/minut`, e.g., `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below. +The Point hub enables integration with the [Minut Point](https://minut.com/). To connect with Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` with the `callback url` configured as your Home Assistant `base_url` + `/api/minut`, e.g. `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below. -Once Home Assistant is started, a configurator will pop up asking you to Authenticate your Point account via a link when you follow the link and have clicked on **Accept** you will be redirected to the `callback url` and the Point integration will be automatically configured and you can go back to the original dialog and press **Submit**. +Once Home Assistant is started, a configurator will pop up asking you to Authenticate your Point account via a link. When you follow the link and click on **Accept** you will be redirected to the `callback url` and the Point integration will be automatically configured and you can go back to the original dialog and press **Submit**. ### {% linkable_title Configuration %} @@ -39,7 +47,95 @@ client_secret: type: string {% endconfiguration %} +# {% linkable_title Device types %} + +The integration supports the following device types within Home Assistant: + - [Alarm](#alarm) + - [Binary Sensor](#binary-sensor) + - [Sensor](#sensor) +-The Point is just active occasionally so the sensors are only updated every hour or so. -The events sent from the Point is sent as a webhook back to Home Assistant with `event_type` as `point_webhook_received`, please consider the documentation for the [IFTT](/components/ifttt/) component on how to write automations for webhooks. +The Point is just active occasionally so the [Sensors](#sensor) are only updated every hour or so. The [Binary Sensors](#binary-sensor) are however updated via [Cloud Push](https://www.home-assistant.io/blog/2016/02/12/classifying-the-internet-of-things/#cloud-pushing-new-state), making the changes close to instant.
+ +## {% linkable_title Alarm %} + +Each home configured in the Point mobile application will show up as a separate alarm control panel. The panels allow **arming** and **disarming** of the Point home alarm system. + ++The Point only supports a Arm/Disarm action, so there is no difference between `Arm Home` and `Arm Away`. +
+ +## {% linkable_title Binary Sensor %} + +Each Point exposes the following binary sensors: + +- **battery**: `On` means low, `Off` means normal +- **button_press**: `On` means the button was pressed, `Off` means normal +- **cold**: `On` means cold, `Off` means normal +- **connectivity**: `On` means connected, `Off` means disconnected +- **dry**: `On` means too dry, `Off` means normal +- **heat**: `On` means hot, `Off` means normal +- **light**: `On` means light detected, `Off` means no light +- **moisture**: `On` means moisture detected (wet), `Off` means no moisture (dry) +- **motion**: `On` means motion detected, `Off` means no motion (clear) +- **sound**: `On` means sound detected, `Off` means no sound (clear) +- **tamper**: `On` means the point was removed or attached, `Off` means normal + ++The binary sensors **battery**, **button_press** and **tamper** are switched `On` for a breif moment and are then switched back to `Off`. +
+ +### {% linkable_title Automation example %} + +The following example show how to implement an automation for the **button_press** binary sensor. + +{% raw %} +```yaml +# Example configuration.yaml Automation entry +automation: + alias: Point button press + trigger: + - platform: state + entity_id: binary_sensor.point_button_press # Change this accordingly + to: 'on' + action: + - service: persistent_notification.create + data: + title: Point button press + message: Point button was pressed. +``` +{% endraw %} + +### {% linkable_title Webhook events %} + +The events shown as [binary sensors](#binary-sensor) are sent to Home Assistant as webhooks with the `event_type` set to `point_webhook_received`. Below is an example of how to use such a webhook do note the `trigger.event.data.event.device_id` which translates to the id of the Point device that sent the event. + +{% raw %} +```yaml +# Example configuration.yaml Automation entry +automation: + alias: Point button press (webhook) + trigger: + - platform: event + event_type: point_webhook_received + event_data: {} + condition: + condition: template + value_template: "{{ trigger.event.data.event.type == 'short_button_press' }}" + action: + - service: persistent_notification.create + data_template: + title: Point button press (webhook) + message: "Button press on Point {{ trigger.event.data.event.device_id }}" +``` +{% endraw %} + +## {% linkable_title Sensor %} + +Each Point exposes the following sensors: + +- **temperature**: Temperature in °C. +- **humidity**: Percentage of humidity in the air. +- **pressure**: Pressure in hPa. +- **sound_level**: Sound level in dBA diff --git a/source/_components/sensor.point.markdown b/source/_components/sensor.point.markdown deleted file mode 100644 index ad491d427c6..00000000000 --- a/source/_components/sensor.point.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "Minut Point Sensor" -description: "Access your Minut Point Sensors." -date: 2018-11-19 -sidebar: true -comments: false -sharing: true -footer: true -logo: minut.svg -ha_category: Sensor -ha_release: "0.83" -ha_iot_class: "Cloud Polling" -ha_qa_scale: silver ---- - -Each Point exposes the following sensors: - -- **temperature**: Temperature in °C. -- **humidity**: Percentage of humidity in the air. -- **pressure**: Pressure in hPa. -- **sound_level**: Sound level in dBa. - - -For installation instructions, see [the Point component](/components/point/). - --The Point is just active occasionally so the sensors are only updated every hour or so. -
From 193d4169c4fab7042a51caa9fb18f8146edd414b Mon Sep 17 00:00:00 2001 From: David BarreraDate: Sat, 16 Feb 2019 03:29:42 -0500 Subject: [PATCH 13/64] Add index configuration (#8590) Adds an index configuration variable for cases where the CSS selector returns more than one result. --- source/_components/sensor.scrape.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/sensor.scrape.markdown b/source/_components/sensor.scrape.markdown index 82241743ae0..bb20562e14a 100644 --- a/source/_components/sensor.scrape.markdown +++ b/source/_components/sensor.scrape.markdown @@ -38,6 +38,11 @@ attribute: description: Get value of an attribute on the selected tag. required: false type: string +index: + description: Defines which of the elements returned by the CSS selector to use. + required: false + default: 0 + type: integer name: description: Name of the sensor. required: false From c3ad7786dc7a15c2b027ebc82d18a71bce5709b4 Mon Sep 17 00:00:00 2001 From: Julius Mittenzwei Date: Sat, 16 Feb 2019 17:43:46 +0100 Subject: [PATCH 14/64] added information about required firmware version (#8606) --- source/_components/velux.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/velux.markdown b/source/_components/velux.markdown index 68468b6b08d..8735998d7be 100644 --- a/source/_components/velux.markdown +++ b/source/_components/velux.markdown @@ -19,6 +19,8 @@ redirect_from: [Velux](http://www.velux.com) integration for Home Assistant allows you to connect to a Velux KLF 200 interface, to control [io-homecontrol](http://www.io-homecontrol.com) devices like windows and blinds. The module allows you to start scenes configured within KLF 200. +At least firmware version > 2.0.0.0 is required on the KLF 200 device. The firmware images may be obtained [here](https://www.velux.com/api/klf200) and may be imported via the webinterface of your KLF 200. + There is currently support for the following device types within Home Assistant: - Cover From b1918f69b808e104df297793d8ad5caf94f7228f Mon Sep 17 00:00:00 2001 From: Matt Snyder Date: Sat, 16 Feb 2019 11:25:20 -0600 Subject: [PATCH 15/64] Owlet documentation --- source/_components/owlet.markdown | 50 ++++++++++++++++++++++++ source/images/supported_brands/owlet.svg | 1 + 2 files changed, 51 insertions(+) create mode 100644 source/_components/owlet.markdown create mode 100644 source/images/supported_brands/owlet.svg diff --git a/source/_components/owlet.markdown b/source/_components/owlet.markdown new file mode 100644 index 00000000000..b58d86e791e --- /dev/null +++ b/source/_components/owlet.markdown @@ -0,0 +1,50 @@ +--- +layout: page +title: "Owlet" +description: "Instructions on how to integrate Owlet baby monitor into Home Assistant." +date: 2019-01-19 +sidebar: true +comments: false +sharing: true +footer: true +logo: owlet.svg +ha_category: Health +ha_release: "0.89" +ha_iot_class: "Cloud Polling" +--- + +### {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +owlet: + username: OWLET_USER + password: OWLET_PASSWORD +``` + +{% configuration %} +username: + description: Your Owlet account user ID. + required: true + type: string +password: + description: Your Owlet account password. + required: true + type: string +name: + description: Custom name for your Owlet device. + required: false + type: string +{% endconfiguration %} + + +The intended purpose of this component is to enable data logging and automations +such as battery status updates and charging reminders. This component should not +replace the Owlet app nor should it be used for life-critical notifications. +
+ +Owlet Care baby monitors check your baby's oxygen level and heart rate while +sleeping. Configuring this component will enable tracking of heart rate, oxygen +level, motion, and base station connection status. Battery status is available +as an attribute on oxygen and heart rate sensors. + diff --git a/source/images/supported_brands/owlet.svg b/source/images/supported_brands/owlet.svg new file mode 100644 index 00000000000..a14154fa005 --- /dev/null +++ b/source/images/supported_brands/owlet.svg @@ -0,0 +1 @@ + \ No newline at end of file From be3c6d860119de8c993483107dcdd294f87e873f Mon Sep 17 00:00:00 2001 From: Matt SnyderDate: Sat, 16 Feb 2019 12:22:43 -0600 Subject: [PATCH 16/64] Document used platforms. --- source/_components/owlet.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/owlet.markdown b/source/_components/owlet.markdown index b58d86e791e..d408c3da8a7 100644 --- a/source/_components/owlet.markdown +++ b/source/_components/owlet.markdown @@ -48,3 +48,12 @@ sleeping. Configuring this component will enable tracking of heart rate, oxygen level, motion, and base station connection status. Battery status is available as an attribute on oxygen and heart rate sensors. +This component enables the following platforms automatically: + +#### Binary Sensors +- Base Station Status +- Motion + +#### Sensors +- Heart rate +- Oxygen level \ No newline at end of file From 6af7a774cdd0f37cb248d032fee7000319f6f70e Mon Sep 17 00:00:00 2001 From: Matt Snyder Date: Sat, 16 Feb 2019 16:14:47 -0600 Subject: [PATCH 17/64] Update categories. Move summary sentence. --- source/_components/owlet.markdown | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source/_components/owlet.markdown b/source/_components/owlet.markdown index d408c3da8a7..cfd37e1b31a 100644 --- a/source/_components/owlet.markdown +++ b/source/_components/owlet.markdown @@ -8,11 +8,17 @@ comments: false sharing: true footer: true logo: owlet.svg -ha_category: Health +ha_category: + - Health + - Binary Sensor + - Sensor ha_release: "0.89" ha_iot_class: "Cloud Polling" --- +Owlet Care baby monitors check your baby's oxygen level and heart rate while +sleeping. + ### {% linkable_title Configuration %} ```yaml @@ -43,8 +49,7 @@ such as battery status updates and charging reminders. This component should no replace the Owlet app nor should it be used for life-critical notifications. -Owlet Care baby monitors check your baby's oxygen level and heart rate while -sleeping. Configuring this component will enable tracking of heart rate, oxygen +Configuring this component will enable tracking of heart rate, oxygen level, motion, and base station connection status. Battery status is available as an attribute on oxygen and heart rate sensors. From 9731ee71c50229f3b932ef121c50702ec95d7637 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 17 Feb 2019 09:45:51 +0100 Subject: [PATCH 18/64] Move details up --- source/_components/owlet.markdown | 35 ++++++++++++++----------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/source/_components/owlet.markdown b/source/_components/owlet.markdown index cfd37e1b31a..b2f4dd3d4f8 100644 --- a/source/_components/owlet.markdown +++ b/source/_components/owlet.markdown @@ -16,8 +16,21 @@ ha_release: "0.89" ha_iot_class: "Cloud Polling" --- -Owlet Care baby monitors check your baby's oxygen level and heart rate while -sleeping. +[Owlet Care](https://owletcare.com/) baby monitors check your baby's oxygen level and heart rate while sleeping. + +Configuring this component will enable tracking of heart rate, oxygen level, motion and base station connection status. Battery status is available as an attribute on oxygen and heart rate sensors. + +This component enables the following platforms automatically: + +#### {% linkable_title Binary Sensors %} + +- Base Station Status +- Motion + +#### {% linkable_title Sensors %} + +- Heart rate +- Oxygen level ### {% linkable_title Configuration %} @@ -44,21 +57,5 @@ name: {% endconfiguration %} -The intended purpose of this component is to enable data logging and automations -such as battery status updates and charging reminders. This component should not -replace the Owlet app nor should it be used for life-critical notifications. +The intended purpose of this component is to enable data logging and automations such as battery status updates and charging reminders. This component should not replace the Owlet app nor should it be used for life-critical notifications.
- -Configuring this component will enable tracking of heart rate, oxygen -level, motion, and base station connection status. Battery status is available -as an attribute on oxygen and heart rate sensors. - -This component enables the following platforms automatically: - -#### Binary Sensors -- Base Station Status -- Motion - -#### Sensors -- Heart rate -- Oxygen level \ No newline at end of file From f17e397588b6c355467534dd4563944b54bc0e1d Mon Sep 17 00:00:00 2001 From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com> Date: Sun, 17 Feb 2019 04:28:24 -0600 Subject: [PATCH 19/64] Add SmartThings troubleshooting steps and demo video (#8609) * Add troubleshooting and fan video * Minor changes --- source/_components/smartthings.markdown | 64 ++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown index 2df31934330..60de6c4f629 100644 --- a/source/_components/smartthings.markdown +++ b/source/_components/smartthings.markdown @@ -44,6 +44,13 @@ Samsung SmartThings is integrated into Home Assistant through the SmartThings Cl 3. Support for multiple SmartThings accounts and locations, each represented as a unique integration in the front-end configuration. 4. No brokers, bridges, or additional dependencies. +See it in action, with a step-by-step setup guide, thanks to a fan! (v0.87 featured): + ++ ++ + ## {% linkable_title Basic requirements %} 1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions). @@ -83,6 +90,8 @@ The SmartThings component is configured exclusively through the front-end. Manua Advanced: If you have multiple locations in SmartThings, each can be integrated into Home Assistant. Follow the steps above, then for each subsequent location, install the SmartApp and it will automatically add to Home Assistant. This can be completed during step 3 (install SmartApp) above or at any time after that. +See the [troubleshooting](#troubleshooting) if you are having issues setting up the integration. + ## {% linkable_title Events %} The SmartThings component triggers events for select device capabilities. @@ -109,6 +118,8 @@ The component will trigger an event when a device with the [button](https://smar `value` | Describes the action taken on the button. See the [button](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Button) capability reference for a list of possible values (not all are supported by every device). `name` | The name given to the device in SmartThings. +Event data payloads are logged at the debug level, see [debugging](#debugging) for more information. + ## {% linkable_title Platforms %} SmartThings represents devices as a set of [capabilities](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html) and the SmartThings component maps those to entity platforms in Home Assistant. A single device may be represented by one or more platforms. @@ -237,4 +248,55 @@ The SmartThings Sensor platform lets your view devices that have sensor-related ### {% linkable_title Switch %} -The SmartThings Switch platform lets you control devices that have the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability that are not already represented by a more specific platform. \ No newline at end of file +The SmartThings Switch platform lets you control devices that have the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability that are not already represented by a more specific platform. + +## {% linkable_title Troubleshooting %} + +### {% linkable_title Setup %} + +Perform the following steps if you receive one of the following error messages while attempting to setup the integration: + +- "SmartThings could not validate the endpoint configured in base_url. Please review the component requirements." +- "Unable to setup the SmartApp. Please try again." + +#### {% linkable_title Checklist %} + +1. Ensure `base_url` is properly set to the _external address_ that Home Assistant is available to the internet. SmartThings must be able to reach this address. +1. Validate there are no problems with your certificate or SSL configuration by using an online checker, such as [https://www.digicert.com/help/](https://www.digicert.com/help/). +1. Some reverse proxy configuration settings can interfere with communication from SmartThings. For example, TLSv1.3 is not supported. Setting the supported cipher suite too restrictly will prevent handshaking. The following NGINX SSL configuration is known to work: + ```nginx + # cert.crt also contains intermediate certificates + ssl_certificate /path/to/cert.crt; + ssl_certificate_key /path/to/cert.key; + ssl_dhparam /path/to/dhparam.pem; + ssl_protocols TLSv1.2; + ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; + ssl_prefer_server_ciphers on; + ssl_ecdh_curve secp384r1; + ssl_session_timeout 10m; + ssl_session_cache shared:SSL:10m; + ssl_session_tickets off; + ``` +1. While the error message (above) is being displayed, run the following command from outside your local network to confirm it is responding to the ping lifecycle event: + ```bash + curl -X POST https://{BASE_URL}/api/webhook/{WEBHOOK_ID} -H "Content-Type: application/json; charset=utf-8" -d $'{"lifecycle": "PING", "executionId": "00000000-0000-0000-0000-000000000000", "locale": "en", "version": "1.0.0", "pingData": { "challenge": "00000000-0000-0000-0000-000000000000"}}' + ``` + Where `{BASE_URL}` is your external address and `{WEBHOOK_ID}` is the value of `webhook_id` from `.storage/smartthings` in your Home Assistant configuration directory. + + The expected response is: + ```bash + {"pingData": {"challenge": "00000000-0000-0000-0000-000000000000"}} + ``` + +If you have completed the checklist above and are still unable to setup the platform, [activate debug logging](#debugging) for the SmartThings component and include the log messages up until the point of failure in [a new issue](https://github.com/home-assistant/home-assistant/issues). + +### {% linkable_title Debugging %} + +The SmartThings component will log additional information about push updates received, events fired, and other messages when the log level is set to `debug`. Add the the relevent line below to the `configuration.yaml`: + +```yaml +logger: + default: info + logs: + homeassistant.components.smartthings: debug +``` From b9e7f41b76ef08b20ff288167b2891743b725fe5 Mon Sep 17 00:00:00 2001 From: akloecknerDate: Sun, 17 Feb 2019 11:29:22 +0100 Subject: [PATCH 20/64] Add hint on how to restart on crash (#8610) I was experiencing crashes, when I requested too many data points for plotting. So, this configuration makes my system come back automatically. --- source/_docs/autostart/systemd.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_docs/autostart/systemd.markdown b/source/_docs/autostart/systemd.markdown index 450ee5a8a20..30faef2d122 100644 --- a/source/_docs/autostart/systemd.markdown +++ b/source/_docs/autostart/systemd.markdown @@ -134,3 +134,11 @@ When working on Home Assistant, you can easily restart the system and then watch $ sudo systemctl restart home-assistant@YOUR_USER && sudo journalctl -f -u home-assistant@YOUR_USER ``` +### {% linkable_title Automatically restarting Home Assistant on failure %} + +If you want to restart the Home Assistant service automatically after a crash, add the following lines to the `[Service]` section of your unit file: + +``` +Restart=on-failure +RestartSec=5s +``` From 956e9a2f43dcdeaa9579c9157952bae82167673f Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Sun, 17 Feb 2019 12:32:20 +0100 Subject: [PATCH 21/64] Add documentation for Netatmo webhooks (#8463) Add documentation for Netatmo webhooks --- source/_components/netatmo.markdown | 62 ++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/source/_components/netatmo.markdown b/source/_components/netatmo.markdown index 5bd5aa7481f..8f856e9b691 100644 --- a/source/_components/netatmo.markdown +++ b/source/_components/netatmo.markdown @@ -46,8 +46,13 @@ password: discovery: description: Whether to discover Netatmo devices. Set it to False, if you want to choose which Netatmo device you want to add. required: false - type: string + type: boolean default: true +webhooks: + description: Enable webhooks for instant events of the Welcome and Presence cameras. + required: false + type: boolean + default: false {% endconfiguration %} ### {% linkable_title Get API and Secret Key %} @@ -69,3 +74,58 @@ That's it. You can copy and paste your new `client id` and `client secret` in yo + +### {% linkable_title Webhooks %} + +The Welcome and Presence cameras can send instant events to Home Assistant by using webhooks. There are different types of events, each with slightly different data attached. To enable the webhooks add `webhooks: true` to your configuration. It is also required to have your camera enabled in Home Assistant. You can do this either by manually setting up the [platform](https://www.home-assistant.io/components/camera.netatmo/) or by enabeling [discovery](https://www.home-assistant.io/components/netatmo/#discovery). + +To be able to receive events from Netatmo, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](https://www.home-assistant.io/addons/duckdns/)) and you need to have the base_url configured for the HTTP component ([docs](https://www.home-assistant.io/components/http/#base_url)). + +Events coming in from Netatmo will be available as events in Home Assistant and are fired as netatmo_*, along with their data. You can use this event to trigger automations. + +#### {% linkable_title Events %} + +The following events are available: + +- netatmo_person (Welcome) +- netatmo_movement (Welcome & Presence) +- netatmo_human (Presence) +- netatmo_animal (Presence) +- netatmo_vehicle (Presence) +- netatmo_other (Welcome & Presence) + +All events (except `netatmo_other`) contain the following attributes: + +| Attribute | Description | +| --------- | ----------- | +| event_type | Type of event. E.G. `movement`. +| home_name | Name of the home the camera belongs to. +| camera_id | MAC address of the camera. +| message | Message describing what has been seen by the camera. + +The Presence camera additionally has these attributes: + +| Attribute | Description | +| --------- | ----------- | +| snapshot_url | URL to a picture of the full frame of the event. +| vignette_url | URL to a picture cropped down to the area of interest. + +The Welcome camera additionally has these attributes for `netatmo_person` events: + +| Attribute | Description | +| --------- | ----------- | +| id | ID of the person that has been seen. +| name | Name of the person that has been seen. +| is_known | Boolean value if the person is known. +| face_url | URL to a picture of the person. + +The `netatmo_other` event passes all the webhook data through for all webhook events that don't match any of the above. Set the [level of logging](https://www.home-assistant.io/components/logger/) for the `netatmo` component to `debug` to view the data in the Home Assistant logs. + +### {% linkable_title Services (only for webhooks) %} + +There are two services to manually add and drop the webhooks. This might be useful if your webhook has been banned and you want to readd the webhook without restarting Home Assistant. + +| Service | Description | +| ------- | ----------- | +| addwebhook | Subscribe to webhooks. By default the automatically generated URL will be used. But you can pass `{"url": "https://yourdomain.com/yourwebhook/"}` as service data to the service call if you want to use a manually created [webhook trigger](https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger). In this case you have to manually process the data that is sent by Netatmo. +| dropwebhook | Unsubscribe existing webhooks. \ No newline at end of file From 232a86323ba557ff3a09c8b1f795f24919c1dbe0 Mon Sep 17 00:00:00 2001 From: ktnrg45 <38207570+ktnrg45@users.noreply.github.com> Date: Mon, 18 Feb 2019 06:16:59 -0700 Subject: [PATCH 22/64] Add docs for media_player.ps4 component (#8146) * Created docs for media_player.ps4 * Added PlayStation 4 Logo * :pencil2: Tweaks * Updated for Integrations/ Renamed * Update ps4.markdown * Added service docs. * Update services. * typo * Update ps4.markdown * updated docs * Update media_player.ps4.markdown * Update media_player.ps4.markdown * Update media_player.ps4.markdown * Update media_player.ps4.markdown * Update ha_release to 0.89 --- source/_components/media_player.ps4.markdown | 114 +++++++++++++++++++ source/images/supported_brands/ps4.png | Bin 0 -> 3255 bytes 2 files changed, 114 insertions(+) create mode 100644 source/_components/media_player.ps4.markdown create mode 100644 source/images/supported_brands/ps4.png diff --git a/source/_components/media_player.ps4.markdown b/source/_components/media_player.ps4.markdown new file mode 100644 index 00000000000..0db9f0f54fb --- /dev/null +++ b/source/_components/media_player.ps4.markdown @@ -0,0 +1,114 @@ +--- +layout: page +title: "Sony PlayStation 4" +description: "Instructions on how to integrate a Sony PlayStation 4 into Home Assistant." +date: 2019-02-12 01:08 +sidebar: true +comments: false +sharing: true +footer: true +logo: ps4.png +ha_category: Media Player +ha_release: 0.89 +ha_iot_class: "Local Polling" +--- + +The `ps4` component allows you to control a +[Sony PlayStation 4 console](https://www.playstation.com/en-us/explore/ps4/). + +- This component supports controlling a single PlayStation 4 for your instance. Additional consoles may be supported in a future release. + +## {% linkable_title Requirements %} + +- Android or iOS device +- PS4 Second Screen App for [Android](https://play.google.com/store/apps/details?id=com.playstation.mobile2ndscreen&hl=en_US) or [iOS](https://itunes.apple.com/us/app/ps4-second-screen/id1201372796?mt=8) installed on device. + +## {% linkable_title Set up %} + +1. Download the Second Screen App and make sure that you can find and control your PlayStation 4 normally. + +
![]()
+ Read the section "Granting Port Access" below before continuing. +
+ +2. Navigate to `Configuration -> Integrations` and select `Configure` for `PlayStation 4`. + +3. Follow instructions displayed to generate user credentials. You will know this step is completed when a form with fields appears. + +4. Pair Home Assistant to your PlayStation 4 by filling in the fields. +- **Note:** To find your correct region refer to the section [Regions](#regions) + +## {% linkable_title Granting Port Access %} + +The PlayStation 4 component requires the use of privileged ports to work correctly, specifically UDP port 987 and TCP port 997. Depending on your OS of your Home Assistant instance you may need to allow usage of privileged ports manually. +Home Assistant installed on a Debian-type OS for example, such as *Debian*, *Hassbian*, *Rassbian*, and *Armbian* may require configuration. + ++ Do not run your Home Assistant instance itself as root or with root/sudo privileges to accomplish this. This would create a security risk for your host system. +
+ +There are varying methods to perform this, dependent on your OS that is running Home Assistant. Specifically, your *Python Interpreter* which runs your Home Assistant instance needs access to the mentioned ports. + ++ If your Home Assistant device is running Hass.io on HassOS, it does not require additional configuration. +
+ +- Example for Debian: +`sudo setcap 'cap_net_bind_service=+ep' /usr/bin/python3.5` +Replace "/usr/bin/python3.5" with your path to Python that is running Home Assistant. + + +## {% linkable_title Configuration %} + ++ The PlayStation 4 component does not use entries from `configuration.yaml`. You must configure this component by using `Integrations` +
+ +## {% linkable_title Regions %} + +Some titles will have different SKUs in the PlayStation Store database depending on your region. You must select your specific region in the setup in order to retrieve the cover art for such titles correctly. If you do not know your [region](https://www.gamerbraves.com/ps4-games-region-codes-explained/), reference the table below: + +| Region ID | Locales | +| ----------- | ---------------------------------------------- | +| R1 | Bermuda, Canada, United States | +| | and U.S. territories | +| R2 | The Middle East, Western Europe, | +| | Central Europe, Egypt, | +| | French overseas territories, Greenland, | +| | Japan, Lesotho, South Africa and Swaziland | +| R3 | Southeast Asia, Hong Kong, Macau, | +| | South Korea and Taiwan | +| R4 | Australasia, Central America, | +| | the Caribbean, Mexico, Oceania, South America | +| R5 | The rest of Africa, Former Soviet Union, | +| | the Indian subcontinent, Mongolia, North Korea | + ++ Region 6: Mainland China, is not supported as there is no English database available. +
+ +## {% linkable_title Services %} + +### {% linkable_title Service `send_command` %} + +Emulate button press on PlayStation 4. This emulates the commands available for the PS4 Second Screen App. This is not to be confused with DualShock 4 controller buttons. + +| Service data attribute | Optional | Example | Description | +| ---------------------- | -------- | ---------------------------- | ------------------------------------- | +| `entity_id` | No | `media_player.playstation_4` | The entity id for your PlayStation 4. | +| `command` | No | `ps` | The command you want to send. | + +#### {% linkable_title Available Commands %} + +Full list of supported commands. + +| Command | Button Emulated | +| -------- | ---------------- | +| `ps` | PS (PlayStation) | +| `option` | Option | +| `enter` | Enter | +| `back` | Back | +| `up` | Swipe Up | +| `down` | Swipe Down | +| `left` | Swipe Left | +| `right` | Swipe Right | diff --git a/source/images/supported_brands/ps4.png b/source/images/supported_brands/ps4.png new file mode 100644 index 0000000000000000000000000000000000000000..b3263216f1fb0d1863eb9c77d4b4436d3401a67e GIT binary patch literal 3255 zcmV;o3`p~dP)+xtsyww*cm-t+i9zQ4yg1AZy6{$Ddb z3mo5 uKPH{=& zQ6O9trGQhBVL|=}OmejE2etwC0e1tNM1TM)M!T?FmXbQvYNW9suC`r3pJ74t6#~QZ zw=SRU1J(nt0VY`fN=YS+I{^uD3W)w2I= 4cbP)OM&+Rw+hon1 a~0u!7O)1Dz_E4QxrvJGBfQ@yYy2-d6*jCysqziu>|H z#sK)Oz>G%yPg1HAr1-u9oCtgnxL5>1TeL~S%=0}8?L{IS_PlKZz90~9IOAMaB+$|d z>#ha73Va$^4V+{MWMs4rih@?nocJ^lixd!RKr}$wGMK#MtQs(+sLQOdz8!boXsIV< z)dM`n*y@J8z>650gGw`wpan`*_n{_#&j5BBNFy|a*-k>gKMP+Jh3WIs1mKtg;Z x1VzeVE{bfX*}H> z#sj8cOaR^uJPf=?`U |5vdhodB^Shx3|LO9crmNCg$Hyi~Mi zXfg2))Q(IailV4IMcVm29k>x#Xz*wRTn&6p6s8@*?Fa#hTa;>s1&dNR!{0QtYSz3% zRtTvVU @lZ;?CdfILarfx4Oa(p(TxJRJ zL%=5lR?#G2lQlTfatjise4d6I)h5hxnK3c#vLJJT9{{f?7|xlN;}MDAJm3))O=#ns zns7M;K7 16mEB$}yrAG0p(69kqA=7Q=y$JkLox=2!b-F9f~~EHlPk2Yw2C*zi3od7SN5 z3P@lrn*MvDnER!`8)Xq!rVtE0;2TgCvkOp3s~*uD4+H;ZY(_RPoaD&E0tZd{x)N2| zVGGC4#fkoB3m0v`F~+C~EJ_2Fh7&-nz@wmPC|(!dTO*Kls$n&@2x{2q7 @Z1G}lhx z0#v>rYO$8BwD29>6u lDhA`;AWS*T$bkxR z*L8AVvtq?(q}|&DLJi3kSEJ-Q*ungKNO1c3j6S*199P!;)aS;GVYLN6(;RTo3H#dh zXNz#}0a+f??=0h~%5{;fy cqw;8NI_z!@D`+=sgNtDAAcPr{>1dFWvWNIWp*2 zT9*scJas1U2MM?wD|6c?|DOl^hGMo+WI_`fVx0hd3$-s`qQeYVEOTro@YVu9Llum5 zr(nLiTvZF!ndbCvRKn;l;diz*RWX7EJ?_#-MqzRS3$?untR)|kxxPKbGC%?enI`ErpsOuaE!FR+~H z$57?a>qS7!HeD$f%4WC&V!7^=$kvmN`?Y`42>-A4Bp^p>aik8VpKdXf7LI>qWKxYt zrlB^QoyypX;JLt`X`KJcvJO=df=W!kt_QBPl>AfT`v#3H$ZZl$s53g&Y%=dY@kchu z OK-7!CV4Bt`r>43qLGf*4I`ovv$0$5lR=DynU2h2s8h1$V( zKt4Meb-Kn9F_-!fxWN>QjR;2M@IU6Gl5?*U=eyP*)Mr|uei7!|4NKPU>R;a)F+!DH zER^-i^E)mstiMrwyC8=kgUSz`h1x@3iSaSgZWBlXw}!<(z0+zJ0-q5C6z4(=iVyyM z)Q>=&2i#FZ?at~Et$TvukZX;+5_g8&He;2H6WT3SY%%JD_gTjCD-H~6Mz9V_ Zr{1%@Qnlg3%{5R;|8=9)%=y^e-w{K JQM-zupT}*ihbqwb9V)BL NhNur{{s|kDA>YL{s{m8002ovPDHLkV1mA2-NFC> literal 0 HcmV?d00001 From 1f91ee005c36f35e8e0867466135b70ced8ff3c6 Mon Sep 17 00:00:00 2001 From: Rohan Kapoor Date: Mon, 18 Feb 2019 11:23:56 -0800 Subject: [PATCH 23/64] Deprecate conf_update_interval (#8603) --- source/_components/fastdotcom.markdown | 10 +++++----- source/_components/freedns.markdown | 2 +- source/_components/nissan_leaf.markdown | 4 ++-- source/_components/sensor.broadlink.markdown | 6 +++--- source/_components/sensor.darksky.markdown | 6 +++--- source/_components/sensor.fedex.markdown | 8 ++++---- source/_components/sensor.ups.markdown | 8 ++++---- source/_components/snips.markdown | 2 +- source/_components/speedtestdotnet.markdown | 10 +++++----- source/_components/tellduslive.markdown | 8 ++++---- 10 files changed, 32 insertions(+), 32 deletions(-) diff --git a/source/_components/fastdotcom.markdown b/source/_components/fastdotcom.markdown index c665142808b..6a9f1c32aa7 100644 --- a/source/_components/fastdotcom.markdown +++ b/source/_components/fastdotcom.markdown @@ -26,7 +26,7 @@ Currently fast.com only supports measuring download bandwidth. If you want to me Enabling this component will automatically create the Fast.com Sensor. -By default, a speed test will be run every hour. The user can change the update frequency in the configuration by defining the `update_interval` for a speed test to run. +By default, a speed test will be run every hour. The user can change the update frequency in the configuration by defining the `scan_interval` for a speed test to run. ## {% linkable_title Configuration %} @@ -42,13 +42,13 @@ Every half hour of every day: ```yaml fastdotcom: - update_interval: + scan_interval: minutes: 30 ``` {% configuration %} -update_interval: - description: "Minimum time interval between updates. Supported formats: `update_interval: 'HH:MM:SS'`, `update_interval: 'HH:MM'` and Time period dictionary (see example below)." +scan_interval: + description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)." required: false default: 60 minutes type: time @@ -62,7 +62,7 @@ manual: #### {% linkable_title Time period dictionary example %} ```yaml -update_interval: +scan_interval: # At least one of these must be specified: days: 0 hours: 0 diff --git a/source/_components/freedns.markdown b/source/_components/freedns.markdown index 0f128208110..73c2160c7a9 100644 --- a/source/_components/freedns.markdown +++ b/source/_components/freedns.markdown @@ -44,7 +44,7 @@ freedns: description: The full update URL. This is exclusive to `access_token`. required: false type: string - update_interval: + scan_interval: description: How often to call the update service. required: false type: time period diff --git a/source/_components/nissan_leaf.markdown b/source/_components/nissan_leaf.markdown index 3efd61cc4f6..5a1c4ce801a 100644 --- a/source/_components/nissan_leaf.markdown +++ b/source/_components/nissan_leaf.markdown @@ -48,7 +48,7 @@ nissan_connect: description: If your car has the updated head unit (NissanConnect rather than Carwings) then the location can be aquired and exposed via a device tracker. If you have a pre-2014 24 kWh Leaf then you will have Carwings and this should be set to false. required: false type: boolean -update_interval: +scan_interval: description: The interval between updates if the climate control is off and the car is not charging. Set in any time unit (e.g. minutes, hours, days!). required: false default: 1 hour @@ -76,7 +76,7 @@ nissan_leaf: password: "YOUR_PASSWORD" region: "YOUR_REGION" nissan_connect: true - update_interval: + scan_interval: hours: 1 update_interval_charging: minutes: 15 diff --git a/source/_components/sensor.broadlink.markdown b/source/_components/sensor.broadlink.markdown index 4688cf2aa03..2b8e534ef30 100644 --- a/source/_components/sensor.broadlink.markdown +++ b/source/_components/sensor.broadlink.markdown @@ -33,7 +33,7 @@ Configuration options: - **host** (*Required*): The hostname/IP address to connect to. - **mac** (*Required*): Device mac address. - **name** (*Optional*): Default BL. Sensor name -- **update_interval** (*Optional*): Time in seconds to fetch data from sensors. Default 300. +- **scan_interval** (*Optional*): Time in seconds to fetch data from sensors. Default 300. - **timeout** (*Optional*): Timeout in seconds for the connection to the device. - **monitored_conditions** array (*Required*): States to monitor. - 'temperature' @@ -49,7 +49,7 @@ Obtain sensor data from an A1: ```yaml sensor: - platform: broadlink - update_interval: 60 + scan_interval: 60 host: IP_ADDRESS mac: 'MAC_ADDRESS' monitored_conditions: @@ -65,7 +65,7 @@ Obtain temperature data from an RM2: ```yaml sensor: - platform: broadlink - update_interval: 60 + scan_interval: 60 host: IP_ADDRESS mac: 'MAC_ADDRESS' monitored_conditions: diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown index bedf4fe225f..71f7d10f668 100644 --- a/source/_components/sensor.darksky.markdown +++ b/source/_components/sensor.darksky.markdown @@ -143,8 +143,8 @@ units: required: false default: "`si` or `us`, based on the temperature preference in Home Assistant." type: string -update_interval: - description: "Minimum time interval between updates. Supported formats: `update_interval: 'HH:MM:SS'`, `update_interval: 'HH:MM'` and Time period dictionary (see example below)." +scan_interval: + description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)." required: false default: 2 minutes type: time @@ -153,7 +153,7 @@ update_interval: #### {% linkable_title Time period dictionary example %} ```yaml -update_interval: +scan_interval: # At least one of these must be specified: days: 0 hours: 0 diff --git a/source/_components/sensor.fedex.markdown b/source/_components/sensor.fedex.markdown index 00e8a6c1b62..d19e870756f 100644 --- a/source/_components/sensor.fedex.markdown +++ b/source/_components/sensor.fedex.markdown @@ -32,11 +32,11 @@ Configuration options for the FedEx Sensor: - **username** (*Required*): The username to access the FedEx Delivery Manager service. - **password** (*Required*): The password for the given username. - **name** (*Optional*): Name the sensor. -- **update_inverval** (*Optional*): Minimum time interval between updates. Default is 1 hour. Supported formats: - - `update_interval: 'HH:MM:SS'` - - `update_interval: 'HH:MM'` +- **scan_inverval** (*Optional*): Minimum time interval between updates. Default is 1 hour. Supported formats: + - `scan_interval: 'HH:MM:SS'` + - `scan_interval: 'HH:MM'` - Time period dictionary, e.g.: - update_interval: +scan_interval: # At least one of these must be specified: days: 0 hours: 0 diff --git a/source/_components/sensor.ups.markdown b/source/_components/sensor.ups.markdown index 0c78dac2067..2b57a0e2663 100644 --- a/source/_components/sensor.ups.markdown +++ b/source/_components/sensor.ups.markdown @@ -32,11 +32,11 @@ Configuration options for the UPS Sensor: - **username** (*Required*): The username to access the UPS My Choice service. - **password** (*Required*): The password for the given username. - **name** (*Optional*): Name the sensor. -- **update_inverval** (*Optional*): Minimum time interval between updates. Default is 1 hour. Supported formats: - - `update_interval: 'HH:MM:SS'` - - `update_interval: 'HH:MM'` +- **scan_inverval** (*Optional*): Minimum time interval between updates. Default is 1 hour. Supported formats: + - `scan_interval: 'HH:MM:SS'` + - `scan_interval: 'HH:MM'` - Time period dictionary, e.g.: -update_interval: +scan_interval: # At least one of these must be specified: days: 0 hours: 0 diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown index edb894e6e1d..3b3be76e9e0 100644 --- a/source/_components/snips.markdown +++ b/source/_components/snips.markdown @@ -277,7 +277,7 @@ So now you can open and close your garage door, let's check the weather. Add the - platform: darksky name: "Dark Sky Weather" api_key: !secret dark_sky_key - update_interval: + scan_interval: minutes: 10 monitored_conditions: - summary diff --git a/source/_components/speedtestdotnet.markdown b/source/_components/speedtestdotnet.markdown index f4898d452a1..a6386845bb3 100644 --- a/source/_components/speedtestdotnet.markdown +++ b/source/_components/speedtestdotnet.markdown @@ -23,7 +23,7 @@ The `speedtestdotnet` component uses the [Speedtest.net](https://speedtest.net/) Enabling this component will automatically create the Speedtest.net Sensors for the monitored conditions (below). -By default, a speed test will be run every hour. The user can change the update frequency in the configuration by defining the `update_interval` for a speed test to run. +By default, a speed test will be run every hour. The user can change the update frequency in the configuration by defining the `scan_interval` for a speed test to run. ## {% linkable_title Configuration %} @@ -56,8 +56,8 @@ speedtestdotnet: description: Specify the speed test server to perform the test against. required: false type: integer - update_interval: - description: "Minimum time interval between updates. Supported formats: `update_interval: 'HH:MM:SS'`, `update_interval: 'HH:MM'` and Time period dictionary (see example below)." + scan_interval: + description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)." required: false default: 60 minutes type: time @@ -72,7 +72,7 @@ speedtestdotnet: #### {% linkable_title Time period dictionary example %} ```yaml -update_interval: +scan_interval: # At least one of these must be specified: days: 0 hours: 0 @@ -112,7 +112,7 @@ Every half hour of every day: ```yaml # Example configuration.yaml entry speedtestdotnet: - update_interval: + scan_interval: minutes: 30 monitored_conditions: - ping diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown index 665f8845199..266cef58007 100644 --- a/source/_components/tellduslive.markdown +++ b/source/_components/tellduslive.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: tellduslive.svg -ha_category: +ha_category: - Hub - Binary Sensor - Cover @@ -50,15 +50,15 @@ host: description: Host address to Tellstick Net or Tellstick ZNet for Local API, only useful when automatic discovery is not enabled. required: false type: string -update_interval: +scan_interval: description: Interval (in seconds) for polling the Telldus Live server (or the local server). required: false type: integer default: 60 {% endconfiguration %} --It is only possible to configure the `update_interval` when setting up the device. If the polling interval needs to be changed after the device is configured it must be changed manually by changing `"scan_interval": 60,` for the device in the file `.storage/core.config_entries`. +
+It is only possible to configure the `scan_interval` when setting up the device. If the polling interval needs to be changed after the device is configured it must be changed manually by changing `"scan_interval": 60,` for the device in the file `.storage/core.config_entries`.
The component will offer configuration through the Home Assistant user interface where it will let you associate it with your Telldus Live account. From 7abcaad61200701353a66ef1580a1b07bb0d92f1 Mon Sep 17 00:00:00 2001 From: zewelorDate: Tue, 19 Feb 2019 19:06:43 +0100 Subject: [PATCH 24/64] Add yeelight flow action param support (#8628) --- source/_components/light.yeelight.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index 9e6ca94dcae..198c2b7038c 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -158,6 +158,7 @@ Start flow with specified transitions |---------------------------|----------|---------------------------------------------------------------------------------------------| | `entity_id` | no | Only act on a specific lights. | | `count` | yes | The number of times to run this flow (0 to run forever). | +| `action` | yes | The action to take after the flow stops. Can be 'recover', 'stay', 'off'. Default 'recover' | | `transitions` | no | Array of transitions. See [examples below](#custom-effects). | ## {% linkable_title Examples %} @@ -196,11 +197,11 @@ light: ### {% linkable_title Custom effects %} -This example shows how you can add your custom effects in your configuration. +This example shows how you can add your custom effects in your configuration. To turn on the effect you can use [light.turn_on](/components/light/#service-lightturn_on) service. Possible transitions are `RGBTransition`, `HSVTransition`, `TemperatureTransition`, `SleepTransition`. - where the array values are as per the following: +Where the array values are as per the following: - RGBTransition: [red, green, blue, duration, brightness] with red / green / blue being an integer between 0 and 255, duration being in milliseconds (minimum of 50) and final brightness to transition to 0-100 (%) - HSVTransition: [hue, saturation, duration, brightness] with hue being an integer between 0 and 359, saturation 0 -100, duration in milliseconds (minimum 50) and final brightness 0-100 (%) - TemperatureTransition: [temp, duration, brightness] with temp being the final color temperature between 1700 and 6500, duration in milliseconds (minimum 50) and final brightness to transition to 0-100 (%) From ce70167423e9b013a5d150101636ecd51bac0d32 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Wed, 20 Feb 2019 14:10:08 +0100 Subject: [PATCH 25/64] deCONZ climate support (#8424) * Add documentation for deCONZ climate * Mark deCONZ as supporting config flow * Move climate documentation in line with the rest of deconz platforms * Removed too much * :pencil2: Tweak * Add shortcut to climate section --- source/_components/deconz.markdown | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/source/_components/deconz.markdown b/source/_components/deconz.markdown index e9f3819c529..4fcd99d1457 100644 --- a/source/_components/deconz.markdown +++ b/source/_components/deconz.markdown @@ -19,8 +19,10 @@ ha_category: ha_release: "0.61" ha_iot_class: "Local Push" ha_qa_scale: platinum +ha_config_flow: true redirect_from: - /components/binary_sensor.deconz/ + - /components/climate.deconz/ - /components/cover.deconz/ - /components/light.deconz/ - /components/scene.deconz/ @@ -34,12 +36,13 @@ redirect_from: There is currently support for the following device types within Home Assistant: -- [Binary Sensor](/components/deconz/#binary-sensor) -- [Cover](/components/deconz/#cover) -- [Light](/components/deconz/#light) -- [Scene](/components/deconz/#scene) -- [Sensor](/components/deconz/#sensor) -- [Switch](/components/deconz/#switch) +- [Binary Sensor](#binary-sensor) +- [Climate](#climate) +- [Cover](#cover) +- [Light](#light) +- [Scene](#scene) +- [Sensor](#sensor) +- [Switch](#switch) ## {% linkable_title Recommended way of running deCONZ %} @@ -323,6 +326,21 @@ The `entity_id` name will be `binary_sensor.device_name`, where `device_name` is - Xiaomi Motion Sensor - Xiaomi Smart Home Aqara Human Body Sensor +## {% linkable_title Climate %} + +See the [deCONZ main component](/components/deconz/) for configuration instructions. + +Climate currently represent thermostats. + +Note that devices in the climate platform identify as sensors, so there is a manually curated list that defines which "sensors" are climate devices. + +The `entity_id` name will be `climate.device_name`, where `device_name` is defined in deCONZ. + +#### {% linkable_title Verified supported climate devices %} + +- Bitron Thermostat 902010/32 +- Eurotronic SPZB0001 + ## {% linkable_title Cover %} Covers are devices like ventilation dampers or smart window covers. From bc9c8a2a9bb5bf6940a1d4a065b6eb86632a59b0 Mon Sep 17 00:00:00 2001 From: Gido Date: Thu, 21 Feb 2019 15:51:17 +0100 Subject: [PATCH 26/64] Add suffix to house_number (#8624) * Add suffix to house_number **Description:** **Pull request in [home-assistant](https://github.com/home-assistant/home-assistant) (if applicable):** home-assistant/home-assistant#21182 * Update sensor.rova.markdown --- source/_components/sensor.rova.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/sensor.rova.markdown b/source/_components/sensor.rova.markdown index 226c0ca6b55..9894a97afe8 100644 --- a/source/_components/sensor.rova.markdown +++ b/source/_components/sensor.rova.markdown @@ -36,6 +36,10 @@ house_number: description: Your house number. required: true type: string +house_number_suffix: + description: A suffix for your house number. + required: false + type: string name: description: Let you overwrite the name of the device in the frontend. required: false @@ -68,6 +72,7 @@ sensor: - platform: rova zip_code: ZIP_CODE house_number: HOUSE_NUMBER + house_number_suffix: HOUSE_NUMBER_SUFFIX name: Rova monitored_conditions: - bio @@ -99,3 +104,7 @@ automation: message: 'Reminder: put out biowaste bin' ``` {% endraw %} + +